配置项

基本信息

属性 值
配置类 glowredman.darkerer.DarkererConfig(GTNHLib @Config(modid = Darkerer.MODID))
注册时机 DarkererCore 的 static 块,仅 Side.CLIENT(DarkererCore.java:27-35)
加载器 com.gtnewhorizon.gtnhlib.config.ConfigurationManager.registerConfig(...)
配置文件 由 GTNHLib 依据 modid 决定,即 config/darkerer.cfg
GUI 无(@Mod 未声明 guiFactory),只能手改 cfg 文件
热重载 无(未订阅 ConfigChangedEvent);读一次存在静态字段里

配置在 coremod 的 static 初始化阶段注册,早于 Darkerer 主类被 FML 实例化。 这也是 mixin 能在 preInit 之前就读到配置的原因。

配置项列表

全部来自 DarkererConfig.java,默认值是源码实读的:

配置键 类型 默认值 源码注释 源码
mode Mode 枚举 EVERYWHERE “How Darkerer should behave” + 四个模式的说明 DarkererConfig.java:8-15
darkNether boolean true “Whether or not the Nether should be dark” DarkererConfig.java:17-19
darkEnd boolean false “Whether or not the End should be dark” DarkererConfig.java:21-23
darkTwilightForest boolean false “Whether or not the Twilight Forest should be dark” DarkererConfig.java:25-27
removeBlueSkyLight boolean true “Attempts to remove the blue sky light that occurs when using mode EVERYWHERE or MOON_PHASE” DarkererConfig.java:29-31
dimBlocklist int 列表 {}(空) “A list of dimension ids in which Darkerer will be completely disabled” DarkererConfig.java:33-35

mode 的四个取值

枚举定义在 Mode.java:3-7。源码注释里的原文说明(DarkererConfig.java:10-12):

枚举值 注释原文 实际实现
EVERYWHERE “complete darkness at night, except near block light sources (torches, lava, etc.)” 见 夜间压暗机制
ONLY_INSIDE “a small amount of light remains at the surface, even during the night” 同上
MOON_PHASE “like ONLY_INSIDE but the remaining light depends on the moon phase” 同上
DISABLED “completely disabled like vanilla” DarkererCore.enabled 被置 false,mixin 全部走原值

⚠️ 注释与实现有落差:ONLY_INSIDE 注释说的是"地表留一点光",但代码里它只对 天光的红色分量做 Math.min(0xFF, red + 25)(MixinEntityRenderer.java:86-88), 而 MixinWorld 的天光上下限在 ONLY_INSIDE 分支下完全不改(MixinWorld.java:28-35 的 default: return original)。即 ONLY_INSIDE 并不会降低夜间亮度上限, 只是把天光色往无色方向偏。

dimBlocklist 的匹配方式

DarkererEventHandler.onClientTick 用 ArrayUtils.contains(DarkererConfig.dimBlocklist, player.dimension) 判断,命中即禁用(DarkererEventHandler.java:25-26)。即按 dimension id 整数屏蔽, 不是按维度名。该检查每 client tick 重算一次 DarkererCore.enabled(END 阶段)。