단일 interaction 의 horizontal hitbox 는 width × width 정사각형 강제라
"가로 0.375 × 두께 0.125" 직사각형이 불가능 → 두께 방향만 잡으면
가로 방향이 짧아지고, 가로를 잡으면 두께가 0.375 가 되어 벽 안쪽으로
0.25 묻혀 F3+B 디버그에서 wireframe 이 벽 안과 머리 앞쪽으로 튀어나옴.
해결: width=0.125 interaction 3개를 가로축으로 타일링.
- 각 타일 깊이 0.125 = 버튼 머리 두께와 정확히 일치
- 3 × 0.125 = 0.375 = 버튼 머리 가로와 정확히 일치 (gap 없이 인접)
- facing 별 가로축이 다름: south/north 는 x, east/west 는 z
selector limit=1 제거 — 한 버튼에 interaction 이 3개라 limit=1 두면
MC 가 임의로 1개만 골라 잘못된 entity 만 검사할 수 있음. `on target`
은 클릭된 1개만 통과하므로 limit 없이도 단일 발화가 보장됨.
button_defs 항목은 이제 {n, x, y, z, f, c} 만 가진다 (ox/oy/oz/w/h 제거).
사용자가 facing 을 바꿀 때마다 손으로 오프셋 표를 옮겨 적을 필요가 없도록
repeat/buttons/btn.mcfunction 한 곳에 facing → 소환 오프셋을 고정해두고
mq:tmp.btn{f:"..."} 분기로 디스패치한다. width/height 도 stone_button
hitbox 에 맞춰 0.375/0.25 로 박제.
handler 는 각 entry 를 mq:tmp.btn 으로 복사한 뒤 btn 을 호출해 분기
predicate 에 사용할 수 있게 한다.
증상:
- /reload 후 다음 에러:
- Couldn't load tag minecraft:quick_actions as it is missing following references: mq:answer
- Failed to load function mq:commands/start (Can't find element 'mq:page1' in registry 'minecraft:dialog')
- Failed to load function mq:answer/open (Can't find element 'mq:answer' ...)
원인:
- MC 의 minecraft:dialog 레지스트리는 hot-reload 불가. /reload 로는 dialog 파일이
registry 에 등록되지 않음 — 서버 완전 재시작이 필요.
- 그 상태에서 tag 가 `["mq:answer"]` 같은 짧은 형식으로 dialog 를 참조하면
MC 는 누락된 reference 로 보고 태그 로드 실패 → 같은 reload 의 function 들이
dialog registry 를 못 찾아 연쇄 실패.
수정:
- quick_actions.json: `"mq:answer"` → `{ "id": "mq:answer", "required": false }`.
required:false 는 reference 가 없을 때 silently 무시하라는 지시. /reload 직후
잠시 dialog registry 가 비어있어도 datapack 자체가 깨지지 않음.
주의 (운영):
- 데이터팩 업데이트 후에는 반드시 서버를 완전 재시작 해야 dialog show 호출이
정상 동작함. /reload 만으로는 dialog 파일이 registry 에 들어가지 않음 — 이건
MC 26.1 시점의 dialog 시스템 자체 제약 (Smithed/Mojang 문서 기준).
2026-05-17 00:10:51 +09:00
4 changed files with 78 additions and 39 deletions
# stone_button[face=wall] hitbox: 가로 6/16 (0.375), 세로 4/16 (0.25),
# interaction entity 의 위치/크기는 facing 만 보면 결정됨 — 매번 손으로
# 두께 2/16 (0.125), 벽 반대편으로만 튀어나옴. interaction 의 horizontal
# ox/oy/oz/w/h 를 적지 않는다. 실제 오프셋 테이블은 repeat/buttons/btn
# hitbox 는 width × width 정사각형 강제 → width 를 가로(0.375) 에 맞추고
# 안에서 한 곳에만 정의되어 있다 (stone_button[face=wall] 면 정합용).
# 위치 보정으로 "튀어나온 쪽 면 = visible face" 가 되게 함. 반대편은
# 벽 블록 속으로 들어가 invisible.
#
# facing 별 오프셋:
# south : ox=0.5 oy=0.375 oz=-0.0625
# north : ox=0.5 oy=0.375 oz=1.0625
# east : ox=-0.0625 oy=0.375 oz=0.5
# west : ox=1.0625 oy=0.375 oz=0.5
datamodifystoragemq:mainbutton_defssetvalue[]
datamodifystoragemq:mainbutton_defssetvalue[]
datamodifystoragemq:mainbutton_defsappendvalue{n:"start",x:140,y:62,z:-225,f:"south",c:"function mq:commands/start with storage mq:main",ox:"0.5",oy:"0.375",oz:"-0.0625",w:"0.375",h:"0.25"}
datamodifystoragemq:mainbutton_defsappendvalue{n:"start",x:364,y:146,z:-263,f:"east",c:"function mq:commands/start with storage mq:main"}
datamodifystoragemq:mainbutton_defsappendvalue{n:"stop",x:142,y:62,z:-225,f:"south",c:"function mq:commands/stop with storage mq:main",ox:"0.5",oy:"0.375",oz:"-0.0625",w:"0.375",h:"0.25"}
datamodifystoragemq:mainbutton_defsappendvalue{n:"stop",x:364,y:146,z:-265,f:"east",c:"function mq:commands/stop with storage mq:main"}
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.