music_quiz: 설정을 init/config.mcfunction 한 곳으로 모음

- 주제(title), 곡 개수(max_index), 스폰 위치, 음원 명령 블록 좌표/볼륨,
  이미지 표시 영역 좌표를 모두 init/config.mcfunction 에서 관리
- tellraw 접두사([ … ])가 storage 의 title 을 참조하도록 변경 — 주제
  변경 시 config 한 줄만 고치면 채팅 접두사까지 일관 적용
- load.mcfunction 의 인라인 data merge 블록을 제거하고 init/config 호출로
  대체 (스코어보드/보스바 같은 런타임 인프라는 load 본문에 유지)
- README 의 "곡 목록 수정" 절을 "설정 (한 곳에서 수정)" 으로 재작성

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Claude (owner)
2026-05-13 16:02:27 +09:00
parent 2b61af28a8
commit b2361187b9
4 changed files with 53 additions and 45 deletions

View File

@@ -94,10 +94,11 @@ music_quiz/
│ ├── load.mcfunction # 스코어보드·storage 초기화, init/* 호출
│ ├── tick.mcfunction # 매 틱 서브함수 디스패치 (init 게이팅)
│ ├── tellraw.mcfunction # 매크로 prefix 메시지 헬퍼
│ ├── init/ # 정적 데이터를 storage 로 적재
│ │ ├── songs.mcfunction # mq:main songs 리스트
│ │ ├── buttons.mcfunction # mq:main button_defs 리스트
│ │ ── triggers.mcfunction # mq:main trigger_defs 리스트
│ ├── init/ # 사용자 설정·정적 데이터 (수정 포인트)
│ │ ├── config.mcfunction # 주제·곡 개수·스폰·명령 블록 좌표
│ │ ├── songs.mcfunction # 곡 목록
│ │ ── buttons.mcfunction # 버튼 좌표·실행 명령
│ │ └── triggers.mcfunction # 다수결 트리거 정의
│ ├── check/server.mcfunction # YP / TS 설치 확인
│ ├── commands/ # start·stop·skip·hint·replay·test
│ ├── quiz/ # 게임 진행 로직
@@ -138,18 +139,26 @@ music_quiz/
- `mq:tmp` — setanswer 룩업용 임시 인덱스
- `func:temp``func:` 헬퍼 함수용 임시 NBT
### 곡 목록 수정
### 설정 (한 곳에서 수정)
곡은 `data/mq/function/init/songs.mcfunction` 한 파일에 정의된다.
한 줄에 한 곡씩, 리스트로 append 한다:
세계마다 다른 값은 모두 `data/mq/function/init/` 폴더에서 편집한다.
`/reload` 후 반영된다.
```
data modify storage mq:main songs append value {title:"...", author:"...", alias:["...","..."]}
```
- **`init/config.mcfunction`** — 주제, 곡 개수, 스폰 위치, 음원 명령 블록
좌표, 정답 이미지 표시 영역. `title``[ … ]` 채팅 접두사로도 사용된다.
- **`init/songs.mcfunction`** — 곡 목록 (한 줄에 한 곡씩 append).
`alias` 배열의 문자열은 정답 판정 시 동의어로 인정된다. 곡 수를 바꾸면
`init/config.mcfunction``max_index` 도 함께 맞춰야 한다.
- **`init/buttons.mcfunction`** — 6개 물리 버튼의 좌표·표면 방향·실행 명령.
- **`init/triggers.mcfunction`** — 다수결 트리거(`stop`/`skip`/`hint`/`replay`)
표시 이름·실행 명령.
곡 순서가 게임 내 순서이며, `alias` 배열에 적은 문자열은 정답 판정에서
동의어로 인식된다. 곡 수를 늘리거나 줄이면 `mq:function/load.mcfunction`
`max_index` 기본값(50)도 함께 맞추는 것이 좋다.
`load.mcfunction` 은 위 4개를 호출해 `mq:main` 스토리지를 적재한다.
스코어보드·보스바 같은 런타임 인프라는 `load.mcfunction` 본문에 남아 있다.
다이얼로그 페이지(`data/mq/dialog/page{1,2,3}.json`) 의 타이틀과 설명문구는
JSON 텍스트 컴포넌트가 storage 참조를 일관되게 지원하지 않으므로 직접
편집해야 한다.
### 설치