☰
MCreator 生物群系水雾颜色(Water Fog Color)参数详解:从界面配置到数据包 JSON 生成原理
2026/10/16 2:46:30 网站建设 项目流程
  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】MCreator

MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

水雾颜色(Water Fog Color)是 MCreator 生物群系(Biome)元素中用于控制水下视野氛围的核心视觉参数。本文将围绕该参数,完整说明它在 MCreator 编辑器中的配置入口、与水体颜色(Water Color)等相近参数的区分、在数据包与模组代码中的实际落地方式,以及 Java 版不同生成器版本之间的写法差异,帮助读者在制作自定义生物群系时精准调出水体内部的环境色调。

一、参数是什么:一句话定位

water_fog_color(水雾颜色)控制的是生物群系内水雾的颜色——即玩家浸入水中、被水体包围时,透过水面看到的雾气色调。这一概念在原文档中有明确表述:

  • 德语(de_DE):Dieser Parameter steuert die Farbe des Wassernebels im Biom
  • 简体中文(zh_CN):此参数控制该生物群系内水雾的颜色
  • 默认英文(default / en_GB):This parameter controls the color of the water fog inside the biome

简言之,它是一个纯视觉(visual)参数:不改变水的材质与透明度,只改变玩家位于水中时所看到的水体雾气颜色,用于营造不同水质下的沉浸感——例如深海偏暗蓝、沼泽偏浑浊绿。

二、在 MCreator 界面中的配置入口

在 MCreator 中,打开生物群系元素的图形化编辑界面后,水雾颜色与天空颜色、雾颜色、草颜色、树叶颜色、水体颜色一同排列在视觉参数区。其 UI 侧实现位于 BiomeGUI.java:

sbbp4.add(HelpUtils.wrapWithHelpButton(this.withEntry("biome/water_fog_color"), L10N.label("elementgui.biome.water_fog_color"))); sbbp4.add(waterFogColor);

其中waterFogColor是一个颜色选择控件(JColor):

private final JColor waterFogColor = new JColor(mcreator, true, false);

两个要点:

  1. 帮助按钮:每个颜色参数前都有带问号的帮助按钮,点击后即会弹出本文所依据的这份帮助文档(biome/water_fog_color条目对应 water_fog_color.md 这一系列多语言文档)。
  2. 读写绑定:编辑器打开既有生物群系时调用waterFogColor.setColor(biome.waterFogColor)(BiomeGUI.java)把已存颜色回填到控件;保存时通过biome.waterFogColor = waterFogColor.getColor()(BiomeGUI.java)写回数据模型。

颜色选择器支持透明度(JColor(mcreator, true, false)的第一个true参数),但实际生成时对颜色值有专门处理,详见下文“生成逻辑”。

三、与相近参数的区别

生物群系视觉参数组里有一组容易混淆的颜色,需要区分清楚。它们全部定义在数据模型 Biome.java 中:

字段控制内容说明
airColor天空颜色(sky_color)天空穹顶的主色调
fogColor雾颜色(fog_color)地面/空中远处的雾气颜色
waterColor水体颜色(water_color)水的表面着色
waterFogColor水雾颜色(water_fog_color)水下雾气/水下视野色调
grassColor草颜色(grass_color)草地色
foliageColor树叶颜色(foliage_color)树木叶片色

核心区别:水面之上看远处是fogColor,潜入水中看周围是waterFogColor。两者数值上常常不同——经典海洋群系天空雾偏浅、水雾偏深蓝,才能形成“水面上下两重天”的观感。从源码结构看,二者都是可空的颜色字段(@Nullable public Color),即不配置时交由生成器填充默认值。

四、从数据模型到 JSON 的生成链路

4.1 数据模型的存储

生物群系的水雾颜色在数据层是一个可空(nullable)的 JavaColor对象,位于 Biome.java:

@Nullable public Color waterFogColor;

可空意味着:用户可以在 GUI 中留空不设置。此时生成模板会回退到 Minecraft 原版的默认水雾颜色(329011,即十六进制0x050533,等价于 RGB(5, 5, 51) 的深蓝)。

4.2 Java 版 1.21.1 数据包生成

MCreator 的生物群系数据包 JSON 由 FreeMarker 模板 plugins/generator-1.21.1/datapack-1.21.1/templates/biome/biome.json.ftl 渲染,视觉参数集中在effects块中:

