方块简介
格式与最低引擎版本 1.21.40
本页面讨论基本方块特性。你可以在这里了解更多关于其他方块组件的信息。
注意
原版方块是硬编码的。你无法覆盖或访问它们。
Minecraft基岩版允许我们将自定义方块添加到我们的世界中,具有各种类似原版的属性。自定义方块可以具有多个阶段(如植物)、方向朝向和其他有用的特性。
本教程将介绍如何为Minecraft的稳定版本创建基本方块。
注册方块¶
方块定义的结构与实体类似:它们包含描述和定义方块行为的组件列表。
与实体不同,方块除了在RP/blocks.json
中没有其他资源定义。
以下是将自定义方块添加到创造模式物品栏的最小行为侧代码。
{
"format_version": "1.21.40",
"minecraft:block": {
"description": {
"identifier": "wiki:custom_block",
"menu_category": {
"category": "construction", // 方块放置的创造模式物品栏或配方书标签
"group": "itemGroup.name.concrete", // 方块所属的可扩展组。(可选)
"is_hidden_in_commands": false // 方块是否在命令中隐藏?(可选)
}
},
"components": {} // 必须存在,即使为空!
}
}
方块描述¶
- 定义方块的
identifier
- 以namespace:identifier
格式的唯一ID。 - 配置方块放置的
menu_category
。- 还可以使用可选参数
group
和is_hidden_in_commands
。
- 还可以使用可选参数
方块描述也是状态和特性的所在,它们在各自的页面中进行了介绍。
添加组件¶
现在,我们的自定义方块使用的是默认组件值(可以在这里找到)。
让我们配置我们自己的功能吧!
{
"format_version": "1.21.40",
"minecraft:block": {
"description": {
"identifier": "wiki:custom_block",
"menu_category": {
"category": "construction"
}
},
"components": {
"minecraft:destructible_by_mining": {
"seconds_to_destroy": 3
},
"minecraft:destructible_by_explosion": {
"explosion_resistance": 3
},
"minecraft:friction": 0.4,
"minecraft:map_color": "#ffffff",
"minecraft:light_dampening": 0,
"minecraft:light_emission": 4,
"minecraft:loot": "loot_tables/blocks/custom_block.json"
}
}
}
minecraft:destructible_by_mining
定义玩家需要挖掘方块到破坏所需的时间。目前,无法为不同工具设置不同的破坏时间。minecraft:destructible_by_explosion
定义对爆炸的抵抗力。值越高,破坏的几率越低。minecraft:friction
定义方块的摩擦力。例如,灵魂沙的摩擦力值较高,因此会减缓玩家的移动。冰的摩擦力值较低,因此具有滑动效果。经典方块如木头或石头的摩擦力为0.4
。minecraft:map_color
是在Minecraft地图上显示该方块的十六进制颜色代码。#ffffff
表示白色。你可以在这里获取其他颜色的十六进制代码。minecraft:light_dampening
定义有多少光线会被阻挡。minecraft:light_emission
定义方块输出的光照等级。minecraft:loot
定义方块掉落的战利品表路径。如果删除此项,方块将掉落自身。你可以在这里了解更多关于战利品表的信息。
在这里浏览更多方块组件!
应用纹理¶
警告
RP/blocks.json
忽略标识符命名空间。你可以在此处放置任何内容,或者根本不包含命名空间,结果没有区别。如果你创建一个与现有原版方块同名(但没有命名空间)的自定义方块,可能会导致问题。
方块声音也可以在RP/blocks.json
中定义。
对于我们的基本16×16×16像素方块,纹理应在RP/blocks.json
中定义。
{
"format_version": "1.21.40",
"wiki:custom_block": {
"textures": "custom_block", // 此纹理短名称应在`terrain_texture.json`中定义,如下所示
"sound": "grass"
}
}
现在,我们需要在RP/textures/terrain_texture.json
中将纹理短名称链接到图像文件路径:
{
"texture_name": "atlas.terrain",
"resource_pack_name": "wiki", // 你的资源包ID
"padding": 8, // 防止纹理在视觉上溢出
"num_mip_levels": 4, // 从远处或角度查看时的纹理质量
"texture_data": {
// 我们的纹理短名称:
"custom_block": {
"textures": "textures/blocks/custom_block" // 链接到图像文件名
}
}
}
每面纹理¶
纹理也可以按面应用。例如,一个自定义的“指南针方块”可以使用以下✨惊艳✨的纹理:
-
textures/blocks/compass_block_down.png
-
textures/blocks/compass_block_up.png
-
textures/blocks/compass_block_north.png
-
textures/blocks/compass_block_east.png
-
textures/blocks/compass_block_south.png
-
textures/blocks/compass_block_west.png
blocks.json
条目将如下所示:
{
"format_version": "1.21.40",
"wiki:compass_block": {
"textures": {
"down": "compass_block_down",
"up": "compass_block_up",
"north": "compass_block_north",
"east": "compass_block_east",
"south": "compass_block_south",
"west": "compass_block_west"
}
}
}
或者,如果你使用材质实例,它们应如下所示:
"minecraft:material_instances": {
"*": {
"texture": "compass_block_down" // 此纹理出现在破坏粒子中
},
"up": {
"texture": "compass_block_up"
},
"north": {
"texture": "compass_block_north"
},
"east": {
"texture": "compass_block_east"
},
"south": {
"texture": "compass_block_south"
},
"west": {
"texture": "compass_block_west"
}
}
以及以下terrain_texture.json
数据:
{
"texture_name": "atlas.terrain",
"resource_pack_name": "wiki",
"padding": 8,
"num_mip_levels": 4,
"texture_data": {
"compass_block_down": {
"textures": "textures/blocks/compass_block_down"
},
"compass_block_up": {
"textures": "textures/blocks/compass_block_up"
},
"compass_block_north": {
"textures": "textures/blocks/compass_block_north"
},
"compass_block_east": {
"textures": "textures/blocks/compass_block_east"
},
"compass_block_west": {
"textures": "textures/blocks/compass_block_west"
},
"compass_block_south": {
"textures": "textures/blocks/compass_block_south"
}
}
}
定义名称¶
最后,让我们像这样定义我们的方块名称:
你可以在这里了解更多关于翻译的信息。
结果¶
在本页面中,你已了解以下内容:
- 方块的基本特性
- 如何将纹理应用于所有方块面
- 如何按面应用纹理
…但这仅仅是开始,看看你还可以做些什么吧!
接下来做什么?¶
了解可用的方块组件,以打造独特的游戏体验。
为什么不为你的方块添加一个自定义模型,使用几何体组件呢? 你还可以配置自己的碰撞和选择框,以匹配!
例如,你可以为自定义水箱方块添加液体深度级别,支持多种液体类型。
浏览原版重建类别中现有方块的多个完整复制品。