diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index e87ce15c2..b0e47dc42 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.feature.distributor.config; +import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; @@ -10,8 +11,12 @@ public class NoiseDistributorTemplate implements ObjectTemplate { @Value("distribution") private NoiseSampler noise; + @Value("threshold") + @Default + private double threshold = 0; + @Override public Distributor get() { - return new NoiseDistributor(noise); + return new NoiseDistributor(noise, threshold); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java index b97657e4d..876beb2aa 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java @@ -6,12 +6,14 @@ import com.dfsek.terra.api.structure.feature.Distributor; public class NoiseDistributor implements Distributor { private final NoiseSampler sampler; - public NoiseDistributor(NoiseSampler sampler) { + private final double threshold; + public NoiseDistributor(NoiseSampler sampler, double threshold) { this.sampler = sampler; + this.threshold = threshold; } @Override public boolean matches(int x, int z, long seed) { - return sampler.getNoiseSeeded(seed, x, z) > 0; + return sampler.getNoiseSeeded(seed, x, z) > threshold; } } 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 eb00a599b..a84d95cd0 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 @@ -33,6 +33,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { sampler.setJitterModifier(cellularJitter); sampler.setReturnType(cellularReturnType); sampler.setDistanceFunction(cellularDistanceFunction); + sampler.setSalt(salt); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index 8cbb381b2..46aacdbf5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -35,6 +35,7 @@ public class GaborNoiseTemplate extends NoiseTemplate { gaborNoiseSampler.setDeviation(deviation); gaborNoiseSampler.setImpulsesPerKernel(impulses); gaborNoiseSampler.setFrequency0(f0); + gaborNoiseSampler.setSalt(salt); return gaborNoiseSampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index 4b9e6fad5..691249d7c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { @@ -13,5 +14,5 @@ public abstract class NoiseTemplate extends SamplerTemp @Value("salt") @Default - protected int salt = 0; + protected long salt = 0; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index 2e0c338d7..915b06dcc 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -17,6 +17,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate { public NoiseSampler get() { NoiseFunction sampler = samplerSupplier.get(); sampler.setFrequency(frequency); + sampler.setSalt(salt); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index dec509e4a..c5b20abe6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -21,6 +21,16 @@ public abstract class NoiseFunction implements NoiseSampler { protected double frequency = 0.02d; + protected long salt; + + public void setSalt(long salt) { + this.salt = salt; + } + + public NoiseFunction() { + this.salt = 0; + } + protected static int fastFloor(double f) { return f >= 0 ? (int) f : (int) f - 1; } @@ -119,12 +129,12 @@ public abstract class NoiseFunction implements NoiseSampler { @Override public double getNoiseSeeded(long seed, double x, double y) { - return getNoiseRaw(seed, x * frequency, y * frequency); + return getNoiseRaw(seed + salt, x * frequency, y * frequency); } @Override public double getNoiseSeeded(long seed, double x, double y, double z) { - return getNoiseRaw(seed, x * frequency, y * frequency, z * frequency); + return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency); } public abstract double getNoiseRaw(long seed, double x, double y);