"foliage_color": ${data.foliageColor?has_content?then(data.foliageColor.getRGB(), 10387789)}, "grass_color": ${data.grassColor?has_content?then(data.grassColor.getRGB(), 9470285)}, "sky_color": ${data.airColor?has_content?then(data.airColor.getRGB(), 7972607)}, "fog_color": ${data.fogColor?has_content?then(data.fogColor.getRGB(), 12638463)}, "water_color": ${data.waterColor?has_content?then(data.waterColor.getRGB(), 4159204)}, "water_fog_color": ${data.waterFogColor?has_content?then(data.waterFogColor.getRGB(), 329011)}

这条water_fog_color行就是本文主题参数的最终产物,其取值逻辑可拆解为:

  • 已设置:data.waterFogColor.getRGB()——把 GUI 选中的 JavaColor对象转换成 RGB 整数值(0xRRGGBB)写入 JSON;
  • 未设置:329011(0x050533)——沿用原版默认深蓝水雾。

该数据包模板通过 neoforge-1.21.1/biome.definition.yaml 注册到 NeoForge 生成器,并输出到@MODDATAROOT/worldgen/biome/@registryname.json。

4.3 新版本(26.3.x)生成器的写法差异

在新一代生成器 plugins/generator-26.3.x/datapack-26.3.x/templates/biome/biome.json.ftl 中,生物群系 JSON 结构升级为命名空间键形式,水雾颜色写作:

"minecraft:visual/water_fog_color": ${data.waterFogColor?has_content?then(data.waterFogColor.getRGB(), 329011)},

与之并列的还有minecraft:visual/sky_color与minecraft:visual/fog_color,且这两者在 26.3.x 模板中同样仅在字段有内容时才输出。但默认值逻辑完全一致:未配置时同样回退到329011(0x050533)。因此无论使用哪一代生成器,留空水雾颜色都会得到原版一致的深蓝水下雾气。

4.4 生成器默认值速查

综合两代模板,water_fog_color相关数值如下(十进制为模板内实际写入值):

参数未配置默认值(十进制)十六进制备注
water_fog_color3290110x050533RGB(5,5,51),原版默认深蓝水雾
water_color41592040x3F76E4原版默认水体蓝

五、基岩版(Bedrock Edition)的水雾颜色

该视觉参数并非 Java 版独有。基岩版生物群系数据模型 BEBiome.java 同样声明了@Nullable public Color waterFogColor,并且:

public boolean hasVisualSettings() { return fogColor != null || waterFogColor != null; }

从源码结构看,waterFogColor与fogColor一起构成了基岩版生物群系的“可视设置”判定条件——当用户在基岩版生物群系中配置了任一颜色时,该生物群系即被视为带有自定义视觉外观,从而触发相应颜色信息的写入。

六、测试与验证

仓库的集成测试数据提供器为生物群系注入了确定性的水雾颜色,用于验证生成与保存链路:

  • Java 版生物群系:biome.waterFogColor = Color.cyan;(TestWorkspaceDataProvider.java)
  • 基岩版生物群系:bebiome.waterFogColor = Color.cyan;(TestWorkspaceDataProvider.java)

以青色(cyan)作为测试值,配合上述 JSON 模板的getRGB()输出逻辑,可在集成测试中检验水雾颜色从 UI 模型到生成产物全链路的正确性。

七、实战建议

  1. 先确定水体主色,再定水雾色:通常waterColor定水面观感,waterFogColor定水下观感。建议两者同色系、深度拉开层次,避免水下出现与水面严重割裂的色差。
  2. 水下氛围优先用色值说话:深海 / 寒带生物群系可偏向0x050533这类深蓝;热带浅海可偏向偏青的浅蓝;沼泽可尝试偏绿调以表现浑浊水质。
  3. 留空即用原版默认:如果不需要特殊水下氛围,直接留空该颜色即可,生成器会自动写入329011(0x050533),与 Minecraft 原版行为完全一致。
  4. 注意新旧生成器的键名差异:1.21.1 产物中是effects.water_fog_color,26.3.x 产物中是minecraft:visual/water_fog_color;直接阅读或手改生成 JSON 时务必区分。

八、小结

water_fog_color(水雾颜色)是 MCreator 生物群系元素中一个“小却关键”的视觉参数,负责水下雾气色调。它的完整链路是:GUI 颜色控件(BiomeGUI.java)→ 数据模型可空字段(Biome.java)→ FreeMarker 模板渲染(biome.json.ftl),未配置时回退到原版默认值329011(0x050533)。掌握该参数后,你可以在自定义生物群系中轻松还原深海、沼泽、热带浅海等不同水质下的沉浸式水下视野。

  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】MCreator

MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

相关推荐

上一篇:Jellyfin ThePornDB 插件安装与配置:从零开始的完整指南
下一篇:穿越机总在抖?用 PIDtoolbox 把黑盒日志变成调参结论

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询