# 自定义流体
# 概述
自定义流体需要设置两个方块,一个静态流体,一个动态流体。液体在流动过程中最外层是动态流体,其他都是静态流体,二者会相互转换。当流体扩散完毕后可见的均已转化为静态流体,可以通过设置不同颜色来观察动态流体与静态流体之间的相互转换。
# 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可实现生成别的物品,可结合自定义桶实现自定义流体的装载与倒出
# 示例
动态流体:
{
"format_version": "1.16.0",
"minecraft:block": {
"description": {
"identifier": "customblocks:flowing_green_water",
"register_to_creative_menu": true,
"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" ]
}
}
}
}
静态流体:
{
"format_version": "1.16.0",
"minecraft:block": {
"description": {
"identifier": "customblocks:green_water",
"register_to_creative_menu": false,
"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" ]
}
}
}
}