外部模组生物群系包
基本信息
| 属性 | 值 |
|---|---|
| 注册入口 | 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)。
相关条目
- 原版生物群系 - 内置的
VanillaBiome分类 - 海洋生物群系 - 内置的
OceanBiome分类 - 附属模组 API -
BiomePackage的扩展方式 - GenLayer 生成栈 - Mystcraft 走的是另一条改造路径
- 综合参数 -
NoBoPSubBiomes、externalBiomeNames