世界类型接管
基本信息
| 属性 | 值 |
|---|---|
| 源码位置 | climateControl/DimensionManager.java:276-306(ignore)、:240-249(事件挂钩) |
| 判定入口 | WorldTypeEvent.InitBiomeGens(优先级 LOWEST) |
| 相关配置 | suppressInStandardWorlds、alterBoPWorlds、alterHighlandsWorlds |
| 作用对象 | 哪些 WorldType 会启用 CC 生成,不含方块/物品 |
功能
DimensionManager.ignore() 决定某个 WorldType 是否被 Climate Control 接管。判定完全基于世界类型的名字(WorldType.getWorldTypeName())与三个配置开关,Climate Control 不注册任何新的 WorldProvider 或维度。
完整判定顺序(DimensionManager.java:276-306):
considered == null→ 不接管(:277)suppressInStandardWorlds = false时,下列四种原版世界类型一律接管(:278-285):WorldType.AMPLIFIED(放大化)WorldType.DEFAULT(默认)WorldType.DEFAULT_1_1WorldType.LARGE_BIOMES(大型生物群系)
WorldType.FLAT→ 永远不接管(:286),此判断在第 2 步之后,因此即使suppressInStandardWorlds = false,超平坦世界仍不受 CC 影响interveneInBOPWorlds = true且世界类型名为BIOMESOP→ 接管(:287-290,equalsIgnoreCase)interveneInHighlandsWorlds = true且世界类型名为Highlands或HighlandsLB→ 接管(:291-297,equalsIgnoreCase)- 世界类型名为
FWG→ 无条件接管(:298-301) - 世界类型名为
RTG→ 无条件接管(:303-304) - 其余 → 不接管(
:305)
数值
| 世界类型 | 名称匹配 | 触发条件 | 判定结果 | 出处行 |
|---|---|---|---|---|
| 放大化 | WorldType.AMPLIFIED |
suppressInStandardWorlds = false |
接管 | :279 |
| 默认 | WorldType.DEFAULT |
suppressInStandardWorlds = false |
接管 | :280-282 |
| 1.1 兼容默认 | WorldType.DEFAULT_1_1 |
suppressInStandardWorlds = false |
接管 | :283 |
| 大型生物群系 | WorldType.LARGE_BIOMES |
suppressInStandardWorlds = false |
接管 | :284 |
| 超平坦 | WorldType.FLAT |
无条件 | 不接管 | :286 |
| Biomes O’ Plenty | BIOMESOP |
alterBoPWorlds = true |
接管 | :287-290 |
| Highlands | Highlands |
alterHighlandsWorlds = true |
接管 | :291-294 |
| Highlands Large Biomes | HighlandsLB |
alterHighlandsWorlds = true |
接管 | :295-296 |
| 任意(FG 模组) | FWG |
无条件 | 接管 | :298-301 |
| Realistic Terrain Generation | RTG |
无条件 | 接管 | :303-304 |
| 其他任意世界类型 | — | — | 不接管 | :305 |
匹配方式:原版四种用 WorldType.equals(...) 常量比较;模组世界类型一律用 getWorldTypeName().equalsIgnoreCase(...) 字符串比较。
交互
ignore()在三处被调用:patchedGenLayer()(:91)——返回null即不接管onCreateSpawn()(:310)——不接管则直接 return,不抢救出生点- 出生点处理中还叠加了维度 ID 判定
ccOnIn(dimension)(:313-317),见 维度筛选
- 关闭
suppressInStandardWorlds会让四种原版世界类型默认全部被接管——这正是该 mod 装上后世界地形变化的来源。 - 接管后实际替换哪套生成栈见 GenLayer 生成栈。
RTG还有一个额外的联动:AbstractWorldGenerator.rtgAwareRiverReduction()在世界类型名为RTG时把河流削减直接返回100(generator/AbstractWorldGenerator.java:99-103),VanillaCompatibleGenerator中该值作为GenLayerLessRiver的削减量传入(generator/VanillaCompatibleGenerator.java:86),源码注释为 “this statement is to make older CC generators suppress rivers in RTG”(:85)。
相关条目
- GenLayer 生成栈 - 接管后替换的生成器
- 维度筛选 - 按维度 ID 的第二层判定
- 综合参数 - 三个世界类型开关的配置项
- 出生点抢救 - 接管后在
onCreateSpawn中的后续处理