原版生物群系

基本信息

属性 值
源码位置 climateControl/biomeSettings/VanillaBiomeSettings.java
配置分类 VanillaBiome(biomeCategory,:53)
配置开关 VanillaBiomesOn(默认 true)
主群系元素 16 个(14 个带 incidence + 2 个仅 ID)
次级群系 ID 11 个
作用对象 生物群系分配表,不含方块/物品

功能

VanillaBiomeSettings 定义 1.7.10 原版生物群系在 CC 生成算法中的出现率(incidence)、所属气候带与次级群系关系。每个群系是 BiomeSettings.Element,构造时带 (名字, 群系ID, incidence, [hasVillages], 气候带) 五个参数(api/BiomeSettings.java:171-182)。

判定启用:biomesAreActive() 返回 biomesFromConfig.value()(:148-151),对应 综合参数 的 VanillaBiomesOn。原版生物群系无需从其他 mod 读取 ID,setNativeBiomeIDs() 是空实现(:127-130),注释为 “never anything to do in vanilla”。

数值

主群系(Element,:55-70)

群系名 群系ID incidence 气候带 源码行
Birch Forest 27 10 WARM :55
Cold Taiga 30 10 SNOWY :56
Desert 2 30 HOT :57
Extreme Hills 3 20 MEDIUM = COOL + WARM :58
Forest 4 20 MEDIUM = COOL + WARM :59
Ice Plains 12 30 SNOWY :60
Jungle 21 5 WARM :61
Mega Taiga 32 5 COOL :62
Mesa Plateau 39 1 HOT :63
Mesa Plateau F 38 4 HOT :64
Plains 1 30 PLAINS = COOL + WARM + HOT :65
Roofed Forest 29 10 COOL :66
Savanna 35 20 HOT :67
Swampland 6 10 WARM :68
Taiga (snowless) 5 10 COOL :69
Ice Mountains 13 0 SNOWY :70

Desert、Plains、Savanna 三项的构造多传了一个 true,即 hasVillages = true(:57、:65、:67),这三个是原版村庄允许生成的生物群系。Ice Mountains 的 incidence 为 0,默认不出场——它只在山脉链中被强制拉高,见下方「交互」。

次级群系与别名 ID(:71-100)

群系名 群系ID 说明 源码行
Mushroom Island 14 独立 ID :71
Desert Hills 17 Desert 的次级 :72
Forest Hills 18 Forest 的次级 :73
Taiga Hills 19 Taiga 的次级 :74
Jungle Hills 22 Jungle 的次级 :75
Birch Forest Hills 28 Birch Forest 的次级 :76
Cold Taiga Hills 31 Cold Taiga 的次级 :77
Mega Taiga Hills 33 Mega Taiga 的次级 :78
Extreme Hills+ 34 Extreme Hills 的次级 :79
Savanna Plateau 36 Savanna 的次级 :80
Mesa 37 Mesa Plateau F 的次级 :81
Sunflower Plains 129 独立 ID :82
Flower Forest — Forest 的 M 变体(M(forest, "Flower Forest")) :85
Ice Plains Spikes — Ice Plains 的 M 变体 :88
Mega Spruce Taiga — Mega Taiga 的 M 变体 :94
Mesa (Bryce) — Mesa 的 M 变体 :98

另有 10 个单参数 M 变体直接复用母群系 ID(M(desert)、:83;M(extremeHills)、:84;M(taiga)、:86;M(swampland)、:87;M(jungle)、:89;M(birchForest)、:90;M(birchForestHills)、:91;M(roofedForest)、:92;M(coldTaiga)、:93;M(extremeHillsPlus)、:95;M(savanna)、:96;M(savannaPlateau)、:97;M(mesaPlateau)、:99;M(mesaPlateau_F)、:100)。

次级群系绑定关系(:108-123)

母群系 次级群系 源码行
Desert Desert Hills :108
Forest Forest Hills :109
Birch Forest Birch Forest Hills :110
Roofed Forest Plains :111
Taiga Taiga Hills :112
Mega Taiga Mega Taiga Hills :113
Cold Taiga Cold Taiga Hills :114
Plains BiomeReplacer.Variable:Forest Hills 权重 1、Forest 权重 2 :115-118
Ice Plains Ice Mountains :119
Jungle Jungle Hills :120
Extreme Hills Extreme Hills+ :121
Savanna Savanna Plateau :122
Mesa Plateau F Mesa :123

交互

  • setRules() 除 setVillages(rules) 外,还对 Mesa Plateau(ID 39) 与 Mesa Plateau F(ID 38) 调用 rules.disallowStoneBeach(...)(:135-140),禁止这两种台地生成石头海滩。相关见 村庄生物群系。
  • forceIceMountains() 在 Ice Mountains 的 incidence 小于 10 时把它强制设为 10(:163-169)。但调用它是有条件的:api/ClimateControlSettings.java:326-332 仅当 mountainChains 与 forceIceMountains 同时为真时才调用,并以 vanillaMountainsForced 标志保证只执行一次(源码注释 “force in ice mountains as a biome for mountains chains / this is hacky but the best quick solution”)。因此在默认配置(Mountains in Mountain Chains = false)下 Ice Mountains 的 incidence 仍是 0,不参与生成。
  • biomeSettings() 的组装顺序(api/ClimateControlSettings.java:334-343):先无条件加入 oceanBiomeSettings,再按 vanillaBiomesOn 决定是否加入 vanillaBiomeSettings,再按 externalBiomeSettings != null 决定是否加入外部包,最后无条件加入所有 registeredBiomeSettings()(各附属包)。注意附属包不检查 biomesAreActive()——相关判断已被注释(:337-339)。
  • 群系的 incidence 与气候带共同决定它被分配到哪种气候带,见 气候带出现率 与 气候带参数。
  • 气候常量共 6 个(api/Climate.java:26-31):SNOWY、COOL、WARM、HOT、OCEAN、DEEP_OCEAN;分布常量共 9 个(api/ClimateDistribution.java:18-36):SNOWY、COOL、WARM、HOT、MEDIUM(COOL+WARM)、PLAINS(COOL+WARM+HOT)、OCEAN、DEEP_OCEAN、LAND(SNOWY+COOL+WARM+HOT)。

相关条目