music_quiz: 무대 의존 제거 + 정적 데이터 스토리지화 + 매 틱 게이팅

- 무대 한정 코드 제거: repeat/map/ (트리/조명), images/image_custom (파이브가이즈),
  load.mcfunction의 map 스코어보드·fill·counter 초기화
- 매 틱 디스패치를 init 상태로 게이팅:
  · timer는 init>=2, check_answer는 init in {5,6}에서만 호출
  · idle(init=0) 틱의 함수 호출 8개 → 4개
- 곡 50개를 매크로 체인(250+ 명령/회) → 스토리지 리스트 O(1) 룩업으로 전환
  mq:init/songs가 mq:main.songs를 적재, setanswer는 index-1로 인덱스 룩업
- 버튼/트리거 정의를 mq:init/buttons / mq:init/triggers로 분리해
  mq:main.button_defs · trigger_defs 스토리지 리스트로 관리
- repeat/triggers/trigger.mcfunction: 투표 후처리 산술 블록 중 변하지 않는
  max_player·rest_player 재계산 제거, $(n)_player 갱신만 1라인
- 작가용 메모 수정.txt 제거
- README.md: 변경 사항·새 구조·스토리지 스키마 반영

566 lines -, 154 lines +.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Claude (owner)
2026-05-13 15:45:35 +09:00
parent b1babad05a
commit 2b61af28a8
16 changed files with 212 additions and 561 deletions

View File

@@ -1,48 +1,6 @@
function mq:repeat/buttons/btn { \
n: "start", \
x: 140, \
y: 62, \
z: -225, \
f: "south", \
c: "function mq:commands/start with storage mq:main" \
}
function mq:repeat/buttons/btn { \
n: "stop", \
x: 142, \
y: 62, \
z: -225, \
f: "south", \
c: "function mq:commands/stop with storage mq:main" \
}
function mq:repeat/buttons/btn { \
n: "skip", \
x: 144, \
y: 62, \
z: -225, \
f: "south", \
c: "function mq:commands/skip" \
}
function mq:repeat/buttons/btn { \
n: "hint", \
x: 146, \
y: 62, \
z: -225, \
f: "south", \
c: "function mq:commands/hint" \
}
function mq:repeat/buttons/btn { \
n: "replay", \
x: 148, \
y: 62, \
z: -225, \
f: "south", \
c: "function mq:commands/replay" \
}
function mq:repeat/buttons/btn { \
n: "test", \
x: 144, \
y: 62, \
z: -213, \
f: "north", \
c: "function mq:commands/test" \
}
function mq:repeat/buttons/btn with storage mq:main button_defs[0]
function mq:repeat/buttons/btn with storage mq:main button_defs[1]
function mq:repeat/buttons/btn with storage mq:main button_defs[2]
function mq:repeat/buttons/btn with storage mq:main button_defs[3]
function mq:repeat/buttons/btn with storage mq:main button_defs[4]
function mq:repeat/buttons/btn with storage mq:main button_defs[5]

View File

@@ -1,22 +0,0 @@
execute unless score lamp1 map matches 0.. run scoreboard players set lamp1 map 1
execute unless score lamp1.on map matches 0.. run scoreboard players set lamp1.on map 94
execute unless score lamp1.off map matches 0.. run scoreboard players set lamp1.off map 85
execute unless score lamp1.on2 map matches 0.. run scoreboard players set lamp1.on2 map 44
execute unless score lamp1.off2 map matches 0.. run scoreboard players set lamp1.off2 map 35
execute if score lamp1 map matches 1.. run scoreboard players add lamp1 map 1
execute if score lamp1 map matches 3 if score lamp1.on map matches 195.. run scoreboard players set lamp1.on map 94
execute if score lamp1 map matches 3 if score lamp1.off map matches 195.. run scoreboard players set lamp1.off map 94
execute if score lamp1 map matches 3 if score lamp1.on2 map matches 195.. run scoreboard players set lamp1.on2 map 94
execute if score lamp1 map matches 3 if score lamp1.off2 map matches 195.. run scoreboard players set lamp1.off2 map 94
execute if score lamp1 map matches 3 run execute store result storage mq:main map.lamp1.on int 1 run scoreboard players get lamp1.on map
execute if score lamp1 map matches 3 run execute store result storage mq:main map.lamp1.off int 1 run scoreboard players get lamp1.off map
execute if score lamp1 map matches 3 run execute store result storage mq:main map.lamp1.on2 int 1 run scoreboard players get lamp1.on2 map
execute if score lamp1 map matches 3 run execute store result storage mq:main map.lamp1.off2 int 1 run scoreboard players get lamp1.off2 map
execute if score lamp1 map matches 3 run function mq:repeat/map/macro/lamp1 with storage mq:main map.lamp1
execute if score lamp1 map matches 3 run scoreboard players add lamp1.on map 1
execute if score lamp1 map matches 3 run scoreboard players add lamp1.off map 1
execute if score lamp1 map matches 3 run scoreboard players add lamp1.on2 map 1
execute if score lamp1 map matches 3 run scoreboard players add lamp1.off2 map 1
execute if score lamp1 map matches 3.. run scoreboard players set lamp1 map 1

View File

