diff --git a/src/server/datapack.ts b/src/server/datapack.ts index 21945d5..432b9de 100644 --- a/src/server/datapack.ts +++ b/src/server/datapack.ts @@ -21,16 +21,18 @@ function aliasListSnbt(aliases: string[]): string { return `[${parts.join(',')}]` } -/** 한 곡(MusicListEntry) → `{volume:1.0, title:"...", author:"...", alias:[...], description:"..."}` SNBT. */ +/** 한 곡(MusicListEntry) → `{volume:0.5, title:"...", author:"...", alias:[...], description:"...", video:"..."}` SNBT. */ function entrySnbt(entry: MusicListEntry): string { const title = escapeSnbtString(entry.title ?? '') // launcher 의 artist → 데이터팩 SNBT 의 author. 빈 값은 빈 문자열로 그대로 둔다. const author = escapeSnbtString(entry.artist ?? '') const alias = aliasListSnbt(entry.aliases ?? []) const description = escapeSnbtString(entry.description ?? '') - // launcher 가 생성하는 항목에는 volume 기본값 1.0 을 항상 넣는다. + // video = 곡의 유튜브 영상 주소(MusicListEntry.url). + const video = escapeSnbtString(entry.url ?? '') + // launcher 가 생성하는 항목에는 volume 기본값 0.5 를 항상 넣는다. // 운영자는 생성된 mcfunction 에서 곡별로 직접 값을 바꿔 사용한다. - return `{volume:1.0, title:"${title}", author:"${author}", alias:${alias}, description:"${description}"}` + return `{volume:0.5, title:"${title}", author:"${author}", alias:${alias}, description:"${description}", video:"${video}"}` } /** @@ -41,11 +43,11 @@ function entrySnbt(entry: MusicListEntry): string { export function buildSongsMcfunction(list: PackList): string { const lines: string[] = [] lines.push('# 곡 한 개 = 한 줄.') - lines.push('# 필수 — title, author, alias, description') + lines.push('# 필수 — title, author, alias, description, video') lines.push('# 선택 — volume (이 곡만의 /playsound 음량. 미지정시 init/config.mcfunction') lines.push('# 의 audio.volume 사용)') lines.push('# 곡 순서가 리소스팩의 track_NN / cover_NN 인덱스와 1:1 매칭된다.') - lines.push('# 예) {volume:1.0, title:"Quiet Song", author:"...", alias:[...], description:"..."}') + lines.push('# 예) {volume:0.5, title:"Quiet Song", author:"...", alias:[...], description:"...", video:"..."}') lines.push('data modify storage mq:main songs set value []') for (const entry of list.music) { lines.push(`data modify storage mq:main songs append value ${entrySnbt(entry)}`)