前言
前面 4 期,我们已经学完了有关物品的知识。这次,我们就来学习如何添加一个方块。这是一个很复杂的内容,它的难度比物品要大得多。
然而,如果只需要一个简单的方块,那么方块和物品就大同小异了。接下来,我们将花若干期的时间学习关于方块的所有内容。
准备
学习方块是一个由简到难的过程。
在行为包根目录下打开 blocks
文件夹,新建一个文件。命名就是你的方块的英文名,这样比较好管理。
你也可以新建一个文件夹,把它命名英文名,把所有相关的文件都放进去,方便管理。
方块的文档结构和物品大同小异,具体格式见下。
但方块的命名分化十分严重:
- 你可能看到
minecraft:aim_collision
、minecraft:selection_box
、minecraft:pick_collision
。 - 其实这三个作用相同,都是指定方块的判定框。
区别是它们出现在不同版本:
minecraft:pick_collision
→ 1.17.0minecraft:aim_collision
→ 1.18.0minecraft:selection_box
→ 1.19.40
再如:
minecraft:destroy_time
是旧版本写法(1.16.100)minecraft:destructible_by_mining
是新版本写法(1.19.40)
所以命名确实很混乱。
我在这篇文档里一律采用 1.21.0 版本格式。
注意: 格式版本控制着方块能访问哪些特性,建议始终保持最新。
第一个方块
现在就可以开始了。在你新建的文件里写以下代码:
点击展开代码
{
"format_version": "1.21.0",
"minecraft:block": {
"description": {
"identifier": "namespace:identifier",
"menu_category": {
"category": "items",
"group": "",
"is_hidden_in_commands": false
}
},
"components": {
"minecraft:loot": "loot_tables/example_block_loot.json",
"minecraft:friction": 0.4,
"minecraft:map_color": "#00ff00"
}
}
}
上面是一个基础方块的结构。
如果你想让方块有更丰富功能,就要用更多组件。
如果你想让它在某些情形下响应,就要用“触发器组件”。
渲染
这一期我们还要给方块添加纹理。
最常见的方法是在资源包根目录的 blocks.json
中添加如下内容:
{
"方块ID": {
"textures": "起一个短名",
"sound": "amethyst"
}
}
然后打开 textures/terrain_texture.json
文件,加入以下内容:
点击展开代码
{
"texture_data": {
"这里写之前起的短名": {
"textures": "textures/blocks/test"
}
}
}
接着:
- 在
textures
文件夹中新建blocks
文件夹 - 放入一张正方形图片,命名为你指定的短名(例如
test.png
)
建议图片为 .png
格式,兼容性最好。
优先级为 .tga
> .png
> .jpg
.
最后,为了让游戏内名字显示正常:
- 打开资源包的
texts/zh_CN.lang
- 添加:
tile.命名空间ID.name=方块名字
注意不能换行,也不能使用 \
进行转义。
打开游戏,你应该可以在物品栏看到你的方块了。
::: info 注意
如果纹理有透明区域,游戏中可能会变黑或失真。这个我们将在下一期学习如何解决
:::
总结
下一期我们将开始讲解方块组件。
与物品组件不同,我会按照类别讲解,比如:
- 渲染相关组件
- 碰撞箱组件
如果你有点跟不上,我会提供模板包,照着修改就可以啦!
📎 附件:点击下载模板包