用资源包替换音效:sounds.json 与 .ogg 格式要求
Minecraft 只播放 Ogg Vorbis 格式,而音效事件并不是一个文件。本文将介绍映射文件、如何添加音效而非替换音效,以及你的音效为什么没有声音,只有单声道文件才有 3D 定位效果,立体声文件不管站哪播放音量都一样大。
音效替换是资源包功能中最容易悄无声息地失败的一项,原因几乎总是以下两种之一:音频格式错误,或者对音效事件的概念理解有误。
只支持 Ogg Vorbis
Minecraft 只播放 .ogg (Vorbis),不支持其他格式。将 .mp3 或 .wav 重命名为 .ogg 是行不通的——容器格式必须真的是 Ogg。
单声道与立体声也很重要:只有单声道文件才会在 3D 空间中定位。 立体声文件在任何位置都以恒定音量播放,这对音乐来说没问题,但对方块音效来说就不对了。如果你自定义的铁砧音效似乎一直跟着你走,那它就是立体声的。
音效事件是一个名称,不是一个文件
entity.pig.ambient 是一个事件。它映射到一个文件列表,每次从中随机选择一个来播放。替换猪的音效意味着重新定义该事件,而不是把文件随便丢到某个地方。
assets/minecraft/
├── sounds.json
└── sounds/custom/my_pig.ogg
{
"entity.pig.ambient": {
"replace": true,
"sounds": [ "custom/my_pig" ]
}
}
三个细节:
replace: true会丢弃原版列表。如果省略它,你的音效会被添加到池中,这样它有时会播放,其他时候则播放原始音效。两种行为都有用;默认行为是添加。- 路径省略
sounds/和.ogg。custom/my_pig解析为assets/minecraft/sounds/custom/my_pig.ogg。 sounds.json位于 assets/minecraft 根目录下,而不是在sounds/里面。
单文件选项
"sounds": [
{ "name": "custom/my_pig", "volume": 0.8, "pitch": 1.2, "weight": 3, "stream": false }
]
weight影响列表中随机选择的偏向。stream: true适用于任何超过几秒的音频——音乐和唱片。非流式加载的长文件会被完整载入内存,可能导致客户端卡顿。volume不能超过 1.0。要更响就得用更响的源文件。
添加全新的音效
使用你自己的命名空间,避免冲突:
assets/my_pack/sounds.json
assets/my_pack/sounds/spell.ogg
{ "spell": { "sounds": ["spell"] } }
然后 /playsound my_pack:spell master @a ~ ~ ~ 1 1。自定义音效事件可用于 /playsound、通过唱片机歌曲定义在唱片机中播放,以及通过玩家头部的 note_block_sound 组件在音符盒中播放;它们不会自动关联到任何游戏行为。
为什么没有声音
- 不是真正的 Ogg Vorbis 格式。
- 路径中包含了
sounds/或.ogg。 sounds.json是无效的 JSON——一个多余的逗号就会毁掉整个文件,导致资源包中所有音效都静音,而不仅仅是新增的那个。pack.mcmeta版本过旧——26.x 需要min_format和max_format,缺少这些的资源包会显示为不兼容。
资源包文件夹结构、音效事件重映射和动画纹理的速查表请见资源包参考工具。