跳到正文
烈焰甘蔗Wiki

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)

  1. 区块中心:x = chunkX * 16 + 8,z = chunkZ * 16 + 8。
  2. scanOceanFloor(world, x, z) 扫描海底,得到 depth 与 floorY。
  3. 要求 floor.depth >= MIN_DEPTH 且 floor.floorY >= MIN_FLOOR。
  4. 高度:y = 12 + rand.nextInt(floor.floorY - 12)。
  5. 调用 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。

相关条目

浏览全部模组