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