단일 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 에 사용할 수 있게 한다.
2026-05-17 03:56:41 +09:00
3 changed files with 77 additions and 38 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.