不替换原版,也能拥有自定义画和音乐唱片
画和音乐唱片现在都成了数据包注册表,你可以添加新的,而不是覆盖原版。这里介绍了它们各自所需的文件,以及画必须遵循的尺寸规则。
以前,要获得自定义画,你必须覆盖 paintings_kristoffer_zetterstrand.png,从而失去一幅原版画。现在,画和音乐唱片都成了注册表,所以你可以添加,而不是替换。
画需要两个文件
一个定义画的数据包条目:
data/<namespace>/painting_variant/my_art.json
{
"asset_id": "my_pack:my_art",
"width": 2,
"height": 2,
"title": { "text": "My Art" },
"author": { "text": "Me" }
}
以及一个提供图像的资源包:
assets/my_pack/textures/painting/my_art.png
width 和 height 的单位是方块,并且纹理必须以每方块 16 像素的比例匹配该尺寸。一幅 2×1 的画需要 32×16 的纹理。如果比例不正确,它就会被拉伸;没有自动适应功能。
原版画的尺寸从 1×1 到 4×4 不等。更大的尺寸也可以,但需要一面匹配的墙。
如何获取
添加变体并不会将其放入游戏中。有两种途径:
- 放置标签 — 将其添加到
#minecraft:placeable,这样普通的画物品就有可能随机变成它。 - 直接获取 —
/give @p painting[entity_data={id:"minecraft:painting",variant:"my_pack:my_art"}]
大多数地图制作者想要第二种方式:一幅特定的画,而不是随机的。
音乐唱片需要三个文件
data/<namespace>/jukebox_song/my_song.json
{
"sound_event": { "sound_id": "my_pack:music/my_song" },
"description": { "text": "My Artist - My Song" },
"length_in_seconds": 154,
"comparator_output": 12
}
再加上将该声音 ID 映射到文件的 sounds.json,以及 .ogg 本身:
assets/my_pack/sounds.json
assets/my_pack/sounds/music/my_song.ogg
有三个细节很重要:
length_in_seconds必须正确。 它决定了唱片机何时停止以及粒子流何时结束,而不是音频。错误的值意味着结尾处一片寂静或被截断。comparator_output的值是 1-15,是比较器读取的值。原版唱片都有一个独特的值;如果重复使用一个值,红石就无法区分它们。- 流式传输 ogg 文件。 对于任何音乐长度的音频,请在
sounds.json中使用"stream": true。
然后给予它:
/give @p music_disc_13[jukebox_playable="my_pack:my_song"]
任何唱片物品都可以作为载体——组件决定播放什么。
为什么这比覆盖更好
替换原版资源的包会与所有其他做同样事情的包发生冲突,并且当 Mojang 重命名文件时会损坏。注册表添加是带命名空间的,所以两个添加画的包可以共存。这也是唯一一种无需编辑即可在版本更新后继续使用的方法。
将画的变体、唱片机歌曲、图腾和聊天表情符号构建到一个准备好的资源包 zip 文件中,请使用 Custom Content Pack Makers。