# 부분 적용 가이드 (→ v1.0.26) 전체 datapack zip 을 새로 풀지 않고, 이 폴더의 파일만 같은 경로에 덮어쓰면 v1.0.26 와 동일한 동작이 됩니다. 본인 월드 좌표·곡 목록 등이 들어 있는 `init/*.mcfunction` 은 일부러 포함하지 않았습니다 — 덮어쓰면 좌표가 날아가니까요. ## v1.0.26 = v1.0.25 + 문서 정리 v1.0.26 자체에는 데이터팩 동작 변경이 없습니다. 변경 사항: - 삭제됐던 `docs/mc_video_player_mod_integration.md` 복구. - 루트 `README.md` 의 오류 정정: - 음원 채널 `weather` → 실제는 `player` (UI 비프만 `weather`) 로 정정. - 폐기된 `marker` 스토리지/엔티티 설명을 “legacy 정리용” 으로 정리. - `temp/` 부분 적용 패키지 v1.0.26 기준으로 복구 (이 폴더). v1.0.25 의 데이터팩 코드를 이미 쓰고 있다면 mods · 데이터팩 변경 없이 끝납니다. **이 폴더를 적용해야 하는 건 v1.0.25 이전 버전에서 올라오는 경우** 입니다. ## 같이 들어 있는 누적 fix (v1.0.19 ~ v1.0.25) ### 버튼 인프라 (`repeat/buttons/`) - `btn.mcfunction` / `btn_prep.mcfunction` / `handler.mcfunction` - v1.0.20: `positioned $(x).0 $(y).0 $(z).0` (정수 vec3 의 자동 +0.5 보정 회피), `btn_prep` 의 `merge from` defaults 패턴 (`execute unless data storage ...` 파서 거부 회피). - v1.0.21: interaction 3 타일 분할 (`width × width` 정사각형 강제 회피), `text_display` 도입, text component 직접 표기 (1.20.5+ JSON string 렌더 회피). - v1.0.24: interaction 깊이 부호 정정 (벽 안 → 플레이어 쪽), `text_display` Y 위치 보정, 라벨 bold. - v1.0.25: hitbox 미세조정 (가운데 타일 폭 0.13, height 0.26, 깊이 0.07/0.93, text_display Y `~-0.5`), 셀렉터 정렬 통일. ### 모드 게이트 (`commands/start.mcfunction` + `load.mcfunction`) - v1.0.23 / v1.0.25: `#server mq_chat_mod` 점수로 `mc_chat_answer_mod` 설치 검증, `#server mq_video_mod` + ` mq_video_mod` 점수로 `mc_video_player_mod` 서버/클라 설치 검증. 미설치 시 사유와 함께 차단. - `load.mcfunction` 이 objective 생성 + `#server` 0 materialize. ### 타이머 분할 (`repeat/timer.mcfunction` + `repeat/timers/`) - v1.0.25: 큰 `timer.mcfunction` 을 init 단계별 (`init2` 카운트다운, `init6` 다음 곡, `init10` 엔딩) 서브함수로 분할. `timer.mcfunction` 은 init 게이팅만 하고 각 서브를 호출. ## 적용 방법 ### 1. 모드 jar 확인 (이미 설치돼 있으면 skip) - `mc_chat_answer_mod` v1.3.7+ : 서버 mods 폴더. https://git.tkrmagid.kr/tkrmagid/mc_chat_answer_mod/releases/tag/v1.3.7 - `mc_video_player_mod` : 서버 mods + 클라이언트 mods 양쪽 설치 필요. ### 2. 데이터팩 파일 덮어쓰기 서버의 datapack 폴더 (예: `world/datapacks/music_quiz/`) 기준으로 이 폴더 아래 파일을 **같은 경로에 덮어쓰세요**. ``` temp/data/mq/function/commands/start.mcfunction -> /data/mq/function/commands/start.mcfunction temp/data/mq/function/load.mcfunction -> /data/mq/function/load.mcfunction temp/data/mq/function/repeat/buttons/btn.mcfunction -> /data/mq/function/repeat/buttons/btn.mcfunction temp/data/mq/function/repeat/buttons/btn_prep.mcfunction -> /data/mq/function/repeat/buttons/btn_prep.mcfunction temp/data/mq/function/repeat/buttons/handler.mcfunction -> /data/mq/function/repeat/buttons/handler.mcfunction temp/data/mq/function/repeat/timer.mcfunction -> /data/mq/function/repeat/timer.mcfunction temp/data/mq/function/repeat/timers/init2.mcfunction -> /data/mq/function/repeat/timers/init2.mcfunction temp/data/mq/function/repeat/timers/init6.mcfunction -> /data/mq/function/repeat/timers/init6.mcfunction temp/data/mq/function/repeat/timers/init10.mcfunction -> /data/mq/function/repeat/timers/init10.mcfunction ``` `repeat/timers/` 폴더는 없을 수도 있습니다 — 그 경우 새로 생성하고 안에 파일 3 개를 넣으세요. ### 3. (옵션) 버튼에 라벨 표시하고 싶으면 `init/buttons.mcfunction` 편집 좌표를 건들지 않기 위해 `init/buttons.mcfunction` 은 포함하지 않았습니다. 직접 편집해서 각 `button_defs` 항목에 `label` 필드를 추가하면 됩니다. 옵션 필드는 `label`, `label_color` (기본 `black`), `label_font` (기본 `minecraft:default`), `label_scale` (기본 `"1.0"`). ``` data modify storage mq:main button_defs append value {n:"start", x:..., y:..., z:..., f:"south", c:"function mq:commands/start with storage mq:main", label:"게임시작"} ``` ### 4. /reload ``` /reload ``` ## 확인 - 콘솔에 `btn_prep` / `btn` 파싱 에러 없음. - 버튼 클릭 시 stone_button powered 애니메이션 발생하지 않음 (interaction 박스가 한 두께 바깥에서 ray 를 가로채므로). - 라벨이 버튼 바로 아래 벽면에 굵게 표시. - 채팅정답 / 영상재생 모드 미설치 시 `/start` 가 사유 메시지와 함께 차단. - 모드 둘 다 정상 설치되어 있으면 `/start` 정상 진행.