附加包小册 §07:第一个方块
附加包也允许我们通过数据驱动的方式添加一个方块,与物品类似,方块的数据驱动文件也由两部分构成:
- 行为文件
- 资源文件
行为文件
在我们的行为包下新建blocks文件夹,然后创建一个<方块ID>.json文件。
[!TIP]
文件不一定必须按照<方块ID>.json的格式进行命名,这里这么做是为了方便后续查找;我们也可以把这个文件创建在
blocks的子文件夹下。
在这个文件中写入以下内容:
1 | { |
format_version是文件使用的格式版本,这里是 1.20.40;
在description中:
identifier设置了方块的命名空间 ID,注意这里的命名空间是example,在实际的项目中不建议使用;menu_category设置了方块在创造模式物品栏的位置,category会设置物品的分类,group会设置物品的分组;- 一般地,
category可以填nature、equipment、construction或items; - 一般地,
group可以填任意原版分组的本地化字符串,注意设置的分组要与分类相对应; - 我们也可以通过
item_catalog添加自定义分组。
- 一般地,
在components中,我们可以为方块添加组件,每一个组件都可以为方块添加相应的功能,接下来我们就为其添加一些基础组件。
添加组件
向components对象下添加如下内容:
1 | "minecraft:destructible_by_mining": { |
这些组件的功能为:
minecraft:destructible_by_mining组件设置了挖掘方块所需要的时间,这里统一设置为 3;minecraft:destructible_by_explosion组件设置了方块的爆炸抗性,这里设置为 3;minecraft:map_color设置了方块在地图上显示的颜色;minecraft:loot设置了方块被挖掘后掉落的战利品。
现在,我们的文件应该是这样的了:
1 | { |
资源文件
进行到这一步进入游戏,与自定义物品类似,我们就可以在创造模式物品栏的「建筑」分类看到我们的自定义物品了,然而这时它使用了默认纹理,并且名称为一大串英文字符。
接下来,我们将会学习如何为自定义方块的添加客户端资源。
添加纹理
因为我们的方块没有应用自定义模型,所以在资源包根目录下的blocks.json下定义纹理即可:
1 | { |
我们将方块的纹理名设置为了example.first_block,为了使游戏正常读取纹理,我们需要在资源包的textures文件夹创建一个terrain_texture,映射纹理名和纹理路径。
假定我们的纹理为textures/blocks/first_block.png,则应该在其中写入:
1 | { |
其中:
resource_pack_name设置了资源包的名称;texture_name设置纹理类型,因为要定义方块纹理名,因此只能填写atlas.terrain;texture_data对象中定义了所有方块的纹理名,其按照如下格式:
1 | "texture_data": { |
[!IMPORTANT]
纹理路径中不要出现后缀名
应用纹理与模型
回到我们的行为文件,我们这时需要利用minecraft:geometry组件为方块添加一个模型,例如:
1 | "minecraft:geometry": { |
再使用minecraft:material_instances组件为方块的面分配纹理:
1 | "minecraft:material_instances": { |
在其中,*表示所有方块的所有面,texture设置了要应用的纹理名。
当然,我们可以为方块的每一个面分配不同的纹理,如:
1 | "minecraft:material_instances": { |
此时,*代表了除了down、up、north之外的所有面。
方块名称
在语言文件中添加如下内容:
1 | tile.example:first_block.name=第一个方块 |
这时,将附加包导入进游戏,我们就可以看到新添加的自定义方块了拥有了完整的行为与资源了。
小结
在本节中,我们了解了:
- 如何加入自定义方块;
- 如何为自定义方块添加资源。
接下来,我们将会了解最困难的一部分——自定义实体。
- 标题: 附加包小册 §07:第一个方块
- 作者: 方琉璃
- 创建于 : 2026-01-07 00:00:00
- 更新于 : 2026-08-13 19:23:00
- 链接: https://fanglimao.github.io/2026/01/06/addons/block/
- 版权声明: 本文章采用 CC BY-SA 4.0 进行许可。