From 9b75410ea7c462c760ec2fda30d29a3b2ded7e2b Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 15 Nov 2022 21:09:16 -0700 Subject: [PATCH 01/11] configure bukkit resource config properly --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 1d057add0..20122663d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -42,6 +42,7 @@ afterEvaluate { forImmediateSubProjects(":platforms") { configureDistribution() } + project(":platforms:bukkit:common").configureDistribution() forSubProjects(":common:addons") { apply(plugin = "com.github.johnrengelman.shadow") From bc324df7caabf96ccc6ae8ebdbae22c0b1f5df14 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 6 Aug 2022 22:15:15 +1000 Subject: [PATCH 02/11] Working state for pipeline implementation --- .../biome/pipeline/BiomePipelineAddon.java | 14 +- .../biome/pipeline/BiomePipelineColumn.java | 4 +- .../config/BiomePipelineTemplate.java | 45 ++-- .../config/BiomeProviderTemplate.java | 37 --- ...teLoader.java => PipelineBiomeLoader.java} | 14 +- .../config/SamplerSourceTemplate.java | 10 +- .../biome/pipeline/config/SourceTemplate.java | 4 +- .../pipeline/config/stage/StageTemplate.java | 2 +- .../stage/expander/ExpanderStageTemplate.java | 9 +- .../mutator/BorderListMutatorTemplate.java | 13 +- .../stage/mutator/BorderMutatorTemplate.java | 11 +- .../mutator/ReplaceListMutatorTemplate.java | 13 +- .../stage/mutator/ReplaceMutatorTemplate.java | 11 +- .../stage/mutator/SmoothMutatorTemplate.java | 7 +- .../pipeline/expand/FractalExpander.java | 27 --- .../pipeline/mutator/BorderListMutator.java | 67 ------ .../biome/pipeline/mutator/BorderMutator.java | 66 ------ .../biome/pipeline/mutator/SmoothMutator.java | 46 ---- .../reimplementation/BiomeChunkImpl.java | 215 ++++++++++++++++++ .../PipelineBiomeProvider.java | 112 +++++++++ .../reimplementation/PipelineImpl.java | 82 +++++++ .../reimplementation/SeededVector.java | 19 ++ .../reimplementation/StringBiome.java | 40 ++++ .../reimplementation/api/BiomeChunk.java | 10 + .../reimplementation/api/Expander.java | 29 +++ .../reimplementation/api/Pipeline.java | 16 ++ .../pipeline/reimplementation/api/Source.java | 11 + .../pipeline/reimplementation/api/Stage.java | 15 ++ .../api/biome/DelegatedBiome.java | 40 ++++ .../api/biome/EphemeralBiomeDelegate.java | 51 +++++ .../api/biome/PipelineBiome.java | 35 +++ .../api/biome/SelfDelegate.java | 40 ++++ .../source/SamplerSource.java | 27 +++ .../reimplementation/source/SingleSource.java | 27 +++ .../stage/expander/DebugExpander.java | 20 ++ .../stage/expander/FractalExpander.java | 37 +++ .../stage/mutators/BorderListMutator.java | 86 +++++++ .../stage/mutators/BorderMutator.java | 81 +++++++ .../stage/mutators}/ReplaceListMutator.java | 42 ++-- .../stage/mutators}/ReplaceMutator.java | 34 +-- .../stage/mutators/SmoothMutator.java | 56 +++++ .../biome/pipeline/source/SamplerSource.java | 33 --- .../biome/pipeline/stages/MutatorStage.java | 3 +- 43 files changed, 1172 insertions(+), 389 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/{BiomeDelegateLoader.java => PipelineBiomeLoader.java} (62%) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{mutator => reimplementation/stage/mutators}/ReplaceListMutator.java (50%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{mutator => reimplementation/stage/mutators}/ReplaceMutator.java (51%) create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 42aa95b0e..f57020660 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -11,10 +11,8 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.BiomeDelegateLoader; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.PipelineBiomeLoader; import com.dfsek.terra.addons.biome.pipeline.config.SamplerSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; @@ -22,7 +20,9 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorT import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -39,7 +39,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomePipelineAddon implements AddonInitializer { - public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { + public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { }; public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() { @@ -63,7 +63,7 @@ public class BiomePipelineAddon implements AddonInitializer { providerRegistry.register(addon.key("PIPELINE"), BiomePipelineTemplate::new); }) .then(event -> { - CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( SOURCE_REGISTRY_KEY); sourceRegistry.register(addon.key("SAMPLER"), SamplerSourceTemplate::new); }) @@ -83,7 +83,7 @@ public class BiomePipelineAddon implements AddonInitializer { .register(addon, ConfigPackPostLoadEvent.class) .then(event -> { Registry biomeRegistry = event.getPack().getRegistry(Biome.class); - event.getPack().applyLoader(BiomeDelegate.class, new BiomeDelegateLoader(biomeRegistry)); + event.getPack().applyLoader(PipelineBiome.class, new PipelineBiomeLoader(biomeRegistry)); }); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java index 609d22ee1..a66c8da27 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -class BiomePipelineColumn implements Column { +public class BiomePipelineColumn implements Column { private final int min; private final int max; @@ -17,7 +17,7 @@ class BiomePipelineColumn implements Column { private final int z; private final Biome biome; - protected BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { + public BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { this.min = min; this.max = max; this.x = x; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index e35d621e2..1324f50e0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -10,45 +10,50 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.PipelineBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.PipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class BiomePipelineTemplate extends BiomeProviderTemplate { - @Value("pipeline.initial-size") +public class BiomePipelineTemplate implements ObjectTemplate { + @Value("resolution") @Default @Description(""" - The initial size of biome chunks. This value must be at least 2. - This is not the final size of biome chunks. Final chunks will be much larger. - - It is recommended to keep biome chunks' final size in the range of [50, 300] - to prevent performance issues. To calculate the size of biome chunks, simply - take initial-size and for each expand stage, multiply the running value by 2 - and subtract 1. (The size is also printed to the server console if you - have debug mode enabled)""") - private @Meta int initialSize = 2; + The resolution at which to sample biomes. + + Larger values are quadratically faster, but produce lower quality results. + For example, a value of 3 would sample every 3 blocks.""") + protected @Meta int resolution = 1; @Value("pipeline.source") @Description("The Biome Source to use for initial population of biomes.") - private @Meta BiomeSource source; + private @Meta Source source; @Value("pipeline.stages") @Description("A list of pipeline stages to apply to the result of #source") private @Meta List<@Meta Stage> stages; + @Value("blend.sampler") + @Default + @Description("A sampler to use for blending the edges of biomes via domain warping.") + protected @Meta NoiseSampler blendSampler = NoiseSampler.zero(); + + @Value("blend.amplitude") + @Default + @Description("The amplitude at which to perform blending.") + protected @Meta double blendAmplitude = 0d; + @Override public BiomeProvider get() { - BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); - stages.forEach(biomePipelineBuilder::addStage); - BiomePipeline pipeline = biomePipelineBuilder.build(source); - return new BiomePipelineProvider(pipeline, resolution, blend, blendAmp); + return new PipelineBiomeProvider(new PipelineImpl(source, stages, 10), resolution, blendSampler, blendAmplitude); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java deleted file mode 100644 index 1412485fe..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public abstract class BiomeProviderTemplate implements ObjectTemplate { - @Value("resolution") - @Default - @Description(""" - The resolution at which to sample biomes. - - Larger values are quadratically faster, but produce lower quality results. - For example, a value of 3 would sample every 3 blocks.""") - protected @Meta int resolution = 1; - @Value("blend.sampler") - @Default - @Description("A sampler to use for blending the edges of biomes via domain warping.") - protected @Meta NoiseSampler blend = NoiseSampler.zero(); - @Value("blend.amplitude") - @Default - @Description("The amplitude at which to perform blending.") - protected @Meta double blendAmp = 0d; -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java similarity index 62% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java index c416e4804..5a5e4beb9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java @@ -8,25 +8,25 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.Biome; -public class BiomeDelegateLoader implements TypeLoader { +public class PipelineBiomeLoader implements TypeLoader { private final Registry biomeRegistry; - public BiomeDelegateLoader(Registry biomeRegistry) { + public PipelineBiomeLoader(Registry biomeRegistry) { this.biomeRegistry = biomeRegistry; } @Override - public BiomeDelegate load(@NotNull AnnotatedType t, @NotNull Object c, @NotNull ConfigLoader loader, DepthTracker depthTracker) + public PipelineBiome load(@NotNull AnnotatedType t, @NotNull Object c, @NotNull ConfigLoader loader, DepthTracker depthTracker) throws LoadException { - if(c.equals("SELF")) return BiomeDelegate.self(); + if(c.equals("SELF")) return PipelineBiome.self(); return biomeRegistry .getByID((String) c) - .map(BiomeDelegate::from) - .orElseGet(() -> BiomeDelegate.ephemeral((String) c)); + .map(PipelineBiome::from) + .orElseGet(() -> PipelineBiome.ephemeral((String) c)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java index 2ba70b608..8fe5f7310 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java @@ -10,9 +10,9 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -25,10 +25,10 @@ public class SamplerSourceTemplate extends SourceTemplate { @Value("biomes") @Description("The biomes to be distributed.") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> biomes; + private @Meta ProbabilityCollection<@Meta PipelineBiome> biomes; @Override - public BiomeSource get() { + public Source get() { return new SamplerSource(biomes, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index c80ec0cee..a7908fa6f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -9,9 +9,9 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -public abstract class SourceTemplate implements ObjectTemplate { +public abstract class SourceTemplate implements ObjectTemplate { } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index ba4bee85d..d84756bf4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -11,7 +11,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index 8f66315ef..0693bd6e2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -7,15 +7,14 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander.FractalExpander; public class ExpanderStageTemplate extends StageTemplate { @Override - public Stage get() { - return new ExpanderStage(new FractalExpander(noise)); + public Expander get() { + return new FractalExpander(noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index fcf523e44..09b126da2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -11,11 +11,10 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.BorderListMutator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -29,14 +28,14 @@ public class BorderListMutatorTemplate extends StageTemplate { private @Meta String defaultReplace; @Value("default-to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> defaultTo; + private @Meta ProbabilityCollection<@Meta PipelineBiome> defaultTo; @Value("replace") - private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> replace; + private @Meta Map<@Meta PipelineBiome, @Meta ProbabilityCollection<@Meta PipelineBiome>> replace; @Override public Stage get() { - return new MutatorStage(new BorderListMutator(replace, from, defaultReplace, noise, defaultTo)); + return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 4db9e4e99..9e2d3530d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -9,11 +9,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.BorderMutator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -27,10 +26,10 @@ public class BorderMutatorTemplate extends StageTemplate { private @Meta String replace; @Value("to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> to; + private @Meta ProbabilityCollection<@Meta PipelineBiome> to; @Override public Stage get() { - return new MutatorStage(new BorderMutator(from, replace, noise, to)); + return new BorderMutator(from, replace, noise, to); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 5713b3ff0..d30dabb54 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -11,11 +11,10 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.ReplaceListMutator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -26,13 +25,13 @@ public class ReplaceListMutatorTemplate extends StageTemplate { private @Meta String defaultFrom; @Value("default-to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> defaultTo; + private @Meta ProbabilityCollection<@Meta PipelineBiome> defaultTo; @Value("to") - private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> replace; + private @Meta Map<@Meta PipelineBiome, @Meta ProbabilityCollection<@Meta PipelineBiome>> replace; @Override public Stage get() { - return new MutatorStage(new ReplaceListMutator(replace, defaultFrom, defaultTo, noise)); + return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index dae592e2b..8431ba0e9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -9,11 +9,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.ReplaceMutator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -24,10 +23,10 @@ public class ReplaceMutatorTemplate extends StageTemplate { private @Meta String from; @Value("to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> to; + private @Meta ProbabilityCollection<@Meta PipelineBiome> to; @Override public Stage get() { - return new MutatorStage(new ReplaceMutator(from, to, noise)); + return new ReplaceMutator(from, to, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index b26dce902..6a60c7f2c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -7,15 +7,14 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.SmoothMutator; public class SmoothMutatorTemplate extends StageTemplate { @Override public Stage get() { - return new MutatorStage(new SmoothMutator(noise)); + return new SmoothMutator(noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java deleted file mode 100644 index 50d36a5c4..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.expand; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class FractalExpander implements BiomeExpander { - private final NoiseSampler sampler; - - public FractalExpander(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others) { - return others[MathUtil.normalizeIndex(sampler.noise(seed, x, z), others.length)]; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java deleted file mode 100644 index 59f6dd9b4..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class BorderListMutator implements BiomeMutator { - private final String border; - private final NoiseSampler noiseSampler; - private final ProbabilityCollection replaceDefault; - private final String defaultReplace; - private final Map> replace; - - public BorderListMutator(Map> replace, String border, String defaultReplace, - NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { - this.border = border; - this.noiseSampler = noiseSampler; - this.replaceDefault = replaceDefault; - this.defaultReplace = defaultReplace; - this.replace = replace; - } - - @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(defaultReplace)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - BiomeDelegate current = viewPoint.getBiome(xi, zi); - if(current != null && current.getTags().contains(border)) { - if(replace.containsKey(origin)) { - BiomeDelegate biome = replace.get(origin).get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - BiomeDelegate biome = replaceDefault.get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - } - } - } - return origin; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - biomes.forEach(biomeSet::add); - biomeSet.addAll(replaceDefault.getContents().stream().filter(Predicate.not(BiomeDelegate::isSelf)).toList()); - replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents())); - return biomeSet; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java deleted file mode 100644 index 5755719f4..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Set; -import java.util.function.Predicate; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class BorderMutator implements BiomeMutator { - private final String border; - private final NoiseSampler noiseSampler; - private final ProbabilityCollection replace; - private final String replaceTag; - - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { - this.border = border; - this.noiseSampler = noiseSampler; - this.replace = replace; - this.replaceTag = replaceTag; - } - - @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(replaceTag)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - BiomeDelegate current = viewPoint.getBiome(xi, zi); - if(current != null && current.getTags().contains(border)) { - BiomeDelegate biome = replace.get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - } - } - } - return origin; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - biomes.forEach(biomeSet::add); - biomeSet.addAll( - replace - .getContents() - .stream() - .filter( - Predicate.not(BiomeDelegate::isSelf) - ) - .toList() - ); - return biomeSet; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java deleted file mode 100644 index 4785216e8..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.Objects; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class SmoothMutator implements BiomeMutator { - - private final NoiseSampler sampler; - - public SmoothMutator(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate top = viewPoint.getBiome(1, 0); - BiomeDelegate bottom = viewPoint.getBiome(-1, 0); - BiomeDelegate left = viewPoint.getBiome(0, 1); - BiomeDelegate right = viewPoint.getBiome(0, -1); - - - boolean vert = Objects.equals(top, bottom) && top != null; - boolean horiz = Objects.equals(left, right) && left != null; - - if(vert && horiz) { - return MathUtil.normalizeIndex(sampler.noise(seed, x, z), 2) == 0 ? left : top; - } - - if(vert) return top; - if(horiz) return left; - - return viewPoint.getBiome(0, 0); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java new file mode 100644 index 000000000..36ffe591e --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java @@ -0,0 +1,215 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation; + +import net.jafama.FastMath; + +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +public class BiomeChunkImpl implements BiomeChunk { + + private PipelineBiome[][] biomes; + private final SeededVector worldOrigin; + private final int chunkOriginArrayIndex; + + public BiomeChunkImpl(SeededVector worldOrigin, PipelineImpl pipeline) { + + this.worldOrigin = worldOrigin; + this.chunkOriginArrayIndex = pipeline.getChunkOriginArrayIndex(); + + int size = pipeline.getArraySize(); + + int expanderCount = pipeline.getExpanderCount(); + int expansionsApplied = 0; + + // Allocate working arrays + this.biomes = new PipelineBiome[size][size]; + PipelineBiome[][] lookupArray = new PipelineBiome[size][size]; + // A second lookup array is required such that stage application doesn't affect lookups, otherwise application may cascade + + // Construct working grid + int gridOrigin = 0; + int gridInterval = calculateGridInterval(expanderCount, expansionsApplied); + int gridSize = (size / gridInterval); + gridSize += expanderCount > 0 ? 1 : 0; // Add an extra border if expansion occurs + + // Fill working grid with initial cells + for(int gridX = 0; gridX < gridSize; gridX++) { + for(int gridZ = 0; gridZ < gridSize; gridZ++) { + int xIndex = gridOrigin + gridX * gridInterval; + int zIndex = gridOrigin + gridZ * gridInterval; + biomes[xIndex][zIndex] = pipeline.getSource().get(worldOrigin.seed(), xIndexToWorldCoordinate(xIndex), zIndexToWorldCoordinate(zIndex)); + } + } + + for(Stage stage : pipeline.getStages()) { + if(stage instanceof Expander) { + // Shrink working grid size, the expander will fill in null cells (as a result of shrinking the grid) during mutation + expansionsApplied++; + gridInterval = calculateGridInterval(expanderCount, expansionsApplied); + gridSize = expandSize(gridSize); + } + + int stageReadDistance = stage.maxRelativeReadDistance(); + if(stageReadDistance > 0) { + // Discard edges such that adjacent lookups are only ran on valid cells + gridSize = contractBordersFromSize(gridSize, stageReadDistance); + gridOrigin += stageReadDistance * gridInterval; + } + + // Cycle arrays, the previously populated array is swapped to be used for lookups, and the result of the stage application + // overwrites the previous lookup array. This saves having to allocate a new array copy each time + PipelineBiome[][] tempArray = biomes; + biomes = lookupArray; + lookupArray = tempArray; + + // Apply stage to working grid + for(int gridZ = 0; gridZ < gridSize; gridZ = gridZ + 1) { + for(int gridX = 0; gridX < gridSize; gridX = gridX + 1) { + int xIndex = gridOrigin + gridX * gridInterval; + int zIndex = gridOrigin + gridZ * gridInterval; + biomes[xIndex][zIndex] = stage.apply(new ViewPoint(this, gridInterval, gridX, gridZ, xIndex, zIndex, lookupArray)); + } + } + } + } + + @Override + public PipelineBiome get(int xInChunk, int zInChunk) { + int xIndex = xInChunk + chunkOriginArrayIndex; + int zIndex = zInChunk + chunkOriginArrayIndex; + return biomes[xIndex][zIndex]; + } + + private int xIndexToWorldCoordinate(int xIndex) { + return worldOrigin.x() + xIndex - chunkOriginArrayIndex; + } + + private int zIndexToWorldCoordinate(int zIndex) { + return worldOrigin.z() + zIndex - chunkOriginArrayIndex; + } + + protected static int initialSizeToArraySize(int expanderCount, int initialSize) { + int size = initialSize; + for(int i = 0; i < expanderCount; i++) { + size = expandSize(size); + } + return size; + } + + protected static int calculateChunkOriginArrayIndex(int totalExpanderCount, List stages) { + int finalGridOrigin = calculateFinalGridOrigin(totalExpanderCount, stages); + int initialGridInterval = calculateGridInterval(totalExpanderCount, 0); + + // Round the final grid origin up to the nearest multiple of initialGridInterval, such that each + // chunk samples points on the same overall grid. + // Without this, shared chunk borders (required because of adjacent cell reads) will not be identical + // because points would be sampled on grids at different offsets, resulting in artifacts at borders. + return FastMath.ceilToInt((double) finalGridOrigin / initialGridInterval) * initialGridInterval; + } + + private static int calculateFinalGridOrigin(int totalExpanderCount, List stages) { + int gridOrigin = 0; + int expansionsApplied = 0; + int gridInterval = calculateGridInterval(totalExpanderCount, expansionsApplied); + for (Stage stage : stages) { + if (stage instanceof Expander) { + expansionsApplied++; + gridInterval = calculateGridInterval(totalExpanderCount, expansionsApplied); + } + gridOrigin += stage.maxRelativeReadDistance() * gridInterval; + } + return gridOrigin; + } + + protected static int calculateChunkSize(int arraySize, int chunkOriginArrayIndex, int totalExpanderCount) { + return contractBordersFromSize(arraySize, chunkOriginArrayIndex) - (totalExpanderCount > 0 ? 1 : 0); + } + + private static int expandSize(int size) { + return size * 2 - 1; + } + + private static int contractBordersFromSize(int size, int border) { + return size - border * 2; + } + + private static int calculateGridInterval(int totalExpansions, int expansionsApplied) { + return 1 << (totalExpansions - expansionsApplied); + } + + private SeededVector getOrigin() { + return worldOrigin; + } + + /** + * Represents a point on the operating grid within the biomes array + */ + public static class ViewPoint { + private final BiomeChunkImpl chunk; + private final PipelineBiome biome; + private final int gridInterval; + private final int gridX; + private final int gridZ; + private final int xIndex; + private final int zIndex; + private final PipelineBiome[][] lookupArray; + + private ViewPoint(BiomeChunkImpl chunk, int gridInterval, int gridX, int gridZ, int xIndex, int zIndex, PipelineBiome[][] lookupArray) { + this.chunk = chunk; + this.gridInterval = gridInterval; + this.gridX = gridX; + this.gridZ = gridZ; + this.xIndex = xIndex; + this.zIndex = zIndex; + this.lookupArray = lookupArray; + this.biome = lookupArray[xIndex][zIndex]; + } + + public PipelineBiome getRelativeBiome(int x, int z) { + int lookupXIndex = this.xIndex + x * gridInterval; + int lookupZIndex = this.zIndex + z * gridInterval; + return lookupArray[lookupXIndex][lookupZIndex]; + } + + public PipelineBiome getBiome() { + return biome; + } + + /** + * @return X position of the point relative to the operating grid + */ + public int gridX() { + return gridX; + } + + /** + * @return Z position of the point relative to the operating grid + */ + public int gridZ() { + return gridZ; + } + + /** + * @return X position of the point in the world + */ + public int worldX() { + return chunk.xIndexToWorldCoordinate(xIndex); + } + + /** + * @return Z position of the point in the world + */ + public int worldZ() { + return chunk.zIndexToWorldCoordinate(zIndex); + } + + public long worldSeed() { + return chunk.getOrigin().seed(); + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java new file mode 100644 index 000000000..2134f6b7a --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java @@ -0,0 +1,112 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation; + +import com.github.benmanes.caffeine.cache.Caffeine; +import com.github.benmanes.caffeine.cache.LoadingCache; +import net.jafama.FastMath; + +import java.util.Comparator; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.StreamSupport; + +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineColumn; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.registry.key.StringIdentifiable; +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class PipelineBiomeProvider implements BiomeProvider { + + private final LoadingCache biomeChunkCache; + private final int chunkSize; + private final int resolution; + private final NoiseSampler mutator; + private final double noiseAmp; + private final Set biomes; + + public PipelineBiomeProvider(Pipeline pipeline, int resolution, NoiseSampler mutator, double noiseAmp) { + this.resolution = resolution; + this.mutator = mutator; + this.noiseAmp = noiseAmp; + this.chunkSize = pipeline.getChunkSize(); + this.biomeChunkCache = Caffeine.newBuilder() + .maximumSize(1024) + .build(pipeline::generateChunk); + + Set biomeSet = new HashSet<>(); + pipeline.getSource().getBiomes().forEach(biomeSet::add); + Iterable result = biomeSet; + for(Stage stage : pipeline.getStages()) { + result = stage.getBiomes(result); + } + this.biomes = new HashSet<>(); + Iterable finalResult = result; + result.forEach(pipelineBiome -> { + if(pipelineBiome.isEphemeral()) { + + StringBuilder biomeList = new StringBuilder("\n"); + StreamSupport.stream(finalResult.spliterator(), false) + .sorted(Comparator.comparing(StringIdentifiable::getID)) + .forEach(delegate -> biomeList + .append(" - ") + .append(delegate.getID()) + .append(':') + .append(delegate.getClass().getCanonicalName()) + .append('\n')); + throw new IllegalArgumentException("Biome Pipeline leaks ephemeral biome \"" + pipelineBiome.getID() + + "\". Ensure there is a stage to guarantee replacement of the ephemeral biome. Biomes: " + + biomeList); + } + this.biomes.add(pipelineBiome.getBiome()); + }); + } + + @Override + public Biome getBiome(int x, int y, int z, long seed) { + return getBiome(x, z, seed); + } + + public Biome getBiome(int x, int z, long seed) { + +// x += mutator.noise(seed + 1, x, z) * noiseAmp; +// z += mutator.noise(seed + 2, x, z) * noiseAmp; + +// x /= resolution; +// z /= resolution; + +// x *= resolution; +// z *= resolution; + + int chunkX = FastMath.floorDiv(x, chunkSize); + int chunkZ = FastMath.floorDiv(z, chunkSize); + + int chunkWorldX = chunkX * chunkSize; + int chunkWorldZ = chunkZ * chunkSize; + + int xInChunk = x - chunkWorldX; + int zInChunk = z - chunkWorldZ; + + return biomeChunkCache.get(new SeededVector(seed, chunkWorldX, chunkWorldZ)).get(xInChunk, zInChunk).getBiome(); + } + + @Override + public Iterable getBiomes() { + return biomes; + } + + @Override + public Column getColumn(int x, int z, long seed, int min, int max) { + return new BiomePipelineColumn(this, min, max, x, z, seed); + } + + @Override + public int resolution() { + return resolution; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java new file mode 100644 index 000000000..7ea1db66d --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java @@ -0,0 +1,82 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation; + +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; + + +public class PipelineImpl implements Pipeline { + +// private static final Logger logger = LoggerFactory.getLogger(PipelineImpl.class); + + private final Source source; + private final List stages; + private final int chunkSize; + private final int expanderCount; + private final int arraySize; + private final int chunkOriginArrayIndex; + + public PipelineImpl(Source source, List stages, int idealChunkArraySize) { + this.source = source; + this.stages = stages; + this.expanderCount = (int) stages.stream().filter(s -> s instanceof Expander).count(); + + // Optimize for the ideal array size + int arraySize; + int chunkOriginArrayIndex; + int chunkSize; + int initialSize = 1; + while (true) { + arraySize = BiomeChunkImpl.initialSizeToArraySize(expanderCount, initialSize); + chunkOriginArrayIndex = BiomeChunkImpl.calculateChunkOriginArrayIndex(expanderCount, stages); + chunkSize = BiomeChunkImpl.calculateChunkSize(arraySize, chunkOriginArrayIndex, expanderCount); + if (chunkSize > 1 && arraySize >= idealChunkArraySize) break; + initialSize++; + } + + this.arraySize = arraySize; + this.chunkOriginArrayIndex = chunkOriginArrayIndex; + this.chunkSize = chunkSize; + + System.out.println("Initialized a new biome pipeline:"); + System.out.println("Array size: " + arraySize + " (Target: " + idealChunkArraySize + ")"); + System.out.println("Internal array origin: " + chunkOriginArrayIndex); + System.out.println("Chunk size: " + chunkSize); + } + + @Override + public BiomeChunk generateChunk(SeededVector worldCoordinates) { + return new BiomeChunkImpl(worldCoordinates, this); + } + + @Override + public int getChunkSize() { + return chunkSize; + } + + @Override + public Source getSource() { + return source; + } + + @Override + public List getStages() { + return stages; + } + + public int getExpanderCount() { + return expanderCount; + } + + public int getArraySize() { + return arraySize; + } + + public int getChunkOriginArrayIndex() { + return chunkOriginArrayIndex; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java new file mode 100644 index 000000000..bffbcd5a9 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation; + +public record SeededVector(long seed, int x, int z) { + + @Override + public boolean equals(Object obj) { + if(obj instanceof SeededVector that) { + return this.z == that.z && this.x == that.x && this.seed == that.seed; + } + return false; + } + + @Override + public int hashCode() { + int code = x; + code = 31 * code + z; + return 31 * code + ((int) (seed ^ (seed >>> 32))); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java new file mode 100644 index 000000000..008ce61fd --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation; + +import java.util.Optional; +import java.util.Set; + +import com.dfsek.terra.api.properties.Context; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.PlatformBiome; + +public record StringBiome(String name, String string) implements Biome { + + @Override + public Context getContext() { + return null; + } + + @Override + public String getID() { + return string; + } + + @Override + public Optional getPlatformBiome() { + return Optional.empty(); + } + + @Override + public void setPlatformBiome(PlatformBiome biome) { + } + + @Override + public int getColor() { + return 0; + } + + @Override + public Set getTags() { + return Set.of(name); + } +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java new file mode 100644 index 000000000..91d7ed303 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; + + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +public interface BiomeChunk { + + PipelineBiome get(int xInChunk, int zInChunk); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java new file mode 100644 index 000000000..a4b22114f --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +/** + * Resizes the internal grid of a BiomeChunk when applied, serves the purpose of + * filling in null biomes as a result of this resizing. + */ +public interface Expander extends Stage { + + PipelineBiome fillBiome(ViewPoint viewPoint); + + @Override + default int maxRelativeReadDistance() { + return 0; + } + + @Override + default PipelineBiome apply(ViewPoint viewPoint) { + PipelineBiome currentBiome = viewPoint.getBiome(); + if(currentBiome == null) { + return fillBiome(viewPoint); + } else { + return currentBiome; + } + } +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java new file mode 100644 index 000000000..d2331962f --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; + +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.SeededVector; + + +public interface Pipeline { + BiomeChunk generateChunk(SeededVector worldCoordinates); + + int getChunkSize(); + + Source getSource(); + + List getStages(); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java new file mode 100644 index 000000000..c095eb0dd --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; + + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +public interface Source { + PipelineBiome get(long seed, int x, int z); + + Iterable getBiomes(); +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java new file mode 100644 index 000000000..245f4f694 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +public interface Stage { + PipelineBiome apply(ViewPoint viewPoint); + + int maxRelativeReadDistance(); + + default Iterable getBiomes(Iterable biomes) { + return biomes; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java new file mode 100644 index 000000000..a7dd0a666 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; + +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +public final class DelegatedBiome implements PipelineBiome { + private final Biome biome; + + public DelegatedBiome(Biome biome) { + this.biome = biome; + } + + @Override + public Biome getBiome() { + return biome; + } + + @Override + public int hashCode() { + return biome.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof DelegatedBiome that)) return false; + return that.biome.equals(this.biome); + } + + @Override + public Set getTags() { + return biome.getTags(); + } + + @Override + public String getID() { + return biome.getID(); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java new file mode 100644 index 000000000..b2fcb3fe8 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java @@ -0,0 +1,51 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; + +import java.util.HashSet; +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +final class EphemeralBiomeDelegate implements PipelineBiome { + private final Set tags; + private final String id; + + public EphemeralBiomeDelegate(String id) { + this.id = id; + tags = new HashSet<>(); + tags.add(id); + tags.add("ALL"); + } + + @Override + public Biome getBiome() { + throw new UnsupportedOperationException("Cannot get biome from ephemeral delegate"); + } + + @Override + public Set getTags() { + return tags; + } + + @Override + public String getID() { + return id; + } + + @Override + public boolean isEphemeral() { + return true; + } + + @Override + public int hashCode() { + return id.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof EphemeralBiomeDelegate that)) return false; + + return this.id.equals(that.id); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java new file mode 100644 index 000000000..eb288865e --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java @@ -0,0 +1,35 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; + +import java.util.Set; + +import com.dfsek.terra.api.registry.key.StringIdentifiable; +import com.dfsek.terra.api.world.biome.Biome; + + +public interface PipelineBiome extends StringIdentifiable { + Biome getBiome(); + + static PipelineBiome ephemeral(String id) { + return new EphemeralBiomeDelegate(id); + } + + static PipelineBiome from(Biome biome) { + return new DelegatedBiome(biome); + } + + static PipelineBiome self() { + return SelfDelegate.INSTANCE; + } + + Set getTags(); + + default boolean isEphemeral() { + return false; + } + + default boolean isSelf() { + return false; + } + + +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java new file mode 100644 index 000000000..5c99e48d8 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; + +import java.util.Collections; +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +final class SelfDelegate implements PipelineBiome { + public static final SelfDelegate INSTANCE = new SelfDelegate(); + + private SelfDelegate() { + + } + + @Override + public Biome getBiome() { + throw new UnsupportedOperationException("Cannot get biome from self delegate"); + } + + @Override + public boolean isSelf() { + return true; + } + + @Override + public boolean isEphemeral() { + return true; + } + + @Override + public Set getTags() { + return Collections.emptySet(); + } + + @Override + public String getID() { + return "SELF"; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java new file mode 100644 index 000000000..1312dca25 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.source; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class SamplerSource implements Source { + private final ProbabilityCollection biomes; + private final NoiseSampler sampler; + + public SamplerSource(ProbabilityCollection biomes, NoiseSampler sampler) { + this.biomes = biomes; + this.sampler = sampler; + } + + @Override + public PipelineBiome get(long seed, int x, int z) { + return biomes.get(sampler, x, z, seed); + } + + @Override + public Iterable getBiomes() { + return biomes.getContents(); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java new file mode 100644 index 000000000..21f17fa93 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.source; + +import java.util.Collections; +import java.util.Set; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; + + +public class SingleSource implements Source { + + private final PipelineBiome biome; + + public SingleSource(PipelineBiome biome) { + this.biome = biome; + } + + @Override + public PipelineBiome get(long seed, int x, int z) { + return biome; + } + + @Override + public Set getBiomes() { + return Collections.singleton(biome); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java new file mode 100644 index 000000000..29f1c97a7 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; + + +public class DebugExpander implements Expander { + + private final PipelineBiome biome; + + public DebugExpander(PipelineBiome biome) { + this.biome = biome; + } + + @Override + public PipelineBiome fillBiome(ViewPoint viewPoint) { + return biome; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java new file mode 100644 index 000000000..b043fff85 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java @@ -0,0 +1,37 @@ +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; + + +public class FractalExpander implements Expander { + + private final NoiseSampler sampler; + + public FractalExpander(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public PipelineBiome fillBiome(ViewPoint viewPoint) { + + int xMod2 = viewPoint.gridX() % 2; + int zMod2 = viewPoint.gridZ() % 2; + + double roll = sampler.noise(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); + + if (xMod2 == 1 && zMod2 == 0) { // Pick one of 2 neighbors on X axis randomly + return roll > 0 ? viewPoint.getRelativeBiome(-1, 0) : viewPoint.getRelativeBiome(1, 0); + + } else if (xMod2 == 0 && zMod2 == 1) { // Pick one of 2 neighbors on Z axis randomly + return roll > 0 ? viewPoint.getRelativeBiome(0, -1) : viewPoint.getRelativeBiome(0, 1); + + } else { // Pick one of 4 corners randomly + return roll > 0 ? + roll > 0.25 ? viewPoint.getRelativeBiome(-1, 1) : viewPoint.getRelativeBiome(1, 1) : + roll > -0.25 ? viewPoint.getRelativeBiome(-1, -1) : viewPoint.getRelativeBiome(1, -1); + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java new file mode 100644 index 000000000..b6bcee543 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.vector.Vector2Int; + + +public class BorderListMutator implements Stage { + private final String border; + private final NoiseSampler noiseSampler; + private final ProbabilityCollection replaceDefault; + private final String defaultReplace; + private final Map> replace; + + private final Vector2Int[] borderPoints; + + public BorderListMutator(Map> replace, String border, String defaultReplace, + NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + this.border = border; + this.noiseSampler = noiseSampler; + this.replaceDefault = replaceDefault; + this.defaultReplace = defaultReplace; + this.replace = replace; + + List points = new ArrayList<>(); + for(int x = -1; x <= 1; x++) { + for(int z = -1; z <= 1; z++) { + if(x == 0 && z == 0) continue; + points.add(Vector2Int.of(x, z)); + } + } + this.borderPoints = points.toArray(new Vector2Int[0]); + + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + biomes.forEach(biomeSet::add); + biomeSet.addAll(replaceDefault.getContents().stream().filter(Predicate.not(PipelineBiome::isSelf)).toList()); + replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents())); + return biomeSet; + } + + @Override + public PipelineBiome apply(ViewPoint viewPoint) { + PipelineBiome center = viewPoint.getBiome(); + if(center.getTags().contains(defaultReplace)) { + for(Vector2Int point : borderPoints) { + PipelineBiome current = viewPoint.getRelativeBiome(point.getX(), point.getZ()); + if(current != null && current.getTags().contains(border)) { + if(replace.containsKey(center)) { + PipelineBiome replacement = replace.get(center).get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), + viewPoint.worldSeed()); + return replacement.isSelf() ? center : replacement; + } + PipelineBiome replacement = replaceDefault.get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + return replacement.isSelf() ? center : replacement; + } + } + } + return center; + } + + @Override + public int maxRelativeReadDistance() { + return 1; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java new file mode 100644 index 000000000..1fb8b60a9 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.vector.Vector2Int; + + +public class BorderMutator implements Stage { + private final String border; + private final NoiseSampler noiseSampler; + private final ProbabilityCollection replace; + private final String replaceTag; + private final Vector2Int[] borderPoints; + + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { + this.border = border; + this.noiseSampler = noiseSampler; + this.replace = replace; + this.replaceTag = replaceTag; + List points = new ArrayList<>(); + for(int x = -1; x <= 1; x++) { + for(int z = -1; z <= 1; z++) { + if(x == 0 && z == 0) continue; + points.add(Vector2Int.of(x, z)); + } + } + this.borderPoints = points.toArray(new Vector2Int[0]); + } + + @Override + public PipelineBiome apply(ViewPoint viewPoint) { + PipelineBiome center = viewPoint.getBiome(); + if(center.getTags().contains(replaceTag)) { + for(Vector2Int point : borderPoints) { + PipelineBiome current = viewPoint.getRelativeBiome(point.getX(), point.getZ()); + if(current != null && current.getTags().contains(border)) { + PipelineBiome replacement = replace.get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + return replacement.isSelf() ? center : replacement; + } + } + } + return center; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + biomes.forEach(biomeSet::add); + biomeSet.addAll( + replace + .getContents() + .stream() + .filter( + Predicate.not(PipelineBiome::isSelf) + ) + .toList() + ); + return biomeSet; + } + + @Override + public int maxRelativeReadDistance() { + return 1; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java similarity index 50% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java index 51a74c285..081f0f5ed 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java @@ -5,27 +5,28 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -public class ReplaceListMutator implements BiomeMutator { - private final Map> replace; +public class ReplaceListMutator implements Stage { + private final Map> replace; private final NoiseSampler sampler; - private final ProbabilityCollection replaceDefault; + private final ProbabilityCollection replaceDefault; private final String defaultTag; - public ReplaceListMutator(Map> replace, String defaultTag, - ProbabilityCollection replaceDefault, NoiseSampler sampler) { + public ReplaceListMutator(Map> replace, String defaultTag, + ProbabilityCollection replaceDefault, NoiseSampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; @@ -33,24 +34,29 @@ public class ReplaceListMutator implements BiomeMutator { } @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate center = viewPoint.getBiome(0, 0); + public PipelineBiome apply(ViewPoint viewPoint) { + PipelineBiome center = viewPoint.getBiome(); if(replace.containsKey(center)) { - BiomeDelegate biome = replace.get(center).get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + PipelineBiome biome = replace.get(center).get(sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + return biome.isSelf() ? viewPoint.getBiome() : biome; } - if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { - BiomeDelegate biome = replaceDefault.get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + if(viewPoint.getBiome().getTags().contains(defaultTag)) { + PipelineBiome biome = replaceDefault.get(sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + return biome.isSelf() ? viewPoint.getBiome() : biome; } return center; } @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); + public int maxRelativeReadDistance() { + return 0; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); - Set reject = new HashSet<>(); + Set reject = new HashSet<>(); biomes.forEach(biome -> { if(!biome.getTags().contains(defaultTag) && !replace.containsKey(biome)) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java similarity index 51% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java index cec3e5e9e..a46454a2c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java @@ -5,42 +5,48 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -public class ReplaceMutator implements BiomeMutator { +public class ReplaceMutator implements Stage { private final String replaceableTag; - private final ProbabilityCollection replace; + private final ProbabilityCollection replace; private final NoiseSampler sampler; - public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { + public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; } @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { - BiomeDelegate biome = replace.get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + public PipelineBiome apply(ViewPoint viewPoint) { + if(viewPoint.getBiome().getTags().contains(replaceableTag)) { + PipelineBiome biome = replace.get(sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + return biome.isSelf() ? viewPoint.getBiome() : biome; } - return viewPoint.getBiome(0, 0); + return viewPoint.getBiome(); } @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - Set reject = new HashSet<>(); + public int maxRelativeReadDistance() { + return 0; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + Set reject = new HashSet<>(); biomes.forEach(biome -> { if(!biome.getTags().contains(replaceableTag)) { biomeSet.add(biome); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java new file mode 100644 index 000000000..c199daab2 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; + +import java.util.Objects; + +import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.api.noise.NoiseSampler; + + +public class SmoothMutator implements Stage { + + private final NoiseSampler sampler; + + public SmoothMutator(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public PipelineBiome apply(ViewPoint viewPoint) { + PipelineBiome top = viewPoint.getRelativeBiome(1, 0); + PipelineBiome bottom = viewPoint.getRelativeBiome(-1, 0); + PipelineBiome left = viewPoint.getRelativeBiome(0, 1); + PipelineBiome right = viewPoint.getRelativeBiome(0, -1); + + double roll = sampler.noise(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); + + boolean vert = Objects.equals(top, bottom); + boolean horiz = Objects.equals(left, right); + + if(vert && horiz) { + return roll > 0 ? + roll > 0.25 ? left : right : + roll > -0.25 ? top : bottom; + } + if(vert) { + return roll > 0 ? top : bottom; + } + if(horiz) { + return roll > 0 ? left : right; + } + return viewPoint.getBiome(); + } + + @Override + public int maxRelativeReadDistance() { + return 1; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java deleted file mode 100644 index 62656ac17..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class SamplerSource implements BiomeSource { - private final ProbabilityCollection biomes; - private final NoiseSampler sampler; - - public SamplerSource(ProbabilityCollection biomes, NoiseSampler sampler) { - this.biomes = biomes; - this.sampler = sampler; - } - - @Override - public BiomeDelegate getBiome(double x, double z, long seed) { - return biomes.get(sampler, x, z, seed); - } - - @Override - public Iterable getBiomes() { - return biomes.getContents(); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java index 8a9a06aae..d5933e917 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -9,11 +9,10 @@ package com.dfsek.terra.addons.biome.pipeline.stages; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -public class MutatorStage implements Stage { +public class MutatorStage implements com.dfsek.terra.addons.biome.pipeline.api.stage.Stage { private final BiomeMutator mutator; public MutatorStage(BiomeMutator mutator) { From d170b4e0fd3c67ff3c2fe4a9d723496605e4e3d4 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 11:46:55 +1000 Subject: [PATCH 03/11] Handle resolution and biome blending --- .../biome/pipeline/config/BiomePipelineTemplate.java | 2 +- .../pipeline/reimplementation/BiomeChunkImpl.java | 6 ++++-- .../reimplementation/PipelineBiomeProvider.java | 11 ++++------- .../biome/pipeline/reimplementation/PipelineImpl.java | 8 +++++++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 1324f50e0..e2859cbff 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -54,6 +54,6 @@ public class BiomePipelineTemplate implements ObjectTemplate { @Override public BiomeProvider get() { - return new PipelineBiomeProvider(new PipelineImpl(source, stages, 10), resolution, blendSampler, blendAmplitude); + return new PipelineBiomeProvider(new PipelineImpl(source, stages, resolution, 500), resolution, blendSampler, blendAmplitude); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java index 36ffe591e..2312357cf 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java @@ -15,11 +15,13 @@ public class BiomeChunkImpl implements BiomeChunk { private PipelineBiome[][] biomes; private final SeededVector worldOrigin; private final int chunkOriginArrayIndex; + private final int worldCoordinateScale; public BiomeChunkImpl(SeededVector worldOrigin, PipelineImpl pipeline) { this.worldOrigin = worldOrigin; this.chunkOriginArrayIndex = pipeline.getChunkOriginArrayIndex(); + this.worldCoordinateScale = pipeline.getResolution(); int size = pipeline.getArraySize(); @@ -86,11 +88,11 @@ public class BiomeChunkImpl implements BiomeChunk { } private int xIndexToWorldCoordinate(int xIndex) { - return worldOrigin.x() + xIndex - chunkOriginArrayIndex; + return (worldOrigin.x() + xIndex - chunkOriginArrayIndex) * worldCoordinateScale; } private int zIndexToWorldCoordinate(int zIndex) { - return worldOrigin.z() + zIndex - chunkOriginArrayIndex; + return (worldOrigin.z() + zIndex - chunkOriginArrayIndex) * worldCoordinateScale; } protected static int initialSizeToArraySize(int expanderCount, int initialSize) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java index 2134f6b7a..e5ddca9e8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java @@ -74,14 +74,11 @@ public class PipelineBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { -// x += mutator.noise(seed + 1, x, z) * noiseAmp; -// z += mutator.noise(seed + 2, x, z) * noiseAmp; - -// x /= resolution; -// z /= resolution; + x += mutator.noise(seed + 1, x, z) * noiseAmp; + z += mutator.noise(seed + 2, x, z) * noiseAmp; -// x *= resolution; -// z *= resolution; + x /= resolution; + z /= resolution; int chunkX = FastMath.floorDiv(x, chunkSize); int chunkZ = FastMath.floorDiv(z, chunkSize); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java index 7ea1db66d..7c6be7dcc 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java @@ -19,10 +19,12 @@ public class PipelineImpl implements Pipeline { private final int expanderCount; private final int arraySize; private final int chunkOriginArrayIndex; + private final int resolution; - public PipelineImpl(Source source, List stages, int idealChunkArraySize) { + public PipelineImpl(Source source, List stages, int resolution, int idealChunkArraySize) { this.source = source; this.stages = stages; + this.resolution = resolution; this.expanderCount = (int) stages.stream().filter(s -> s instanceof Expander).count(); // Optimize for the ideal array size @@ -79,4 +81,8 @@ public class PipelineImpl implements Pipeline { public int getChunkOriginArrayIndex() { return chunkOriginArrayIndex; } + + public int getResolution() { + return resolution; + } } From ee6d475ad0d06e1646be50f7c64363e94b5eb650 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 12:03:58 +1000 Subject: [PATCH 04/11] Move reimplementation classes into main package --- .../biome/pipeline/BiomeHolderImpl.java | 94 ------------- .../addons/biome/pipeline/BiomePipeline.java | 83 ----------- .../biome/pipeline/BiomePipelineAddon.java | 28 ++-- .../biome/pipeline/BiomePipelineColumn.java | 2 +- .../biome/pipeline/BiomePipelineProvider.java | 131 ------------------ .../PipelineBiomeProvider.java | 12 +- .../{reimplementation => }/StringBiome.java | 2 +- .../addons/biome/pipeline/api/BiomeChunk.java | 10 ++ .../biome/pipeline/api/BiomeHolder.java | 26 ---- .../{reimplementation => }/api/Expander.java | 6 +- .../{reimplementation => }/api/Pipeline.java | 4 +- .../SeededVector.java | 2 +- .../addons/biome/pipeline/api/Source.java | 11 ++ .../addons/biome/pipeline/api/Stage.java | 15 ++ .../biome/DelegatedPipelineBiome.java} | 8 +- .../EphemeralPipelineBiome.java} | 8 +- .../api/biome/PipelineBiome.java | 8 +- .../biome/SelfPipelineBiome.java} | 8 +- .../pipeline/api/delegate/BiomeDelegate.java | 35 ----- .../pipeline/api/delegate/DelegatedBiome.java | 40 ------ .../pipeline/api/delegate/SelfDelegate.java | 40 ------ .../biome/pipeline/api/stage/Stage.java | 20 --- .../api/stage/type/BiomeExpander.java | 15 -- .../pipeline/api/stage/type/BiomeMutator.java | 37 ----- .../config/BiomePipelineTemplate.java | 8 +- .../pipeline/config/PipelineBiomeLoader.java | 2 +- .../{ => source}/SamplerSourceTemplate.java | 8 +- .../config/{ => source}/SourceTemplate.java | 4 +- .../pipeline/config/stage/StageTemplate.java | 2 +- .../stage/expander/ExpanderStageTemplate.java | 4 +- ...late.java => BorderListStageTemplate.java} | 10 +- ...Template.java => BorderStageTemplate.java} | 10 +- ...ate.java => ReplaceListStageTemplate.java} | 10 +- ...emplate.java => ReplaceStageTemplate.java} | 10 +- ...Template.java => SmoothStageTemplate.java} | 8 +- .../BiomeChunkImpl.java | 11 +- .../PipelineImpl.java | 21 +-- .../reimplementation/api/BiomeChunk.java | 10 -- .../pipeline/reimplementation/api/Source.java | 11 -- .../pipeline/reimplementation/api/Stage.java | 15 -- .../api/biome/EphemeralBiomeDelegate.java | 51 ------- .../stage/expander/DebugExpander.java | 20 --- .../biome/pipeline/source/BiomeSource.java | 17 --- .../source/SamplerSource.java | 6 +- .../source/SingleSource.java | 6 +- .../stage/expander/FractalExpander.java | 8 +- .../mutators/BorderListStage.java} | 14 +- .../mutators/BorderStage.java} | 12 +- .../mutators/ReplaceListStage.java} | 14 +- .../mutators/ReplaceStage.java} | 12 +- .../mutators/SmoothStage.java} | 12 +- .../biome/pipeline/stages/ExpanderStage.java | 37 ----- .../biome/pipeline/stages/MutatorStage.java | 45 ------ 53 files changed, 176 insertions(+), 867 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/PipelineBiomeProvider.java (89%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/StringBiome.java (92%) create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/api/Expander.java (71%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/api/Pipeline.java (59%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => api}/SeededVector.java (87%) create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/api/biome/DelegatedBiome.java => api/biome/DelegatedPipelineBiome.java} (70%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/{delegate/EphemeralBiomeDelegate.java => biome/EphemeralPipelineBiome.java} (78%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/api/biome/PipelineBiome.java (73%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/api/biome/SelfDelegate.java => api/biome/SelfPipelineBiome.java} (72%) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/{ => source}/SamplerSourceTemplate.java (75%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/{ => source}/SourceTemplate.java (74%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/{BorderListMutatorTemplate.java => BorderListStageTemplate.java} (71%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/{BorderMutatorTemplate.java => BorderStageTemplate.java} (68%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/{ReplaceListMutatorTemplate.java => ReplaceListStageTemplate.java} (69%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/{ReplaceMutatorTemplate.java => ReplaceStageTemplate.java} (67%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/{SmoothMutatorTemplate.java => SmoothStageTemplate.java} (60%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => pipeline}/BiomeChunkImpl.java (95%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => pipeline}/PipelineImpl.java (80%) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/source/SamplerSource.java (74%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/source/SingleSource.java (66%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation => }/stage/expander/FractalExpander.java (78%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/stage/mutators/BorderListMutator.java => stage/mutators/BorderListStage.java} (82%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/stage/mutators/BorderMutator.java => stage/mutators/BorderStage.java} (83%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/stage/mutators/ReplaceListMutator.java => stage/mutators/ReplaceListStage.java} (80%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/stage/mutators/ReplaceMutator.java => stage/mutators/ReplaceStage.java} (78%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{reimplementation/stage/mutators/SmoothMutator.java => stage/mutators/SmoothStage.java} (76%) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java deleted file mode 100644 index 57304011b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.vector.Vector2; - - -public class BiomeHolderImpl implements BiomeHolder { - private final Vector2.Mutable origin; - private final int width; - private final int offset; - private BiomeDelegate[][] biomes; - - public BiomeHolderImpl(int width, Vector2.Mutable origin) { - width += 4; - this.width = width; - biomes = new BiomeDelegate[width][width]; - this.origin = origin; - this.offset = 2; - } - - private BiomeHolderImpl(BiomeDelegate[][] biomes, Vector2.Mutable origin, int width, int offset) { - this.biomes = biomes; - this.origin = origin; - this.width = width; - this.offset = 2 * offset; - } - - @Override - public BiomeHolder expand(BiomeExpander expander, long seed) { - BiomeDelegate[][] old = biomes; - int newWidth = width * 2 - 1; - - biomes = new BiomeDelegate[newWidth][newWidth]; - - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - biomes[x * 2][z * 2] = old[x][z]; - if(z != width - 1) - biomes[x * 2][z * 2 + 1] = expander.getBetween(x + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], - old[x][z + 1]); - if(x != width - 1) - biomes[x * 2 + 1][z * 2] = expander.getBetween(x + 1 + origin.getX(), z + origin.getZ(), seed, old[x][z], - old[x + 1][z]); - if(x != width - 1 && z != width - 1) - biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], - old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); - } - } - return new BiomeHolderImpl(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); - } - - @Override - public void mutate(BiomeMutator mutator, long seed) { - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - BiomeMutator.ViewPoint viewPoint = new BiomeMutator.ViewPoint(this, x, z); - biomes[x][z] = mutator.mutate(viewPoint, x + origin.getX(), z + origin.getZ(), seed); - } - } - } - - @Override - public void fill(BiomeSource source, long seed) { - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - biomes[x][z] = source.getBiome(origin.getX() + x, origin.getZ() + z, seed); - } - } - } - - @Override - public BiomeDelegate getBiome(int x, int z) { - x += offset; - z += offset; - return getBiomeRaw(x, z); - } - - @Override - public BiomeDelegate getBiomeRaw(int x, int z) { - if(x >= width || z >= width || x < 0 || z < 0) return null; - return biomes[x][z]; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java deleted file mode 100644 index 8a4be5d7d..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.vector.Vector2; - - -public class BiomePipeline { - private final BiomeSource source; - private final List stages; - private final int size; - private final int init; - - private BiomePipeline(BiomeSource source, List stages, int size, int init) { - this.source = source; - this.stages = stages; - this.size = size; - this.init = init; - } - - /** - * Get biomes in a chunk - * - * @param x Chunk X coord - * @param z Chunk Z coord - * - * @return BiomeHolder containing biomes. - */ - public BiomeHolder getBiomes(int x, int z, long seed) { - BiomeHolder holder = new BiomeHolderImpl(init, Vector2.of(x * (init - 1), z * (init - 1)).mutable()); - holder.fill(source, seed); - for(Stage stage : stages) holder = stage.apply(holder, seed); - return holder; - } - - public BiomeSource getSource() { - return source; - } - - public List getStages() { - return Collections.unmodifiableList(stages); - } - - public int getSize() { - return size; - } - - public static final class BiomePipelineBuilder { - private final int init; - private final List stages = new ArrayList<>(); - private int expand; - - public BiomePipelineBuilder(int init) { - this.init = init; - expand = init; - } - - public BiomePipeline build(BiomeSource source) { - for(Stage stage : stages) { - if(stage.isExpansion()) expand = expand * 2 - 1; - } - - return new BiomePipeline(source, stages, expand, init); - } - - public BiomePipelineBuilder addStage(Stage stage) { - stages.add(stage); - return this; - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index f57020660..3468e168c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -13,16 +13,16 @@ import java.util.function.Supplier; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.PipelineBiomeLoader; -import com.dfsek.terra.addons.biome.pipeline.config.SamplerSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.source.SamplerSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -71,11 +71,11 @@ public class BiomePipelineAddon implements AddonInitializer { CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry( STAGE_REGISTRY_KEY); stageRegistry.register(addon.key("FRACTAL_EXPAND"), ExpanderStageTemplate::new); - stageRegistry.register(addon.key("SMOOTH"), SmoothMutatorTemplate::new); - stageRegistry.register(addon.key("REPLACE"), ReplaceMutatorTemplate::new); - stageRegistry.register(addon.key("REPLACE_LIST"), ReplaceListMutatorTemplate::new); - stageRegistry.register(addon.key("BORDER"), BorderMutatorTemplate::new); - stageRegistry.register(addon.key("BORDER_LIST"), BorderListMutatorTemplate::new); + stageRegistry.register(addon.key("SMOOTH"), SmoothStageTemplate::new); + stageRegistry.register(addon.key("REPLACE"), ReplaceStageTemplate::new); + stageRegistry.register(addon.key("REPLACE_LIST"), ReplaceListStageTemplate::new); + stageRegistry.register(addon.key("BORDER"), BorderStageTemplate::new); + stageRegistry.register(addon.key("BORDER_LIST"), BorderListStageTemplate::new); }) .failThrough(); platform.getEventManager() diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java index a66c8da27..f94493489 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java @@ -17,7 +17,7 @@ public class BiomePipelineColumn implements Column { private final int z; private final Biome biome; - public BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { + protected BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { this.min = min; this.max = max; this.x = x; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java deleted file mode 100644 index f3f4c3aa9..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import com.github.benmanes.caffeine.cache.Caffeine; -import com.github.benmanes.caffeine.cache.LoadingCache; -import net.jafama.FastMath; - -import java.util.Comparator; -import java.util.HashSet; -import java.util.Optional; -import java.util.Set; -import java.util.stream.StreamSupport; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class BiomePipelineProvider implements BiomeProvider { - private final LoadingCache holderCache; - private final BiomePipeline pipeline; - private final int resolution; - private final NoiseSampler mutator; - private final double noiseAmp; - - private final Set biomes; - - public BiomePipelineProvider(BiomePipeline pipeline, int resolution, NoiseSampler mutator, double noiseAmp) { - this.resolution = resolution; - this.mutator = mutator; - this.noiseAmp = noiseAmp; - holderCache = Caffeine.newBuilder() - .maximumSize(1024) - .build(key -> pipeline.getBiomes(key.x, key.z, key.seed)); - this.pipeline = pipeline; - - Set biomeSet = new HashSet<>(); - pipeline.getSource().getBiomes().forEach(biomeSet::add); - Iterable result = biomeSet; - for(Stage stage : pipeline.getStages()) { - result = stage.getBiomes(result); // pass through all stages - } - this.biomes = new HashSet<>(); - Iterable finalResult = result; - result.forEach(biomeDelegate -> { - if(biomeDelegate.isEphemeral()) { - - StringBuilder biomeList = new StringBuilder("\n"); - StreamSupport.stream(finalResult.spliterator(), false) - .sorted(Comparator.comparing(StringIdentifiable::getID)) - .forEach(delegate -> biomeList - .append(" - ") - .append(delegate.getID()) - .append(':') - .append(delegate.getClass().getCanonicalName()) - .append('\n')); - throw new IllegalArgumentException("Biome Pipeline leaks ephemeral biome \"" + biomeDelegate.getID() + - "\". Ensure there is a stage to guarantee replacement of the ephemeral biome. Biomes: " + - biomeList); - } - this.biomes.add(biomeDelegate.getBiome()); - }); - } - - @Override - public Biome getBiome(int x, int y, int z, long seed) { - return getBiome(x, z, seed); - } - - public Biome getBiome(int x, int z, long seed) { - x += mutator.noise(seed + 1, x, z) * noiseAmp; - z += mutator.noise(seed + 2, x, z) * noiseAmp; - - - x /= resolution; - z /= resolution; - - int fdX = FastMath.floorDiv(x, pipeline.getSize()); - int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.get(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), - z - fdZ * pipeline.getSize()).getBiome(); - } - - @Override - public Optional getBaseBiome(int x, int z, long seed) { - return Optional.of(getBiome(x, z, seed)); - } - - @Override - public Iterable getBiomes() { - return biomes; - } - - @Override - public Column getColumn(int x, int z, long seed, int min, int max) { - return new BiomePipelineColumn(this, min, max, x, z, seed); - } - - @Override - public int resolution() { - return resolution; - } - - private record SeededVector(int x, int z, long seed) { - @Override - public boolean equals(Object obj) { - if(obj instanceof SeededVector that) { - return this.z == that.z && this.x == that.x && this.seed == that.seed; - } - return false; - } - - @Override - public int hashCode() { - int code = x; - code = 31 * code + z; - return 31 * code + ((int) (seed ^ (seed >>> 32))); - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java similarity index 89% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index e5ddca9e8..c9a03c073 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation; +package com.dfsek.terra.addons.biome.pipeline; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; @@ -9,11 +9,11 @@ import java.util.HashSet; import java.util.Set; import java.util.stream.StreamSupport; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineColumn; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java index 008ce61fd..d141ecf6e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/StringBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation; +package com.dfsek.terra.addons.biome.pipeline; import java.util.Optional; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java new file mode 100644 index 000000000..4b7d60ae2 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + + +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface BiomeChunk { + + PipelineBiome get(int xInChunk, int zInChunk); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java deleted file mode 100644 index 26bb63315..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - - -public interface BiomeHolder { - BiomeHolder expand(BiomeExpander expander, long seed); - - void mutate(BiomeMutator mutator, long seed); - - void fill(BiomeSource source, long seed); - - BiomeDelegate getBiome(int x, int z); - - BiomeDelegate getBiomeRaw(int x, int z); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java similarity index 71% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java index a4b22114f..3e8b9e42d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Expander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; +package com.dfsek.terra.addons.biome.pipeline.api; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; /** diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java similarity index 59% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java index d2331962f..cb52328ce 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Pipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java @@ -1,9 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; +package com.dfsek.terra.addons.biome.pipeline.api; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.SeededVector; - public interface Pipeline { BiomeChunk generateChunk(SeededVector worldCoordinates); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java similarity index 87% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java index bffbcd5a9..951b7e592 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/SeededVector.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation; +package com.dfsek.terra.addons.biome.pipeline.api; public record SeededVector(long seed, int x, int z) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java new file mode 100644 index 000000000..185463786 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + + +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface Source { + PipelineBiome get(long seed, int x, int z); + + Iterable getBiomes(); +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java new file mode 100644 index 000000000..4611968c3 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface Stage { + PipelineBiome apply(ViewPoint viewPoint); + + int maxRelativeReadDistance(); + + default Iterable getBiomes(Iterable biomes) { + return biomes; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java similarity index 70% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java index a7dd0a666..70c94b58e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/DelegatedBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.Set; import com.dfsek.terra.api.world.biome.Biome; -public final class DelegatedBiome implements PipelineBiome { +public final class DelegatedPipelineBiome implements PipelineBiome { private final Biome biome; - public DelegatedBiome(Biome biome) { + public DelegatedPipelineBiome(Biome biome) { this.biome = biome; } @@ -24,7 +24,7 @@ public final class DelegatedBiome implements PipelineBiome { @Override public boolean equals(Object obj) { - if(!(obj instanceof DelegatedBiome that)) return false; + if(!(obj instanceof DelegatedPipelineBiome that)) return false; return that.biome.equals(this.biome); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java similarity index 78% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java index d02221f1b..44ef4a311 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.HashSet; import java.util.Set; @@ -6,11 +6,11 @@ import java.util.Set; import com.dfsek.terra.api.world.biome.Biome; -final class EphemeralBiomeDelegate implements BiomeDelegate { +final class EphemeralPipelineBiome implements PipelineBiome { private final Set tags; private final String id; - public EphemeralBiomeDelegate(String id) { + public EphemeralPipelineBiome(String id) { this.id = id; tags = new HashSet<>(); tags.add(id); @@ -44,7 +44,7 @@ final class EphemeralBiomeDelegate implements BiomeDelegate { @Override public boolean equals(Object obj) { - if(!(obj instanceof EphemeralBiomeDelegate that)) return false; + if(!(obj instanceof EphemeralPipelineBiome that)) return false; return this.id.equals(that.id); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java similarity index 73% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java index eb288865e..cbc4ffe90 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/PipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.Set; @@ -10,15 +10,15 @@ public interface PipelineBiome extends StringIdentifiable { Biome getBiome(); static PipelineBiome ephemeral(String id) { - return new EphemeralBiomeDelegate(id); + return new EphemeralPipelineBiome(id); } static PipelineBiome from(Biome biome) { - return new DelegatedBiome(biome); + return new DelegatedPipelineBiome(biome); } static PipelineBiome self() { - return SelfDelegate.INSTANCE; + return SelfPipelineBiome.INSTANCE; } Set getTags(); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java similarity index 72% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java index 5c99e48d8..068fa8b16 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/SelfDelegate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.Collections; import java.util.Set; @@ -6,10 +6,10 @@ import java.util.Set; import com.dfsek.terra.api.world.biome.Biome; -final class SelfDelegate implements PipelineBiome { - public static final SelfDelegate INSTANCE = new SelfDelegate(); +final class SelfPipelineBiome implements PipelineBiome { + public static final SelfPipelineBiome INSTANCE = new SelfPipelineBiome(); - private SelfDelegate() { + private SelfPipelineBiome() { } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java deleted file mode 100644 index 7e339285a..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Set; - -import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.terra.api.world.biome.Biome; - - -public interface BiomeDelegate extends StringIdentifiable { - static BiomeDelegate ephemeral(String id) { - return new EphemeralBiomeDelegate(id); - } - - static BiomeDelegate from(Biome biome) { - return new DelegatedBiome(biome); - } - - static BiomeDelegate self() { - return SelfDelegate.INSTANCE; - } - - Biome getBiome(); - - Set getTags(); - - default boolean isEphemeral() { - return false; - } - - default boolean isSelf() { - return false; - } - - -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java deleted file mode 100644 index 4085f6a43..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class DelegatedBiome implements BiomeDelegate { - private final Biome biome; - - public DelegatedBiome(Biome biome) { - this.biome = biome; - } - - @Override - public Biome getBiome() { - return biome; - } - - @Override - public int hashCode() { - return biome.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof DelegatedBiome that)) return false; - return that.biome.equals(this.biome); - } - - @Override - public Set getTags() { - return biome.getTags(); - } - - @Override - public String getID() { - return biome.getID(); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java deleted file mode 100644 index 60b744059..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Collections; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class SelfDelegate implements BiomeDelegate { - public static final SelfDelegate INSTANCE = new SelfDelegate(); - - private SelfDelegate() { - - } - - @Override - public Biome getBiome() { - throw new UnsupportedOperationException("Cannot get biome from self delegate"); - } - - @Override - public boolean isSelf() { - return true; - } - - @Override - public boolean isEphemeral() { - return true; - } - - @Override - public Set getTags() { - return Collections.emptySet(); - } - - @Override - public String getID() { - return "SELF"; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java deleted file mode 100644 index fb4b1007b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface Stage { - BiomeHolder apply(BiomeHolder in, long seed); - - boolean isExpansion(); - - Iterable getBiomes(Iterable biomes); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java deleted file mode 100644 index c3e721c08..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage.type; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeExpander { - BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java deleted file mode 100644 index f7cc3b7bd..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage.type; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeMutator { - BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed); - - default Iterable getBiomes(Iterable biomes) { - return biomes; - } - - class ViewPoint { - private final BiomeHolder biomes; - private final int offX; - private final int offZ; - - public ViewPoint(BiomeHolder biomes, int offX, int offZ) { - this.biomes = biomes; - this.offX = offX; - this.offZ = offZ; - } - - - public BiomeDelegate getBiome(int x, int z) { - return biomes.getBiomeRaw(x + offX, z + offZ); - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index e2859cbff..b88b75a7c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -14,10 +14,10 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.PipelineBiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.PipelineImpl; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.PipelineBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java index 5a5e4beb9..52ed6470e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java similarity index 75% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java index 8fe5f7310..a054976d7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config; +package com.dfsek.terra.addons.biome.pipeline.config.source; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.source.SamplerSource; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java similarity index 74% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java index a7908fa6f..a8e88a8ab 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config; +package com.dfsek.terra.addons.biome.pipeline.config.source; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Source; public abstract class SourceTemplate implements ObjectTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index d84756bf4..afed0c15e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -11,7 +11,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index 0693bd6e2..a8fce25be 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -8,8 +8,8 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander.FractalExpander; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.stage.expander.FractalExpander; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java similarity index 71% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java index 09b126da2..fb415260d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java @@ -12,15 +12,15 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings("unused") -public class BorderListMutatorTemplate extends StageTemplate { +public class BorderListStageTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -36,6 +36,6 @@ public class BorderListMutatorTemplate extends StageTemplate { @Override public Stage get() { - return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); + return new BorderListStage(replace, from, defaultReplace, noise, defaultTo); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java similarity index 68% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java index 9e2d3530d..5327c211c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java @@ -10,15 +10,15 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings("unused") -public class BorderMutatorTemplate extends StageTemplate { +public class BorderStageTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -30,6 +30,6 @@ public class BorderMutatorTemplate extends StageTemplate { @Override public Stage get() { - return new BorderMutator(from, replace, noise, to); + return new BorderStage(from, replace, noise, to); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java similarity index 69% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java index d30dabb54..a6710286f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java @@ -12,15 +12,15 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings("unused") -public class ReplaceListMutatorTemplate extends StageTemplate { +public class ReplaceListStageTemplate extends StageTemplate { @Value("default-from") private @Meta String defaultFrom; @@ -32,6 +32,6 @@ public class ReplaceListMutatorTemplate extends StageTemplate { @Override public Stage get() { - return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); + return new ReplaceListStage(replace, defaultFrom, defaultTo, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java similarity index 67% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java index 8431ba0e9..5a799eeb4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java @@ -10,15 +10,15 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings("unused") -public class ReplaceMutatorTemplate extends StageTemplate { +public class ReplaceStageTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -27,6 +27,6 @@ public class ReplaceMutatorTemplate extends StageTemplate { @Override public Stage get() { - return new ReplaceMutator(from, to, noise); + return new ReplaceStage(from, to, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java similarity index 60% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java index 6a60c7f2c..50a7aa5b9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java @@ -8,13 +8,13 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators.SmoothMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.SmoothStage; -public class SmoothMutatorTemplate extends StageTemplate { +public class SmoothStageTemplate extends StageTemplate { @Override public Stage get() { - return new SmoothMutator(noise); + return new SmoothStage(noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java similarity index 95% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java index 2312357cf..b5f5b770f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java @@ -1,13 +1,14 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation; +package com.dfsek.terra.addons.biome.pipeline.pipeline; import net.jafama.FastMath; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; public class BiomeChunkImpl implements BiomeChunk { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java similarity index 80% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java index 7c6be7dcc..318ac8933 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java @@ -1,12 +1,13 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation; +package com.dfsek.terra.addons.biome.pipeline.pipeline; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; public class PipelineImpl implements Pipeline { @@ -70,19 +71,19 @@ public class PipelineImpl implements Pipeline { return stages; } - public int getExpanderCount() { + protected int getExpanderCount() { return expanderCount; } - public int getArraySize() { + protected int getArraySize() { return arraySize; } - public int getChunkOriginArrayIndex() { + protected int getChunkOriginArrayIndex() { return chunkOriginArrayIndex; } - public int getResolution() { + protected int getResolution() { return resolution; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java deleted file mode 100644 index 91d7ed303..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/BiomeChunk.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; - - -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; - - -public interface BiomeChunk { - - PipelineBiome get(int xInChunk, int zInChunk); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java deleted file mode 100644 index c095eb0dd..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Source.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; - - -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; - - -public interface Source { - PipelineBiome get(long seed, int x, int z); - - Iterable getBiomes(); -} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java deleted file mode 100644 index 245f4f694..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/Stage.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api; - -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; - - -public interface Stage { - PipelineBiome apply(ViewPoint viewPoint); - - int maxRelativeReadDistance(); - - default Iterable getBiomes(Iterable biomes) { - return biomes; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java deleted file mode 100644 index b2fcb3fe8..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/api/biome/EphemeralBiomeDelegate.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome; - -import java.util.HashSet; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class EphemeralBiomeDelegate implements PipelineBiome { - private final Set tags; - private final String id; - - public EphemeralBiomeDelegate(String id) { - this.id = id; - tags = new HashSet<>(); - tags.add(id); - tags.add("ALL"); - } - - @Override - public Biome getBiome() { - throw new UnsupportedOperationException("Cannot get biome from ephemeral delegate"); - } - - @Override - public Set getTags() { - return tags; - } - - @Override - public String getID() { - return id; - } - - @Override - public boolean isEphemeral() { - return true; - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof EphemeralBiomeDelegate that)) return false; - - return this.id.equals(that.id); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java deleted file mode 100644 index 29f1c97a7..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/DebugExpander.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander; - -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; - - -public class DebugExpander implements Expander { - - private final PipelineBiome biome; - - public DebugExpander(PipelineBiome biome) { - this.biome = biome; - } - - @Override - public PipelineBiome fillBiome(ViewPoint viewPoint) { - return biome; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java deleted file mode 100644 index d56151f07..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeSource { - BiomeDelegate getBiome(double x, double z, long seed); - - Iterable getBiomes(); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java similarity index 74% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java index 1312dca25..eca41806b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SamplerSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.source; +package com.dfsek.terra.addons.biome.pipeline.source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java similarity index 66% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java index 21f17fa93..6dcab0d3c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/source/SingleSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.source; +package com.dfsek.terra.addons.biome.pipeline.source; import java.util.Collections; import java.util.Set; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; public class SingleSource implements Source { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java similarity index 78% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java index b043fff85..5c94b8943 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.expander; +package com.dfsek.terra.addons.biome.pipeline.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java similarity index 82% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java index b6bcee543..b814806d6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -14,15 +14,15 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; -public class BorderListMutator implements Stage { +public class BorderListStage implements Stage { private final String border; private final NoiseSampler noiseSampler; private final ProbabilityCollection replaceDefault; @@ -31,8 +31,8 @@ public class BorderListMutator implements Stage { private final Vector2Int[] borderPoints; - public BorderListMutator(Map> replace, String border, String defaultReplace, - NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + public BorderListStage(Map> replace, String border, String defaultReplace, + NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { this.border = border; this.noiseSampler = noiseSampler; this.replaceDefault = replaceDefault; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java similarity index 83% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java index 1fb8b60a9..08e6bb366 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/BorderMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -13,22 +13,22 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; -public class BorderMutator implements Stage { +public class BorderStage implements Stage { private final String border; private final NoiseSampler noiseSampler; private final ProbabilityCollection replace; private final String replaceTag; private final Vector2Int[] borderPoints; - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { + public BorderStage(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { this.border = border; this.noiseSampler = noiseSampler; this.replace = replace; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java similarity index 80% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java index 081f0f5ed..79b2c585c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java @@ -5,28 +5,28 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -public class ReplaceListMutator implements Stage { +public class ReplaceListStage implements Stage { private final Map> replace; private final NoiseSampler sampler; private final ProbabilityCollection replaceDefault; private final String defaultTag; - public ReplaceListMutator(Map> replace, String defaultTag, - ProbabilityCollection replaceDefault, NoiseSampler sampler) { + public ReplaceListStage(Map> replace, String defaultTag, + ProbabilityCollection replaceDefault, NoiseSampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java similarity index 78% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java index a46454a2c..df1c3be1e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/ReplaceMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java @@ -5,25 +5,25 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -public class ReplaceMutator implements Stage { +public class ReplaceStage implements Stage { private final String replaceableTag; private final ProbabilityCollection replace; private final NoiseSampler sampler; - public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { + public ReplaceStage(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java similarity index 76% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java index c199daab2..2129ab2fc 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/stage/mutators/SmoothMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java @@ -5,21 +5,21 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.reimplementation.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.Objects; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.reimplementation.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; -public class SmoothMutator implements Stage { +public class SmoothStage implements Stage { private final NoiseSampler sampler; - public SmoothMutator(NoiseSampler sampler) { + public SmoothStage(NoiseSampler sampler) { this.sampler = sampler; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java deleted file mode 100644 index e99c13e6b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; - - -public class ExpanderStage implements Stage { - private final BiomeExpander expander; - - public ExpanderStage(BiomeExpander expander) { - this.expander = expander; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - return in.expand(expander, seed); - } - - @Override - public boolean isExpansion() { - return true; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - return biomes; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java deleted file mode 100644 index d5933e917..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; - - -public class MutatorStage implements com.dfsek.terra.addons.biome.pipeline.api.stage.Stage { - private final BiomeMutator mutator; - - public MutatorStage(BiomeMutator mutator) { - this.mutator = mutator; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - in.mutate(mutator, seed); - return in; - } - - @Override - public boolean isExpansion() { - return false; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - return mutator.getBiomes(biomes); - } - - public enum Type { - REPLACE, - REPLACE_LIST, - BORDER, - BORDER_LIST, - SMOOTH - } -} From 5c58bd54a37c9ebdccba4d58e49586921bb10d01 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 12:23:51 +1000 Subject: [PATCH 05/11] Ephemeral -> Placeholder --- .../addons/biome/pipeline/PipelineBiomeProvider.java | 6 +++--- .../addons/biome/pipeline/api/biome/PipelineBiome.java | 6 +++--- ...ipelineBiome.java => PlaceholderPipelineBiome.java} | 10 +++++----- .../biome/pipeline/api/biome/SelfPipelineBiome.java | 2 +- .../biome/pipeline/config/PipelineBiomeLoader.java | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/{EphemeralPipelineBiome.java => PlaceholderPipelineBiome.java} (70%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index c9a03c073..86a74051b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -48,7 +48,7 @@ public class PipelineBiomeProvider implements BiomeProvider { this.biomes = new HashSet<>(); Iterable finalResult = result; result.forEach(pipelineBiome -> { - if(pipelineBiome.isEphemeral()) { + if(pipelineBiome.isPlaceholder()) { StringBuilder biomeList = new StringBuilder("\n"); StreamSupport.stream(finalResult.spliterator(), false) @@ -59,8 +59,8 @@ public class PipelineBiomeProvider implements BiomeProvider { .append(':') .append(delegate.getClass().getCanonicalName()) .append('\n')); - throw new IllegalArgumentException("Biome Pipeline leaks ephemeral biome \"" + pipelineBiome.getID() + - "\". Ensure there is a stage to guarantee replacement of the ephemeral biome. Biomes: " + + throw new IllegalArgumentException("Biome Pipeline leaks placeholder biome \"" + pipelineBiome.getID() + + "\". Ensure there is a stage to guarantee replacement of the placeholder biome. Biomes: " + biomeList); } this.biomes.add(pipelineBiome.getBiome()); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java index cbc4ffe90..df9cb4fc0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java @@ -9,8 +9,8 @@ import com.dfsek.terra.api.world.biome.Biome; public interface PipelineBiome extends StringIdentifiable { Biome getBiome(); - static PipelineBiome ephemeral(String id) { - return new EphemeralPipelineBiome(id); + static PipelineBiome placeholder(String id) { + return new PlaceholderPipelineBiome(id); } static PipelineBiome from(Biome biome) { @@ -23,7 +23,7 @@ public interface PipelineBiome extends StringIdentifiable { Set getTags(); - default boolean isEphemeral() { + default boolean isPlaceholder() { return false; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java similarity index 70% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java index 44ef4a311..6ea7659be 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/EphemeralPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java @@ -6,11 +6,11 @@ import java.util.Set; import com.dfsek.terra.api.world.biome.Biome; -final class EphemeralPipelineBiome implements PipelineBiome { +final class PlaceholderPipelineBiome implements PipelineBiome { private final Set tags; private final String id; - public EphemeralPipelineBiome(String id) { + public PlaceholderPipelineBiome(String id) { this.id = id; tags = new HashSet<>(); tags.add(id); @@ -19,7 +19,7 @@ final class EphemeralPipelineBiome implements PipelineBiome { @Override public Biome getBiome() { - throw new UnsupportedOperationException("Cannot get biome from ephemeral delegate"); + throw new UnsupportedOperationException("Cannot get raw biome from placeholder pipeline biome"); } @Override @@ -33,7 +33,7 @@ final class EphemeralPipelineBiome implements PipelineBiome { } @Override - public boolean isEphemeral() { + public boolean isPlaceholder() { return true; } @@ -44,7 +44,7 @@ final class EphemeralPipelineBiome implements PipelineBiome { @Override public boolean equals(Object obj) { - if(!(obj instanceof EphemeralPipelineBiome that)) return false; + if(!(obj instanceof PlaceholderPipelineBiome that)) return false; return this.id.equals(that.id); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java index 068fa8b16..53cf59c71 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java @@ -24,7 +24,7 @@ final class SelfPipelineBiome implements PipelineBiome { } @Override - public boolean isEphemeral() { + public boolean isPlaceholder() { return true; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java index 52ed6470e..799a7a0b1 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java @@ -27,6 +27,6 @@ public class PipelineBiomeLoader implements TypeLoader { return biomeRegistry .getByID((String) c) .map(PipelineBiome::from) - .orElseGet(() -> PipelineBiome.ephemeral((String) c)); + .orElseGet(() -> PipelineBiome.placeholder((String) c)); } } From 3522b5f17c16bcface810b46e4faaed189a5d5d4 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 12:30:22 +1000 Subject: [PATCH 06/11] Remove test class from source --- .../addons/biome/pipeline/StringBiome.java | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java deleted file mode 100644 index d141ecf6e..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StringBiome.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import java.util.Optional; -import java.util.Set; - -import com.dfsek.terra.api.properties.Context; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.PlatformBiome; - -public record StringBiome(String name, String string) implements Biome { - - @Override - public Context getContext() { - return null; - } - - @Override - public String getID() { - return string; - } - - @Override - public Optional getPlatformBiome() { - return Optional.empty(); - } - - @Override - public void setPlatformBiome(PlatformBiome biome) { - } - - @Override - public int getColor() { - return 0; - } - - @Override - public Set getTags() { - return Set.of(name); - } -} \ No newline at end of file From 57cbea4000dc5198724dec8c9a075fa9fc78d006 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 14:53:13 +1000 Subject: [PATCH 07/11] Replace sout with logger debug calls --- .../biome/pipeline/pipeline/PipelineImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java index 318ac8933..9805c7b40 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java @@ -1,18 +1,21 @@ package com.dfsek.terra.addons.biome.pipeline.pipeline; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.Stage; public class PipelineImpl implements Pipeline { -// private static final Logger logger = LoggerFactory.getLogger(PipelineImpl.class); + private static final Logger logger = LoggerFactory.getLogger(PipelineImpl.class); private final Source source; private final List stages; @@ -45,10 +48,10 @@ public class PipelineImpl implements Pipeline { this.chunkOriginArrayIndex = chunkOriginArrayIndex; this.chunkSize = chunkSize; - System.out.println("Initialized a new biome pipeline:"); - System.out.println("Array size: " + arraySize + " (Target: " + idealChunkArraySize + ")"); - System.out.println("Internal array origin: " + chunkOriginArrayIndex); - System.out.println("Chunk size: " + chunkSize); + logger.debug("Initialized a new biome pipeline:"); + logger.debug("Array size: {} (Target: {})", arraySize, idealChunkArraySize); + logger.debug("Internal array origin: {}", chunkOriginArrayIndex); + logger.debug("Chunk size: {}", chunkSize); } @Override From 6cdef5d4ad2c03c3277e90512a60a59fffc19ad7 Mon Sep 17 00:00:00 2001 From: Astrash Date: Wed, 16 Nov 2022 14:09:04 +1100 Subject: [PATCH 08/11] Move pipeline reimplementation to separate addon --- .../LICENSE | 0 .../biome-provider-pipeline-2/README.md | 12 +++++++++ .../build.gradle.kts | 2 +- .../pipeline/v2}/BiomePipelineAddon.java | 26 +++++++++---------- .../pipeline/v2}/BiomePipelineColumn.java | 2 +- .../pipeline/v2}/PipelineBiomeProvider.java | 12 ++++----- .../biome/pipeline/v2/api/BiomeChunk.java | 10 +++++++ .../biome/pipeline/v2}/api/Expander.java | 6 ++--- .../biome/pipeline/v2}/api/Pipeline.java | 2 +- .../biome/pipeline/v2}/api/SeededVector.java | 2 +- .../addons/biome/pipeline/v2/api/Source.java | 11 ++++++++ .../addons/biome/pipeline/v2}/api/Stage.java | 6 ++--- .../v2}/api/biome/DelegatedPipelineBiome.java | 2 +- .../pipeline/v2}/api/biome/PipelineBiome.java | 2 +- .../api/biome/PlaceholderPipelineBiome.java | 2 +- .../v2}/api/biome/SelfPipelineBiome.java | 2 +- .../v2}/config/BiomePipelineTemplate.java | 10 +++---- .../v2}/config/PipelineBiomeLoader.java | 4 +-- .../config/source/SamplerSourceTemplate.java | 8 +++--- .../v2}/config/source/SourceTemplate.java | 4 +-- .../v2}/config/stage/StageTemplate.java | 4 +-- .../stage/expander/ExpanderStageTemplate.java | 8 +++--- .../mutator/BorderListStageTemplate.java | 10 +++---- .../stage/mutator/BorderStageTemplate.java | 10 +++---- .../mutator/ReplaceListStageTemplate.java | 10 +++---- .../stage/mutator/ReplaceStageTemplate.java | 10 +++---- .../stage/mutator/SmoothStageTemplate.java | 8 +++--- .../pipeline/v2}/pipeline/BiomeChunkImpl.java | 13 +++++----- .../pipeline/v2}/pipeline/PipelineImpl.java | 14 +++++----- .../pipeline/v2}/source/SamplerSource.java | 6 ++--- .../pipeline/v2}/source/SingleSource.java | 6 ++--- .../v2}/stage/expander/FractalExpander.java | 10 +++---- .../v2}/stage/mutators/BorderListStage.java | 10 +++---- .../v2}/stage/mutators/BorderStage.java | 10 +++---- .../v2}/stage/mutators/ReplaceListStage.java | 10 +++---- .../v2}/stage/mutators/ReplaceStage.java | 10 +++---- .../v2}/stage/mutators/SmoothStage.java | 10 +++---- .../src/main/resources/terra.addon.yml | 4 +-- .../addons/biome-provider-pipeline/README.md | 7 ----- .../addons/biome/pipeline/api/BiomeChunk.java | 10 ------- .../addons/biome/pipeline/api/Source.java | 11 -------- 41 files changed, 160 insertions(+), 156 deletions(-) rename common/addons/{biome-provider-pipeline => biome-provider-pipeline-2}/LICENSE (100%) create mode 100644 common/addons/biome-provider-pipeline-2/README.md rename common/addons/{biome-provider-pipeline => biome-provider-pipeline-2}/build.gradle.kts (93%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/BiomePipelineAddon.java (77%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/BiomePipelineColumn.java (96%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/PipelineBiomeProvider.java (91%) create mode 100644 common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/Expander.java (74%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/Pipeline.java (79%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/SeededVector.java (89%) create mode 100644 common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/Stage.java (52%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/biome/DelegatedPipelineBiome.java (92%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/biome/PipelineBiome.java (92%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/biome/PlaceholderPipelineBiome.java (94%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/api/biome/SelfPipelineBiome.java (92%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/BiomePipelineTemplate.java (86%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/PipelineBiomeLoader.java (89%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/source/SamplerSourceTemplate.java (77%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/source/SourceTemplate.java (74%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/StageTemplate.java (85%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/expander/ExpanderStageTemplate.java (56%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/mutator/BorderListStageTemplate.java (73%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/mutator/BorderStageTemplate.java (68%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/mutator/ReplaceListStageTemplate.java (72%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/mutator/ReplaceStageTemplate.java (66%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/config/stage/mutator/SmoothStageTemplate.java (56%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/pipeline/BiomeChunkImpl.java (95%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/pipeline/PipelineImpl.java (85%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/source/SamplerSource.java (78%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/source/SingleSource.java (70%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/expander/FractalExpander.java (77%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/mutators/BorderListStage.java (90%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/mutators/BorderStage.java (88%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/mutators/ReplaceListStage.java (88%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/mutators/ReplaceStage.java (84%) rename common/addons/{biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline => biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2}/stage/mutators/SmoothStage.java (80%) rename common/addons/{biome-provider-pipeline => biome-provider-pipeline-2}/src/main/resources/terra.addon.yml (72%) delete mode 100644 common/addons/biome-provider-pipeline/README.md delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java diff --git a/common/addons/biome-provider-pipeline/LICENSE b/common/addons/biome-provider-pipeline-2/LICENSE similarity index 100% rename from common/addons/biome-provider-pipeline/LICENSE rename to common/addons/biome-provider-pipeline-2/LICENSE diff --git a/common/addons/biome-provider-pipeline-2/README.md b/common/addons/biome-provider-pipeline-2/README.md new file mode 100644 index 000000000..d1d216dfd --- /dev/null +++ b/common/addons/biome-provider-pipeline-2/README.md @@ -0,0 +1,12 @@ +# biome-provider-pipeline-2 + +The second version of the Biome Pipeline, a procedural biome provider that uses a series +of "stages" to apply "mutations" to a 2D grid of biomes. + +Version 2 is a re-implementation of the original addon with the primary goal of providing +consistent scaling for noise relative to the world +(See https://github.com/PolyhedralDev/Terra/issues/264 for more details), and has been +included as a separate addon to maintain parity with packs utilizing the first version. + +This addon registers the `PIPELINE` biome provider type, and all associated +configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline-2/build.gradle.kts similarity index 93% rename from common/addons/biome-provider-pipeline/build.gradle.kts rename to common/addons/biome-provider-pipeline-2/build.gradle.kts index 2629ac476..8ca2e3b81 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline-2/build.gradle.kts @@ -1,4 +1,4 @@ -version = version("1.0.1") +version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java index 3468e168c..66c1a7908 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java @@ -5,24 +5,24 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline; +package com.dfsek.terra.addons.biome.pipeline.v2; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.PipelineBiomeLoader; -import com.dfsek.terra.addons.biome.pipeline.config.source.SamplerSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Source; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.PipelineBiomeLoader; +import com.dfsek.terra.addons.biome.pipeline.v2.config.source.SamplerSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.BorderListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.BorderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.SmoothStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java similarity index 96% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java index f94493489..9b3e1391a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline; +package com.dfsek.terra.addons.biome.pipeline.v2; import java.util.function.Consumer; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java similarity index 91% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java index 86a74051b..9748741a8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java @@ -1,5 +1,10 @@ -package com.dfsek.terra.addons.biome.pipeline; +package com.dfsek.terra.addons.biome.pipeline.v2; +import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import net.jafama.FastMath; @@ -9,11 +14,6 @@ import java.util.HashSet; import java.util.Set; import java.util.stream.StreamSupport; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java new file mode 100644 index 000000000..818652f59 --- /dev/null +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.pipeline.v2.api; + + +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; + + +public interface BiomeChunk { + + PipelineBiome get(int xInChunk, int zInChunk); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java similarity index 74% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java index 3e8b9e42d..177e74694 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.api; +package com.dfsek.terra.addons.biome.pipeline.v2.api; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; /** diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java similarity index 79% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java index cb52328ce..cfb9ee9a8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api; +package com.dfsek.terra.addons.biome.pipeline.v2.api; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java similarity index 89% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java index 951b7e592..6581ca50c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api; +package com.dfsek.terra.addons.biome.pipeline.v2.api; public record SeededVector(long seed, int x, int z) { diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java new file mode 100644 index 000000000..bfb135653 --- /dev/null +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.biome.pipeline.v2.api; + + +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; + + +public interface Source { + PipelineBiome get(long seed, int x, int z); + + Iterable getBiomes(); +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java similarity index 52% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java index 4611968c3..ee2c75e89 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.api; +package com.dfsek.terra.addons.biome.pipeline.v2.api; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; public interface Stage { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java index 70c94b58e..978e68b06 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api.biome; +package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java index df9cb4fc0..ccde84022 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api.biome; +package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java similarity index 94% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java index 6ea7659be..87bd67120 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api.biome; +package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; import java.util.HashSet; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java index 53cf59c71..80583c1cb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.api.biome; +package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; import java.util.Collections; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java similarity index 86% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java index b88b75a7c..52ee4292d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config; +package com.dfsek.terra.addons.biome.pipeline.v2.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Description; @@ -14,10 +14,10 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.PipelineBiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; -import com.dfsek.terra.addons.biome.pipeline.api.Source; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.PipelineBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.PipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java similarity index 89% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java index 799a7a0b1..5e7a08578 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.config; +package com.dfsek.terra.addons.biome.pipeline.v2.config; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java index a054976d7..dbfb1ef31 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.source; +package com.dfsek.terra.addons.biome.pipeline.v2.config.source; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.Source; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java similarity index 74% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java index a8e88a8ab..ba61f8940 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.source; +package com.dfsek.terra.addons.biome.pipeline.v2.config.source; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; public abstract class SourceTemplate implements ObjectTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java similarity index 85% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java index afed0c15e..c1cea771e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java @@ -5,13 +5,13 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java similarity index 56% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java index a8fce25be..312880d3b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.stage.expander.FractalExpander; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.expander.FractalExpander; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java similarity index 73% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java index fb415260d..57d5c7deb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderListStage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java similarity index 68% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java index 5327c211c..605eeb9f4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderStage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java similarity index 72% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java index a6710286f..be9ade61c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceListStage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java similarity index 66% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java index 5a799eeb4..6f273a294 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceStage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java similarity index 56% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java index 50a7aa5b9..a13e441af 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.stage.mutators.SmoothStage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.SmoothStage; public class SmoothStageTemplate extends StageTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java similarity index 95% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java index b5f5b770f..cf739fa77 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java @@ -1,15 +1,14 @@ -package com.dfsek.terra.addons.biome.pipeline.pipeline; +package com.dfsek.terra.addons.biome.pipeline.v2.pipeline; +import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import net.jafama.FastMath; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; - public class BiomeChunkImpl implements BiomeChunk { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java similarity index 85% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java index 9805c7b40..a01091d2e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.biome.pipeline.pipeline; +package com.dfsek.terra.addons.biome.pipeline.v2.pipeline; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.api.Source; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; public class PipelineImpl implements Pipeline { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java similarity index 78% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java index eca41806b..f6d66b9e2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.source; +package com.dfsek.terra.addons.biome.pipeline.v2.source; -import com.dfsek.terra.addons.biome.pipeline.api.Source; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java similarity index 70% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java index 6dcab0d3c..b2c0ee8db 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.biome.pipeline.source; +package com.dfsek.terra.addons.biome.pipeline.v2.source; import java.util.Collections; import java.util.Set; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; public class SingleSource implements Source { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java index 5c94b8943..c82743ba4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.biome.pipeline.stage.expander; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; @@ -15,7 +15,7 @@ public class FractalExpander implements Expander { } @Override - public PipelineBiome fillBiome(ViewPoint viewPoint) { + public PipelineBiome fillBiome(BiomeChunkImpl.ViewPoint viewPoint) { int xMod2 = viewPoint.gridX() % 2; int zMod2 = viewPoint.gridZ() % 2; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java similarity index 90% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java index b814806d6..2587bc792 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -14,9 +14,9 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; @@ -60,7 +60,7 @@ public class BorderListStage implements Stage { } @Override - public PipelineBiome apply(ViewPoint viewPoint) { + public PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { PipelineBiome center = viewPoint.getBiome(); if(center.getTags().contains(defaultReplace)) { for(Vector2Int point : borderPoints) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java similarity index 88% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java index 08e6bb366..274ef1ff9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -13,9 +13,9 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; @@ -44,7 +44,7 @@ public class BorderStage implements Stage { } @Override - public PipelineBiome apply(ViewPoint viewPoint) { + public PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { PipelineBiome center = viewPoint.getBiome(); if(center.getTags().contains(replaceTag)) { for(Vector2Int point : borderPoints) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java similarity index 88% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java index 79b2c585c..372127546 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -34,7 +34,7 @@ public class ReplaceListStage implements Stage { } @Override - public PipelineBiome apply(ViewPoint viewPoint) { + public PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { PipelineBiome center = viewPoint.getBiome(); if(replace.containsKey(center)) { PipelineBiome biome = replace.get(center).get(sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java similarity index 84% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java index df1c3be1e..b7a2fd684 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java @@ -5,15 +5,15 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -30,7 +30,7 @@ public class ReplaceStage implements Stage { } @Override - public PipelineBiome apply(ViewPoint viewPoint) { + public PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { if(viewPoint.getBiome().getTags().contains(replaceableTag)) { PipelineBiome biome = replace.get(sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); return biome.isSelf() ? viewPoint.getBiome() : biome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java similarity index 80% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java rename to common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java index 2129ab2fc..92bbee433 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java +++ b/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java @@ -5,13 +5,13 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; import java.util.Objects; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl.ViewPoint; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; @@ -24,7 +24,7 @@ public class SmoothStage implements Stage { } @Override - public PipelineBiome apply(ViewPoint viewPoint) { + public PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { PipelineBiome top = viewPoint.getRelativeBiome(1, 0); PipelineBiome bottom = viewPoint.getRelativeBiome(-1, 0); PipelineBiome left = viewPoint.getRelativeBiome(0, 1); diff --git a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml similarity index 72% rename from common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml rename to common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml index abd2555a5..fbb711152 100644 --- a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml @@ -1,10 +1,10 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-pipeline +id: biome-provider-pipeline-2 version: @VERSION@ entrypoints: - - "com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon" + - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" website: issues: https://github.com/PolyhedralDev/Terra/issues source: https://github.com/PolyhedralDev/Terra diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md deleted file mode 100644 index 9e55109a7..000000000 --- a/common/addons/biome-provider-pipeline/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# biome-provider-pipeline - -Implements the Biome Pipeline, a procedural biome provider that uses a series -of "stages" to apply "mutations" to a 2D grid of biomes. - -This addon registers the `PIPELINE` biome provider type, and all associated -configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java deleted file mode 100644 index 4b7d60ae2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - - -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; - - -public interface BiomeChunk { - - PipelineBiome get(int xInChunk, int zInChunk); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java deleted file mode 100644 index 185463786..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - - -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; - - -public interface Source { - PipelineBiome get(long seed, int x, int z); - - Iterable getBiomes(); -} \ No newline at end of file From c1c85174ed8080438ad0219d29b2b41119bfcf81 Mon Sep 17 00:00:00 2001 From: Astrash Date: Wed, 16 Nov 2022 14:13:16 +1100 Subject: [PATCH 09/11] Re-add original pipeline implementation --- common/addons/biome-provider-pipeline/LICENSE | 21 +++ .../addons/biome-provider-pipeline/README.md | 7 + .../biome-provider-pipeline/build.gradle.kts | 12 ++ .../biome/pipeline/BiomeHolderImpl.java | 94 +++++++++++++ .../addons/biome/pipeline/BiomePipeline.java | 83 +++++++++++ .../biome/pipeline/BiomePipelineAddon.java | 89 ++++++++++++ .../biome/pipeline/BiomePipelineColumn.java | 71 ++++++++++ .../biome/pipeline/BiomePipelineProvider.java | 131 ++++++++++++++++++ .../biome/pipeline/api/BiomeHolder.java | 26 ++++ .../pipeline/api/delegate/BiomeDelegate.java | 35 +++++ .../pipeline/api/delegate/DelegatedBiome.java | 40 ++++++ .../api/delegate/EphemeralBiomeDelegate.java | 51 +++++++ .../pipeline/api/delegate/SelfDelegate.java | 40 ++++++ .../biome/pipeline/api/stage/Stage.java | 20 +++ .../api/stage/type/BiomeExpander.java | 15 ++ .../pipeline/api/stage/type/BiomeMutator.java | 37 +++++ .../pipeline/config/BiomeDelegateLoader.java | 32 +++++ .../config/BiomePipelineTemplate.java | 54 ++++++++ .../config/BiomeProviderTemplate.java | 37 +++++ .../config/SamplerSourceTemplate.java | 34 +++++ .../biome/pipeline/config/SourceTemplate.java | 17 +++ .../pipeline/config/stage/StageTemplate.java | 23 +++ .../stage/expander/ExpanderStageTemplate.java | 21 +++ .../mutator/BorderListMutatorTemplate.java | 42 ++++++ .../stage/mutator/BorderMutatorTemplate.java | 36 +++++ .../mutator/ReplaceListMutatorTemplate.java | 38 +++++ .../stage/mutator/ReplaceMutatorTemplate.java | 33 +++++ .../stage/mutator/SmoothMutatorTemplate.java | 21 +++ .../pipeline/expand/FractalExpander.java | 27 ++++ .../pipeline/mutator/BorderListMutator.java | 67 +++++++++ .../biome/pipeline/mutator/BorderMutator.java | 66 +++++++++ .../pipeline/mutator/ReplaceListMutator.java | 72 ++++++++++ .../pipeline/mutator/ReplaceMutator.java | 57 ++++++++ .../biome/pipeline/mutator/SmoothMutator.java | 46 ++++++ .../biome/pipeline/source/BiomeSource.java | 17 +++ .../biome/pipeline/source/SamplerSource.java | 33 +++++ .../biome/pipeline/stages/ExpanderStage.java | 37 +++++ .../biome/pipeline/stages/MutatorStage.java | 46 ++++++ .../src/main/resources/terra.addon.yml | 12 ++ 39 files changed, 1640 insertions(+) create mode 100644 common/addons/biome-provider-pipeline/LICENSE create mode 100644 common/addons/biome-provider-pipeline/README.md create mode 100644 common/addons/biome-provider-pipeline/build.gradle.kts create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java create mode 100644 common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml diff --git a/common/addons/biome-provider-pipeline/LICENSE b/common/addons/biome-provider-pipeline/LICENSE new file mode 100644 index 000000000..64c1cd516 --- /dev/null +++ b/common/addons/biome-provider-pipeline/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2021 Polyhedral Development + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md new file mode 100644 index 000000000..9e55109a7 --- /dev/null +++ b/common/addons/biome-provider-pipeline/README.md @@ -0,0 +1,7 @@ +# biome-provider-pipeline + +Implements the Biome Pipeline, a procedural biome provider that uses a series +of "stages" to apply "mutations" to a 2D grid of biomes. + +This addon registers the `PIPELINE` biome provider type, and all associated +configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts new file mode 100644 index 000000000..2629ac476 --- /dev/null +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -0,0 +1,12 @@ +version = version("1.0.1") + +dependencies { + compileOnlyApi(project(":common:addons:manifest-addon-loader")) + + implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) + testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) +} + +tasks.named("shadowJar") { + relocate("net.jafama", "com.dfsek.terra.addons.biome.pipeline.lib.jafama") +} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java new file mode 100644 index 000000000..57304011b --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.util.vector.Vector2; + + +public class BiomeHolderImpl implements BiomeHolder { + private final Vector2.Mutable origin; + private final int width; + private final int offset; + private BiomeDelegate[][] biomes; + + public BiomeHolderImpl(int width, Vector2.Mutable origin) { + width += 4; + this.width = width; + biomes = new BiomeDelegate[width][width]; + this.origin = origin; + this.offset = 2; + } + + private BiomeHolderImpl(BiomeDelegate[][] biomes, Vector2.Mutable origin, int width, int offset) { + this.biomes = biomes; + this.origin = origin; + this.width = width; + this.offset = 2 * offset; + } + + @Override + public BiomeHolder expand(BiomeExpander expander, long seed) { + BiomeDelegate[][] old = biomes; + int newWidth = width * 2 - 1; + + biomes = new BiomeDelegate[newWidth][newWidth]; + + for(int x = 0; x < width; x++) { + for(int z = 0; z < width; z++) { + biomes[x * 2][z * 2] = old[x][z]; + if(z != width - 1) + biomes[x * 2][z * 2 + 1] = expander.getBetween(x + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], + old[x][z + 1]); + if(x != width - 1) + biomes[x * 2 + 1][z * 2] = expander.getBetween(x + 1 + origin.getX(), z + origin.getZ(), seed, old[x][z], + old[x + 1][z]); + if(x != width - 1 && z != width - 1) + biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], + old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); + } + } + return new BiomeHolderImpl(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); + } + + @Override + public void mutate(BiomeMutator mutator, long seed) { + for(int x = 0; x < width; x++) { + for(int z = 0; z < width; z++) { + BiomeMutator.ViewPoint viewPoint = new BiomeMutator.ViewPoint(this, x, z); + biomes[x][z] = mutator.mutate(viewPoint, x + origin.getX(), z + origin.getZ(), seed); + } + } + } + + @Override + public void fill(BiomeSource source, long seed) { + for(int x = 0; x < width; x++) { + for(int z = 0; z < width; z++) { + biomes[x][z] = source.getBiome(origin.getX() + x, origin.getZ() + z, seed); + } + } + } + + @Override + public BiomeDelegate getBiome(int x, int z) { + x += offset; + z += offset; + return getBiomeRaw(x, z); + } + + @Override + public BiomeDelegate getBiomeRaw(int x, int z) { + if(x >= width || z >= width || x < 0 || z < 0) return null; + return biomes[x][z]; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java new file mode 100644 index 000000000..8a4be5d7d --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.util.vector.Vector2; + + +public class BiomePipeline { + private final BiomeSource source; + private final List stages; + private final int size; + private final int init; + + private BiomePipeline(BiomeSource source, List stages, int size, int init) { + this.source = source; + this.stages = stages; + this.size = size; + this.init = init; + } + + /** + * Get biomes in a chunk + * + * @param x Chunk X coord + * @param z Chunk Z coord + * + * @return BiomeHolder containing biomes. + */ + public BiomeHolder getBiomes(int x, int z, long seed) { + BiomeHolder holder = new BiomeHolderImpl(init, Vector2.of(x * (init - 1), z * (init - 1)).mutable()); + holder.fill(source, seed); + for(Stage stage : stages) holder = stage.apply(holder, seed); + return holder; + } + + public BiomeSource getSource() { + return source; + } + + public List getStages() { + return Collections.unmodifiableList(stages); + } + + public int getSize() { + return size; + } + + public static final class BiomePipelineBuilder { + private final int init; + private final List stages = new ArrayList<>(); + private int expand; + + public BiomePipelineBuilder(int init) { + this.init = init; + expand = init; + } + + public BiomePipeline build(BiomeSource source) { + for(Stage stage : stages) { + if(stage.isExpansion()) expand = expand * 2 - 1; + } + + return new BiomePipeline(source, stages, expand, init); + } + + public BiomePipelineBuilder addStage(Stage stage) { + stages.add(stage); + return this; + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java new file mode 100644 index 000000000..42aa95b0e --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import java.util.function.Supplier; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.BiomeDelegateLoader; +import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.SamplerSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.manifest.api.AddonInitializer; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class BiomePipelineAddon implements AddonInitializer { + + public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { + }; + + public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() { + }; + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; + @Inject + private Platform platform; + + @Inject + private BaseAddon addon; + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(addon, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register(addon.key("PIPELINE"), BiomePipelineTemplate::new); + }) + .then(event -> { + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( + SOURCE_REGISTRY_KEY); + sourceRegistry.register(addon.key("SAMPLER"), SamplerSourceTemplate::new); + }) + .then(event -> { + CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry( + STAGE_REGISTRY_KEY); + stageRegistry.register(addon.key("FRACTAL_EXPAND"), ExpanderStageTemplate::new); + stageRegistry.register(addon.key("SMOOTH"), SmoothMutatorTemplate::new); + stageRegistry.register(addon.key("REPLACE"), ReplaceMutatorTemplate::new); + stageRegistry.register(addon.key("REPLACE_LIST"), ReplaceListMutatorTemplate::new); + stageRegistry.register(addon.key("BORDER"), BorderMutatorTemplate::new); + stageRegistry.register(addon.key("BORDER_LIST"), BorderListMutatorTemplate::new); + }) + .failThrough(); + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(addon, ConfigPackPostLoadEvent.class) + .then(event -> { + Registry biomeRegistry = event.getPack().getRegistry(Biome.class); + event.getPack().applyLoader(BiomeDelegate.class, new BiomeDelegateLoader(biomeRegistry)); + }); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java new file mode 100644 index 000000000..609d22ee1 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java @@ -0,0 +1,71 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import java.util.function.Consumer; + +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.util.function.IntIntObjConsumer; +import com.dfsek.terra.api.util.function.IntObjConsumer; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +class BiomePipelineColumn implements Column { + private final int min; + private final int max; + + private final int x; + private final int z; + private final Biome biome; + + protected BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { + this.min = min; + this.max = max; + this.x = x; + this.z = z; + this.biome = biomeProvider.getBiome(x, 0, z, seed); + } + + @Override + public int getMinY() { + return min; + } + + @Override + public int getMaxY() { + return max; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getZ() { + return z; + } + + @Override + public Biome get(int y) { + return biome; + } + + @Override + public void forRanges(int resolution, IntIntObjConsumer consumer) { + consumer.accept(min, max, biome); + } + + @Override + public void forEach(Consumer consumer) { + for(int y = min; y < max; y++) { + consumer.accept(biome); + } + } + + @Override + public void forEach(IntObjConsumer consumer) { + for(int y = min; y < max; y++) { + consumer.accept(y, biome); + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java new file mode 100644 index 000000000..f3f4c3aa9 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline; + +import com.github.benmanes.caffeine.cache.Caffeine; +import com.github.benmanes.caffeine.cache.LoadingCache; +import net.jafama.FastMath; + +import java.util.Comparator; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; +import java.util.stream.StreamSupport; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.registry.key.StringIdentifiable; +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class BiomePipelineProvider implements BiomeProvider { + private final LoadingCache holderCache; + private final BiomePipeline pipeline; + private final int resolution; + private final NoiseSampler mutator; + private final double noiseAmp; + + private final Set biomes; + + public BiomePipelineProvider(BiomePipeline pipeline, int resolution, NoiseSampler mutator, double noiseAmp) { + this.resolution = resolution; + this.mutator = mutator; + this.noiseAmp = noiseAmp; + holderCache = Caffeine.newBuilder() + .maximumSize(1024) + .build(key -> pipeline.getBiomes(key.x, key.z, key.seed)); + this.pipeline = pipeline; + + Set biomeSet = new HashSet<>(); + pipeline.getSource().getBiomes().forEach(biomeSet::add); + Iterable result = biomeSet; + for(Stage stage : pipeline.getStages()) { + result = stage.getBiomes(result); // pass through all stages + } + this.biomes = new HashSet<>(); + Iterable finalResult = result; + result.forEach(biomeDelegate -> { + if(biomeDelegate.isEphemeral()) { + + StringBuilder biomeList = new StringBuilder("\n"); + StreamSupport.stream(finalResult.spliterator(), false) + .sorted(Comparator.comparing(StringIdentifiable::getID)) + .forEach(delegate -> biomeList + .append(" - ") + .append(delegate.getID()) + .append(':') + .append(delegate.getClass().getCanonicalName()) + .append('\n')); + throw new IllegalArgumentException("Biome Pipeline leaks ephemeral biome \"" + biomeDelegate.getID() + + "\". Ensure there is a stage to guarantee replacement of the ephemeral biome. Biomes: " + + biomeList); + } + this.biomes.add(biomeDelegate.getBiome()); + }); + } + + @Override + public Biome getBiome(int x, int y, int z, long seed) { + return getBiome(x, z, seed); + } + + public Biome getBiome(int x, int z, long seed) { + x += mutator.noise(seed + 1, x, z) * noiseAmp; + z += mutator.noise(seed + 2, x, z) * noiseAmp; + + + x /= resolution; + z /= resolution; + + int fdX = FastMath.floorDiv(x, pipeline.getSize()); + int fdZ = FastMath.floorDiv(z, pipeline.getSize()); + return holderCache.get(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), + z - fdZ * pipeline.getSize()).getBiome(); + } + + @Override + public Optional getBaseBiome(int x, int z, long seed) { + return Optional.of(getBiome(x, z, seed)); + } + + @Override + public Iterable getBiomes() { + return biomes; + } + + @Override + public Column getColumn(int x, int z, long seed, int min, int max) { + return new BiomePipelineColumn(this, min, max, x, z, seed); + } + + @Override + public int resolution() { + return resolution; + } + + private record SeededVector(int x, int z, long seed) { + @Override + public boolean equals(Object obj) { + if(obj instanceof SeededVector that) { + return this.z == that.z && this.x == that.x && this.seed == that.seed; + } + return false; + } + + @Override + public int hashCode() { + int code = x; + code = 31 * code + z; + return 31 * code + ((int) (seed ^ (seed >>> 32))); + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java new file mode 100644 index 000000000..26bb63315 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; + + +public interface BiomeHolder { + BiomeHolder expand(BiomeExpander expander, long seed); + + void mutate(BiomeMutator mutator, long seed); + + void fill(BiomeSource source, long seed); + + BiomeDelegate getBiome(int x, int z); + + BiomeDelegate getBiomeRaw(int x, int z); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java new file mode 100644 index 000000000..7e339285a --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java @@ -0,0 +1,35 @@ +package com.dfsek.terra.addons.biome.pipeline.api.delegate; + +import java.util.Set; + +import com.dfsek.terra.api.registry.key.StringIdentifiable; +import com.dfsek.terra.api.world.biome.Biome; + + +public interface BiomeDelegate extends StringIdentifiable { + static BiomeDelegate ephemeral(String id) { + return new EphemeralBiomeDelegate(id); + } + + static BiomeDelegate from(Biome biome) { + return new DelegatedBiome(biome); + } + + static BiomeDelegate self() { + return SelfDelegate.INSTANCE; + } + + Biome getBiome(); + + Set getTags(); + + default boolean isEphemeral() { + return false; + } + + default boolean isSelf() { + return false; + } + + +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java new file mode 100644 index 000000000..4085f6a43 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.api.delegate; + +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +final class DelegatedBiome implements BiomeDelegate { + private final Biome biome; + + public DelegatedBiome(Biome biome) { + this.biome = biome; + } + + @Override + public Biome getBiome() { + return biome; + } + + @Override + public int hashCode() { + return biome.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof DelegatedBiome that)) return false; + return that.biome.equals(this.biome); + } + + @Override + public Set getTags() { + return biome.getTags(); + } + + @Override + public String getID() { + return biome.getID(); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java new file mode 100644 index 000000000..d02221f1b --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java @@ -0,0 +1,51 @@ +package com.dfsek.terra.addons.biome.pipeline.api.delegate; + +import java.util.HashSet; +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +final class EphemeralBiomeDelegate implements BiomeDelegate { + private final Set tags; + private final String id; + + public EphemeralBiomeDelegate(String id) { + this.id = id; + tags = new HashSet<>(); + tags.add(id); + tags.add("ALL"); + } + + @Override + public Biome getBiome() { + throw new UnsupportedOperationException("Cannot get biome from ephemeral delegate"); + } + + @Override + public Set getTags() { + return tags; + } + + @Override + public String getID() { + return id; + } + + @Override + public boolean isEphemeral() { + return true; + } + + @Override + public int hashCode() { + return id.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof EphemeralBiomeDelegate that)) return false; + + return this.id.equals(that.id); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java new file mode 100644 index 000000000..60b744059 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.api.delegate; + +import java.util.Collections; +import java.util.Set; + +import com.dfsek.terra.api.world.biome.Biome; + + +final class SelfDelegate implements BiomeDelegate { + public static final SelfDelegate INSTANCE = new SelfDelegate(); + + private SelfDelegate() { + + } + + @Override + public Biome getBiome() { + throw new UnsupportedOperationException("Cannot get biome from self delegate"); + } + + @Override + public boolean isSelf() { + return true; + } + + @Override + public boolean isEphemeral() { + return true; + } + + @Override + public Set getTags() { + return Collections.emptySet(); + } + + @Override + public String getID() { + return "SELF"; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java new file mode 100644 index 000000000..fb4b1007b --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.api.stage; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; + + +public interface Stage { + BiomeHolder apply(BiomeHolder in, long seed); + + boolean isExpansion(); + + Iterable getBiomes(Iterable biomes); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java new file mode 100644 index 000000000..c3e721c08 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.api.stage.type; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; + + +public interface BiomeExpander { + BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java new file mode 100644 index 000000000..f7cc3b7bd --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.api.stage.type; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; + + +public interface BiomeMutator { + BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed); + + default Iterable getBiomes(Iterable biomes) { + return biomes; + } + + class ViewPoint { + private final BiomeHolder biomes; + private final int offX; + private final int offZ; + + public ViewPoint(BiomeHolder biomes, int offX, int offZ) { + this.biomes = biomes; + this.offX = offX; + this.offZ = offZ; + } + + + public BiomeDelegate getBiome(int x, int z) { + return biomes.getBiomeRaw(x + offX, z + offZ); + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java new file mode 100644 index 000000000..c416e4804 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java @@ -0,0 +1,32 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.api.depth.DepthTracker; +import com.dfsek.tectonic.api.exception.LoadException; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.biome.Biome; + + +public class BiomeDelegateLoader implements TypeLoader { + private final Registry biomeRegistry; + + public BiomeDelegateLoader(Registry biomeRegistry) { + this.biomeRegistry = biomeRegistry; + } + + @Override + public BiomeDelegate load(@NotNull AnnotatedType t, @NotNull Object c, @NotNull ConfigLoader loader, DepthTracker depthTracker) + throws LoadException { + if(c.equals("SELF")) return BiomeDelegate.self(); + return biomeRegistry + .getByID((String) c) + .map(BiomeDelegate::from) + .orElseGet(() -> BiomeDelegate.ephemeral((String) c)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java new file mode 100644 index 000000000..e35d621e2 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Description; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) +public class BiomePipelineTemplate extends BiomeProviderTemplate { + @Value("pipeline.initial-size") + @Default + @Description(""" + The initial size of biome chunks. This value must be at least 2. + This is not the final size of biome chunks. Final chunks will be much larger. + + It is recommended to keep biome chunks' final size in the range of [50, 300] + to prevent performance issues. To calculate the size of biome chunks, simply + take initial-size and for each expand stage, multiply the running value by 2 + and subtract 1. (The size is also printed to the server console if you + have debug mode enabled)""") + private @Meta int initialSize = 2; + + @Value("pipeline.source") + @Description("The Biome Source to use for initial population of biomes.") + private @Meta BiomeSource source; + + @Value("pipeline.stages") + @Description("A list of pipeline stages to apply to the result of #source") + private @Meta List<@Meta Stage> stages; + + @Override + public BiomeProvider get() { + BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); + stages.forEach(biomePipelineBuilder::addStage); + BiomePipeline pipeline = biomePipelineBuilder.build(source); + return new BiomePipelineProvider(pipeline, resolution, blend, blendAmp); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java new file mode 100644 index 000000000..1412485fe --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Description; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public abstract class BiomeProviderTemplate implements ObjectTemplate { + @Value("resolution") + @Default + @Description(""" + The resolution at which to sample biomes. + + Larger values are quadratically faster, but produce lower quality results. + For example, a value of 3 would sample every 3 blocks.""") + protected @Meta int resolution = 1; + @Value("blend.sampler") + @Default + @Description("A sampler to use for blending the edges of biomes via domain warping.") + protected @Meta NoiseSampler blend = NoiseSampler.zero(); + @Value("blend.amplitude") + @Default + @Description("The amplitude at which to perform blending.") + protected @Meta double blendAmp = 0d; +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java new file mode 100644 index 000000000..2ba70b608 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.api.config.template.annotations.Description; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class SamplerSourceTemplate extends SourceTemplate { + @Value("sampler") + @Description("The sampler used to distribute biomes.") + private @Meta NoiseSampler noise; + + @Value("biomes") + @Description("The biomes to be distributed.") + private @Meta ProbabilityCollection<@Meta BiomeDelegate> biomes; + + @Override + public BiomeSource get() { + return new SamplerSource(biomes, noise); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java new file mode 100644 index 000000000..c80ec0cee --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; + + +public abstract class SourceTemplate implements ObjectTemplate { + +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java new file mode 100644 index 000000000..ba4bee85d --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage; + +import com.dfsek.tectonic.api.config.template.annotations.Description; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; + + +public abstract class StageTemplate implements ObjectTemplate { + @Value("sampler") + @Description("Sampler to use for stage distribution.") + protected @Meta NoiseSampler noise; +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java new file mode 100644 index 000000000..8f66315ef --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; + +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; + + +public class ExpanderStageTemplate extends StageTemplate { + @Override + public Stage get() { + return new ExpanderStage(new FractalExpander(noise)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java new file mode 100644 index 000000000..fcf523e44 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +@SuppressWarnings("unused") +public class BorderListMutatorTemplate extends StageTemplate { + @Value("from") + private @Meta String from; + + @Value("default-replace") + private @Meta String defaultReplace; + + @Value("default-to") + private @Meta ProbabilityCollection<@Meta BiomeDelegate> defaultTo; + + @Value("replace") + private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> replace; + + + @Override + public Stage get() { + return new MutatorStage(new BorderListMutator(replace, from, defaultReplace, noise, defaultTo)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java new file mode 100644 index 000000000..4db9e4e99 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +@SuppressWarnings("unused") +public class BorderMutatorTemplate extends StageTemplate { + @Value("from") + private @Meta String from; + + @Value("replace") + private @Meta String replace; + + @Value("to") + private @Meta ProbabilityCollection<@Meta BiomeDelegate> to; + + @Override + public Stage get() { + return new MutatorStage(new BorderMutator(from, replace, noise, to)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java new file mode 100644 index 000000000..5713b3ff0 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +@SuppressWarnings("unused") +public class ReplaceListMutatorTemplate extends StageTemplate { + @Value("default-from") + private @Meta String defaultFrom; + + @Value("default-to") + private @Meta ProbabilityCollection<@Meta BiomeDelegate> defaultTo; + + @Value("to") + private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> replace; + + @Override + public Stage get() { + return new MutatorStage(new ReplaceListMutator(replace, defaultFrom, defaultTo, noise)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java new file mode 100644 index 000000000..dae592e2b --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +@SuppressWarnings("unused") +public class ReplaceMutatorTemplate extends StageTemplate { + @Value("from") + private @Meta String from; + + @Value("to") + private @Meta ProbabilityCollection<@Meta BiomeDelegate> to; + + @Override + public Stage get() { + return new MutatorStage(new ReplaceMutator(from, to, noise)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java new file mode 100644 index 000000000..b26dce902 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; + + +public class SmoothMutatorTemplate extends StageTemplate { + @Override + public Stage get() { + return new MutatorStage(new SmoothMutator(noise)); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java new file mode 100644 index 000000000..50d36a5c4 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.expand; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; + + +public class FractalExpander implements BiomeExpander { + private final NoiseSampler sampler; + + public FractalExpander(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others) { + return others[MathUtil.normalizeIndex(sampler.noise(seed, x, z), others.length)]; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java new file mode 100644 index 000000000..59f6dd9b4 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class BorderListMutator implements BiomeMutator { + private final String border; + private final NoiseSampler noiseSampler; + private final ProbabilityCollection replaceDefault; + private final String defaultReplace; + private final Map> replace; + + public BorderListMutator(Map> replace, String border, String defaultReplace, + NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + this.border = border; + this.noiseSampler = noiseSampler; + this.replaceDefault = replaceDefault; + this.defaultReplace = defaultReplace; + this.replace = replace; + } + + @Override + public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { + BiomeDelegate origin = viewPoint.getBiome(0, 0); + if(origin.getTags().contains(defaultReplace)) { + for(int xi = -1; xi <= 1; xi++) { + for(int zi = -1; zi <= 1; zi++) { + if(xi == 0 && zi == 0) continue; + BiomeDelegate current = viewPoint.getBiome(xi, zi); + if(current != null && current.getTags().contains(border)) { + if(replace.containsKey(origin)) { + BiomeDelegate biome = replace.get(origin).get(noiseSampler, x, z, seed); + return biome.isSelf() ? origin : biome; + } + BiomeDelegate biome = replaceDefault.get(noiseSampler, x, z, seed); + return biome.isSelf() ? origin : biome; + } + } + } + } + return origin; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + biomes.forEach(biomeSet::add); + biomeSet.addAll(replaceDefault.getContents().stream().filter(Predicate.not(BiomeDelegate::isSelf)).toList()); + replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents())); + return biomeSet; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java new file mode 100644 index 000000000..5755719f4 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.HashSet; +import java.util.Set; +import java.util.function.Predicate; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class BorderMutator implements BiomeMutator { + private final String border; + private final NoiseSampler noiseSampler; + private final ProbabilityCollection replace; + private final String replaceTag; + + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { + this.border = border; + this.noiseSampler = noiseSampler; + this.replace = replace; + this.replaceTag = replaceTag; + } + + @Override + public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { + BiomeDelegate origin = viewPoint.getBiome(0, 0); + if(origin.getTags().contains(replaceTag)) { + for(int xi = -1; xi <= 1; xi++) { + for(int zi = -1; zi <= 1; zi++) { + if(xi == 0 && zi == 0) continue; + BiomeDelegate current = viewPoint.getBiome(xi, zi); + if(current != null && current.getTags().contains(border)) { + BiomeDelegate biome = replace.get(noiseSampler, x, z, seed); + return biome.isSelf() ? origin : biome; + } + } + } + } + return origin; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + biomes.forEach(biomeSet::add); + biomeSet.addAll( + replace + .getContents() + .stream() + .filter( + Predicate.not(BiomeDelegate::isSelf) + ) + .toList() + ); + return biomeSet; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java new file mode 100644 index 000000000..51a74c285 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class ReplaceListMutator implements BiomeMutator { + private final Map> replace; + private final NoiseSampler sampler; + private final ProbabilityCollection replaceDefault; + private final String defaultTag; + + public ReplaceListMutator(Map> replace, String defaultTag, + ProbabilityCollection replaceDefault, NoiseSampler sampler) { + this.replace = replace; + this.sampler = sampler; + this.defaultTag = defaultTag; + this.replaceDefault = replaceDefault; + } + + @Override + public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { + BiomeDelegate center = viewPoint.getBiome(0, 0); + if(replace.containsKey(center)) { + BiomeDelegate biome = replace.get(center).get(sampler, x, z, seed); + return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + } + if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { + BiomeDelegate biome = replaceDefault.get(sampler, x, z, seed); + return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + } + return center; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + + Set reject = new HashSet<>(); + + biomes.forEach(biome -> { + if(!biome.getTags().contains(defaultTag) && !replace.containsKey(biome)) { + biomeSet.add(biome); + } else { + reject.add(biome); + } + }); + biomeSet.addAll(replaceDefault.getContents().stream().flatMap(terraBiome -> { + if(terraBiome.isSelf()) return reject.stream(); + return Stream.of(terraBiome); + }).toList()); + replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents().stream().map(terraBiome -> { + if(terraBiome.isSelf()) return biome; + return terraBiome; + }).toList())); + return biomeSet; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java new file mode 100644 index 000000000..cec3e5e9e --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Stream; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class ReplaceMutator implements BiomeMutator { + private final String replaceableTag; + private final ProbabilityCollection replace; + private final NoiseSampler sampler; + + public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { + this.replaceableTag = replaceable; + this.replace = replace; + this.sampler = sampler; + } + + @Override + public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { + if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { + BiomeDelegate biome = replace.get(sampler, x, z, seed); + return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; + } + return viewPoint.getBiome(0, 0); + } + + @Override + public Iterable getBiomes(Iterable biomes) { + Set biomeSet = new HashSet<>(); + Set reject = new HashSet<>(); + biomes.forEach(biome -> { + if(!biome.getTags().contains(replaceableTag)) { + biomeSet.add(biome); + } else { + reject.add(biome); + } + }); + biomeSet.addAll(replace.getContents().stream().flatMap(terraBiome -> { + if(terraBiome.isSelf()) return reject.stream(); + return Stream.of(terraBiome); + }).toList()); + return biomeSet; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java new file mode 100644 index 000000000..4785216e8 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.Objects; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; + + +public class SmoothMutator implements BiomeMutator { + + private final NoiseSampler sampler; + + public SmoothMutator(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { + BiomeDelegate top = viewPoint.getBiome(1, 0); + BiomeDelegate bottom = viewPoint.getBiome(-1, 0); + BiomeDelegate left = viewPoint.getBiome(0, 1); + BiomeDelegate right = viewPoint.getBiome(0, -1); + + + boolean vert = Objects.equals(top, bottom) && top != null; + boolean horiz = Objects.equals(left, right) && left != null; + + if(vert && horiz) { + return MathUtil.normalizeIndex(sampler.noise(seed, x, z), 2) == 0 ? left : top; + } + + if(vert) return top; + if(horiz) return left; + + return viewPoint.getBiome(0, 0); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java new file mode 100644 index 000000000..d56151f07 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.source; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; + + +public interface BiomeSource { + BiomeDelegate getBiome(double x, double z, long seed); + + Iterable getBiomes(); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java new file mode 100644 index 000000000..62656ac17 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.source; + +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +public class SamplerSource implements BiomeSource { + private final ProbabilityCollection biomes; + private final NoiseSampler sampler; + + public SamplerSource(ProbabilityCollection biomes, NoiseSampler sampler) { + this.biomes = biomes; + this.sampler = sampler; + } + + @Override + public BiomeDelegate getBiome(double x, double z, long seed) { + return biomes.get(sampler, x, z, seed); + } + + @Override + public Iterable getBiomes() { + return biomes.getContents(); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java new file mode 100644 index 000000000..e99c13e6b --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.stages; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; + + +public class ExpanderStage implements Stage { + private final BiomeExpander expander; + + public ExpanderStage(BiomeExpander expander) { + this.expander = expander; + } + + @Override + public BiomeHolder apply(BiomeHolder in, long seed) { + return in.expand(expander, seed); + } + + @Override + public boolean isExpansion() { + return true; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + return biomes; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java new file mode 100644 index 000000000..8a9a06aae --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra Core Addons are licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in this module's root directory. + */ + +package com.dfsek.terra.addons.biome.pipeline.stages; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; +import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; + + +public class MutatorStage implements Stage { + private final BiomeMutator mutator; + + public MutatorStage(BiomeMutator mutator) { + this.mutator = mutator; + } + + @Override + public BiomeHolder apply(BiomeHolder in, long seed) { + in.mutate(mutator, seed); + return in; + } + + @Override + public boolean isExpansion() { + return false; + } + + @Override + public Iterable getBiomes(Iterable biomes) { + return mutator.getBiomes(biomes); + } + + public enum Type { + REPLACE, + REPLACE_LIST, + BORDER, + BORDER_LIST, + SMOOTH + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml new file mode 100644 index 000000000..abd2555a5 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml @@ -0,0 +1,12 @@ +schema-version: 1 +contributors: + - Terra contributors +id: biome-provider-pipeline +version: @VERSION@ +entrypoints: + - "com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon" +website: + issues: https://github.com/PolyhedralDev/Terra/issues + source: https://github.com/PolyhedralDev/Terra + docs: https://terra.polydev.org +license: MIT License \ No newline at end of file From 02d3445dd9c3aeb975af99882ec4fe667ceff6db Mon Sep 17 00:00:00 2001 From: Astrash Date: Wed, 16 Nov 2022 14:22:14 +1100 Subject: [PATCH 10/11] Include deprecation notice for pipeline v1 --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 42aa95b0e..4aabd44d0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -8,6 +8,8 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.function.Supplier; @@ -39,6 +41,8 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomePipelineAddon implements AddonInitializer { + private static final Logger logger = LoggerFactory.getLogger(BiomePipelineAddon.class); + public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { }; @@ -85,5 +89,7 @@ public class BiomePipelineAddon implements AddonInitializer { Registry biomeRegistry = event.getPack().getRegistry(Biome.class); event.getPack().applyLoader(BiomeDelegate.class, new BiomeDelegateLoader(biomeRegistry)); }); + + logger.warn("The biome-provider-pipeline addon is deprecated and scheduled for removal in Terra 7.0. It is recommended to use the biome-provider-pipeline-2 addon for future pack development instead."); } } From 1f7c4ee4e78d29be4c8bcd2f29059c0dff25a142 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 16 Nov 2022 14:02:34 -0700 Subject: [PATCH 11/11] rename from "2" to "v2" --- .../LICENSE | 0 .../README.md | 0 .../build.gradle.kts | 0 .../terra/addons/biome/pipeline/v2/BiomePipelineAddon.java | 0 .../terra/addons/biome/pipeline/v2/BiomePipelineColumn.java | 0 .../terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java | 0 .../dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java | 0 .../com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java | 0 .../com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java | 0 .../dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java | 0 .../com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java | 0 .../com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java | 0 .../biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java | 0 .../terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java | 0 .../biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java | 0 .../addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java | 0 .../addons/biome/pipeline/v2/config/BiomePipelineTemplate.java | 0 .../addons/biome/pipeline/v2/config/PipelineBiomeLoader.java | 0 .../biome/pipeline/v2/config/source/SamplerSourceTemplate.java | 0 .../addons/biome/pipeline/v2/config/source/SourceTemplate.java | 0 .../addons/biome/pipeline/v2/config/stage/StageTemplate.java | 0 .../v2/config/stage/expander/ExpanderStageTemplate.java | 0 .../v2/config/stage/mutator/BorderListStageTemplate.java | 0 .../pipeline/v2/config/stage/mutator/BorderStageTemplate.java | 0 .../v2/config/stage/mutator/ReplaceListStageTemplate.java | 0 .../pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java | 0 .../pipeline/v2/config/stage/mutator/SmoothStageTemplate.java | 0 .../terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java | 0 .../terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java | 0 .../terra/addons/biome/pipeline/v2/source/SamplerSource.java | 0 .../terra/addons/biome/pipeline/v2/source/SingleSource.java | 0 .../biome/pipeline/v2/stage/expander/FractalExpander.java | 0 .../biome/pipeline/v2/stage/mutators/BorderListStage.java | 0 .../addons/biome/pipeline/v2/stage/mutators/BorderStage.java | 0 .../biome/pipeline/v2/stage/mutators/ReplaceListStage.java | 0 .../addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java | 0 .../addons/biome/pipeline/v2/stage/mutators/SmoothStage.java | 0 .../src/main/resources/terra.addon.yml | 2 +- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 2 +- 39 files changed, 2 insertions(+), 2 deletions(-) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/LICENSE (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/README.md (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/build.gradle.kts (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java (100%) rename common/addons/{biome-provider-pipeline-2 => biome-provider-pipeline-v2}/src/main/resources/terra.addon.yml (91%) diff --git a/common/addons/biome-provider-pipeline-2/LICENSE b/common/addons/biome-provider-pipeline-v2/LICENSE similarity index 100% rename from common/addons/biome-provider-pipeline-2/LICENSE rename to common/addons/biome-provider-pipeline-v2/LICENSE diff --git a/common/addons/biome-provider-pipeline-2/README.md b/common/addons/biome-provider-pipeline-v2/README.md similarity index 100% rename from common/addons/biome-provider-pipeline-2/README.md rename to common/addons/biome-provider-pipeline-v2/README.md diff --git a/common/addons/biome-provider-pipeline-2/build.gradle.kts b/common/addons/biome-provider-pipeline-v2/build.gradle.kts similarity index 100% rename from common/addons/biome-provider-pipeline-2/build.gradle.kts rename to common/addons/biome-provider-pipeline-v2/build.gradle.kts diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java rename to common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java diff --git a/common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml similarity index 91% rename from common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml rename to common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml index fbb711152..f800574ca 100644 --- a/common/addons/biome-provider-pipeline-2/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml @@ -1,7 +1,7 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-pipeline-2 +id: biome-provider-pipeline-v2 version: @VERSION@ entrypoints: - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 4aabd44d0..6765ab3c3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -90,6 +90,6 @@ public class BiomePipelineAddon implements AddonInitializer { event.getPack().applyLoader(BiomeDelegate.class, new BiomeDelegateLoader(biomeRegistry)); }); - logger.warn("The biome-provider-pipeline addon is deprecated and scheduled for removal in Terra 7.0. It is recommended to use the biome-provider-pipeline-2 addon for future pack development instead."); + logger.warn("The biome-provider-pipeline addon is deprecated and scheduled for removal in Terra 7.0. It is recommended to use the biome-provider-pipeline-v2 addon for future pack development instead."); } }