自定义流体 
概述 
自定义流体需要设置两个方块,一个静态流体,一个动态流体。液体在流动过程中最外层是动态流体,其他都是静态流体,二者会相互转换。当流体扩散完毕后可见的均已转化为静态流体,可以通过设置不同颜色来观察动态流体与静态流体之间的相互转换。
base_block设置 
- 自定义流体的base_block,静态流体需要设为liquid,动态流体需要设为flowing_liquid
 - 命名规则,因为静态流体与动态流体是相互转换的,在引擎层通过flowing去定位,所以需要注册一对才能正常使用 
- 静态流体——命名空间:流体方块名,例如
customLiquid:red_water - 动态流体——命名空间:flowing_流体方块名,例如
customLiquid:flowing_red_water 
 - 静态流体——命名空间:流体方块名,例如
 
动画纹理 
- 流体需要在
resource/textures/flipbook_textures.json中配置动画纹理使其贴图拥有动态流动效果,属于微软功能。 
流体方块介绍 
- 可在netease:liquid中设置流体方块的流动速度、流动范围、颜色以及能否使船浮起来
 - 流体方块与原版水一致,如图所示:
 

netease:liquid 
| 键 | 类型 | 默认值 | 解释 | 
|---|---|---|---|
| liquid_color | array | [255, 255, 255, 255] | 可选,流体颜色,4个数依次对应RGBA,取值范围均为0-255。透明度只有在开启了“精美图像”选项时生效。 | 
| spread_range | int | 8 | 可选,流体范围,以动态流体为中心往外扩散的格数,取值范围1-8,仅动态流体有效 | 
| spread_delay | int | 5 | 可选,流体扩散刻数,每经过该刻数扩散一格,每秒20刻,仅动态流体有效 | 
| spread_fire | bool | false | 可选,是否传播火,可参考岩浆效果 | 
| can_float_boat | bool | true | 可选,流体是否能浮起船来,动态流体及静态流体均需要设置 | 
| bucket_name | string | "water_bucket" | 可选,空桶对水源使用使获得的物品,默认是原版的水桶(如果是自定义物品需带上命名空间,输入完整的物品id) | 
| water_splash | string | "minecraft:water_splash_particle_manual" | 可选,实体进入流体时会播放对应的粒子特效,在玩家所在位置附近随机播放若干该特效,特效需采用微软特效 | 
| mob_effects | array(dict) | [] | 可选,实体进入流体时添加状态效果,会触发对应的添加/刷新状态效果的事件 | 
| remove_effects | array(string) | [] | 可选,实体进入流体时移除状态效果,会触发对应的移除状态效果的事件 | 
- 如果没有注册该组件,液体颜色、范围及扩散延迟默认和原版水一样,但是将无法使船浮起来
 
添加状态效果mob_effects各字段配置如下:
| 键 | 类型 | 解释 | 
|---|---|---|
| effect_name | string | 状态效果名称 | 
| duration | int | 状态效果持续时间 | 
| amplifier | int | 状态效果倍率,比等级小1,例如力量II的倍率为1 | 
| show_particle | bool | 是否显示状态效果的粒子效果,默认不显示 | 
自定义流体方块相关特性 
- 可以在游戏内通过指令/setblock放置方块,静态方块放置后不会向周围扩散,当其周围方块发生变化时会转变成流动方块,继承流动特性
 - 继承自原版水,因此会有原版水的特性,例如和岩浆有互动、玩家进入会有流动效果、溺水、与海绵互动等。
 - 用水桶装载后会生成普通水桶,通过配置bucket_name可实现生成别的物品,可结合自定义桶实现自定义流体的装载与倒出
 
示例 
动态流体:
json
{
    "format_version": "1.16.0",
    "minecraft:block": {
        "description": {
            "identifier": "customblocks:flowing_green_water",
            "base_block": "flowing_liquid"
        },
        "components": {
            "netease:liquid": {
                "liquid_color": [ 0, 128, 0, 254 ],
                "spread_range": 4,
                "spread_delay": 5,
                "bucket_name": "customBucket:green_bucket",
                "spread_fire": true,
                "mob_effects": [
                    {
                        "effect_name": "slowness",
                        "duration": 3,
                        "amplifier": 1,
                        "show_particle": true
                    },
                    {
                        "effect_name": "weakness",
                        "duration": 1,
                        "amplifier": 4
                    }
                ],
                "remove_effects": [ "speed", "jump_boost" ]
            }
        }
    }
}静态流体:
json
{
    "format_version": "1.16.0",
    "minecraft:block": {
        "description": {
            "identifier": "customblocks:green_water",
            "base_block": "liquid"
        },
        "components": {
            "netease:liquid": {
                "liquid_color": [ 0, 128, 0, 254 ],
                "bucket_name": "customBucket:green_bucket",
                "spread_fire": true,
                "mob_effects": [
                    {
                        "effect_name": "slowness",
                        "duration": 3,
                        "amplifier": 1,
                        "show_particle": true
                    },
                    {
                        "effect_name": "weakness",
                        "duration": 1,
                        "amplifier": 4
                    }
                ],
                "remove_effects": [ "speed", "jump_boost" ]
            }
        }
    }
}