Sulfur(硫磺)生成
[!WARNING] 已订正(1.7.10 树) 原条目不是生物群系,而是矿石生成器;类名与 API 全部取自
mc-1.12.2:
- 生成器类名错:1.7.10 是
SulfurGenerator(矿石事件分流)+WorldGenSulfur(小矿脉生成器),没有GeneratorSulfur。- 原条目通篇使用 1.12.2 的
BlockPos/EnumFacing.HORIZONTALS/getDefaultState()API——1.7.10 源码树中net.minecraft.util.math.BlockPos零命中,方向用ForgeDirection.getOrientation(side),方块状态用Blocks.stone。AMOUNT = 10与「矿脉必须靠近熔岩」的规则正确,予以保留。证据:
worldgen/WorldGenSulfur.java:26-56、worldgen/SulfurGenerator.java。
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 矿石生成器(不是生物群系) |
| 矿脉生成器 | WorldGenSulfur(继承 WorldGenSmallDeposits) |
| 矿石 | EnumOre.SULFUR(EnumOre.java:23) |
| 每簇数量 | 10(AMOUNT,WorldGenSulfur.java:26) |
| 替换方块 | Blocks.stone |
| 事件分流类 | SulfurGenerator |
构造(WorldGenSulfur.java:28-30)
private static final int AMOUNT = 10;
public WorldGenSulfur() {
super(BlockOre.getBlock(), EnumOre.SULFUR.ordinal(), AMOUNT, Blocks.stone);
}
即:在 Blocks.stone 中替换,每簇 10 个 EnumOre.SULFUR。
BlockOre 是单一注册名 + metadata 变体的矿石方块。
canGen() 条件(WorldGenSulfur.java:32-56)
- 检查 4 个水平方向(
side从 2 到 5,即ForgeDirection的东/西/上/下以外的四个水平朝向): 任意一侧相邻方块是Blocks.lava或Blocks.flowing_lava→ 通过。 - 否则向下检查 4 格(
j = 0..3):- 遇到
Blocks.lava/Blocks.flowing_lava→ 通过; - 遇到非
Blocks.air的方块 → 立即不通过; - 4 格全是空气 → 不通过。
- 遇到
for (int side = 2; side < 6; side++) {
ForgeDirection s = ForgeDirection.getOrientation(side);
...
if (block == Blocks.lava || block == Blocks.flowing_lava) return true;
}
for (int j = 0; j < 4; j++) {
Block block = WorldPlugin.getBlock(world, x, y - j, z);
if (block == Blocks.lava || block == Blocks.flowing_lava) return true;
else if (block != Blocks.air) return false;
}
return false;
生成规则汇总
| 规则 | 内容 |
|---|---|
| 每簇数量 | 10 |
| 替换目标 | 仅 Blocks.stone |
| 水平熔岩 | 相邻 4 个水平面任一为熔岩即可 |
| 下方熔岩 | 正下方 4 格内为熔岩,且中间不得有其他方块 |
| 维度限制 | 无法核实——WorldGenSulfur.canGen() 中没有维度判断 |
原条目的「每区块 90 次尝试」「Y = 6 ~ 15」「MOUNTAIN 山地群系」三个说法 在 1.7.10 源码中均无对应代码,已删除。群系条件由
SulfurGenerator的OreGenEvent路径决定,具体判定在SulfurGenerator中,未逐行核实。
相关条目
- Saltpeter(硝石)生成 - 1.7.10 中另一种自定义矿
- Ore Blocks