op: 데이터팩 출력을 실제 music_quiz zip 으로 교체

가이드 (mc_datapack/launcher_datapack_연동_가이드.txt) 에 따라:
- file/datapacks/music_quiz_template/ 에 mc_datapack 의 music_quiz/ 정적
  파일을 미리 동봉 (data/mq/function/init/songs.mcfunction 제외).
- src/server/datapack.ts: list.music → SNBT (`{title, author, alias}`)
  songs.mcfunction 빌더와 archiver 기반 zip 스트리머 추가.
- /op/datapack/:packName/generate 가 텍스트 placeholder 대신
  music_quiz_<key>.zip 을 Content-Disposition attachment 로 내려준다.
- datapack.ejs 의 코드블록·복사 UI 제거, 곡 수는 서버 렌더 시점에 표시.
- 더 이상 쓰이지 않는 locales 의 datapackOutput.* 키 제거, datapack
  버튼 라벨/상태 문구를 zip 다운로드용으로 정리.
This commit is contained in:
2026-05-13 16:34:34 +09:00
parent 2344c4b8d2
commit af884706d4
66 changed files with 871 additions and 72 deletions

View File

@@ -0,0 +1,46 @@
{
"type": "minecraft:confirmation",
"title": {
"text": "음악퀴즈",
"bold": true
},
"body": [
{
"type": "minecraft:plain_message",
"contents": {
"text": "음악퀴즈 설명",
"bold": true
}
},
{
"type": "minecraft:plain_message",
"contents": {
"text": "\n1. 정답입력시에 채팅으로 입력해주시면 됩니다.\n[ 띄어쓰기, 영어 대소문자, 특수문자 ]\n상관없이 입력하셔도 인식 됩니다.\n\n2. 모든 소리는 날씨 소리로 조절할수 있습니다.\n\n3. 게임시작후 버튼들은 과반수(절반이상)가 눌러야 작동합니다.\n\n4. 힌트는 특수문자 제외 정답의 절반이 가려져서 나옵니다.\n힌트는 여러번 받을수 있고,\n받을때마다 가려지는 부분이 달라집니다."
},
"width": 300
}
],
"inputs": [],
"can_close_with_escape": true,
"pause": false,
"after_action": "close",
"yes": {
"label": {
"text": "취소",
"type": "text"
},
"action": {
"type": "minecraft:run_command",
"command": "trigger cancel"
}
},
"no": {
"label": {
"text": "다음 페이지 ->"
},
"action": {
"type": "minecraft:show_dialog",
"dialog": "mq:page2"
}
}
}

View File

@@ -0,0 +1,45 @@
{
"type": "minecraft:confirmation",
"title": {
"text": "음악퀴즈",
"bold": true
},
"body": [
{
"type": "minecraft:plain_message",
"contents": {
"text": "음악퀴즈 설명",
"bold": true
}
},
{
"type": "minecraft:plain_message",
"contents": {
"text": "\n5. 다시듣기는 노래가 끝까지 다 재생되었거나,\n다시 처음부분부터 들어보고싶을때\n누르면 좋습니다.\n\n6. 뒤에있는 \"소리 테스트\" 버튼으로\n미리 소리크기를 들어보고 조절할수있습니다."
}
}
],
"inputs": [],
"can_close_with_escape": true,
"pause": false,
"after_action": "close",
"yes": {
"label": {
"text": "<- 이전 페이지",
"type": "text"
},
"action": {
"type": "minecraft:show_dialog",
"dialog": "mq:page1"
}
},
"no": {
"label": {
"text": "다음 페이지 ->"
},
"action": {
"type": "minecraft:show_dialog",
"dialog": "mq:page3"
}
}
}

View File

@@ -0,0 +1,46 @@
{
"type": "minecraft:confirmation",
"title": {
"text": "음악퀴즈",
"bold": true
},
"body": [
{
"type": "minecraft:plain_message",
"contents": {
"text": "음악퀴즈 설명",
"bold": true
}
},
{
"type": "minecraft:plain_message",
"contents": {
"text": "\n재미있게 즐겨주세요."
}
}
],
"inputs": [],
"can_close_with_escape": true,
"pause": false,
"after_action": "close",
"yes": {
"label": {
"text": "<- 이전 페이지",
"type": "text"
},
"action": {
"type": "minecraft:show_dialog",
"dialog": "mq:page2"
}
},
"no": {
"label": {
"text": "준비완료",
"bold": true
},
"action": {
"type": "minecraft:run_command",
"command": "trigger ready"
}
}
}