# 한 button entry 의 optional 필드 기본값을 채워 macro 호출 시 $(arg) 미존재 # 에러를 방지한다. handler 에서 entry 복사 직후 호출. # # label : 없으면 "" (빈 문자열) -> btn 안의 text_display 분기는 label # 이 "" 이면 스킵. # label_color : 기본 "black" # label_font : 기본 "minecraft:default" # label_scale : 기본 "1.0" (Vector3f 의 한 축, 3축 동일하게 사용됨) # # 구현: defaults 컴파운드를 먼저 만들고 entry (mq:tmp.btn) 를 그 위에 merge # 한 뒤 다시 mq:tmp.btn 으로 되돌린다. data modify ... merge from 은 source # compound 의 키로 target compound 를 덮어쓰므로 entry 에 있는 값은 보존되고 # entry 에 없는 키만 default 값으로 채워진다. # # (이전에 `execute unless data storage mq:tmp btn.label run data modify ...` # 방식이었으나 MC 26.1.2 parser 가 해당 라인을 거부했음. merge 방식은 문제 # 난 execute-unless-data 구문 자체를 제거.) data modify storage mq:tmp btn_default set value {label:"",label_color:"black",label_font:"minecraft:default",label_scale:"1.0"} data modify storage mq:tmp btn_default merge from storage mq:tmp btn data modify storage mq:tmp btn set from storage mq:tmp btn_default