- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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.
本文围绕 MCreator 中维度(Dimension)设计模块的默认效果(Default Effects)参数展开,系统讲解Overworld、The Nether、The End三种内置效果各自的天穹渲染、雾效、云层与时间机制,并结合源码剖析该参数如何被写入最终生成的维度类型 JSON 与客户端特效代码。读完本文,你将能准确理解这一参数与"自定义效果(Custom Effects)"的分工,并据此为自己的自定义维度选择或复刻合适的视觉基调。
参数定位:自定义效果被禁用时的兜底方案
在 MCreator 的维度设计界面中,"默认效果(Default Effects)"是一个下拉选择参数。官方帮助文档(英文原文、中文译文)对其的定义非常明确:
此参数决定当自定义维度效果被禁用时,所使用的维度效果。
也就是说,该参数只在"使用自定义效果(Use Custom Effects)"选项未被勾选时生效。当useCustomEffects为true时,维度会改用用户自定义的雾色、天空色、云高等效果(参见帮助文档 use_custom_effects.md),此时默认效果下拉框会在界面中被禁用。
这一分工在源码中体现得十分直观。维度数据模型类 Dimension.java 中声明了:
@LimitedOptions({ "overworld", "the_nether", "the_end" }) public String defaultEffects; public boolean useCustomEffects;其中defaultEffects的合法取值被限制为overworld、the_nether、the_end三个字符串,与下文三个内置效果一一对应;构造函数中将默认值设为this.defaultEffects = "overworld"(新建维度默认采用主世界效果)。
三个内置效果的具体行为
官方帮助文档按取值依次说明了三种效果的行为,这是本文的核心内容,逐条展开如下:
| 取值(选项) | 天穹渲染 | 雾效 | 云层 | 备注 |
|---|---|---|---|---|
| Overworld(主世界) | 天空显示太阳与月亮 | 无浓雾,雾色随太阳高度变化 | 云在 Y=192 处出现 | 唯一支持"固定时间"的内置效果类型 |
| The Nether(下界) | 不渲染天空 | 存在浓雾 | 无云 | 与下界世界生成配合的经典阴沉观感 |
| The End(末地) | 紫色静态天空 | 无浓雾 | 无云 | 静谧、无昼夜交替的异界氛围 |
Overworld:完整的昼夜循环与动态雾色
选择主世界效果时,维度将获得:
- 太阳与月亮同现的天穹:拥有完整的昼夜交替视觉;
- 无浓雾:可见距离不受压制,视野开阔;
- 雾色随太阳高度动态变化:日出日落时分雾色呈现暖色调过渡,正午则偏冷;
- 云层出现在 Y=192:这对应数据模型中的默认
cloudHeight = 192(Dimension.java 第 148 行),且该云高可通过"云层高度(Cloud Height)"参数调整,详见 cloud_height.md; - 支持固定时间(Fixed Time):帮助文档特别注明,自版本 26.1 起,仅此效果类型支持冻结昼夜循环。这一点在界面联动逻辑中也有硬性约束。
The Nether:无天空的密闭空间
选择下界效果时:
- 不渲染天空:天穹完全隐藏,营造密闭压抑的空间感;
- 存在浓雾:可见距离被显著压制,配合下界典型的世界生成类型("Nether like gen")效果一致;
- 无云:云层渲染被关闭。
The End:紫色静态天穹
选择末地效果时:
- 紫色静态天空:天穹呈固定紫色,不存在昼夜交替;
- 无云、无浓雾:视野开阔,衬托末地虚空的孤寂感。
源码落地:从数据模型到维度类型 JSON
数据模型中的关联字段
除了defaultEffects与useCustomEffects,Dimension.java 还通过一组相邻字段完整定义了维度的视觉系统:
public boolean hasClouds; @Numeric(init = 192, min = -2032, max = 2031, step = 16) public int cloudHeight; @LimitedOptions({ "NORMAL", "NONE", "END" }) public String skyType; public boolean sunHeightAffectsFog; public boolean hasFog; @Numeric(init = 0, min = 0, max = 24000, step = 1) public int fixedTimeValue;可以看到,cloudHeight的可调范围为 -2032 到 2031,步进 16;skyType提供NORMAL、NONE、END三种天空渲染方式(详见 sky_type.md),与默认效果的三选项在语义上相互对应。
生成器如何消费该参数
不同 MCreator 版本对应的代码生成器处理方式存在差异,从仓库中两个主版本的数据包生成器模板可以清楚看到这一演进:
1.21.1 生成器(datapack-1.21.1 的 dimension_type.json.ftl)采用经典的原版效果引用方式——当自定义效果关闭时,直接在 JSON 的effects字段写入原版命名空间下的效果 ID:
<#if data.useCustomEffects> "effects": "${modid}:${registryname}" <#else> "effects": "minecraft:${data.defaultEffects}" </#if>即minecraft:overworld、minecraft:the_nether或minecraft:the_end,直接复用原版维度的完整视觉效果。
26.3.x 生成器(datapack-26.3.x 的 dimension_type.json.ftl)则采用属性化(attributes)写法,将三种默认效果拆解为具体的视觉属性写入 JSON。对照源码可得到三种效果的精确参数值:
- Overworld 分支(第 53–56 行):
"minecraft:visual/fog_color": "#c0d8ff", "minecraft:visual/sky_color": "#78a7ff", "minecraft:visual/ambient_light_color": "<由 ambientLight 参数换算>" - The Nether 分支(第 57–63 行):
fog_start_distance = 10、fog_end_distance = 96,即"浓雾";环境光基于#302821换算,天空光颜色#7a7aff且sky_light_factor = 0,对应"不渲染天空"的封闭观感; - The End 分支(第 64–70 行):环境光基于
#3f473f,雾色#181318,天空色#000000(静态黑底),天空光颜色#ac60cd(紫色)且sky_light_factor = 0,对应"紫色静态天空"。
该模板还展示了三种效果在**时间线(timeline)**层面的差异(第 89–99 行):
the_end:"has_fixed_time": true,时间线为#minecraft:in_end(末地无昼夜);the_nether:"has_fixed_time": true,时间线为#minecraft:in_nether,并附带"cardinal_light": "nether";overworld:时间线为#minecraft:in_overworld,default_clock为minecraft:overworld(保留昼夜循环)。
这解释了帮助文档中"仅 Overworld 支持固定时间"的底层原因:只有主世界效果对应的是可被冻结的昼夜时间线。
客户端特效代码中的体现
对于开启自定义效果(useCustomEffects = true)的维度,NeoForge 生成器 dimension.java.ftl 会生成一个SpecialEffectsHandler客户端订阅者,通过DimensionSpecialEffects实现雾色随太阳高度变化(getBrightnessDependentFogColor)与浓雾开关(isFoggyAt)等逻辑;而默认效果路径则由原版实现承接。这也从另一面印证:默认效果参数是useCustomEffects关闭时的简化替代方案。
界面联动:何时可选、如何生效
在维度编辑界面 DimensionGUI.java 中,defaultEffects下拉框通过翻译键elementgui.dimension.effects_构建,三个选项的显示名在 texts_en_GB.properties 中定义:
elementgui.dimension.effects_overworld=Overworld elementgui.dimension.effects_the_nether=The Nether elementgui.dimension.effects_the_end=The End界面联动方法updateDimensionEffectSettings()(第 674–689 行)体现了两个关键约束:
- 互斥关系:勾选
useCustomEffects后,defaultEffects下拉框被禁用(defaultEffects.setEnabled(!hasCustomEffects)),反之亦然; - 固定时间的可用条件:
hasFixedTime仅在"默认效果为 Overworld"或"自定义效果且 skyType 为 NORMAL"时可用,代码注释明确指出:"Fixed time is only supported when there is a day/night cycle to freeze"——固定时间本质上是冻结一个本就存在的昼夜循环,因此默认选择 Nether 或 End 效果时该选项会被禁用。
版本差异与注意事项
- 效果机制的版本演进:1.21.1 生成器直接引用
minecraft:overworld等原版效果;26.3.x 生成器改为在dimension_typeJSON 中展开属性,但三种默认效果的视觉语义保持一致。 - 26.1 起才支持固定时间:帮助文档明确标注"仅此效果类型支持固定时间自 26.1 起",因此使用更早版本时,即使选择 Overworld 效果也需自行确认该功能是否可用。
- 自定义效果会完全取代默认效果:一旦开启
useCustomEffects,默认效果参数不再参与生成,此时雾色、天空色由airColor、sunHeightAffectsFog、hasFog等参数接管;需要完全复刻原版观感时,直接保持默认效果关闭即可,这也是让自定义维度快速获得"主世界 / 下界 / 末地"视觉基调的最简路径。
小结:如何选择默认效果
在创建自定义维度时,可按目标观感快速决策:
- 想要类主世界的昼夜循环、动态雾色与云层 → 选择Overworld(若需要冻结时间,这是唯一可用选项);
- 想要密闭、昏暗、可见距离受限的探险氛围 → 选择The Nether;
- 想要无昼夜交替的紫色虚空异境 → 选择The End。
如需更精细的视觉定制(自定义雾色、天空色、云高、自定义天空盒等),则关闭此参数的作用域——勾选"使用自定义效果",并配合 sky_type.md、cloud_height.md、sun_height_affects_fog.md 等参数体系进行逐项配置。
- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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.
相关推荐
MCreator 伤害类型(Damage Type)效果参数全解析:声音效果配置与底层原理
MCreator 伤害类型(Damage Type)效果参数全解析:声音效果配置与底层原理 本文是 MCreator 伤害类型(Damage Type)编辑器中
低代码代码生成桌面应用游戏开发AndroidImageSlider动画效果全解析:16种内置Transformer深度剖析
AndroidImageSlider动画效果全解析:16种内置Transformer深度剖析 AndroidImageSlider是一个功能强大的Android
移动开发UI组件MCreator 实体动画振幅(Animation Amplitude)参数详解:控制步行动画效果强度
MCreator 实体动画振幅(Animation Amplitude)参数详解:控制步行动画效果强度 本篇指南围绕 MCreator「生物实体(Living
低代码代码生成桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考