Abyssal Stone(深渊石)晶洞
[!WARNING] 已订正(1.7.10 树) 原条目多处取自
mc-1.12.2:类名GeneratorGeode在 1.7.10 中不存在; 通篇使用BlockPos/Biome/IBlockState/RailcraftBlocks.ABYSSAL_STONE, 而 1.7.10 用(int x, int y, int z)、方块+metadata。 深渊石方块的注册名是railcraft:cube+ metadata(EnumCube.ABYSSAL_STONE), 不是RailcraftBlocks.ABYSSAL_STONE这样的独立注册名。 随机几率 30%(不是配置项ModuleWorld.config.geodeChance)。 证据:worldgen/GeodePopulator.java:40,60-83、worldgen/WorldGenGeode.java:30-38。
基本信息
| 属性 | 值 |
|---|---|
| 结构类型 | 海洋晶洞(Geode) |
| 事件入口类 | GeodePopulator(单例,GeodePopulator.instance()) |
| 形态生成类 | WorldGenGeode |
| 方块 | BlockCube.getBlock() + metadata EnumCube.ABYSSAL_STONE.ordinal() |
| 注册名 | railcraft:cube(单一注册名 + metadata 变体) |
触发条件(GeodePopulator.canGen(),GeodePopulator.java:73-83)
BiomeGenBase biome = world.getBiomeGenForCoords(x, z);
if (!BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.WATER)) return false;
if (biome.biomeName == null || biome.biomeName.toLowerCase(Locale.ENGLISH).contains("river")) return false;
return rand.nextDouble() <= 0.3;
| 条件 | 要求 | 1.7.10 API |
|---|---|---|
| 群系类型 | WATER(不是 OCEAN) |
BiomeDictionary.isBiomeOfType |
| 群系名 | 不能为 null,且名字不能含 river |
biome.biomeName |
| 随机几率 | 30% | rand.nextDouble() <= 0.3 |
1.7.10 排除了**河流(River)**群系,原条目「必须为 OCEAN 类型」不准确。 几率是硬编码的
0.3,没有geodeChance配置项。
位置计算(GeodePopulator.generateGeode(),GeodePopulator.java:60-71)
- 区块中心:
x = chunkX * 16 + 8,z = chunkZ * 16 + 8。 scanOceanFloor(world, x, z)扫描海底,得到depth与floorY。- 要求
floor.depth >= MIN_DEPTH且floor.floorY >= MIN_FLOOR。 - 高度:
y = 12 + rand.nextInt(floor.floorY - 12)。 - 调用
geode.generate(world, rand, x, y, z)。
scanOceanFloor() 从 chunk.getTopFilledSegment() + 15 起步向下扫描海底。
形态参数(WorldGenGeode.java:30-32)
| 参数 | 值 | 含义 |
|---|---|---|
DISTANCE_OUTER_SQ |
64(8²) | 外壳半径平方 |
DISTANCE_ORE_SQ |
25(5²) | 矿石半径平方 |
DISTANCE_INNER_SQ |
16(4²) | 内部空腔半径平方 |
填充规则(WorldGenGeode.java:64-68):
| 距离平方 | 处理 |
|---|---|
<= DISTANCE_INNER_SQ |
挖空(Blocks.air) |
<= DISTANCE_OUTER_SQ |
放置深渊石(geodeStone) |
> DISTANCE_INNER_SQ 且 <= DISTANCE_ORE_SQ |
在外壳内额外散布原版矿石 |
原版矿石候选列表(WorldGenGeode.java:43-51):
煤、铁、金、钻石、绿宝石、青金石、石英、红石(含已点燃红石)矿石。
原条目「外壳半径 8 格 / 矿石半径 5 格 / 内部半径 4 格」的数值正确, 但它们是距离平方常量,不是直接的格数半径。
替换规则
WorldGenGeode 接受可替换方块检查(WorldGenGeode.java:111-117):
Blocks.stone、Blocks.dirt、Blocks.gravel、Blocks.sand。
相关条目
- Firestone(余烬石)晶洞 - 1.7.10 中另一种晶洞
- Abyssal Stone(深渊石)方块 -
EnumCube.ABYSSAL_STONE所在的railcraft:cube方块组