Saltpeter Biome

基本信息

属性 值
矿石类型 Saltpeter(硝酸盐)
生成维度 主世界(Overworld)
生成器 GeneratorSaltpeter
矿石方块 EnumOre.SALTPETER

生成条件

public boolean canGen(World world, Random rand, BlockPos targetPos, Biome biome) {
    if (world.provider.getDimension() != 0)  // 仅主世界
        return false;
    if (!BiomeDictionary.hasType(biome, BiomeDictionary.Type.SANDY))  // 沙质
        return false;
    if (!BiomeDictionary.hasType(biome, BiomeDictionary.Type.DRY))  // 干燥
        return false;
    return !biome.canRain()  // 不下雨
        && biome.getTemperature(targetPos) >= 1.5f  // 高温
        && biome.getRainfall() <= 0.1f  // 少雨
        && TerrainGen.generateOre(...);
}

触发条件汇总

条件 要求
维度 主世界(dimension = 0)
生物群系类型 SANDY(沙质)
生物群系类型 DRY(干燥)
降雨 不能下雨(canRain = false)
温度 >= 1.5(高温)
降雨量 <= 0.1(极少雨)

典型适合生物群系

  • 沙漠(Desert)
  • 沙漠丘陵(Desert Hills)
  • 热带草原(Savanna)
  • mesa( mesa) 等干燥炎热沙质群系

生成参数

// 扫描上方固体方块,从 Y=50~100 范围
BlockPos topBlock = world.getTopSolidOrLiquidBlock(...).down(1 + (rand.nextInt(100) == 0 ? 0 : 1));
if (topBlock.getY() < 50 || topBlock.getY() > 100)
    continue;
  • 生成高度:Y = 50 ~ 100
  • 尝试次数:每区块 64 次
  • 替换方块:仅限沙子(SAND)

WorldGenSaltpeter

public boolean generate(World world, Random rand, BlockPos pos) {
    // 仅在沙子上生成
    if (block != Blocks.SAND)
        return false;
    // 使用 SimplexNoise 控制分布
    return SimplexNoise.noise(pos.getX() * 0.01, pos.getZ() * 0.01) >= 0.75;
}

源码依据

  • GeneratorSaltpeter.java - 盐矿生成器
  • WorldGenSaltpeter.java - 盐矿世界生成逻辑
  • EnumOre.java - Saltpeter 矿石枚举