오프셋 부호 정정 (v1.0.16 까지 모든 버전이 잘못된 convention 사용): stone_button[face=wall, facing=X] AABB 는 facing X 쪽 face 에 붙어 안쪽 1/8 만 채움. 따라서 머리 hitbox center 는: south z = 0.0625 (이전 -0.0625) north z = 0.9375 (이전 1.0625) east x = 0.0625 (이전 -0.0625) west x = 0.9375 (이전 1.0625) 이전 부호는 머리 face 의 normal 방향 쪽으로 머리가 "튀어나온다" 라 가정했는데 실제로는 face 의 안쪽 1/8 로 들어가는 구조였음. 그 결과 v1.0.16 의 width=0.125 interaction 은 머리와 겹치지 않고 옆에 떠 있어 (touch only at edge) 클릭이 안 됨. 라벨 text_display 추가 (사용자 요청): - button_defs 항목에 optional label, label_color, label_font, label_scale 추가. 색 기본 black, 폰트 기본 minecraft:default, 크기 기본 1.0. - handler 가 btn_prep 로 기본값 채운 뒤 btn 호출 — 매크로 인자 미존재 에러 회피. - btn 안에서 facing 별 위치/yaw 로 text_display 1개 summon. 같은 벽 (button 머리 반대편 블록) 의 visible 면에 ~0.01 띄워 부착, y-1. - background:0 (투명) 으로 벽에 직접 새긴 느낌. - label 이 빈 문자열이면 summon 스킵. commands/stop 에 stale text_display 정리도 추가 — 옛 정의 이름으로 남은 라벨이 reload 후에도 지워지지 않는 문제 방지.
77 lines
2.7 KiB
MCFunction
77 lines
2.7 KiB
MCFunction
scoreboard players set index main 0
|
|
$scoreboard players set max_index main $(max_index)
|
|
scoreboard players set score main 0
|
|
scoreboard players set init main 0
|
|
scoreboard players set timer main 0
|
|
|
|
scoreboard players set start buttons -1
|
|
scoreboard players set stop buttons -1
|
|
scoreboard players set skip buttons -1
|
|
scoreboard players set hint buttons -1
|
|
scoreboard players set replay buttons -1
|
|
scoreboard players set test buttons -1
|
|
|
|
scoreboard players reset @a answer
|
|
|
|
# 정답 입력 큐 / 제출 순번 초기화
|
|
data remove storage mq:input queue
|
|
scoreboard players reset @a submit_seq
|
|
scoreboard players set seq func.temp 0
|
|
|
|
# 트리거 시작
|
|
scoreboard objectives remove ready
|
|
scoreboard objectives add ready trigger
|
|
|
|
scoreboard objectives remove cancel
|
|
scoreboard objectives add cancel trigger
|
|
|
|
scoreboard objectives remove stop
|
|
scoreboard objectives add stop trigger
|
|
|
|
scoreboard objectives remove skip
|
|
scoreboard objectives add skip trigger
|
|
|
|
scoreboard objectives remove hint
|
|
scoreboard objectives add hint trigger
|
|
|
|
scoreboard objectives remove replay
|
|
scoreboard objectives add replay trigger
|
|
|
|
scoreboard objectives remove input
|
|
scoreboard objectives add input trigger
|
|
# 트리거 끝
|
|
|
|
# 제출자 식별용 순번 점수 (queue entry 의 seq 와 매칭)
|
|
scoreboard objectives remove submit_seq
|
|
scoreboard objectives add submit_seq dummy
|
|
|
|
scoreboard objectives setdisplay sidebar
|
|
scoreboard objectives remove score
|
|
scoreboard objectives add score dummy {"text":"점수","bold":true}
|
|
scoreboard objectives setdisplay sidebar score
|
|
|
|
dialog clear @a
|
|
|
|
bossbar set mq:process name [{"text":"진행도: ","color": "yellow","bold": true},{"score":{"name":"index","objective": "main"},"color": "yellow","bold": true},{"text":"/","color": "yellow","bold": true},{"score":{"name":"max_index","objective": "main"},"color": "yellow","bold": true}]
|
|
$bossbar set mq:process max $(max_index)
|
|
bossbar set mq:process value 0
|
|
bossbar set mq:process color pink
|
|
bossbar set mq:process visible false
|
|
bossbar set mq:process style notched_10
|
|
bossbar set mq:process players @a
|
|
|
|
# 대기 상태로 answer 초기화
|
|
data modify storage mq:main answer set value {title:"음악퀴즈", alias:[]}
|
|
|
|
# 이전 버전이 남긴 legacy marker 정리 (현재는 marker 사용 안 함)
|
|
kill @e[type=minecraft:marker,tag=mq]
|
|
|
|
# 이전 버전이 남긴 잔존 text_display 정리.
|
|
# 현재 버튼은 -1 init 단계에서 같은 tag interaction 만 kill 하므로 (n 태그
|
|
# 가 일치할 때만), 옛 버튼 정의에 있던 이름의 text_display 가 남으면 안
|
|
# 지워짐. 여기서 mq 태그 전체를 한 번에 정리해 stale 제거.
|
|
kill @e[type=minecraft:text_display,tag=mq]
|
|
|
|
function mq:quiz/stop_sound
|
|
function mq:images/clear
|