execute if score init main matches 10 run return run function mq:tellraw {"text":"퀴즈가 완전히 종료된후 시작해주세요.","color":"red","msg":""} # ---- 외부 모드 설치 검증 ---- # mq_video_mod (mc_video_player_mod) 만 게이트. 영상 렌더링은 클라 모드가 # 필수라 없으면 게임이 의미가 없음. same objective 안에 holder 두 종류: # - `#server mq_video_mod` : 서버 컴포넌트가 매 tick 1 로 갱신 (server # presence). 없으면 0 → 서버에 모드 미설치. # - ` mq_video_mod` : 클라 join 시 payload 가 서버로 오면 서버 # 컴포넌트가 해당 플레이어 점수를 1 로 set (client presence). 클라 # 미설치면 0 유지. # # mq_chat_mod (mc_chat_answer_mod) 는 게이트하지 않음 — 채팅 모드는 입력을 # "편하게" 만들어주는 옵션일 뿐이고, 모드 없는 환경에서도 `/trigger input` # dialog 경로로 정답 제출이 가능. 과거에 게이트해 두면 모드 presence pulse # 가 호스트 환경 (banner/mohist 같은 fabric-bukkit 하이브리드) 에서 안 # 들어오거나, 사용자 모드 버전이 presence tick 이전 (v1.3.4 이하) 일 때 # false negative 로 시작이 막혔음. # # 1) 서버 측 영상 모드 부재 — 전원 차단, 단일 안내. execute unless score #server mq_video_mod matches 1 run return run function mq:tellraw {"text":"영상재생 모드가 서버에 미설치 — 서버 관리자에게 문의해주세요.","color":"red","msg":""} # 2) 클라이언트 측 모드 (mc_video_player_mod) 부재 — 본인 누락 안내 + 차단. # selector `scores={X=..0}` 는 점수 미존재를 매치하지 않으므로 직전에 # `add @a ... 0` 으로 materialize. 개인 안내는 tellraw @s 직접 (mq:tellraw # 는 내부 @a broadcast 라 부적합). scoreboard players add @a mq_video_mod 0 execute as @a[scores={mq_video_mod=..0}] run tellraw @s ["",{"text":"영상재생 모드 미설치 — 모드 적용 후 다시 입장해주세요.","color":"red"}] execute if entity @a[scores={mq_video_mod=..0}] run return run function mq:tellraw {"text":"필수 모드 미설치 플레이어가 있어 시작할 수 없습니다.","color":"red","msg":""} setblock ~ ~ ~ minecraft:air function mq:quiz/stop_sound $scoreboard players set max_index main $(max_index) scoreboard players set init main 1 dialog show @a mq:page1