Skip to content

自定义含水方块 ​

自定义含水方块允许你控制方块与水的交互方式——被水流冲毁、必须放置在水中、在水源中含水、或在水源和流水中都含水。中国版提供了 4 个独立的网易组件来覆盖这些场景,无需设置 base_block,直接在 components 中添加即可。

前置条件

请先阅读 自定义基础方块 了解方块的注册流程和 JSON 组件体系。含水方块使用 format_version: "1.10.0",不需要开启实验性玩法。

概述 ​

原版 MC 中,台阶、栅栏、珊瑚等方块具有"含水"(waterlogged)特性——它们可以和水共存在同一个方块位置。中国版将这一能力拆分为 4 个独立组件,让你精确控制方块与水的交互行为:

  • netease:water_destory — 方块被水流冲毁(如火把)
  • netease:water_only — 方块必须放置在水中(如海带)
  • netease:water_source — 方块仅在水源中含水
  • netease:water_flow_source — 方块在水源和流水中都含水

这 4 个组件彼此独立,你可以根据需要单独使用或组合使用。

组件字段一览 ​

netease:water_destory ​

设置方块是否会被水流摧毁。设为 true 时,方块无法放置在水源和流水中,并且会被水流冲毁为掉落物。

键类型默认值说明
valuebool—必填,是否会被水流摧毁
json
"netease:water_destory": { "value": true }

你可以在方块的 loot table 中配置被水流冲毁后的掉落物。

netease:water_only ​

设置方块是否必须放置在水中。设为 true 时,方块只能放置在水源或流水位置,放置后如果水被移除,方块会被破坏。

键类型默认值说明
valuebool—必填,是否必须放置在水中
json
"netease:water_only": { "value": true }

netease:water_source ​

设置方块在水源方块中是否表现为含水。仅在水源中生效,流水中不生效。含水方块位置的水源仍然会向周围流动。

键类型默认值说明
valuebool—必填,是否在水源方块中表现为含水
json
"netease:water_source": { "value": true }

netease:water_flow_source ​

设置方块在水源和流水方块中都表现为含水。这是最宽松的含水模式,适合需要完全兼容水环境的方块。

键类型默认值说明
valuebool—必填,是否在水源和流水中都表现为含水
json
"netease:water_flow_source": { "value": true }

4 种组件对比 ​

组件水源中含水流水中含水被水流摧毁必须在水中放置典型场景
netease:water_destory--是-火把、红石线
netease:water_only---是海带、珊瑚
netease:water_source是否--栅栏、台阶
netease:water_flow_source是是--铁栏杆、玻璃板

组件名称拼写

netease:water_destory 中 destory 是引擎内的固定拼写(非 destroy),请按此拼写配置,否则组件不会生效。

完整示例 ​

示例 1:被水流冲毁的方块(类似火把) ​

文件路径:行为包/netease_blocks/fragile_torch.json

json
{
    "format_version": "1.10.0",
    "minecraft:block": {
        "description": {
            "identifier": "mymod:fragile_torch",
            "register_to_create_menu": true,
            "category": "Nature"
        },
        "components": {
            "minecraft:destroy_time": { "value": 0.5 },
            "minecraft:block_light_emission": { "value": 1.0 },
            "minecraft:block_light_absorption": { "value": 0 },
            "netease:render_layer": { "value": "alpha" },
            "netease:solid": { "value": false },
            "netease:aabb": {
                "collision": {
                    "min": [0.4, 0.0, 0.4],
                    "max": [0.6, 0.6, 0.6]
                },
                "clip": {
                    "min": [0.4, 0.0, 0.4],
                    "max": [0.6, 0.6, 0.6]
                }
            },
            "netease:water_destory": { "value": true }
        }
    }
}

示例 2:必须放置在水中的方块(类似海带) ​

文件路径:行为包/netease_blocks/underwater_crystal.json

json
{
    "format_version": "1.10.0",
    "minecraft:block": {
        "description": {
            "identifier": "mymod:underwater_crystal",
            "register_to_create_menu": true,
            "category": "Nature"
        },
        "components": {
            "minecraft:destroy_time": { "value": 1.0 },
            "minecraft:block_light_emission": { "value": 0.8 },
            "minecraft:block_light_absorption": { "value": 0 },
            "netease:render_layer": { "value": "blend" },
            "netease:water_only": { "value": true }
        }
    }
}

示例 3:仅在水源中含水的方块(类似栅栏) ​

文件路径:行为包/netease_blocks/waterlogged_fence.json

json
{
    "format_version": "1.10.0",
    "minecraft:block": {
        "description": {
            "identifier": "mymod:waterlogged_fence",
            "register_to_create_menu": true,
            "category": "Construction"
        },
        "components": {
            "minecraft:destroy_time": { "value": 2.0 },
            "minecraft:block_light_absorption": { "value": 0 },
            "netease:render_layer": { "value": "alpha" },
            "netease:aabb": {
                "collision": {
                    "min": [0.375, 0.0, 0.375],
                    "max": [0.625, 1.0, 0.625]
                },
                "clip": {
                    "min": [0.375, 0.0, 0.375],
                    "max": [0.625, 1.0, 0.625]
                }
            },
            "netease:water_source": { "value": true }
        }
    }
}

示例 4:在水源和流水中都含水的方块(类似铁栏杆) ​

文件路径:行为包/netease_blocks/waterlogged_bar.json

json
{
    "format_version": "1.10.0",
    "minecraft:block": {
        "description": {
            "identifier": "mymod:waterlogged_bar",
            "register_to_create_menu": true,
            "category": "Construction"
        },
        "components": {
            "minecraft:destroy_time": { "value": 3.0 },
            "minecraft:explosion_resistance": { "value": 6.0 },
            "minecraft:block_light_absorption": { "value": 0 },
            "netease:render_layer": { "value": "alpha" },
            "netease:tier": {
                "digger": "pickaxe",
                "destroy_special": true,
                "level": 1
            },
            "netease:aabb": {
                "collision": {
                    "min": [0.375, 0.0, 0.375],
                    "max": [0.625, 1.0, 0.625]
                },
                "clip": {
                    "min": [0.375, 0.0, 0.375],
                    "max": [0.625, 1.0, 0.625]
                }
            },
            "netease:water_flow_source": { "value": true }
        }
    }
}

常见问题 ​

含水方块位置的水没有流动效果 ​

原因: 你可能使用了 netease:water_source 而不是 netease:water_flow_source。netease:water_source 只在水源方块中生效,流水位置不会表现为含水。如果你需要在流水中也含水,请改用 netease:water_flow_source。

方块放不上去,提示"无法放置" ​

原因: 如果配置了 netease:water_destory 为 true,方块无法放置在任何有水的位置。检查你是否在水中尝试放置一个配置了 water_destory 的方块。

组件名拼写为 destroy 后不生效 ​

原因: 引擎中固定使用 netease:water_destory(注意 destory 的拼写),这是引擎内部的命名,不是 destroy。请严格按照 destory 拼写。

含水方块的贴图显示异常 ​

原因: 含水方块通常使用非标准碰撞盒,需要配合 netease:render_layer 设为 alpha 或 blend,以及 minecraft:block_light_absorption 设为 0,否则可能出现遮挡、变黑等渲染异常。

下一步 ​