site: reorder datapack SNBT fields to volume-first

데이터팩 songs.mcfunction 의 곡 SNBT 출력 순서를
{volume, title, author, alias, description} 로 변경(요청). volume 기본값은
1.0 유지. SNBT 는 키 순서 무관이라 데이터팩 파싱에는 영향 없음.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 01:35:59 +09:00
parent fa5da6d052
commit 21eadb3b20

View File

@@ -21,7 +21,7 @@ function aliasListSnbt(aliases: string[]): string {
return `[${parts.join(',')}]` return `[${parts.join(',')}]`
} }
/** 한 곡(MusicListEntry) → `{title:"...", author:"...", alias:[...], description:"...", volume:1.0}` SNBT. */ /** 한 곡(MusicListEntry) → `{volume:1.0, title:"...", author:"...", alias:[...], description:"..."}` SNBT. */
function entrySnbt(entry: MusicListEntry): string { function entrySnbt(entry: MusicListEntry): string {
const title = escapeSnbtString(entry.title ?? '') const title = escapeSnbtString(entry.title ?? '')
// launcher 의 artist → 데이터팩 SNBT 의 author. 빈 값은 빈 문자열로 그대로 둔다. // launcher 의 artist → 데이터팩 SNBT 의 author. 빈 값은 빈 문자열로 그대로 둔다.
@@ -30,7 +30,7 @@ function entrySnbt(entry: MusicListEntry): string {
const description = escapeSnbtString(entry.description ?? '') const description = escapeSnbtString(entry.description ?? '')
// launcher 가 생성하는 항목에는 volume 기본값 1.0 을 항상 넣는다. // launcher 가 생성하는 항목에는 volume 기본값 1.0 을 항상 넣는다.
// 운영자는 생성된 mcfunction 에서 곡별로 직접 값을 바꿔 사용한다. // 운영자는 생성된 mcfunction 에서 곡별로 직접 값을 바꿔 사용한다.
return `{title:"${title}", author:"${author}", alias:${alias}, description:"${description}", volume:1.0}` return `{volume:1.0, title:"${title}", author:"${author}", alias:${alias}, description:"${description}"}`
} }
/** /**
@@ -45,7 +45,7 @@ export function buildSongsMcfunction(list: PackList): string {
lines.push('# 선택 — volume (이 곡만의 /playsound 음량. 미지정시 init/config.mcfunction') lines.push('# 선택 — volume (이 곡만의 /playsound 음량. 미지정시 init/config.mcfunction')
lines.push('# 의 audio.volume 사용)') lines.push('# 의 audio.volume 사용)')
lines.push('# 곡 순서가 리소스팩의 track_NN / cover_NN 인덱스와 1:1 매칭된다.') lines.push('# 곡 순서가 리소스팩의 track_NN / cover_NN 인덱스와 1:1 매칭된다.')
lines.push('# 예) {title:"Quiet Song", author:"...", alias:[...], description:"...", volume:1.0}') lines.push('# 예) {volume:1.0, title:"Quiet Song", author:"...", alias:[...], description:"..."}')
lines.push('data modify storage mq:main songs set value []') lines.push('data modify storage mq:main songs set value []')
for (const entry of list.music) { for (const entry of list.music) {
lines.push(`data modify storage mq:main songs append value ${entrySnbt(entry)}`) lines.push(`data modify storage mq:main songs append value ${entrySnbt(entry)}`)