Minecraft 1.21.3自定义音乐唱片无法在唱片机播放问题
自定义音乐唱片无法在Minecraft 1.21.3 Java版唱片机播放的问题
资源包操作
- 将
welcome.ogg放入assets/minecraft/sounds/路径 - 在
sounds.json中注册该声音事件 - 可通过
/playsound minecraft:welcome @p命令正常播放声音
数据包操作
- 在
/world/datapacks/oraxen_jukebox/data/minecraft/jukebox_song/welcome.json路径添加音乐唱片定义文件,内容如下:
{ "sound_event": { "sound_id": "minecraft:welcome" }, "description": { "text": "§6Welcome §eSong" }, "length_in_seconds": 180, "comparator_output": 12 }
- 给自己添加带有
jukebox_playable组件(值为minecraft:welcome)的物品
当前现象
- 物品提示框正确显示“Welcome Song”,数据包已加载
- 将唱片插入唱片机时无声音播放
已尝试排查
- 更换
minecraft以外的命名空间作为声音ID,现象未改变 - 验证声音文件可访问且在资源包中注册正确
问题
导致自定义声音无法在唱片机播放的原因是什么?还需在数据包或资源包中配置其他内容吗?
解答
核心原因:声音事件的Category未设置为record
Minecraft 1.21+的唱片机只会触发**category为"record"**的声音事件,即使你能通过/playsound播放该声音,只要category不符合要求,唱片机就不会播放。
修复步骤
- 修改资源包中的
sounds.json,给welcome声音事件添加"category": "record"字段:
"welcome": { "sounds": [ "welcome" ], "category": "record" }
- 额外验证点(若上述修改后仍无效):
- 确认
jukebox_song文件的命名空间与声音事件一致:如果使用自定义命名空间(比如oraxen_jukebox),需同步修改:- 数据包路径改为
/world/datapacks/oraxen_jukebox/data/oraxen_jukebox/jukebox_song/welcome.json - 声音ID改为
oraxen_jukebox:welcome - 资源包路径改为
assets/oraxen_jukebox/sounds/welcome.ogg,并在assets/oraxen_jukebox/sounds.json中注册该声音
- 数据包路径改为
- 确认物品的
jukebox_playable组件格式正确:使用命令给物品时,确保组件结构无误,例如:
/give @p minecraft:music_disc_emerald{components:{"minecraft:jukebox_playable":{"sound_event":"minecraft:welcome"}}}
内容的提问来源于stack exchange,提问作者Th0rgal




