世界类型接管

基本信息

属性 值
源码位置 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):

  1. considered == null → 不接管(:277)
  2. suppressInStandardWorlds = false 时,下列四种原版世界类型一律接管(:278-285):
    • WorldType.AMPLIFIED(放大化)
    • WorldType.DEFAULT(默认)
    • WorldType.DEFAULT_1_1
    • WorldType.LARGE_BIOMES(大型生物群系)
  3. WorldType.FLAT → 永远不接管(:286),此判断在第 2 步之后,因此即使 suppressInStandardWorlds = false,超平坦世界仍不受 CC 影响
  4. interveneInBOPWorlds = true 且世界类型名为 BIOMESOP → 接管(:287-290,equalsIgnoreCase)
  5. interveneInHighlandsWorlds = true 且世界类型名为 Highlands 或 HighlandsLB → 接管(:291-297,equalsIgnoreCase)
  6. 世界类型名为 FWG → 无条件接管(:298-301)
  7. 世界类型名为 RTG → 无条件接管(:303-304)
  8. 其余 → 不接管(: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)。

相关条目