v1.3.6 는 SERVER_STARTED + JOIN + ServerTick 셋만 등록해서, tick 이벤트가
죽은 호스트에서 이미 접속 중인 플레이어가 /reload 하면 어느 훅도 발화
안 되어 #server mq_chat_mod 가 0 인 채로 남는 갭이 있었음. v1.3.7 에서
END_DATA_PACK_RELOAD 훅 추가로 reload 직후에도 presence 가 다시 찍힘.
데이터팩 v1.0.23 자체는 그대로 — 모드 jar 만 v1.3.7 로 업그레이드하면 됨.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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>
모드를 설치했는데도 /start 가 "채팅정답 모드가 서버에 미설치" 로 막히던
문제. 검증 방식 (모드가 매 server tick #server mq_chat_mod 점수를 1 로
set 하는지 확인) 이 다음 케이스에서 false negative:
- 사용자가 옛 모드 버전 (v1.3.4 이하, presence tick 추가 전) 을 쓸 때
- banner/mohist 같은 fabric-bukkit 하이브리드 호스트에서
ServerTickEvents.END_SERVER_TICK 이 안 들어올 때
채팅정답 모드는 입력을 편하게 만들어 주는 선택적 편의 기능일 뿐이고
모드 없는 환경에서도 /trigger input dialog 경로로 정답 제출이 가능.
게이트 자체를 제거하는 게 근본 해결. 영상재생 모드 (mc_video_player_mod)
는 진짜 필수이므로 게이트 유지.
- commands/start.mcfunction: mq_chat_mod 검사 라인 제거 + 주석 갱신
- load.mcfunction: mq_chat_mod objective add/set 제거 (defensive remove
는 유지)
- temp/: start.mcfunction, load.mcfunction 추가 + README 갱신
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
(a) interaction 박스가 stone_button hitbox 와 겹쳐 있어서 한 번 클릭에
interaction 도 발화하고 stone_button 도 vanilla 클릭으로 인식되어
powered=true 애니메이션이 같이 일어나던 문제. interaction 박스를 버튼
면 바깥쪽으로 한 두께(0.125) 만큼 빼서 ray 가 stone_button 에 닿기
전에 interaction 에서 멈추도록.
south z: 0.0625 → -0.0625, north z: 0.9375 → 1.0625
east x: 0.0625 → -0.0625, west x: 0.9375 → 1.0625
(b) MC 1.20.5+ 부터 text_display.text 는 String 이 아닌 직접 TextComponent
compound. 이전에 String 안에 JSON 을 넣어서 그 JSON 자체가 텍스트로
렌더링되던 문제 (`{"text":"게임시작",...}` 가 그대로 보임). compound
형태 `text:{text:"...",color:"...",font:"..."}` 로 변경.
temp/ 부분 적용 패키지의 btn.mcfunction 과 README 도 동기화.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- btn.mcfunction 의 positioned $(x) $(y) $(z) → $(x).0 $(y).0 $(z).0.
마인크래프트 vec3 인자는 정수만 쓰면 자동으로 +0.5 보정 (블록 중심으로
잡힘) 되기 때문에 positioned 2773 86 5968 이 실제로는 (2773.5, 86,
5968.5) 가 되고, 거기서 ~0.375 ~0.0625 같은 오프셋을 더해 interaction
을 소환하면 박스가 블록 중앙으로 0.5 칸 밀린다. decimal 형태로 강제해
보정 회피.
- btn_prep.mcfunction 을 execute-unless-data 방식에서 defaults 컴파운드 +
merge 방식으로 재작성. 이전 v1.0.19 의 다중 공백 정규화는 근본 원인이
아니었음 — `execute unless data storage mq:tmp btn.label run ...` 구문
자체를 MC 26.1.2 파서가 거부. data modify ... merge from 으로 source 의
키가 target 을 덮어쓰는 머지를 활용하면 같은 기능을 문제 라인 없이 구현.
- temp/ 부분 적용 패키지의 README 와 두 파일을 동기화. 진짜 원인 설명으로
재작성.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
전체 datapack 교체 없이 두 파일만 덮어써서 v1.0.19 와 동일 상태로
만들 수 있도록 temp/ 에 수정된 파일과 적용 가이드만 남긴다.
- temp/data/mq/function/repeat/buttons/btn_prep.mcfunction
- temp/data/mq/function/repeat/buttons/btn.mcfunction
- temp/README.md (부분 적용 방법)
이전에 있던 temp/gif.png, gif.png.mcmeta 는 이번 부분 적용 패키지와
무관해서 제거.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>