Files
mc_datapack/music_quiz/data/mq/function/load.mcfunction
Claude (owner) 5d866a1457 영상 모드를 선택(optional) 모드로 — 미설치 시 차단 대신 경고만
start.mcfunction 의 mq_video_mod 서버/클라 부재 차단(return)을 제거하고
노란색 경고 출력 후 그대로 진행하도록 변경. 영상 모드 없이도 게임을
시작/플레이할 수 있다(영상만 미표시). 채팅정답 모드(mq_chat_mod)는 정답
판정에 필수라 서버 부재 차단 유지.

load/players/login 주석의 "필수 모드/차단" 뉘앙스도 "선택 모드, 없으면
영상 없이 진행"으로 정정.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-05 02:51:51 +09:00

53 lines
2.4 KiB
MCFunction

data modify storage mq:main answer set value {title:"", author:"", alias:[], description:""}
data merge storage func:temp {}
data merge storage mq:tmp {}
function mq:init/config
function mq:videos/normalize
function mq:init/songs
function mq:init/buttons
function mq:init/triggers
function mq:tellraw {"text":"서버 리로드 성공!","color":"white","msg":'""'}
scoreboard objectives remove func.temp
scoreboard objectives remove main
scoreboard objectives remove buttons
scoreboard objectives remove answer
scoreboard objectives remove leave_game
scoreboard objectives add func.temp dummy
scoreboard objectives add main dummy
scoreboard objectives add buttons dummy
scoreboard objectives add answer dummy
scoreboard objectives add leave_game custom:leave_game
# 외부 모드 존재 확인용 점수.
# mq_chat_mod : 채팅 정답 판정 필수 모드(mc_chat_answer_mod, 서버 전용).
# 모드가 매 server tick 마다 fake player `#server` 점수를 1 로 set. 서버에
# 없으면 0 유지 → start 차단.
# mq_video_mod : 정답 영상 재생용 선택 모드(mc_video_player_mod). 없어도
# 게임은 진행되고 영상만 안 나온다(start 는 경고만). 클라 join 시 서버로
# handshake payload 전송 → 서버 측 모드가 해당 플레이어 점수를 1 로 set.
# 클라에 모드가 없으면 0 유지. (login.mcfunction 에서 플레이어별 0 초기화.)
scoreboard objectives remove mq_chat_mod
scoreboard objectives remove mq_video_mod
scoreboard objectives add mq_chat_mod dummy
scoreboard objectives add mq_video_mod dummy
# /reload 후 모드가 한 tick 도 돌기 전에 start 가 호출될 수 있으니
# #server 점수도 0 으로 materialize. 모드가 살아 있으면 다음 tick 에 1 로 갱신.
# mq_video_mod 도 같은 objective 안에서 holder 만 다르게 — `#server` 는 서버
# 컴포넌트 존재 (서버 측 모드가 매 tick 1 로 갱신), `<player>` 는 클라 측
# 존재 (payload 수신 시 1 로 갱신).
scoreboard players set #server mq_chat_mod 0
scoreboard players set #server mq_video_mod 0
scoreboard players set two func.temp 2
bossbar add mq:process [{"text":"진행도: ","color": "yellow","bold": true},{"text":"0","color": "yellow","bold": true},{"text":"/","color": "yellow","bold": true},{"text":"0","color": "yellow","bold": true}]
function mq:commands/stop with storage mq:main
function mq:players/login with storage mq:main spawn
function mq:videos/cache/clear