music_quiz: YP/TS 플러그인 의존 제거, 바닐라 playsound + painting_variant 로 마이그레이션
minecraft_launcher 가 만드는 musicquiz 리소스팩 (track_NN / cover_NN) 과 한 쌍으로 동작한다. - 음원 재생: yp playall (명령 블록 + auto 토글) → /playsound musicquiz:track_NN - 정답 이미지: ts placeloc → /summon painting (musicquiz:cover_NN) + /kill @e[type=painting,tag=mq_cover] - stopsound 하드코딩(weather) 4곳을 mq:quiz/stop_sound 매크로 호출로 통일 - check/server, repeat/check_server, status 스코어보드(yp/ts/skript) 등 플러그인 hello 패킷 대기 로직 일괄 삭제 - 스토리지 재구성: command_block 컴파운드 폐기, audio/image/marker 분리 (init/config.mcfunction 한 곳에서 수정) - 곡 단위 volume override 지원 — songs[i].volume 으로 곡별 음량 지정 가능 (미지정 시 audio.volume fallback) - 트랙 번호 zero-pad 는 mq:tmp.pad 분기 + 매크로 문자열 조립으로 처리 - max_index 는 songs 배열 길이에서 자동 계산 - 호출 경로 단축: select → setanswer → macro/setanswer → macro/summon → play_sound
This commit is contained in:
@@ -29,4 +29,4 @@ scoreboard players set replay buttons -3
|
||||
|
||||
scoreboard players set timer main 1
|
||||
|
||||
function mq:images/image with storage mq:main command_block
|
||||
function mq:images/show
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
$data modify block $(x) $(y) $(z) Command set value "yp playall song$(index) $(volume)"
|
||||
|
||||
function mq:quiz/play with storage mq:main command_block
|
||||
@@ -0,0 +1 @@
|
||||
$execute as @a at @s run playsound $(namespace):$(track) $(source) @s ~ ~ ~ $(volume) $(pitch)
|
||||
@@ -1,3 +1,3 @@
|
||||
$data modify storage mq:main answer set from storage mq:main songs[$(idx)]
|
||||
$data modify storage mq:main command_block.name set from storage mq:main songs[$(idx)].title
|
||||
$data modify storage mq:main command_block.alias set from storage mq:main songs[$(idx)].alias
|
||||
$data modify storage mq:main answer.track set value "track_$(pad)$(num)"
|
||||
$data modify storage mq:main answer.cover set value "cover_$(pad)$(num)"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
$stopsound @a $(source)
|
||||
@@ -1,8 +1,9 @@
|
||||
$execute unless data storage mq:main {command_block:{name:"음악퀴즈"}} run summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"정답입력시작"}
|
||||
$execute unless data storage mq:main {answer:{title:"음악퀴즈"}} run summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"정답입력시작"}
|
||||
$summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"$(name)"}
|
||||
|
||||
execute store result score length func.temp run data get storage mq:main command_block.alias
|
||||
execute if score length func.temp matches 1.. run data modify storage mq:main command_block.name set from storage mq:main command_block.alias[0]
|
||||
execute if score length func.temp matches 1.. run data remove storage mq:main command_block.alias[0]
|
||||
execute if score length func.temp matches 1.. run function mq:quiz/macro/summon2 with storage mq:main command_block
|
||||
$execute unless data storage mq:main {command_block:{name:"음악퀴즈"}} run summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"정답입력종료"}
|
||||
execute store result score length func.temp run data get storage mq:tmp marker_call.alias
|
||||
execute if score length func.temp matches 1.. run data modify storage mq:tmp marker_call.name set from storage mq:tmp marker_call.alias[0]
|
||||
execute if score length func.temp matches 1.. run data remove storage mq:tmp marker_call.alias[0]
|
||||
execute if score length func.temp matches 1.. run function mq:quiz/macro/summon2 with storage mq:tmp marker_call
|
||||
|
||||
$execute unless data storage mq:main {answer:{title:"음악퀴즈"}} run summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"정답입력종료"}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
$summon minecraft:marker $(x) $(y) $(z) {Tags:["mq","default"],CustomName:"$(name)"}
|
||||
|
||||
execute store result score length func.temp run data get storage mq:main command_block.alias
|
||||
execute if score length func.temp matches 1.. run data modify storage mq:main command_block.name set from storage mq:main command_block.alias[0]
|
||||
execute if score length func.temp matches 1.. run data remove storage mq:main command_block.alias[0]
|
||||
execute if score length func.temp matches 1.. run function mq:quiz/macro/summon2 with storage mq:main command_block
|
||||
execute store result score length func.temp run data get storage mq:tmp marker_call.alias
|
||||
execute if score length func.temp matches 1.. run data modify storage mq:tmp marker_call.name set from storage mq:tmp marker_call.alias[0]
|
||||
execute if score length func.temp matches 1.. run data remove storage mq:tmp marker_call.alias[0]
|
||||
execute if score length func.temp matches 1.. run function mq:quiz/macro/summon2 with storage mq:tmp marker_call
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
scoreboard players set init main 4
|
||||
|
||||
$data modify block $(x) $(y) $(z) auto set value 1b
|
||||
$data modify block $(x) $(y) $(z) auto set value 0b
|
||||
|
||||
function mq:quiz/setanswer
|
||||
5
music_quiz/data/mq/function/quiz/play_sound.mcfunction
Normal file
5
music_quiz/data/mq/function/quiz/play_sound.mcfunction
Normal file
@@ -0,0 +1,5 @@
|
||||
data modify storage mq:tmp playsound set from storage mq:main audio
|
||||
data modify storage mq:tmp playsound.track set from storage mq:main answer.track
|
||||
# 곡 단위 volume override — songs[i].volume 가 없으면 audio.volume 그대로 유지 (no-op)
|
||||
data modify storage mq:tmp playsound.volume set from storage mq:main answer.volume
|
||||
function mq:quiz/macro/play_sound with storage mq:tmp playsound
|
||||
@@ -1,14 +1,20 @@
|
||||
scoreboard players add init main 3
|
||||
scoreboard players set timer main 0
|
||||
|
||||
execute if score index main >= max_index main run return run function mq:quiz/end with storage mq:main
|
||||
|
||||
scoreboard players add index main 1
|
||||
execute store result storage mq:main command_block.index int 1 run scoreboard players get index main
|
||||
|
||||
# 보스바
|
||||
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 players @a
|
||||
execute store result bossbar mq:process value run scoreboard players get index main
|
||||
|
||||
function mq:quiz/macro/command_block with storage mq:main command_block
|
||||
# tmp.{idx (0-based, songs[] 인덱스), num (1-based, track_NN), pad ("0"|"")} 구성
|
||||
execute store result storage mq:tmp num int 1 run scoreboard players get index main
|
||||
scoreboard players operation song_idx func.temp = index main
|
||||
scoreboard players remove song_idx func.temp 1
|
||||
execute store result storage mq:tmp idx int 1 run scoreboard players get song_idx func.temp
|
||||
|
||||
execute if score index main matches 1..9 run data modify storage mq:tmp pad set value "0"
|
||||
execute unless score index main matches 1..9 run data modify storage mq:tmp pad set value ""
|
||||
|
||||
function mq:quiz/setanswer
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
scoreboard players operation song_idx func.temp = index main
|
||||
scoreboard players remove song_idx func.temp 1
|
||||
execute store result storage mq:tmp idx int 1 run scoreboard players get song_idx func.temp
|
||||
|
||||
# songs[$(idx)] → answer 로 복사하고, 트랙/커버 id 부여
|
||||
function mq:quiz/macro/setanswer with storage mq:tmp
|
||||
|
||||
# 정답 marker entity 소환 (좌표 + name/alias 합쳐서 macro 호출)
|
||||
data modify storage mq:tmp marker_call set from storage mq:main marker
|
||||
data modify storage mq:tmp marker_call.name set from storage mq:main answer.title
|
||||
data modify storage mq:tmp marker_call.alias set from storage mq:main answer.alias
|
||||
function mq:quiz/macro/summon with storage mq:tmp marker_call
|
||||
|
||||
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 init main 5
|
||||
function mq:quiz/macro/summon with storage mq:main command_block
|
||||
|
||||
function mq:quiz/play_sound
|
||||
|
||||
1
music_quiz/data/mq/function/quiz/stop_sound.mcfunction
Normal file
1
music_quiz/data/mq/function/quiz/stop_sound.mcfunction
Normal file
@@ -0,0 +1 @@
|
||||
function mq:quiz/macro/stop_sound with storage mq:main audio
|
||||
Reference in New Issue
Block a user