# 基本属性

在下面这几节中我们一起来回顾学习方块相关的自定义JSON文件。首先,我们在编辑器中新建一个自定义方块作为示例并观察他的JSON结构。

# 在编辑器中创建

image-20240923133828819

我们创建一个空的标识符为test:test_block的方块。

image-20240923135831634

我们在行为包组件中添加一些最基本的常用组件作为示例。

image-20240923135844089

以上是添加了行为包组件之后的编辑器中显示效果。

image-20240923135117305

我们再在“方块属性列表”栏中添加一些属性。

image-20240923135148504

image-20240923135201136

我们如图所示添加一些内容。

# 实际文件

虽然只有行为包中有存储方块定义的netease_blocks文件夹,但实际上方块也需要在客户端中进行定义。在客户端中定义方块的是一个独立文件blocks.json文件,这个文件就位于客户端的根目录中。我们先查看blocks.json文件:

{
    "format_version": [
        1,
        1,
        0
    ],
    "test:loot": {
        "textures": "test:barrel_side"
    },
    "test:test_block": {
        "isotropic": {
            "down": false,
            "east": false,
            "north": false,
            "south": false,
            "up": false,
            "west": false
        },
        "sound": "stone",
        "textures": "test:custom_dirt"
    }
}

可以看到,我们定义过的所有方块其实都会出现在这同一文件中,该文件中可以定义方块的一系列客户端属性。textures用于定义方块使用的纹理,sound用于定义方块使用的音效,isotropic用于定义方块是否具有“各向异性”效果,即贴图随着坐标不同随机旋转或变化。

我们再来观察方块的行为包定义文件。方块的行为包定义文件位于行为包的netease_blocks文件夹下,打开之后如下所示:

{
    "format_version": "1.10.0",
    "minecraft:block": {
        "components": {
            "minecraft:destroy_time": {
                "value": 0.0
            },
            "minecraft:explosion_resistance": {
                "value": 0.0
            },
            "minecraft:map_color": {
                "color": "#000000"
            },
            "minecraft:max_stack_size": {
                "value": 64
            },
            "netease:aabb": {
                "clip": [

                ],
                "collision": [

                ]
            },
            "netease:fuel": {
                "duration": 0
            },
            "netease:pathable": {
                "value": true
            },
            "netease:render_layer": {
                "value": "opaque"
            },
            "netease:solid": {
                "value": false
            }
        },
        "description": {
            "identifier": "test:test_block"
        }
    }
}

整个结构与物品、实体非常类似,只是组件有所不同。

minecraft:destroy_time用于指定方块的硬度,原版方块的硬度可以在Minecraft Wiki的方块挖掘时间 (opens new window)页面找到。minecraft:explosion_resistance用于指定方块的爆炸抗性。minecraft:map_color用于指定方块在地图上显示的颜色。

netease:aabb是中国版自定义的组件,可以指定方块的碰撞箱和击中箱。netease:fuel可以用来指定方块成为熔炉燃料。netease:pathable用于指定是否可被生物寻路。netease:render_layer用于指定该方块在渲染时的渲染图层,也即渲染时的透明性。netease:solid用于指定方块是否有固体属性。

关于更多的方块组件内容及使用方法,可以参考官方文档自定义方块的JSON组件 (opens new window)章节。

在编辑器中创建

实际文件