diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 01b370e55..c1fdd2122 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -34,7 +34,11 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); - + + @Value("salt-lookup") + @Default + private @Meta boolean saltLookup = true; + @Override public NoiseSampler get() { CellularSampler sampler = new CellularSampler(); @@ -44,6 +48,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { sampler.setReturnType(cellularReturnType); sampler.setDistanceFunction(cellularDistanceFunction); sampler.setSalt(salt); + sampler.setSaltLookup(saltLookup); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 6facef332..8e163f9ad 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -197,7 +197,9 @@ public class CellularSampler extends NoiseFunction { private double jitterModifier = 1.0; private NoiseSampler noiseLookup; - + + private boolean saltLookup; + public CellularSampler() { noiseLookup = new OpenSimplex2Sampler(); } @@ -217,7 +219,11 @@ public class CellularSampler extends NoiseFunction { public void setReturnType(ReturnType returnType) { this.returnType = returnType; } - + + public void setSaltLookup(boolean saltLookup) { + this.saltLookup = saltLookup; + } + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; @@ -286,8 +292,8 @@ public class CellularSampler extends NoiseFunction { case Distance2Sub -> distance1 - distance0 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY); - case LocalNoiseLookup -> noiseLookup.noise(sl, x / frequency - centerX, y / frequency - centerY); + case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY); + case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY); case Distance3 -> distance2 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Sub -> distance2 - distance0 - 1; @@ -377,8 +383,8 @@ public class CellularSampler extends NoiseFunction { case Distance2Sub -> distance1 - distance0 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY, centerZ); - case LocalNoiseLookup -> noiseLookup.noise(sl, x / frequency - centerX, y / frequency - centerY, z / frequency - centerZ); + case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY, centerZ); + case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY, z / frequency - centerZ); case Distance3 -> distance2 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Sub -> distance2 - distance0 - 1;