music_quiz: v1.0.22 게이트 제거 되돌림 — 진짜 fix 는 모드 v1.3.6 에서
v1.0.22 는 채팅정답 모드 false negative 를 게이트 자체를 삭제해서 회피 했는데, 이건 채팅정답 모드 서버 설치 검증 자체를 잃는 잘못된 방향이었음. 모드 없는 서버에서도 시작이 됨. 진짜 root cause 는 모드 쪽 presence pulse 가 매 server tick 단일 hook 이라 banner/mohist 같은 fabric-bukkit 하이브리드에서 안 firing 되던 것. mc_chat_answer_mod v1.3.6 에서 SERVER_STARTED / PlayerJoin / ServerTick 셋으로 확장 — 어느 한 이벤트만 firing 돼도 점수 갱신. 이 commit 은 데이터팩 쪽 v1.0.22 변경을 되돌림 (start.mcfunction 의 mq_chat_mod 게이트, load.mcfunction 의 mq_chat_mod objective add/set 복구). 결과적으로 v1.0.21 의 데이터팩 동작과 동일. temp/README.md 갱신 — v1.0.23 로 가는 절차는 모드 jar 업그레이드 + (만약 v1.0.22 를 거쳐갔다면) start/load 두 파일 덮어쓰기. v1.0.21 에서 곧장 v1.0.23 으로 오면 datapack 파일은 동일하므로 사실상 모드 업그레이드만. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,22 +1,26 @@
|
||||
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 → 서버에 모드 미설치.
|
||||
# - `<player> 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 로 시작이 막혔음.
|
||||
# * mq_chat_mod : mc_chat_answer_mod = 서버 전용 모드 (채팅 가로채기는
|
||||
# 서버에서 일어남, 클라 설치 불필요). 따라서 fake player `#server`
|
||||
# 점수를 모드가 매 server tick 마다 1 로 set. 서버에 모드가 없으면
|
||||
# 이 점수가 갱신되지 않음.
|
||||
#
|
||||
# 1) 서버 측 영상 모드 부재 — 전원 차단, 단일 안내.
|
||||
# * mq_video_mod : mc_video_player_mod = 클라이언트 측 렌더링 + 서버 측
|
||||
# 컴포넌트. 같은 objective 안에 holder 두 종류 사용:
|
||||
# - `#server mq_video_mod` : 서버 컴포넌트가 매 tick 1 로 갱신 (server
|
||||
# presence). 없으면 0 → 서버에 모드 미설치.
|
||||
# - `<player> mq_video_mod` : 클라 join 시 payload 가 서버로 오면 서버
|
||||
# 컴포넌트가 해당 플레이어 점수를 1 로 set (client presence). 클라
|
||||
# 미설치면 0 유지.
|
||||
# 이렇게 분리해야 "서버 미설치"와 "특정 플레이어 클라 미설치"가 안내에서
|
||||
# 구분된다.
|
||||
#
|
||||
# 1) 서버 측 모드 부재 — 전원 차단, 단일 안내. 서버 부재는 클라 검사보다
|
||||
# 우선해야 — 클라가 다 설치되어 있어도 서버가 없으면 동작 안 한다.
|
||||
execute unless score #server mq_chat_mod matches 1 run return run function mq:tellraw {"text":"채팅정답 모드가 서버에 미설치 — 서버 관리자에게 문의해주세요.","color":"red","msg":""}
|
||||
execute unless score #server mq_video_mod matches 1 run return run function mq:tellraw {"text":"영상재생 모드가 서버에 미설치 — 서버 관리자에게 문의해주세요.","color":"red","msg":""}
|
||||
|
||||
# 2) 클라이언트 측 모드 (mc_video_player_mod) 부재 — 본인 누락 안내 + 차단.
|
||||
|
||||
Reference in New Issue
Block a user