diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java new file mode 100644 index 000000000..e861d5814 --- /dev/null +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -0,0 +1,104 @@ +package com.dfsek.terra.addons.noise; + +import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; +import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; +import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; +import com.dfsek.terra.addons.noise.config.templates.KernelTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.CellularNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.ConstantNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.ExpressionFunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.GaborNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.SimpleNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.BrownianMotionTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.PingPongTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractalTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate; +import com.dfsek.terra.addons.noise.samplers.ImageSampler; +import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.PerlinSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.SimplexSampler; +import com.dfsek.terra.addons.noise.samplers.noise.value.ValueCubicSampler; +import com.dfsek.terra.addons.noise.samplers.noise.value.ValueSampler; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; +import com.dfsek.terra.api.event.annotations.Global; +import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.seeded.NoiseProvider; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; + +import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; + +@Addon("noise") +@Author("Terra") +@Version("1.0.0") +public class NoiseAddon extends TerraAddon { + @Inject + private TerraPlugin plugin; + + @Override + public void initialize() { + plugin.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) + .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) + .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) + .applyLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) + .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) + .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) + .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)) + ; + } + + @SuppressWarnings("deprecation") + @Global + public void packPreLoad(ConfigPackPreLoadEvent event) { + + event.getPack() + .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(event.getPack().getRegistry(NoiseProvider.class))); + + CheckedRegistry noiseRegistry = event.getPack().getRegistry(NoiseProvider.class); + + noiseRegistry.addUnchecked("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.addUnchecked("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.addUnchecked("CLAMP", ClampNormalizerTemplate::new); + noiseRegistry.addUnchecked("EXPRESSION", ExpressionFunctionTemplate::new); + + noiseRegistry.addUnchecked("IMAGE", ImageSamplerTemplate::new); + + noiseRegistry.addUnchecked("DOMAINWARP", DomainWarpTemplate::new); + + noiseRegistry.addUnchecked("FBM", BrownianMotionTemplate::new); + noiseRegistry.addUnchecked("PINGPONG", PingPongTemplate::new); + noiseRegistry.addUnchecked("RIDGED", RidgedFractalTemplate::new); + + noiseRegistry.addUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.addUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.addUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.addUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.addUnchecked("GABOR", GaborNoiseTemplate::new); + + + noiseRegistry.addUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.addUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + + noiseRegistry.addUnchecked("CELLULAR", CellularNoiseTemplate::new); + + noiseRegistry.addUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.addUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + + noiseRegistry.addUnchecked("CONSTANT", ConstantNoiseTemplate::new); + + noiseRegistry.addUnchecked("KERNEL", KernelTemplate::new); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 919ace8f7..fdd2107bf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler; +package com.dfsek.terra.addons.noise.config; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java similarity index 85% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 8a62a6aa0..7167aca7a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.DomainWarpedSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java index 640dd1999..1d7d8da82 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.function; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index cc751580c..d5571d37e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.ImageSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.ImageSampler; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 59448ca85..0abf1a2b5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.terra.addons.noise.samplers.KernelSampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.KernelSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 39836d59f..7dc39a6f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 6bec571d1..e962ad71a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index 37cf881f4..2239eb6e0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; 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.ConstantSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; @SuppressWarnings("FieldMayBeFinal") public class ConstantNoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 0c88b590e..a1c9dd3d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; @@ -8,14 +8,14 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.ExpressionFunction; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index c3df2ab8c..6766b2f03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.GaborNoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.GaborNoiseSampler; public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index 32295e959..4b9e6fad5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index a922ca27d..ef2b72be1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; import java.util.function.Function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index dd4c33482..1965f9d8c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.BrownianMotionSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.BrownianMotionSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 37db190de..ceb46f3ad 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; 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.fractal.FractalNoiseFunction; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index 912b89831..d8a5bc460 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.PingPongSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.PingPongSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index 91495b5df..e16f33403 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.RidgedFractalSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.RidgedFractalSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index c6d16a164..689939a01 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -1,12 +1,11 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.ClampNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.ClampNormalizer; -import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class ClampNormalizerTemplate extends NormalizerTemplate { +public class ClampNormalizerTemplate extends NormalizerTemplate { @Value("max") private double max; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index ef26b99e8..4de3930c5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.LinearNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class LinearNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java index aa9e01279..f6d94a3e7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.NormalNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.NormalNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class NormalNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java similarity index 54% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index da4a92fa7..248b34e69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.normalizer.Normalizer; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.normalizer.Normalizer; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java index e4e3598ae..3bce239c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java index d062f9c07..faaa5c587 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java index 575b60db0..d56ac8a82 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java index 327cb5e72..a4dce32c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java index 12cd1872a..3165b58d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic; +package com.dfsek.terra.addons.noise.paralithic; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index 7058d8085..0f7f79cbf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.math.paralithic.defined; +package com.dfsek.terra.addons.noise.paralithic.defined; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; public class UserDefinedFunction implements DynamicFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java index 76b2bf39e..20c2aa909 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java index 2a1fa0f94..4fe62fb7e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; +import com.dfsek.terra.addons.noise.util.HashMapDoubleDouble; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.hash.HashMapDoubleDouble; public class NoiseFunction2 implements NoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java index 0c4d826a1..67e7400dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java index 51a40d85a..bb81468a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java index 24ba1549b..38f126c8e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java index cc1aa3f89..65ca10e92 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java index e3f0d43ce..897d193b1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 7f21694d3..e4741d2d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; @@ -384,7 +384,7 @@ public class CellularSampler extends NoiseFunction { int yPrimedBase = (yr - 1) * PRIME_Y; int zPrimedBase = (zr - 1) * PRIME_Z; - Vector3 center = new Vector3Impl(x, y, z); + Vector3 center = new Vector3(x, y, z); switch(distanceFunction) { case Euclidean: diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java index 59455ffa1..74110466f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; /** * Sampler3D implementation that returns a constant. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java index 2cd6bcdac..e736a8e91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java index 277316a50..4b779f768 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; import net.jafama.FastMath; public class GaborNoiseSampler extends NoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index 7e21160a2..57c20a59b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java index f974132aa..e95f89074 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java index 702ab0b1c..b558ef8be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; public abstract class FractalNoiseFunction extends NoiseFunction { protected final NoiseSampler input; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java index 95fe14387..1a1ef243a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java index 358568bc4..d11af4d06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java index 5a488a6aa..1dc5e95d5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.random; +package com.dfsek.terra.addons.noise.samplers.noise.random; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java index 5a99eed7c..335287137 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.random; +package com.dfsek.terra.addons.noise.samplers.noise.random; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index 17a49e93f..cb8c91d69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index 0ce5a2a6f..6a8e46089 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java index 13fbe326b..a20dd5c79 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide Perlin Noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java index 7b1ccc099..9190c981a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; public class SimplexSampler extends SimplexStyleSampler { private static final Double2[] GRAD_2D = { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java index 83805d85b..39c0b6c7c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * Abstract NoiseSampler implementation for simplex-style noise functions. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java index 154d7053a..bb61eb93b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueCubicSampler extends ValueStyleNoise { public ValueCubicSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java index 656f60d7f..1546177f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueSampler extends ValueStyleNoise { public ValueSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java index aff9e1a22..32483df29 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; public abstract class ValueStyleNoise extends NoiseFunction { public ValueStyleNoise(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java index 638d8a66c..104e7fe38 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java @@ -31,7 +31,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.dfsek.terra.api.util.hash; +package com.dfsek.terra.addons.noise.util; import java.io.Serializable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java index edad7aa32..9172c656b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java @@ -31,7 +31,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.dfsek.terra.api.util.hash; +package com.dfsek.terra.addons.noise.util; import java.io.Serializable; import java.util.NoSuchElementException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 68f58b009..c77a5a134 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -10,6 +10,8 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.tectonic.LoaderHolder; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.JarUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -22,7 +24,7 @@ import java.util.jar.JarFile; /** * Represents a Terra mod/plugin instance. */ -public interface TerraPlugin extends LoaderRegistrar { +public interface TerraPlugin extends LoaderRegistrar, LoaderHolder { WorldHandle getWorldHandle(); TerraWorld getWorld(World world); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index c4acb01bd..0c4691c98 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.config; -import com.dfsek.terra.api.LoaderRegistrar; +import com.dfsek.terra.api.tectonic.LoaderHolder; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.world.TerraWorld; @@ -9,8 +10,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.Map; import java.util.Set; -public interface ConfigPack extends LoaderRegistrar { - @SuppressWarnings("unchecked") +public interface ConfigPack extends LoaderRegistrar, LoaderHolder { CheckedRegistry getRegistry(Class clazz); BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index 1509e752e..be8b19097 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -30,4 +30,28 @@ public interface NoiseSampler { double getNoiseSeeded(int seed, double x, double y); double getNoiseSeeded(int seed, double x, double y, double z); + + static NoiseSampler zero() { + return new NoiseSampler() { + @Override + public double getNoise(double x, double y) { + return 0; + } + + @Override + public double getNoise(double x, double y, double z) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y, double z) { + return 0; + } + }; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java new file mode 100644 index 000000000..3bbd10ecc --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.api.tectonic; + +import com.dfsek.tectonic.abstraction.TemplateProvider; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.lang.reflect.Type; +import java.util.function.Supplier; + +public interface LoaderHolder { + LoaderHolder applyLoader(Type type, TypeLoader loader); + default LoaderHolder applyLoader(Class type, TypeLoader loader) { + return applyLoader((Type) type, loader); + } + + LoaderHolder applyLoader(Type type, TemplateProvider> loader); + default LoaderHolder applyLoader(Class type, TemplateProvider> loader) { + return applyLoader((Type) type, loader); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java similarity index 77% rename from common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java rename to common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java index 96308deb0..61fc561ae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api; +package com.dfsek.terra.api.tectonic; import com.dfsek.tectonic.loading.TypeRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index e939d8bd0..69a40b39a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -1,47 +1,115 @@ package com.dfsek.terra.api.vector; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.World; +import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -public interface Vector3 extends Cloneable { - double getZ(); +public class Vector3 implements Cloneable { + private double x; + private double y; + private double z; - Vector3 setZ(double z); + public Vector3(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } - double getX(); + public double getZ() { + return z; + } - Vector3 setX(double x); + public Vector3 setZ(double z) { + this.z = z; + return this; + } - double getY(); + public double getX() { + return x; + } - Vector3 setY(double y); + public Vector3 setX(double x) { + this.x = x; + return this; + } - int getBlockX(); + public double getY() { + return y; + } - int getBlockY(); + public Vector3 setY(double y) { + this.y = y; + return this; + } - int getBlockZ(); + public int getBlockX() { + return FastMath.floorToInt(x); + } - Vector3 multiply(double m); + public int getBlockY() { + return FastMath.floorToInt(y); + } - Vector3 add(double x, double y, double z); + public int getBlockZ() { + return FastMath.floorToInt(z); + } - Vector3 add(Vector3 other); + public Vector3 multiply(double m) { + x *= m; + y *= m; + z *= m; + return this; + } - Vector3 add(Vector2 other); + public Vector3 add(double x, double y, double z) { + this.x += x; + this.y += y; + this.z += z; + return this; + } - double lengthSquared(); + public Vector3 add(Vector3 other) { + this.x += other.getX(); + this.y += other.getY(); + this.z += other.getZ(); + return this; + } - double length(); + public Vector3 add(Vector2 other) { + this.x += other.getX(); + this.z += other.getZ(); + return this; + } - double inverseLength(); + public double lengthSquared() { + return x * x + y * y + z * z; + } + + public Vector3 clone() { + try { + return (Vector3) super.clone(); + } catch(CloneNotSupportedException e) { + throw new Error(e); + } + } + + public double length() { + return FastMath.sqrt(lengthSquared()); + } + + public double inverseLength() { + return FastMath.invSqrtQuick(lengthSquared()); + } /** * Returns if a vector is normalized * * @return whether the vector is normalised */ - boolean isNormalized(); + public boolean isNormalized() { + return MathUtil.equals(this.lengthSquared(), 1); + } /** * Rotates the vector around the x axis. @@ -55,7 +123,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundX(double angle); + @NotNull + public Vector3 rotateAroundX(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double y = angleCos * getY() - angleSin * getZ(); + double z = angleSin * getY() + angleCos * getZ(); + return setY(y).setZ(z); + } /** * Rotates the vector around the y axis. @@ -69,7 +145,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundY(double angle); + @NotNull + public Vector3 rotateAroundY(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double x = angleCos * getX() + angleSin * getZ(); + double z = -angleSin * getX() + angleCos * getZ(); + return setX(x).setZ(z); + } /** * Rotates the vector around the z axis @@ -83,7 +167,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundZ(double angle); + @NotNull + public Vector3 rotateAroundZ(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double x = angleCos * getX() - angleSin * getY(); + double y = angleSin * getX() + angleCos * getY(); + return setX(x).setY(y); + } /** * Get the distance between this vector and another. The value of this @@ -95,7 +187,9 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distance(@NotNull Vector3 o); + public double distance(@NotNull Vector3 o) { + return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); + } /** * Get the squared distance between this vector and another. @@ -103,7 +197,9 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distanceSquared(@NotNull Vector3 o); + public double distanceSquared(@NotNull Vector3 o) { + return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); + } /** * Rotates the vector around a given arbitrary axis in 3 dimensional space. @@ -124,7 +220,10 @@ public interface Vector3 extends Cloneable { * @throws IllegalArgumentException if the provided axis vector instance is * null */ - @NotNull Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; + @NotNull + public Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { + return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.clone().normalize(), angle); + } /** * Rotates the vector around a given arbitrary axis in 3 dimensional space. @@ -144,7 +243,27 @@ public interface Vector3 extends Cloneable { * @throws IllegalArgumentException if the provided axis vector instance is * null */ - @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; + @NotNull + public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { + double x = getX(), y = getY(), z = getZ(); + double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); + + double cosTheta = Math.cos(angle); + double sinTheta = Math.sin(angle); + double dotProduct = this.dot(axis); + + double xPrime = x2 * dotProduct * (1d - cosTheta) + + x * cosTheta + + (-z2 * y + y2 * z) * sinTheta; + double yPrime = y2 * dotProduct * (1d - cosTheta) + + y * cosTheta + + (z2 * x - x2 * z) * sinTheta; + double zPrime = z2 * dotProduct * (1d - cosTheta) + + z * cosTheta + + (-y2 * x + x2 * y) * sinTheta; + + return setX(xPrime).setY(yPrime).setZ(zPrime); + } /** * Calculates the dot product of this vector with another. The dot product @@ -153,13 +272,59 @@ public interface Vector3 extends Cloneable { * @param other The other vector * @return dot product */ - double dot(@NotNull Vector3 other); + public double dot(@NotNull Vector3 other) { + return x * other.getX() + y * other.getY() + z * other.getZ(); + } - Vector3 normalize(); + public Vector3 normalize() { + return this.multiply(this.inverseLength()); + } - Vector3 subtract(int x, int y, int z); + public Vector3 subtract(int x, int y, int z) { + this.x -= x; + this.y -= y; + this.z -= z; + return this; + } - Vector3 subtract(Vector3 end); + public Vector3 subtract(Vector3 end) { + x -= end.getX(); + y -= end.getY(); + z -= end.getZ(); + return this; + } - Vector3 clone(); + /** + * Returns a hash code for this vector + * + * @return hash code + */ + @Override + public int hashCode() { + int hash = 7; + + hash = 79 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32)); + hash = 79 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32)); + hash = 79 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32)); + return hash; + } + + /** + * Checks to see if two objects are equal. + *

+ * Only two Vectors can ever return true. This method uses a fuzzy match + * to account for floating point errors. The epsilon can be retrieved + * with epsilon. + */ + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Vector3)) return false; + Vector3 other = (Vector3) obj; + return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); + } + + @Override + public String toString() { + return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index f50ac27f5..bb8b8d148 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import java.util.List; import java.util.Random; @@ -41,7 +40,7 @@ public class GridSpawn { } } Vector3 shortest = zones.get(0); - Vector3 compare = new Vector3Impl(x, 0, z); + Vector3 compare = new Vector3(x, 0, z); for(Vector3 v : zones) { if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone(); } @@ -62,7 +61,7 @@ public class GridSpawn { int offsetZ = r.nextInt(width); int sx = structureChunkX * (width + 2 * separation) + offsetX; int sz = structureChunkZ * (width + 2 * separation) + offsetZ; - return new Vector3Impl(sx, 0, sz); + return new Vector3(sx, 0, sz); } public int getWidth() { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index dbf99be14..bb52791e1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -11,8 +11,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -40,7 +40,7 @@ public abstract class AbstractBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 1eaefff4e..07ddc7bb3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -9,9 +9,9 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -41,7 +41,7 @@ public class BiomeFunction implements Function { BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); - return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); + return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index d4c2888d8..89709e6ee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -34,7 +34,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); + String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index a91182fe6..212623bcc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -17,7 +17,6 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -47,7 +46,7 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getWorld()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 043d3d570..683d8fdde 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; @@ -42,7 +42,7 @@ public class EntityFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3Impl(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); + arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index e678793f8..764127093 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -31,7 +31,7 @@ public class GetMarkFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return mark == null ? "" : mark; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index b61afb6f9..677cfb080 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplica import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -53,7 +53,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index f726f8434..4a7998038 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -42,7 +42,7 @@ public class PullFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); BlockState rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index 51c994181..a97212e93 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -34,7 +34,7 @@ public class SetMarkFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index a39eabb85..40b52f675 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -10,8 +10,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipu import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -37,7 +37,7 @@ public class StateFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 16a9cdae4..2b96c1fc5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -15,7 +15,6 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; @@ -72,7 +71,7 @@ public class StructureFunction implements Function { return null; } - Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); + Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java index c2ccb4be3..a41366e2d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.carving; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Random; @@ -98,12 +97,12 @@ public abstract class Worm { for(int z = -zRad - 1; z <= zRad + 1; z++) { if(!(FastMath.floorDiv(origin.getBlockZ() + z, 16) == chunkZ)) continue; for(int y = -yRad - 1; y <= yRad + 1; y++) { - Vector3 position = origin.clone().add(new Vector3Impl(x, y, z)); + Vector3 position = origin.clone().add(new Vector3(x, y, z)); if(position.getY() < world.getMinHeight() || position.getY() > world.getMaxHeight()) continue; double eq = ellipseEquation(x, y, z, xRad, yRad, zRad); if(eq <= 1 && y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { - consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); + consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); } else if(eq <= 1.5) { Carver.CarvingType type = Carver.CarvingType.WALL; if(y <= -yRad - 1 + bottomCut) { @@ -111,7 +110,7 @@ public abstract class Worm { } else if(y >= yRad + 1 - topCut) { type = Carver.CarvingType.TOP; } - consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); + consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index c4aebc741..49de326f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -66,7 +65,7 @@ public abstract class AsyncFeatureFinder implements Runnable { run++; toggle = !toggle; } - Vector3 finalSpawn = found ? finalizeVector(new Vector3Impl(x, 0, z)) : null; + Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; callback.accept(finalSpawn); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index 980ddb166..4ea8dce4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -5,12 +5,12 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.carving.Worm; -import com.dfsek.terra.vector.Vector3Impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -37,7 +37,7 @@ public class CarverCache { if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); Random r = new FastRandom(seed); - Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); + Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); List points = new GlueList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index d6bf399fd..ddc2199fc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -20,7 +20,6 @@ import com.dfsek.terra.api.world.carving.Worm; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; @@ -156,7 +155,7 @@ public class UserDefinedCarver extends Carver { this.seed = seed; super.setTopCut(topCut); super.setBottomCut(bottomCut); - direction = new Vector3Impl((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); + direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); double[] args = {origin.getX(), origin.getY(), origin.getZ(), length, 0, seed}; setRadius(new int[] {(int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args))}); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index 95cb792cb..38486b28a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -13,12 +13,12 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Locale; @@ -66,9 +66,9 @@ public class BiomeLocateCommand implements CommandTemplate { new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 20e1df6dd..fd06ade5f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -17,7 +17,6 @@ import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import java.util.HashMap; @@ -41,7 +40,7 @@ public class SpawnCommand implements CommandTemplate { Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new Vector3Impl(x, y, z) + new Vector3(x, y, z) ), Rotation.NONE, new FastRandom(), player.world(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index da1d094d1..b89db1ddc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -13,11 +13,11 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.commands.structure.argument.StructureArgumentParser; import com.dfsek.terra.commands.structure.completer.StructureCompleter; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.Locale; @@ -64,9 +64,9 @@ public class StructureLocateCommand implements CommandTemplate { new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 2d1f7e9b9..3cd000874 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -1,11 +1,11 @@ package com.dfsek.terra.config; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -40,17 +40,10 @@ import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.Repla import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.SmoothMutatorTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; import com.dfsek.terra.config.loaders.palette.CarverPaletteLoader; import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader; import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader; import com.dfsek.terra.config.loaders.palette.slant.SlantHolderLoader; -import com.dfsek.terra.noise.samplers.ImageSampler; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.flora.TerraFlora; import com.dfsek.terra.world.population.items.ores.OreConfig; @@ -79,11 +72,6 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(TreeLayer.class, new TreeLayerLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(OreHolder.class, new OreHolderLoader()) - .registerLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) - .registerLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) - .registerLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) - .registerLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) - .registerLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) .registerLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) .registerLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .registerLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) @@ -97,14 +85,11 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(SourceSeeded.class, new SourceBuilderLoader()) .registerLoader(StageSeeded.class, new StageBuilderLoader()) .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) - .registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)) .registerLoader(ImageBiomeProvider.Align.class, (t, object, cf) -> ImageBiomeProvider.Align.valueOf((String) object)) .registerLoader(ExpanderStage.Type.class, (t, object, cf) -> ExpanderStage.Type.valueOf((String) object)) .registerLoader(MutatorStage.Type.class, (t, object, cf) -> MutatorStage.Type.valueOf((String) object)) - .registerLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) - .registerLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)) .registerLoader(TerraFlora.Search.class, (t, o, l) -> TerraFlora.Search.valueOf(o.toString())); if(main != null) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 994c15125..3b5b4ffe4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -11,7 +11,6 @@ import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.noise.samplers.ExpressionSampler; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.generation.WorldGenerator; import java.util.LinkedHashMap; @@ -48,7 +47,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { try { noise = new ExpressionSampler(template.getNoiseEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); - elevation = template.getElevationEquation() == null ? new ConstantSampler(0) : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); + elevation = template.getElevationEquation() == null ? NoiseSampler.zero() : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); carving = new ExpressionSampler(template.getCarvingEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); } catch(ParseException e) { throw new RuntimeException(e); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index b2213c862..20c094196 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -17,7 +17,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate> loaders = new HashMap<>(); + private final Map>> objectLoaders = new HashMap<>(); + private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Scope varScope = new Scope(); @@ -205,6 +209,18 @@ public class ConfigPackImpl implements ConfigPack { private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } + @Override + public ConfigPackImpl applyLoader(Type type, TypeLoader loader) { + loaders.put(type, loader); + return this; + } + + @SuppressWarnings("unchecked") + @Override + public ConfigPackImpl applyLoader(Type type, TemplateProvider> loader) { + objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + return this; + } protected Map, ImmutablePair, CheckedRegistry>> getRegistryMap() { return registryMap; @@ -282,6 +298,7 @@ public class ConfigPackImpl implements ConfigPack { } + @SuppressWarnings("unchecked") @Override public void register(TypeRegistry registry) { registry @@ -289,9 +306,9 @@ public class ConfigPackImpl implements ConfigPack { .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)) .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) - .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) - .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class))); + .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))); + loaders.forEach(registry::registerLoader); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index d3da8aaf9..d1b767d04 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -7,8 +7,6 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import java.lang.reflect.Field; -import java.lang.reflect.Type; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index bdcd343c0..705026c69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -25,7 +25,6 @@ import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; @@ -248,7 +247,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf biomeNoise = new NoiseSeeded() { @Override public NoiseSampler apply(Long seed) { - return new ConstantSampler(0); + return NoiseSampler.zero(); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index 46fb45c4f..e0d90a6e1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,62 +1,10 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.util.seeded.NoiseProvider; -import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.KernelTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.CellularNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.ConstantNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.ExpressionFunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.GaborNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.SimpleNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.BrownianMotionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.PingPongTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.RidgedFractalTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; -import com.dfsek.terra.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.registry.OpenRegistryImpl; public class NoiseRegistry extends OpenRegistryImpl { public NoiseRegistry() { - add("LINEAR", LinearNormalizerTemplate::new); - add("NORMAL", NormalNormalizerTemplate::new); - add("CLAMP", ClampNormalizerTemplate::new); - add("EXPRESSION", ExpressionFunctionTemplate::new); - add("IMAGE", ImageSamplerTemplate::new); - - add("DOMAINWARP", DomainWarpTemplate::new); - - add("FBM", BrownianMotionTemplate::new); - add("PINGPONG", PingPongTemplate::new); - add("RIDGED", RidgedFractalTemplate::new); - - add("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - add("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - add("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - add("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - add("GABOR", GaborNoiseTemplate::new); - - - add("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - add("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - - add("CELLULAR", CellularNoiseTemplate::new); - - add("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - add("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - - add("CONSTANT", ConstantNoiseTemplate::new); - - add("KERNEL", KernelTemplate::new); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java index ffaae22b7..23272f48e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java @@ -144,7 +144,7 @@ public class Vector2Impl implements Vector2 { @Override public Vector3 extrude(double y) { - return new Vector3Impl(this.x, y, this.z); + return new Vector3(this.x, y, this.z); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java deleted file mode 100644 index 117a19eac..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.dfsek.terra.vector; - -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -/** - * 3D Mutable Vector - */ -public class Vector3Impl implements Vector3 { - private double x; - private double y; - private double z; - - public Vector3Impl(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public double getZ() { - return z; - } - - @Override - public Vector3 setZ(double z) { - this.z = z; - return this; - } - - @Override - public double getX() { - return x; - } - - @Override - public Vector3 setX(double x) { - this.x = x; - return this; - } - - @Override - public double getY() { - return y; - } - - @Override - public Vector3 setY(double y) { - this.y = y; - return this; - } - - @Override - public int getBlockX() { - return FastMath.floorToInt(x); - } - - @Override - public int getBlockY() { - return FastMath.floorToInt(y); - } - - @Override - public int getBlockZ() { - return FastMath.floorToInt(z); - } - - @Override - public Vector3 multiply(double m) { - x *= m; - y *= m; - z *= m; - return this; - } - - @Override - public Vector3 add(double x, double y, double z) { - this.x += x; - this.y += y; - this.z += z; - return this; - } - - @Override - public Vector3 add(Vector3 other) { - this.x += other.getX(); - this.y += other.getY(); - this.z += other.getZ(); - return this; - } - - @Override - public Vector3 add(Vector2 other) { - this.x += other.getX(); - this.z += other.getZ(); - return this; - } - - @Override - public double lengthSquared() { - return x * x + y * y + z * z; - } - - @Override - public Vector3Impl clone() { - try { - return (Vector3Impl) super.clone(); - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } - - @Override - public double length() { - return FastMath.sqrt(lengthSquared()); - } - - @Override - public double inverseLength() { - return FastMath.invSqrtQuick(lengthSquared()); - } - - @Override - public boolean isNormalized() { - return MathUtil.equals(this.lengthSquared(), 1); - } - - @Override - @NotNull - public Vector3 rotateAroundX(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double y = angleCos * getY() - angleSin * getZ(); - double z = angleSin * getY() + angleCos * getZ(); - return setY(y).setZ(z); - } - - @Override - @NotNull - public Vector3 rotateAroundY(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double x = angleCos * getX() + angleSin * getZ(); - double z = -angleSin * getX() + angleCos * getZ(); - return setX(x).setZ(z); - } - - @Override - @NotNull - public Vector3 rotateAroundZ(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double x = angleCos * getX() - angleSin * getY(); - double y = angleSin * getX() + angleCos * getY(); - return setX(x).setY(y); - } - - @Override - public double distance(@NotNull Vector3 o) { - return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); - } - - @Override - public double distanceSquared(@NotNull Vector3 o) { - return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); - } - - @Override - @NotNull - public Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { - return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.clone().normalize(), angle); - } - - @Override - @NotNull - public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { - double x = getX(), y = getY(), z = getZ(); - double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); - - double cosTheta = Math.cos(angle); - double sinTheta = Math.sin(angle); - double dotProduct = this.dot(axis); - - double xPrime = x2 * dotProduct * (1d - cosTheta) - + x * cosTheta - + (-z2 * y + y2 * z) * sinTheta; - double yPrime = y2 * dotProduct * (1d - cosTheta) - + y * cosTheta - + (z2 * x - x2 * z) * sinTheta; - double zPrime = z2 * dotProduct * (1d - cosTheta) - + z * cosTheta - + (-y2 * x + x2 * y) * sinTheta; - - return setX(xPrime).setY(yPrime).setZ(zPrime); - } - - @Override - public double dot(@NotNull Vector3 other) { - return x * other.getX() + y * other.getY() + z * other.getZ(); - } - - @Override - public Vector3 normalize() { - return this.multiply(this.inverseLength()); - } - - @Override - public Vector3 subtract(int x, int y, int z) { - this.x -= x; - this.y -= y; - this.z -= z; - return this; - } - - @Override - public Vector3 subtract(Vector3 end) { - x -= end.getX(); - y -= end.getY(); - z -= end.getZ(); - return this; - } - - /** - * Returns a hash code for this vector - * - * @return hash code - */ - @Override - public int hashCode() { - int hash = 7; - - hash = 79 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32)); - hash = 79 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32)); - hash = 79 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32)); - return hash; - } - - /** - * Checks to see if two objects are equal. - *

- * Only two Vectors can ever return true. This method uses a fuzzy match - * to account for floating point errors. The epsilon can be retrieved - * with epsilon. - */ - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Vector3)) return false; - Vector3 other = (Vector3) obj; - return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); - } - - @Override - public String toString() { - return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; - } - -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index fe850b40f..1bd6e9e33 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -24,7 +24,6 @@ import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; @@ -108,20 +107,20 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); if(paletteLevel == 0 && c.doSlabs() && y < 255) { - prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3Impl(x, y + 1, z), c.getSlabPalettes(), + prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3(x, y + 1, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; } else { if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java index a0893afea..257dbbd32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.HashMap; @@ -68,7 +67,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); + return noiseGetter.apply(generator, new Vector3(x, y, z)); } /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java index f87022f14..b7a94d51e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.HashMap; @@ -83,7 +82,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); + return noiseGetter.apply(generator, new Vector3(x, y, z)); } private static int reRange(int value, int high) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 55815917b..1aee7e43e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -11,7 +12,6 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -44,7 +44,7 @@ public class OrePopulator implements TerraBlockPopulator { try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { int amount = orePair.getRight().getAmount().get(random); for(int i = 0; i < amount; i++) { - Vector3Impl location = new Vector3Impl(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); + Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); orePair.getLeft().generate(location, chunk, random); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 0e3bd8b69..6dcc68948 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -12,7 +12,6 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.ArrayList; @@ -59,7 +58,7 @@ public class TerraFlora implements Flora { @Override public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { int size = floraPalette.getSize(); - Vector3 current = new Vector3Impl(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); + Vector3 current = new Vector3(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); List blocks = new ArrayList<>(); int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index b5430ef58..a4bf774ce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; import java.util.Random; @@ -26,7 +26,7 @@ public abstract class Ore { this.materials = materials; } - public abstract void generate(Vector3Impl origin, Chunk c, Random r); + public abstract void generate(Vector3 origin, Chunk c, Random r); public BlockState getMaterial(BlockType replace) { return materials.getOrDefault(replace, material); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 343b2e16a..9ef13c3f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -22,7 +22,7 @@ public class VanillaOre extends Ore { } @Override - public void generate(Vector3Impl location, Chunk chunk, Random random) { + public void generate(Vector3 location, Chunk chunk, Random random) { double size = sizeRange.get(random); int centerX = location.getBlockX(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index b4c5458f1..be5f9d809 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; public class BukkitPlayer implements Player { @@ -22,7 +21,7 @@ public class BukkitPlayer implements Player { @Override public Vector3 position() { org.bukkit.Location bukkit = delegate.getLocation(); - return new Vector3Impl(bukkit.getX(), bukkit.getY(), bukkit.getZ()); + return new Vector3(bukkit.getX(), bukkit.getY(), bukkit.getZ()); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 2e9e56904..5aed5e708 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -54,7 +53,7 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new Vector3Impl(location.getX(), location.getY(), location.getZ()), BukkitAdapter.adapt(e.getWorld()), new FastRandom())) + if(!tree.plant(new Vector3(location.getX(), location.getY(), location.getZ()), BukkitAdapter.adapt(e.getWorld()), new FastRandom())) block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 0fd3dfd60..3cc786e3e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -22,7 +22,6 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; @@ -185,7 +184,7 @@ public final class BukkitAdapter { } public static Vector3 adapt(Location location) { - return new Vector3Impl(location.getX(), location.getY(), location.getZ()); + return new Vector3(location.getX(), location.getY(), location.getZ()); } public static Vector adapt(Vector3 vector3) { @@ -193,7 +192,7 @@ public final class BukkitAdapter { } public static Vector3 adapt(Vector vector) { - return new Vector3Impl(vector.getX(), vector.getY(), vector.getZ()); + return new Vector3(vector.getX(), vector.getY(), vector.getZ()); } public static CommandSender adapt(org.bukkit.command.CommandSender sender) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 515f2398d..20e6d064f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -1,8 +1,11 @@ package com.dfsek.terra.fabric; +import com.dfsek.tectonic.abstraction.TemplateProvider; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; @@ -77,8 +80,13 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Supplier; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @@ -88,6 +96,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private static TerraFabricPlugin instance; private final Map> worldMap = new HashMap<>(); + private final Map> loaders = new HashMap<>(); + private final Map>> objectLoaders = new HashMap<>(); + public Map> getWorldMap() { return worldMap; } @@ -231,6 +242,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return debugLogger; } + @SuppressWarnings("unchecked") @Override public void register(TypeRegistry registry) { genericLoaders.register(registry); @@ -242,6 +254,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(identifier == null) throw new LoadException("Invalid identifier: " + o); return identifier; }); + loaders.forEach(registry::registerLoader); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } @Override @@ -290,6 +304,19 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return profiler; } + @Override + public TerraFabricPlugin applyLoader(Type type, TypeLoader loader) { + loaders.put(type, loader); + return this; + } + + @SuppressWarnings("unchecked") + @Override + public TerraFabricPlugin applyLoader(Type type, TemplateProvider> loader) { + objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + return this; + } + @Addon("Terra-Fabric") @Author("Terra") @Version("1.0.0") diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index c64720750..71a134203 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.block.state.properties.enums.WallHeight; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; import net.minecraft.block.enums.BlockHalf; import net.minecraft.block.enums.WallShape; @@ -21,7 +20,7 @@ public final class FabricAdapter { } public static Vector3 adapt(BlockPos pos) { - return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ()); + return new Vector3(pos.getX(), pos.getY(), pos.getZ()); } public static FabricBlockState adapt(BlockState state) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 1434d77ef..366af238e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.math.BlockVector3; @@ -20,8 +19,8 @@ public final class WorldEditUtil { .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world())); BlockVector3 min = selection.getMinimumPoint(); BlockVector3 max = selection.getMaximumPoint(); - Vector3 l1 = new Vector3Impl(min.getBlockX(), min.getBlockY(), min.getBlockZ()); - Vector3 l2 = new Vector3Impl(max.getBlockX(), max.getBlockY(), max.getBlockZ()); + Vector3 l1 = new Vector3(min.getBlockX(), min.getBlockY(), min.getBlockZ()); + Vector3 l2 = new Vector3(max.getBlockX(), max.getBlockY(), max.getBlockZ()); return Pair.of(l1, l2); } catch(IncompleteRegionException e) { throw new IllegalStateException("No selection has been made", e);