music_quiz: 무대 의존 제거 + 정적 데이터 스토리지화 + 매 틱 게이팅

- 무대 한정 코드 제거: repeat/map/ (트리/조명), images/image_custom (파이브가이즈),
  load.mcfunction의 map 스코어보드·fill·counter 초기화
- 매 틱 디스패치를 init 상태로 게이팅:
  · timer는 init>=2, check_answer는 init in {5,6}에서만 호출
  · idle(init=0) 틱의 함수 호출 8개 → 4개
- 곡 50개를 매크로 체인(250+ 명령/회) → 스토리지 리스트 O(1) 룩업으로 전환
  mq:init/songs가 mq:main.songs를 적재, setanswer는 index-1로 인덱스 룩업
- 버튼/트리거 정의를 mq:init/buttons / mq:init/triggers로 분리해
  mq:main.button_defs · trigger_defs 스토리지 리스트로 관리
- repeat/triggers/trigger.mcfunction: 투표 후처리 산술 블록 중 변하지 않는
  max_player·rest_player 재계산 제거, $(n)_player 갱신만 1라인
- 작가용 메모 수정.txt 제거
- README.md: 변경 사항·새 구조·스토리지 스키마 반영

566 lines -, 154 lines +.

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

View File

@@ -1,304 +1,8 @@
function mq:quiz/macro/setanswer { \
index: 1, \
title: "Lose My Mind", \
author: "Don Toliver", \
alias: ["루즈 마이 마인드","루스 마이 마인드", "ㅣㅐㄴㄷ ㅡㅛ ㅡㅑㅜㅇ"] \
}
function mq:quiz/macro/setanswer { \
index: 2, \
title: "The Chase", \
author: "Hearts2Hearts", \
alias: ["더 체이즈", "더 체이스", "솓 촘ㄴㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 3, \
title: "HOT SAUCE", \
author: "BABYMONSTER", \
alias: ["핫 소스", "ㅙㅅ ㄴ면ㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 4, \
title: "Golden", \
author: "HUNTR/X", \
alias: ["골든"," 해ㅣㅇ두"] \
}
function mq:quiz/macro/setanswer { \
index: 5, \
title: "돌림판", \
author: "머쉬베놈", \
alias: ["Spin the wheel"] \
}
function mq:quiz/macro/setanswer { \
index: 6, \
title: "OVERDRIVE", \
author: "TWS", \
alias: ["오버드라이브", "ㅐㅍㄷㄱㅇ걒ㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 7, \
title: "눈물참기", \
author: "QWER", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 8, \
title: "깨어", \
author: "tripleS", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 9, \
title: "like JENNIE", \
author: "제니", \
alias: ["라이크 제니", "라익 제니", "라잌 제니", "ㅣㅑㅏㄷ ㅓ두ㅜㅑㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 10, \
title: "Rich Man", \
author: "aespa", \
alias: ["리치 맨", "갸초 ㅡ무"] \
}
function mq:quiz/macro/setanswer { \
index: 11, \
title: "I DO ME", \
author: "KiiiKiii", \
alias: ["아이 두 미", "아 두 미", "ㅑ 애 ㅡㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 12, \
title: "SIGN", \
author: "izna", \
alias: ["사인", "냐후"] \
}
function mq:quiz/macro/setanswer { \
index: 13, \
title: "WICKED", \
author: "ALLDAY PROJECT", \
alias: ["위키드", "쟈찯ㅇ"] \
}
function mq:quiz/macro/setanswer { \
index: 14, \
title: "Good Thing", \
author: "i-dle", \
alias: ["굿 띵", "굳 띵", "해ㅐㅇ 소ㅑㅜㅎ"] \
}
function mq:quiz/macro/setanswer { \
index: 15, \
title: "0+0", \
author: "한로로", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 16, \
title: "HANDS UP", \
author: "MEOVV", \
alias: ["핸즈 업", "핸스 업", "ㅗ뭉ㄴ ㅕㅔ"] \
}
function mq:quiz/macro/setanswer { \
index: 17, \
title: "Blue Valentine", \
author: "NMIXX", \
alias: ["블루 발렌타인", "ㅠㅣㅕㄷ ㅍ미두샤ㅜㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 18, \
title: "Flower", \
author: "오반", \
alias: ["플라워", "리ㅐㅈㄷㄱ"] \
}
function mq:quiz/macro/setanswer { \
index: 19, \
title: "Soda Pop", \
author: "Saja Boys", \
alias: ["소다 팝", "냉ㅁ ㅔㅐㅔ"] \
}
function mq:quiz/macro/setanswer { \
index: 20, \
title: "REBEL HEART", \
author: "IVE", \
alias: ["레블 하트", "ㄱ듀디 ㅗㄷㅁㄳ"] \
}
function mq:quiz/macro/setanswer { \
index: 21, \
title: "GO!", \
author: "CORTIS", \
alias: ["고", "고!", "GO", "해", "해!"] \
}
function mq:quiz/macro/setanswer { \
index: 22, \
title: "BEEP", \
author: "izna", \
alias: ["빕", "삡", "ㅠㄷ데"] \
}
function mq:quiz/macro/setanswer { \
index: 23, \
title: "Pookie", \
author: "FIFTY FIFTY", \
alias: ["푸키", "ㅔㅐㅐㅏㅑㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 24, \
title: "DAISIES", \
author: "Justin Bieber", \
alias: ["데이지즈", "데이지스", "ㅇ먀냗ㄴ"] \
}
function mq:quiz/macro/setanswer { \
index: 25, \
title: "빌려온 고양이", \
author: "ILLIT", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 26, \
title: "TOO BAD", \
author: "OfficialGDRAGON", \
alias: ["투 배드", "투 밷", "새ㅐ ㅠㅁㅇ"] \
}
function mq:quiz/macro/setanswer { \
index: 27, \
title: "시작의 아이", \
author: "마크툽", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 28, \
title: "STYLE", \
author: "Hearts2Hearts", \
alias: ["스타일", "ㄴ쇼ㅣㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 29, \
title: "Good Goodbye", \
author: "화사", \
alias: ["굿 굿바이", "굳 굳바이", "해ㅐㅇ 해ㅐ유ㅛㄷ"] \
}
function mq:quiz/macro/setanswer { \
index: 30, \
title: "너에게 닿기를", \
author: "10CM", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 31, \
title: "IRIS OUT", \
author: "Kenshi Yonezu", \
alias: ["아이리스 아웃", "이리스 아웃", "ㅑ갼 ㅐㅕㅅ"] \
}
function mq:quiz/macro/setanswer { \
index: 32, \
title: "Sugar On My Tongue", \
author: "Tyler, The Creator", \
alias: ["슈가 온 마이 텅", "슈가 온 마 텅", "녛ㅁㄱ ㅐㅜ ㅡㅛ 새ㅜ혇"] \
}
function mq:quiz/macro/setanswer { \
index: 33, \
title: "Hollywood Action", \
author: "BOYNEXTDOOR", \
alias: ["할리우드 액션", "ㅙㅣㅣㅛ재ㅐㅇ ㅁㅊ샤ㅐㅜ"] \
}
function mq:quiz/macro/setanswer { \
index: 34, \
title: "SPAGHETTI", \
author: "LE SSERAFIM", \
alias: ["스파게티", "넴혿ㅅ시"] \
}
function mq:quiz/macro/setanswer { \
index: 35, \
title: "Gabriela", \
author: "KATSEYE", \
alias: ["가브리엘라", "ㅎ뮤갸딤"] \
}
function mq:quiz/macro/setanswer { \
index: 36, \
title: "LIKE YOU BETTER", \
author: "프로미스나인", \
alias: ["라이크 유 베터", "라이크 유 베럴", "라잌 유 베터", "라잌 유 베럴", "ㅣㅑㅏㄷ ㅛㅐㅕ ㅠㄷㅅㅅㄷㄱ"] \
}
function mq:quiz/macro/setanswer { \
index: 37, \
title: "뛰어", \
author: "BLACKPINK", \
alias: ["jump"] \
}
function mq:quiz/macro/setanswer { \
index: 38, \
title: "CHANEL", \
author: "Tyla", \
alias: ["샤넬", "초무디"] \
}
function mq:quiz/macro/setanswer { \
index: 39, \
title: "오늘만 I LOVE YOU", \
author: "BOYNEXTDOOR", \
alias: ["오늘만 아이 러브 유", "오늘만 ㅑ ㅣㅐㅍㄷ ㅛㅐㅕ"] \
}
function mq:quiz/macro/setanswer { \
index: 40, \
title: "earthquake", \
author: "지수", \
alias: ["어스퀘이크", "얼스퀘이크", "ㄷㅁㄱ소벼맏","보만다 지진"] \
}
function mq:quiz/macro/setanswer { \
index: 41, \
title: "윽!", \
author: "염따", \
alias: ["윽"] \
}
function mq:quiz/macro/setanswer { \
index: 42, \
title: "Abracadabra", \
author: "Lady Gaga", \
alias: ["아브라카다브라", "뮥ㅁㅊㅁㅇ뮥ㅁ"] \
}
function mq:quiz/macro/setanswer { \
index: 43, \
title: "멸종위기사랑", \
author: "이찬혁", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 44, \
title: "Dirty Work", \
author: "aespa", \
alias: ["더티 워크", "덜티 워크", "더티 월크", "덜티 월크", "약쇼 재가"] \
}
function mq:quiz/macro/setanswer { \
index: 45, \
title: "HOT", \
author: "LE SSERAFIM", \
alias: ["핫", "ㅙㅅ"] \
}
function mq:quiz/macro/setanswer { \
index: 46, \
title: "FAMOUS", \
author: "ALLDAY PROJECT", \
alias: ["페이머스", "ㄹ므ㅐㅕㄴ"] \
}
function mq:quiz/macro/setanswer { \
index: 47, \
title: "XOXZ", \
author: "IVE", \
alias: ["엑스 오 엑스 지", "엑스 오 엑스 제트", "탵ㅋ"] \
}
function mq:quiz/macro/setanswer { \
index: 48, \
title: "여름이었다", \
author: "H1-KEY", \
alias: [] \
}
function mq:quiz/macro/setanswer { \
index: 49, \
title: "LOV3", \
author: "식케이", \
alias: ["럽3", "ㅣㅐㅍ3"] \
}
function mq:quiz/macro/setanswer { \
index: 50, \
title: "Drive", \
author: "Ed Sheeran", \
alias: ["드라이브", "ㅇ걒ㄷ"] \
}
scoreboard players operation song_idx func.temp = index main
scoreboard players remove song_idx func.temp 1
execute store result storage mq:tmp idx int 1 run scoreboard players get song_idx func.temp
function mq:quiz/macro/setanswer with storage mq:tmp
scoreboard players set stop buttons -1
scoreboard players set skip buttons -1