外部模组生物群系包

基本信息

属性 值
注册入口 ClimateControl.setupRegistry()(climateControl/ClimateControl.java:262-322)
已注册包数量 9
包基类 climateControl.api.BiomePackage
注册表 climateControl.api.BiomePackageRegistry
配置文件目录 config/ClimateControl/
作用对象 第三方 mod 生物群系的 incidence、气候带与 ID 映射,不含方块/物品

功能

Climate Control 通过 BiomePackage 机制适配第三方生物群系 mod。setupRegistry() 依次尝试注册 9 个包,每包都包在独立的 try { } catch (java.lang.NoClassDefFoundError e) 中——对应 mod 未安装时静默跳过(:263-321)。

try {
    BiomePackageRegistry.instance.register(new HighlandsPackage());
} catch (java.lang.NoClassDefFoundError e) {
    // Highlands isn't installed
}

每个 BiomePackage 只需提供配置文件名(BiomePackage.java:13-19)与一个 freshBiomeSetting() 工厂(:25);namedBiomeSetting() 用 Named.from(configFileName, ...) 包出注册项(:27-29)。

各附属包的 biomesFromConfig 默认值一律是 false,即装上对应 mod 后仍需手动开启其生物群系参与生成。

数值

顺序 包类 对应 mod 配置文件 启用开关(默认 false) 源码行
1 HighlandsPackage Highlands HighlandsInCC.cfg HighlandsBiomesOn :265、biomeSettings/HighlandsPackage.java:15、HighlandsBiomeSettings.java:336
2 BopPackage Biomes O’ Plenty biomesoplentyInCC.cfg BoPBiomesOn :271、biomeSettings/BopPackage.java:15、BoPSettings.java:334
3 EBPackage Enhanced Biomes 2.5 EnhancedBiomesInCC.cfg EBBiomesOn :277、biomeSettings/EBPackage.java:15、EBBiomeSettings.java:212
4 ThaumcraftPackage Thaumcraft ThaumcraftInCC.cfg ThaumcraftBiomesOn :284、biomeSettings/ThaumcraftPackage.java:15、ThaumcraftBiomeSettings.java:50
5 EBXLController ExtrabiomesXL EBXLInCC.cfg EBXLBiomesOn :291、biomeSettings/EBXLController.java:28
6 ReikasPackage Reika’s Chromaticraft reikasInCC.cfg ReikasBiomesOn :298、biomeSettings/ReikasPackage.java:15、ReikasBiomeSettings.java:72
7 ArsMagicaPackage Ars Magica 2 ArsMagicaInCC.cfg ArsMagicaBiomesOn :305、biomeSettings/ArsMagicaPackage.java:22、:59
8 GrowthcraftPackage Growthcraft Community Edition GrowthcraftInCC.cfg GrowthcraftBiomesOn :311、biomeSettings/GrowthcraftPackage.java:16、GrowthcraftBiomeSettings.java:45
9 VampirismPackage Vampirism (Become the Vampire) VampirismInCC.cfg VampirismBiomeOn(注意无复数 s) :318、biomeSettings/VampirismPackage.java:22、:59

各包的配置分类名(biomeCategory 常量):

包 配置分类 源码行
Highlands HighlandsBiome(另有 HighlandsSettings) HighlandsBiomeSettings.java:24-25
Biomes O’ Plenty 见 BoPSettings biomeSettings/BoPSettings.java
Enhanced Biomes 2.5 EBBiomes(另有 EBSettings) EBBiomeSettings.java:19-20
Thaumcraft ThaumcraftBiome ThaumcraftBiomeSettings.java:18
ExtrabiomesXL EXBLBiome(另有 EBLXSettings) EBXLBiomeSettings.java:18-19
Reika’s Chromaticraft ReikasBiome(另有 ReikasSettings) ReikasBiomeSettings.java:19-20
Ars Magica 2 ArsMagicaBiome(另有 ArsMagicaSettings) ArsMagicaPackage.java:34-35
Growthcraft GrowthcraftBiome(另有 GrowthcrafSettings) GrowthcraftBiomeSettings.java:20-21
Vampirism VampirismBiome(另有 VampirismSettings) VampirismPackage.java:34-35

交互

  • 编译期依赖:全部为 compileOnly,运行时靠 NoClassDefFoundError 探测。dependencies.gradle 中另有 Mystcraft 与 Underground Biomes & Constructs 两项 compileOnly,但二者没有对应的 BiomePackage——Mystcraft 走的是 GenLayer 生成栈 中的 Myst10/11GenLayerUpdater 深层改造路径。
  • EBXL 的特殊接线:EBXLController 不像其他包那样自带 biomesFromConfig,而是提供一个 setTracker(Settings.Category) 方法,由外部把 EBXLBiomesOn 注册进某个分类并用 informOnChange 绑定到内部的 biomesOn 标志(EBXLController.java:30-40)。EBXLBiomesOnName 同时作为公开静态常量暴露(:16)。setTracker 的调用点在本仓库内无法确认(grep -rn 'setTracker' src/ 仅命中 EBXLController.java 自身),因此该开关的实际写入路径属于外部 API 使用者。
  • 次级生物群系:GenLayerSubBiome 在 ClimateControl.isBoPLoaded && doBoP 时才插入 BoP 次级群系(customGenLayer/GenLayerSubBiome.java:47),受 综合参数 的 NoBoPSubBiomes 控制。
  • 次级包注册时机:postInit 会遍历注册表,为每个包与维度设置调用 addonConfigManager.initializeConfig(...) 生成配置文件(ClimateControl.java:125-135)。
  • 未注册的包:ExternalBiomePackage 被 new 出来(ClimateControl.java:85)但从未注册——:87 的 BiomePackageRegistry.instance.register(externalBiomesPackage); 处于注释状态,:86 的注释为 “trying to set it up in ClimateControlSettings instead”。它改为通过 综合参数 的 externalBiomeNames 字符串接入(api/ClimateControlSettings.java:391-395)。
  • 原生 ID 覆写:部分包会从宿主 mod 的配置里读取真实群系 ID。Ars Magica 读 AM2/AM2.cfg(biomeSettings/ArsMagicaPackage.java:52-53),Vampirism 读 vampirism.cfg(:52)。

相关条目