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 矿石枚举