29 lines
852 B
Java
29 lines
852 B
Java
package ru.betterend.world.surface;
|
|
|
|
import ru.bclib.interfaces.NumericProvider;
|
|
import ru.bclib.mixin.common.SurfaceRulesContextAccessor;
|
|
import ru.bclib.util.MHelper;
|
|
import ru.betterend.noise.OpenSimplexNoise;
|
|
|
|
/**
|
|
* Noise source that returns a value in [0, 4]
|
|
*/
|
|
public class UmbraSurfaceNoiseCondition implements NumericProvider {
|
|
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(1512);
|
|
|
|
@Override
|
|
public int getNumber(SurfaceRulesContextAccessor context) {
|
|
final int x = context.getBlockX();
|
|
final int z = context.getBlockZ();
|
|
final double value = NOISE.eval(x * 0.03, z * 0.03) + NOISE.eval(x * 0.1, z * 0.1) * 0.3 + MHelper.randRange(
|
|
-0.1,
|
|
0.1,
|
|
MHelper.RANDOM
|
|
);
|
|
if (value > 0.4) return 0;
|
|
if (value > 0.15) return 1;
|
|
if (value > -0.15) return 2;
|
|
if (value > -0.4) return 3;
|
|
return 4;
|
|
}
|
|
}
|