雾就是那层遮住世界边缘、在水下把一切染成蓝色的朦胧。资源包中的雾文件设置它的颜色以及从多近开始。之后你可以在生物群系中使用它,或者用命令把它给某个玩家。
在本页中,你将为红宝石林地生物群系制作一层温暖的粉色红宝石雾。
文件一览
RP/
fogs/
ruby_fog.json
biomes/
ruby_grove.client_biome.json雾文件
{
"format_version": "1.21.90",
"minecraft:fog_settings": {
"description": {
"identifier": "wiki:ruby_fog"
},
"distance": {
"air": {
"fog_start": 0.6,
"fog_end": 1.0,
"fog_color": "#e8a0a8",
"render_distance_type": "render"
},
"water": {
"fog_start": 0,
"fog_end": 40,
"fog_color": "#8a2e4a",
"render_distance_type": "fixed"
},
"weather": {
"fog_start": 0.2,
"fog_end": 0.6,
"fog_color": "#7a5a60",
"render_distance_type": "render"
}
}
}
}identifier 需要命名空间。每个文件一种雾。
雾在哪些情况下生效
在 distance 中,每个键代表一种情况。你只需要列出想修改的那些。
| 键 | 使用时机 |
|---|---|
air | 正常游玩,在露天环境中。 |
weather | 正在下雨或下雪。 |
water | 头部在水下。 |
lava | 头部在熔岩中。 |
lava_resistance | 带着抗火效果待在熔岩中。 |
powder_snow | 陷在细雪中。 |
字段
| 字段 | 作用 |
|---|---|
fog_color | 雾的颜色,写成 "#e8a0a8" 这样的十六进制字符串。 |
fog_start | 雾开始的位置。 |
fog_end | 雾完全浓密、看不到更远处的位置。 |
render_distance_type | 如何解读上面两个数字。见下文。 |
transition_fog | 可选。让雾随时间渐渐出现,比如刚潜入水中时。 |
render_distance_type 会改变 fog_start 和 fog_end 的含义:
"render":数字是玩家渲染距离的比例。0.6表示渲染距离的 60%。适合air,这样无论渲染距离设置多少都能正常工作。"fixed":数字以格为单位。40表示 40 格远。适合水下,让每个人看到的效果都一样。
浓密阴森的雾
用 "fixed" 配上较小的数字,比如 fog_start 设为 2、fog_end 设为 24,就能做出几乎看不清的沼泽或闹鬼生物群系。
用 transition_fog 让雾渐变
原版的水就用了这个,让你潜入水中后视野慢慢变清晰:
"transition_fog": {
"init_fog": {
"fog_start": 0,
"fog_end": 0.01,
"fog_color": "#8a2e4a",
"render_distance_type": "fixed"
},
"min_percent": 0.25,
"mid_seconds": 5,
"mid_percent": 0.6,
"max_seconds": 30
}init_fog 是你刚进入时的雾。之后它会向正常设置过渡:开始时过渡 min_percent,mid_seconds 秒后过渡到 mid_percent,max_seconds 秒后完全过渡。
体积雾
开启活力视效后,雾还可以是真正的 3D 薄雾,光线能从中穿过。在 distance 旁边添加一个 volumetric 块:
"volumetric": {
"density": {
"air": {
"max_density": 0.08,
"max_density_height": 64,
"zero_density_height": 120
}
},
"media_coefficients": {
"air": {
"scattering": [0.05, 0.03, 0.03],
"absorption": [0.0, 0.0, 0.0]
}
},
"henyey_greenstein_g": {
"air": {
"henyey_greenstein_g": 0.6
}
}
}| 字段 | 作用 |
|---|---|
max_density | 薄雾最浓处有多浓。原版生物群系使用较小的值,大约 0.05。 |
max_density_height | 最浓处所在的高度(Y)。 |
zero_density_height | 雾完全消散的高度。设得比 max_density_height 高,就能做出贴地的雾。 |
scattering | 薄雾反射多少红、绿、蓝光。红色越高,光晕越温暖。 |
absorption | 薄雾吸收多少红、绿、蓝光。 |
henyey_greenstein_g | 光的方向,取值 -1 到 1。接近 1 时,朝太阳看去薄雾会明亮地发光。 |
没有开启活力视效的玩家只能看到 distance 雾,所以一定也要设置它。
使用你的雾
在生物群系中
用 minecraft:fog_appearance 让客户端生物群系指向它:
"minecraft:fog_appearance": {
"fog_identifier": "wiki:ruby_fog"
}你也可以用这种方式给原版生物群系换上新的雾。用原版标识符(比如 minecraft:plains)创建一个客户端生物群系文件即可。
在两个生物群系的交界处,游戏会把它们的雾混合在一起,所以过渡很平滑。
用命令
/fog 为选定的玩家在所有雾之上叠加一层雾,而且重新加载世界后依然保留:
/fog @a push wiki:ruby_fog ruby_event
/fog @a pop ruby_event最后一个词是你自己起的名字。pop 会移除该名字下最新的一层雾,remove 会移除该名字下的所有雾。
游戏如何选择设置
雾是分层工作的。对于每项设置,游戏从最上层往下检查,使用第一个设置了它的层:
- 用
/fog添加的雾(最新的优先)。 - 玩家周围生物群系的雾。
- 默认雾。
- 如果都没有设置,则使用内置值。
所以一个只设置了 water 的 /fog 文件会保留生物群系的 air 雾。
雾没有变化?
检查 fog_identifier 是否和雾文件中的 identifier 完全一致,包括命名空间。然后检查文件是否在 RP/fogs/ 中,以及资源包是否已在世界中启用。