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;
}

生成规则

  1. 小矿脉生成(AMOUNT = 10,每簇 10 个矿石)
  2. 矿脉必须靠近熔岩(侧面或下方 4 格内)
  3. 替换石头(STONE)

源码依据

  • GeneratorSulfur.java - 硫磺生成器
  • WorldGenSulfur.java - 硫磺世界生成逻辑
  • GenTools.java - STONE 替换规则