public double calcDensity(int x, int y, int z) {
    double height = calcBaseTerrain(x, z);
    double ocean = calcOceanTerrain(x, z);
    double river = calcRiverTerrain(x, z);

    float temp = biomeProvider.getTemperatureAt(x, z);
    float humidity = biomeProvider.getHumidityAt(x, z);

    Vector2f distanceToMountainBiome = new Vector2f(temp - 0.25f, humidity - 0.35f);

    double mIntens = TeraMath.clamp(1.0 - distanceToMountainBiome.length() * 3.0);
    double densityMountains = calcMountainDensity(x, y, z) * mIntens;
    double densityHills = calcHillDensity(x, y, z) * (1.0 - mIntens);

    int plateauArea = (int) (Chunk.SIZE_Y * 0.10);
    double flatten = TeraMath.clamp(((Chunk.SIZE_Y - 16) - y) / plateauArea);

    return -y
        + (((32.0 + height * 32.0) * TeraMath.clamp(river + 0.25) * TeraMath.clamp(ocean + 0.25))
                + densityMountains * 1024.0
                + densityHills * 128.0)
            * flatten;
  }