Sulfur Biome
基本信息
| 属性 |
值 |
| 矿石类型 |
Sulfur(硫磺) |
| 生成维度 |
主世界(Overworld) |
| 生成器 |
GeneratorSulfur |
| 矿石方块 |
EnumOre.SULFUR |
| 生成高度 |
Y = 6 ~ 16 |
生成条件
public boolean canGen(World world, Random rand, BlockPos targetPos, Biome biome) {
return world.provider.getDimension() == 0 // 仅主世界
&& BiomeDictionary.hasType(biome, BiomeDictionary.Type.MOUNTAIN) // 山地
&& TerrainGen.generateOre(...);
}
触发条件汇总
| 条件 |
要求 |
| 维度 |
主世界(dimension = 0) |
| 生物群系类型 |
MOUNTAIN(山地) |
典型适合生物群系
- 山地(Mountains)
- 极端 Hills(Extreme Hills)
- 山地森林(Taiga Hills 等山地变种)
生成参数
public void generate(World world, Random rand, BlockPos targetPos, Biome biome) {
for (int i = 0; i < 90; i++) { // 每区块 90 次尝试
int x = targetPos.getX() + rand.nextInt(16) - 8;
int y = 6 + rand.nextInt(10); // Y = 6 ~ 15
int z = targetPos.getZ() + rand.nextInt(16) - 8;
generator.generate(world, rand, new BlockPos(x, y, z));
}
}
- 尝试次数:每区块 90 次
- 生成高度:Y = 6 ~ 15
WorldGenSulfur
硫磺矿石使用 WorldGenSmallDeposits 小矿脉生成器:
public WorldGenSulfur() {
super(EnumOre.SULFUR.getDefaultState(), AMOUNT, GenTools.STONE);
}
@Override
protected boolean canGen(World world, BlockPos pos) {
// 矿脉边缘必须接触到熔岩
for (EnumFacing side : EnumFacing.HORIZONTALS) {
if (block == Blocks.LAVA || block == Blocks.FLOWING_LAVA)
return true;
}
// 或者下方有熔岩
for (int j = 0; j < 4; j++) {
if (block == Blocks.LAVA || block == Blocks.FLOWING_LAVA)
return true;
else if (block != Blocks.AIR)
return false;
}
return false;
}
生成规则
- 小矿脉生成(
AMOUNT = 10,每簇 10 个矿石)
- 矿脉必须靠近熔岩(侧面或下方 4 格内)
- 替换石头(STONE)
源码依据
GeneratorSulfur.java - 硫磺生成器
WorldGenSulfur.java - 硫磺世界生成逻辑
GenTools.java - STONE 替换规则