跳转至

方块简介

格式与最低引擎版本 1.21.40

本页面讨论基本方块特性。你可以在这里了解更多关于其他方块组件的信息。

注意

原版方块是硬编码的。你无法覆盖或访问它们。

Minecraft基岩版允许我们将自定义方块添加到我们的世界中,具有各种类似原版的属性。自定义方块可以具有多个阶段(如植物)、方向朝向和其他有用的特性。

本教程将介绍如何为Minecraft的稳定版本创建基本方块。

注册方块

方块定义的结构与实体类似:它们包含描述和定义方块行为的组件列表。

与实体不同,方块除了在RP/blocks.json中没有其他资源定义。

以下是将自定义方块添加到创造模式物品栏的最小行为侧代码。

BP/blocks/custom_block.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
    • 还可以使用可选参数groupis_hidden_in_commands

方块描述也是状态特性的所在,它们在各自的页面中进行了介绍。

添加组件

现在,我们的自定义方块使用的是默认组件值(可以在这里找到)。

让我们配置我们自己的功能吧!

BP/blocks/custom_block.json
{
    "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中定义。

如果你想应用自定义模型,则应使用几何体材质实例组件。

RP/blocks.json
{
    "format_version": "1.21.40",
    "wiki:custom_block": {
        "textures": "custom_block", // 此纹理短名称应在`terrain_texture.json`中定义,如下所示
        "sound": "grass"
    }
}

现在,我们需要在RP/textures/terrain_texture.json中将纹理短名称链接到图像文件路径:

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条目将如下所示:

RP/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:block > components
"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数据:

RP/textures/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"
        }
    }
}

定义名称

最后,让我们像这样定义我们的方块名称:

RP/texts/en_US.lang
tile.wiki:custom_block.name=自定义方块
tile.wiki:compass_block.name=指南针方块

你可以在这里了解更多关于翻译的信息。

结果

在本页面中,你已了解以下内容:

  • 方块的基本特性
  • 如何将纹理应用于所有方块面
  • 如何按面应用纹理

…但这仅仅是开始,看看你还可以做些什么吧!

接下来做什么?

了解可用的方块组件,以打造独特的游戏体验。

为什么不为你的方块添加一个自定义模型,使用几何体组件呢? 你还可以配置自己的碰撞选择框,以匹配!

利用方块状态排列有条件地启用方块上的组件。

例如,你可以为自定义水箱方块添加液体深度级别,支持多种液体类型。

浏览原版重建类别中现有方块的多个完整复制品。

自定义玻璃方块开始,使用材质实例进行简单的实现!