生态岛
基本信息
| 属性 | 值 |
|---|---|
| 生成器 | MapGenIsland extends MapGenScatteredFeatureCustom,super(13, 28, 1600, 208) |
| 结构注册名 | hardcoreenderdragon_EndIsland(world/DimensionOverride.java:38) |
| 生态数 | 3 种(IslandBiomeInfestedForest / IslandBiomeBurningMountains / IslandBiomeEnchantedIsland) |
| 内容变体总数 | 7 种(BiomeContentVariation) |
| 数据源 | world/structure/island/(60 个文件) |
功能
生态岛是末地的主体玩法内容。它们不是原版意义上的 BiomeGenBase,而是结构内部的概念:一张岛上按权重从若干「内容变体」中抽一个,再用对应的 IslandBiomeDecorator 铺装地形与植被。
抽象基类 IslandBiomeBase(295 行)持有 contentVariations 与 randomDeviations 两个列表,通过 IslandBiomeData 记录本次生成的实际选择(IslandBiomeBase.java:101)。装饰器接口为 IslandBiomeDecorator,3 个实现分别是 BiomeDecoratorInfestedForest / BiomeDecoratorBurningMountains / BiomeDecoratorEnchantedIsland。
数值
生成条件(world/structure/island/MapGenIsland.java:12-20)
super(13, 28, 1600, 208);
...
return rand.nextInt(7) <= 4 && WorldGenChance
.checkChance(0.65D + 0.35D * WorldGenChance.linear2Incr.calculate(dist, 1600D, 4000D), rand);
| 参数 | 值 | 含义 |
|---|---|---|
| 构造参数 1–4 | 13, 28, 1600, 208 |
继承自 MapGenScatteredFeatureCustom(间距 / 间距偏移 / 搜索半径 / 区域大小) |
| 距离内硬门槛 | rand.nextInt(7) <= 4(5/7 ≈ 0.714 通过) |
伪随机否决 |
| 距离外软门槛 | 0.65 + 0.35 × linear2Incr(dist, 1600, 4000) |
距离 1600 → 0.65,距离 4000 → 1.00 |
7 种内容变体
| 生态 | 变体常量 | 权重 | 装饰方法 |
|---|---|---|---|
| Infested Forest | DEEP |
8 | genDeep() |
| Infested Forest | RUINS |
3 | genRuins() |
| Infested Forest | RAVAGED |
6 | genRavaged() |
| Burning Mountains | SCORCHING |
8 | genScorching() |
| Burning Mountains | MINE |
6 | genMine() |
| Enchanted Island | HOMELAND |
6 | — |
| Enchanted Island | LABORATORY |
4 | — |
行号:IslandBiomeInfestedForest.java:23-25、IslandBiomeBurningMountains.java:22-23、IslandBiomeEnchantedIsland.java:37-38。权重 = BiomeContentVariation 构造第 2 参。
⚠️
IslandBiomeInfestedForest构造时只把DEEP与RAVAGED加入contentVariations(:35),RUINS未加入,但decorate仍会响应data.content == RUINS(:52)。已核对IslandBiomeInfestedForest.java:23-25(3 个变体声明)与:35(只 addAll 2 个)、:49-53(decorate 响应 3 个)。仓库没有 intent evidence(无测试、无注释、无 commit 提及),故仅记录事实,不断言为缺陷。
随机偏差
| 偏差常量 | 适用变体 | 位置 |
|---|---|---|
TALL_TREES |
DEEP + RAVAGED |
IslandBiomeInfestedForest.java:27 |
MORE_THORNY_BUSHES |
DEEP |
IslandBiomeInfestedForest.java:28 |
EXCESSIVE_CINDER |
SCORCHING |
IslandBiomeBurningMountains.java:25 |
SINGLE_LAVA_ONLY |
SCORCHING |
IslandBiomeBurningMountains.java:26 |
LIMITED_ORES |
MINE |
IslandBiomeBurningMountains.java:27 |
DEEP_RESOURCE_PITS |
MINE |
IslandBiomeBurningMountains.java:28 |
TALL_PILES |
HOMELAND |
IslandBiomeEnchantedIsland.java:40 |
GOO_SWAMP |
HOMELAND |
IslandBiomeEnchantedIsland.java:41 |
MORE_SHADOW_ORCHIDS |
HOMELAND + LABORATORY |
IslandBiomeEnchantedIsland.java:42-45 |
岛上刷怪
SpawnEntry(Class, weight, minCount) 格式(world/util/SpawnEntry.java):
| 生态 | 变体 | 实体 | 权重 | 数量 | 位置 |
|---|---|---|---|---|---|
| Infested Forest | DEEP |
EntitySilverfish(原版) |
35 | 35 | IslandBiomeInfestedForest.java:40 |
| Infested Forest | DEEP |
EntityMobInfestedBat |
8 | 10 | IslandBiomeInfestedForest.java:41 |
| Burning Mountains | SCORCHING |
EntityMobFireGolem |
14 | 10 | IslandBiomeBurningMountains.java:40 |
| Burning Mountains | SCORCHING |
EntityMobScorchingLens |
10 | 6 | IslandBiomeBurningMountains.java:41 |
| Burning Mountains | MINE |
EntityMobHauntedMiner |
20 | 10 | IslandBiomeBurningMountains.java:43 |
| Enchanted Island | HOMELAND |
EntityMobEnderman |
22 | 38 | IslandBiomeEnchantedIsland.java:57 |
| Enchanted Island | HOMELAND |
EntityMobBabyEnderman |
14 | 20 | IslandBiomeEnchantedIsland.java:58 |
地形高度倍率
IslandBiomeBurningMountains 重写了两个倍率(IslandBiomeBurningMountains.java:52-60):
| 变体 | 表面高度倍率 | 团块高度倍率 |
|---|---|---|
SCORCHING |
6.5F | 0.9F |
MINE |
7.5F | 1.0F |
交互
生态互动(BiomeInteraction)
getInteractions(variation) 注册的互动事件,格式 new BiomeInteraction(name, class, weight, amount):
| 互动 | 适用变体 | 权重 / 数量 | 位置 |
|---|---|---|---|
IF_Deep_CollapsingTrees |
DEEP |
40 / 2 | IslandBiomeInfestedForest.java:43-45 |
InteractionCellarSounds |
Enchanted Island | 见源码 | IslandBiomeEnchantedIsland.java:30 导入 |
InteractionOvertake |
Enchanted Island | 见源码 | IslandBiomeEnchantedIsland.java:31 导入 |
互动实现类位于 world/structure/island/biome/interaction/(3 个文件)。
岛内结构
| 结构 | 适用生态 | 位置 |
|---|---|---|
StructureSpookyTree |
Infested Forest | .../biome/feature/forest/StructureSpookyTree.java |
StructureBush |
Infested Forest | .../feature/forest/StructureBush.java |
StructureRuinBuild / StructureRuinPillar |
Infested Forest | .../feature/forest/ |
StructureSilverfishDungeon / StructureRavagedDungeon |
Infested Forest | .../feature/forest/ |
StructureCinderPatch / StructureLavaPool / StructureIgneousRockOre / StructureMiningSpot / StructureResourcePit / StructureDungeonPuzzle |
Burning Mountains | .../biome/feature/mountains/ |
StructureObsidianRoad / StructureShadowOrchid / StructureGooLake / StructureHiddenCellar / StructureLaboratory |
Enchanted Island | .../biome/feature/island/ |
地标与资源
- 基岩核心
biome_core(BlockBiomeIslandCore)标记生态岛中心 - 运输信标
transport_beacon在岛上自然生成(虚空箱与运输信标) ObsidianGenerator/CaveGenerator/OreGenerator三个地形生成器在.../island/gen/(world/structure/island/gen/)IslandSpawnChecker(.../island/util/)判定玩家出生点