Firestone(余烬石)晶洞
[!WARNING] 已订正(1.7.10 树) 原条目多处取自
mc-1.12.2:类名GeneratorFirestone与EnumOreMagic在 1.7.10 中都不存在;通篇使用BlockPos/Biome, 而 1.7.10 用(int x, int y, int z)。关键差异:1.7.10 监听的是
DecorateBiomeEvent.Post(装饰事件), 不是矿石事件;余烬石方块是BlockOre+EnumOre.FIRESTONE序号, 不是railcraft:ore_magic#0。 证据:worldgen/FirestoneGenerator.java:28-48、worldgen/WorldGenFirestone.java:24-56。
基本信息
| 属性 | 值 |
|---|---|
| 结构类型 | 下界熔岩池余烬石矿 |
| 事件入口类 | FirestoneGenerator(监听 DecorateBiomeEvent.Post) |
| 形态生成类 | WorldGenFirestone |
| 事件类型 | EVENT_TYPE(EnumHelper.addEnum 自定义 TerrainGen.EventType) |
| 矿石方块 | BlockOre.getBlock() + metadata EnumOre.FIRESTONE.ordinal() |
| 注册名 | 矿石为单一注册名 + metadata 变体 |
触发条件(FirestoneGenerator.java:32-48)
TerrainGen.decorate(world, rand, worldX, worldZ, EVENT_TYPE)必须通过。BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.NETHER)。rand.nextDouble() <= 0.1(10%)。- 区块内随机取
x、z。 - 调用
firestone.generate(world, rand, x, y, z)。
| 条件 | 要求 |
|---|---|
| 事件 | DecorateBiomeEvent.Post(不是 OreGenEvent) |
| 群系类型 | NETHER |
| 随机几率 | 10% |
生成规则(WorldGenFirestone.generate(),WorldGenFirestone.java:34-55)
for (int yy = y; yy > y - 6; yy--) { // 1. 起点向下 6 格必须全是熔岩
if (!world.blockExists(x, yy, z)) return false;
Block block = WorldPlugin.getBlock(world, x, yy, z);
if (block != Blocks.lava && block != Blocks.flowing_lava) return false;
}
int yy = y - 6; // 2. 从 y-6 继续向下穿过熔岩层
while (yy > 1) {
if (!world.blockExists(x, yy, z)) return false;
Block block = WorldPlugin.getBlock(world, x, yy, z);
if (block != Blocks.lava && block != Blocks.flowing_lava) break;
yy--;
}
Block block = WorldPlugin.getBlock(world, x, yy, z); // 3. 熔岩池底部
if (block.isReplaceableOreGen(world, x, yy, z, Blocks.netherrack))
return world.setBlock(x, yy, z, firestone, firestoneMeta, 2); // 4. 放在地狱石上
return false;
| 步骤 | 条件 |
|---|---|
| 1 | 起点 y 向下 6 格(y 到 y-5)必须全是 Blocks.lava / Blocks.flowing_lava |
| 2 | 从 y-6 继续向下穿过熔岩,直到 yy <= 1 或遇到非熔岩方块 |
| 3 | 停下的那一格若 isReplaceableOreGen(..., Blocks.netherrack) 为真则生成 |
| 4 | 在该格放置 BlockOre + EnumOre.FIRESTONE 序号 |
生成高度
原条目称「主生成位置 Y = 31」「Y = 31 + random(0~15)」。 1.7.10 的
FirestoneGenerator中没有硬编码的 31 或 Y 随机范围, 起点y的来源在本次审计中无法核实,已删除该数字。 可以确定的只有:搜索上限为yy > 1,即 Y ≥ 2。
相关条目
- Abyssal Stone(深渊石)晶洞 - 1.7.10 中另一种晶洞
- Firestones
- Ore Blocks