# chat_answer (채팅정답) 음악퀴즈(`mq`) 데이터팩의 짝이 되는 **서버사이드** 모드. 정답 입력을 받는 상태(`scoreboard players get init main == 5`) 동안 플레이어가 채팅을 입력하면 메시지를 가로채서 다음을 실행한다: ``` execute as <플레이어 UUID> run function mq:answer/submit {text:'<채팅 내용>'} ``` 채팅은 다른 플레이어에게 broadcast 되지 않으므로 정답이 화면에 노출되지 않는다. `init` 점수가 5 가 아닐 때는 채팅이 평소처럼 모두에게 보인다. ## 빌드 JDK 21 필요. ``` ./gradlew buildAll ``` 산출물: - `build/libs/chat_answer--all.jar` — **Fabric + NeoForge 통합 단일 jar** (권장) - `fabric/build/libs/chat_answer-fabric-.jar` — Fabric 전용 - `neoforge/build/libs/chat_answer-neoforge-.jar` — NeoForge 전용 ## 설치 서버의 `mods/` 폴더에 통합 jar (`*-all.jar`) 하나만 넣으면 된다. 로더가 Fabric 이든 NeoForge 든 자기 쪽 진입점만 인식해서 동작한다. 요구사항: - Minecraft 1.21.6+ 서버 - Fabric: Fabric Loader 0.16+, Fabric API - NeoForge: 21.6+ ## 호환성 - 빌드 타깃: Minecraft 1.21.6 (Dialog 시스템 최초 도입 버전). - 사용하는 API (`ServerMessageEvents.ALLOW_CHAT_MESSAGE` / `ServerChatEvent`, `Scoreboard`, `MinecraftServer.getCommands()`) 는 1.21.x 전반에 안정적이라 같은 jar 가 보통 그대로 동작. - Mojang 이 chat / scoreboard / command 시스템을 깨는 변경을 적용하면 재빌드 필요. ## 구조 - `common/` — 로더 비종속 핵심 로직 (Mojang 매핑 기반) - `fabric/` — Fabric Loader 진입점 + `ServerMessageEvents` 훅 - `neoforge/` — NeoForge 진입점 + `ServerChatEvent` 훅 통합 jar 는 두 로더의 결과물을 하나로 묶되, Fabric 쪽 common 클래스는 패키지 재배치(`kr.tkrmagid.chatanswer.core` → `kr.tkrmagid.chatanswer.fabric.core`)로 NeoForge 쪽 같은 클래스와 충돌하지 않게 분리한다. ## 라이센스 MIT