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:
@@ -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]
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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]
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user