@@ -1,4 +0,0 @@
$execute if score lamp1.on map matches 94..194 positioned $(on) 78 -279 if block ~ ~ ~1 minecraft:redstone_lamp run setblock ~ ~ ~ minecraft:redstone_block
$execute if score lamp1.off map matches 94..194 positioned $(off) 78 -279 if block ~ ~ ~1 minecraft:redstone_lamp run setblock ~ ~ ~ minecraft:red_wool
$execute if score lamp1.on2 map matches 94..194 positioned $(on2) 78 -279 if block ~ ~ ~1 minecraft:redstone_lamp run setblock ~ ~ ~ minecraft:redstone_block
$execute if score lamp1.off2 map matches 94..194 positioned $(off2) 78 -279 if block ~ ~ ~1 minecraft:redstone_lamp run setblock ~ ~ ~ minecraft:red_wool

View File

@@ -1,60 +0,0 @@
execute unless score tree map matches 0.. run scoreboard players set tree map 1
execute if score tree map matches 1.. run scoreboard players add tree map 1
# 1층 시작
execute if score tree map matches 6 run setblock 142 66 -186 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 6 run setblock 147 66 -191 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 6 run setblock 142 66 -196 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 6 run setblock 137 66 -191 minecraft:redstone_lamp[lit=true]
# 1층 끝
execute if score tree map matches 16 run setblock 142 66 -186 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 16 run setblock 147 66 -191 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 16 run setblock 142 66 -196 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 16 run setblock 137 66 -191 minecraft:redstone_lamp[lit=false]
# 2층 시작
execute if score tree map matches 16 run setblock 142 70 -195 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 16 run setblock 138 70 -191 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 16 run setblock 142 70 -187 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 16 run setblock 146 70 -191 minecraft:redstone_lamp[lit=true]
# 2층 끝
execute if score tree map matches 26 run setblock 142 70 -195 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 26 run setblock 138 70 -191 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 26 run setblock 142 70 -187 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 26 run setblock 146 70 -191 minecraft:redstone_lamp[lit=false]
# 3층 시작
execute if score tree map matches 26 run setblock 142 74 -194 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 26 run setblock 139 74 -191 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 26 run setblock 142 74 -188 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 26 run setblock 145 74 -191 minecraft:redstone_lamp[lit=true]
# 3층 끝
execute if score tree map matches 36 run setblock 142 74 -194 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 36 run setblock 139 74 -191 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 36 run setblock 142 74 -188 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 36 run setblock 145 74 -191 minecraft:redstone_lamp[lit=false]
# 4층 시작
execute if score tree map matches 36 run setblock 142 78 -193 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 36 run setblock 140 78 -191 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 36 run setblock 142 78 -189 minecraft:redstone_lamp[lit=true]
execute if score tree map matches 36 run setblock 144 78 -191 minecraft:redstone_lamp[lit=true]
# 4층 끝
execute if score tree map matches 46 run setblock 142 78 -193 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 46 run setblock 140 78 -191 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 46 run setblock 142 78 -189 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 46 run setblock 144 78 -191 minecraft:redstone_lamp[lit=false]
# TOP 시작
execute if score tree map matches 46 run setblock 142 81 -191 minecraft:redstone_lamp[lit=true]
# TOP 끝
execute if score tree map matches 56 run setblock 142 81 -191 minecraft:redstone_lamp[lit=false]
execute if score tree map matches 61.. run scoreboard players set tree map 1

View File

@@ -18,23 +18,7 @@ execute if score init main matches 0..1 \
run function mq:quiz/start with storage mq:main
function mq:repeat/triggers/trigger { \
n:"stop", \
n2:"", \
c:"function mq:commands/stop with storage mq:main" \
}
function mq:repeat/triggers/trigger { \
n:"skip", \
n2:"", \
c:"function mq:commands/skip" \
}
function mq:repeat/triggers/trigger { \
n:"hint", \
n2:"", \
c:"function mq:commands/hint" \
}
function mq:repeat/triggers/trigger { \
n:"replay", \
n2:"", \
c:"function mq:commands/replay" \
}
function mq:repeat/triggers/trigger with storage mq:main trigger_defs[0]
function mq:repeat/triggers/trigger with storage mq:main trigger_defs[1]
function mq:repeat/triggers/trigger with storage mq:main trigger_defs[2]
function mq:repeat/triggers/trigger with storage mq:main trigger_defs[3]

View File

@@ -20,11 +20,6 @@ $execute as @a if score @s $(n) matches 1 run scoreboard players set @s $(n) 2
$execute as @a if score @s $(n) matches 3 run function mq:tellraw {"text":"","color":"black",msg:[{"selector":"@s","color": "yellow","bold": true}," : ",{"text":"이미 $(n2)투표를 하셨습니다.","color": "red"}]}
$execute as @a if score @s $(n) matches 3 run scoreboard players set @s $(n) 2
$execute store result score rest_player $(n) if entity @a
$execute unless score rest_player $(n) matches 0 run scoreboard players operation rest_player $(n) %= two func.temp
$execute store result score max_player $(n) if entity @a
$execute unless score real_max_player $(n) matches 0 run scoreboard players operation max_player $(n) /= two func.temp
$execute unless score real_max_player $(n) matches 0 run scoreboard players operation max_player $(n) += rest_player $(n)
$execute store result score $(n)_player $(n) if entity @a[scores={$(n)=2..}]
$execute unless score real_max_player $(n) matches 0 \