From b25878414f43899bc7a3b46d55bdf030eb975e33 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:08:44 -0700 Subject: [PATCH 1/7] Initial commit --- .../addons/biome-provider-pipeline/README.md | 7 ++ .../biome-provider-pipeline/build.gradle.kts | 2 + .../biome/pipeline/BiomeHolderImpl.java | 87 +++++++++++++++++++ .../addons/biome/pipeline/BiomePipeline.java | 67 ++++++++++++++ .../biome/pipeline/BiomePipelineAddon.java | 71 +++++++++++++++ .../biome/pipeline/BiomePipelineProvider.java | 84 ++++++++++++++++++ .../biome/pipeline/api/BiomeExpander.java | 8 ++ .../biome/pipeline/api/BiomeHolder.java | 17 ++++ .../biome/pipeline/api/BiomeMutator.java | 25 ++++++ .../addons/biome/pipeline/api/Stage.java | 8 ++ .../config/BiomePipelineTemplate.java | 41 +++++++++ .../pipeline/config/BiomeProviderLoader.java | 18 ++++ .../config/BiomeProviderTemplate.java | 22 +++++ .../pipeline/config/NoiseSourceTemplate.java | 24 +++++ .../biome/pipeline/config/SourceTemplate.java | 10 +++ .../pipeline/config/stage/StageTemplate.java | 14 +++ .../stage/expander/ExpanderStageTemplate.java | 14 +++ .../mutator/BorderListMutatorTemplate.java | 35 ++++++++ .../stage/mutator/BorderMutatorTemplate.java | 29 +++++++ .../mutator/ReplaceListMutatorTemplate.java | 31 +++++++ .../stage/mutator/ReplaceMutatorTemplate.java | 26 ++++++ .../stage/mutator/SmoothMutatorTemplate.java | 14 +++ .../pipeline/expand/FractalExpander.java | 20 +++++ .../pipeline/mutator/BorderListMutator.java | 49 +++++++++++ .../biome/pipeline/mutator/BorderMutator.java | 40 +++++++++ .../pipeline/mutator/ReplaceListMutator.java | 38 ++++++++ .../pipeline/mutator/ReplaceMutator.java | 28 ++++++ .../biome/pipeline/mutator/SmoothMutator.java | 39 +++++++++ .../biome/pipeline/source/BiomeSource.java | 8 ++ .../biome/pipeline/source/NoiseSource.java | 21 +++++ .../biome/pipeline/stages/ExpanderStage.java | 28 ++++++ .../biome/pipeline/stages/MutatorStage.java | 33 +++++++ 32 files changed, 958 insertions(+) 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/BiomePipelineProvider.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.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/BiomeMutator.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.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/BiomeProviderLoader.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/NoiseSourceTemplate.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/NoiseSource.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 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..7d82dc72f --- /dev/null +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -0,0 +1,2 @@ +dependencies { +} 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..b00939095 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -0,0 +1,87 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.util.vector.Vector2; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public class BiomeHolderImpl implements BiomeHolder { + private final Vector2 origin; + private final int width; + private final int offset; + private TerraBiome[][] biomes; + + public BiomeHolderImpl(int width, Vector2 origin) { + width += 4; + this.width = width; + biomes = new TerraBiome[width][width]; + this.origin = origin; + this.offset = 2; + } + + private BiomeHolderImpl(TerraBiome[][] biomes, Vector2 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) { + TerraBiome[][] old = biomes; + int newWidth = width * 2 - 1; + + biomes = new TerraBiome[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 TerraBiome getBiome(int x, int z) { + x += offset; + z += offset; + return getBiomeRaw(x, z); + } + + @Override + public TerraBiome 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..a9c013fbc --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -0,0 +1,67 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import java.util.ArrayList; +import java.util.List; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.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, new Vector2(x * (init - 1), z * (init - 1))); + holder.fill(source, seed); + for(Stage stage : stages) holder = stage.apply(holder, seed); + return holder; + } + + 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..6b32bd6f9 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -0,0 +1,71 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; +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.api.Platform; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; +import com.dfsek.terra.api.event.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.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +@Addon("biome-provider-pipeline") +@Author("Terra") +@Version("1.0.0") +public class BiomePipelineAddon extends TerraAddon { + + 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; + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(platform)); + }) + .then(event -> { + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( + SOURCE_REGISTRY_KEY); + sourceRegistry.register("NOISE", NoiseSourceTemplate::new); + }) + .then(event -> { + CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); + stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); + stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); + stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); + stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); + stageRegistry.register("BORDER", BorderMutatorTemplate::new); + stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); + }) + .failThrough(); + } +} 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..64fbeed18 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -0,0 +1,84 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import net.jafama.FastMath; +import org.jetbrains.annotations.NotNull; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.world.biome.TerraBiome; +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; + + public BiomePipelineProvider(BiomePipeline pipeline, Platform platform, int resolution, NoiseSampler mutator, double noiseAmp) { + this.resolution = resolution; + this.mutator = mutator; + this.noiseAmp = noiseAmp; + holderCache = CacheBuilder.newBuilder() + .maximumSize(platform == null ? 32 : platform.getTerraConfig().getProviderCache()) + .build( + new CacheLoader<>() { + @Override + public BiomeHolder load(@NotNull SeededVector key) { + return pipeline.getBiomes(key.x, key.z, key.seed); + } + } + ); + this.pipeline = pipeline; + } + + @Override + public TerraBiome getBiome(int x, int z, long seed) { + x += mutator.getNoiseSeeded(seed + 1, x, z) * noiseAmp; + z += mutator.getNoiseSeeded(seed + 2, x, z) * noiseAmp; + + + x = FastMath.floorToInt(FastMath.floorDiv(x, resolution)); + + z = FastMath.floorToInt(FastMath.floorDiv(z, resolution)); + + int fdX = FastMath.floorDiv(x, pipeline.getSize()); + int fdZ = FastMath.floorDiv(z, pipeline.getSize()); + return holderCache.getUnchecked(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), + z - fdZ * pipeline.getSize()); + } + + private static final class SeededVector { + private final int x; + private final int z; + private final long seed; + + private SeededVector(int x, int z, long seed) { + this.x = x; + this.z = z; + this.seed = seed; + } + + @Override + public int hashCode() { + int result = 0; + result = 31 * result + ((int) (seed ^ (seed >>> 32))); + result = 31 * result + x; + result = 31 * result + z; + return result; + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof SeededVector)) return false; + SeededVector that = (SeededVector) obj; + + return this.seed == that.seed && this.x == that.x && this.z == that.z; + } + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java new file mode 100644 index 000000000..462f8ebec --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public interface BiomeExpander { + TerraBiome getBetween(double x, double z, long seed, TerraBiome... others); +} 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..bf88c46e2 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public interface BiomeHolder { + BiomeHolder expand(BiomeExpander expander, long seed); + + void mutate(BiomeMutator mutator, long seed); + + void fill(BiomeSource source, long seed); + + TerraBiome getBiome(int x, int z); + + TerraBiome getBiomeRaw(int x, int z); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java new file mode 100644 index 000000000..fab417815 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public interface BiomeMutator { + TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed); + + 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 TerraBiome 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/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..af00308c3 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +public interface Stage { + BiomeHolder apply(BiomeHolder in, long seed); + + boolean isExpansion(); + +} 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..84548fbef --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -0,0 +1,41 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.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; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.Platform; +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 { + private final Platform platform; + @Value("pipeline.initial-size") + @Default + private @Meta int initialSize = 2; + + @Value("pipeline.stages") + private @Meta List<@Meta Stage> stages; + + @Value("pipeline.source") + private @Meta BiomeSource source; + + public BiomePipelineTemplate(Platform platform) { + this.platform = platform; + } + + @Override + public BiomeProvider get() { + BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); + stages.forEach(biomePipelineBuilder::addStage); + BiomePipeline pipeline = biomePipelineBuilder.build(source); + return new BiomePipelineProvider(pipeline, platform, resolution, blend, blendAmp); + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java new file mode 100644 index 000000000..a254082ca --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.AnnotatedType; + +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class BiomeProviderLoader implements TypeLoader { + @Override + public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + return loader.loadType(BiomePipelineProvider.class, c); // TODO: actually implement this lol + } +} 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..c1aa496cb --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.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 + protected @Meta int resolution = 1; + @Value("blend.noise") + @Default + protected @Meta NoiseSampler blend = NoiseSampler.zero(); + @Value("blend.amplitude") + @Default + protected @Meta double blendAmp = 0d; +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java new file mode 100644 index 000000000..627146800 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public class NoiseSourceTemplate extends SourceTemplate { + @Value("noise") + private @Meta NoiseSampler noise; + + @Value("biomes") + private @Meta ProbabilityCollection<@Meta TerraBiome> biomes; + + @Override + public BiomeSource get() { + return new NoiseSource(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..831ca3d88 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +import com.dfsek.tectonic.loading.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..4b491e482 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -0,0 +1,14 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; + + +public abstract class StageTemplate implements ObjectTemplate { + @Value("noise") + 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..ea74a303a --- /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,14 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; + +import com.dfsek.terra.addons.biome.pipeline.api.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..136243bc2 --- /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,35 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.annotations.Value; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.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; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +@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 TerraBiome> defaultTo; + + @Value("replace") + private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> 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..6632bf6bb --- /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,29 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.api.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; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +@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 TerraBiome> 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..5a21ec95b --- /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,31 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.annotations.Value; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.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; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +@SuppressWarnings("unused") +public class ReplaceListMutatorTemplate extends StageTemplate { + @Value("default-from") + private @Meta String defaultFrom; + + @Value("default-to") + private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; + + @Value("to") + private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> 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..6dd7196c2 --- /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,26 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.tectonic.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.api.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; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +@SuppressWarnings("unused") +public class ReplaceMutatorTemplate extends StageTemplate { + @Value("from") + private @Meta String from; + + @Value("to") + private @Meta ProbabilityCollection<@Meta TerraBiome> 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..400779433 --- /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,14 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.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..39050c873 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.biome.pipeline.expand; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public class FractalExpander implements BiomeExpander { + private final NoiseSampler sampler; + + public FractalExpander(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public TerraBiome getBetween(double x, double z, long seed, TerraBiome... others) { + return others[MathUtil.normalizeIndex(sampler.getNoiseSeeded(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..ff8570001 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -0,0 +1,49 @@ +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +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 TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { + TerraBiome 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; + TerraBiome current = viewPoint.getBiome(xi, zi); + if(current == null) continue; + if(current.getTags().contains(border)) { + if(replace.containsKey(origin)) { + TerraBiome biome = replace.get(origin).get(noiseSampler, x, z, seed); + return biome == null ? origin : biome; + } + TerraBiome biome = replaceDefault.get(noiseSampler, x, z, seed); + return biome == null ? origin : biome; + } + } + } + } + return origin; + } +} 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..6bd5c39c8 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +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 TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { + TerraBiome 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; + TerraBiome current = viewPoint.getBiome(xi, zi); + if(current == null) continue; + if(current.getTags().contains(border)) { + TerraBiome biome = replace.get(noiseSampler, x, z, seed); + return biome == null ? origin : biome; + } + } + } + } + return origin; + } +} 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..4712d41a7 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.Map; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +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 TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { + TerraBiome center = viewPoint.getBiome(0, 0); + if(replace.containsKey(center)) { + TerraBiome biome = replace.get(center).get(sampler, x, z, seed); + return biome == null ? viewPoint.getBiome(0, 0) : biome; + } + if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { + TerraBiome biome = replaceDefault.get(sampler, x, z, seed); + return biome == null ? viewPoint.getBiome(0, 0) : biome; + } + return center; + } +} 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..df77f796d --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +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 TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { + if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { + TerraBiome biome = replace.get(sampler, x, z, seed); + return biome == null ? viewPoint.getBiome(0, 0) : biome; + } + return viewPoint.getBiome(0, 0); + } +} 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..3ac06370c --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.biome.pipeline.mutator; + +import java.util.Objects; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public class SmoothMutator implements BiomeMutator { + + private final NoiseSampler sampler; + + public SmoothMutator(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { + TerraBiome top = viewPoint.getBiome(1, 0); + TerraBiome bottom = viewPoint.getBiome(-1, 0); + TerraBiome left = viewPoint.getBiome(0, 1); + TerraBiome 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.getNoiseSeeded(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..694a820cf --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.addons.biome.pipeline.source; + +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public interface BiomeSource { + TerraBiome getBiome(double x, double z, long seed); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java new file mode 100644 index 000000000..d7846a917 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.biome.pipeline.source; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.TerraBiome; + + +public class NoiseSource implements BiomeSource { + private final ProbabilityCollection biomes; + private final NoiseSampler sampler; + + public NoiseSource(ProbabilityCollection biomes, NoiseSampler sampler) { + this.biomes = biomes; + this.sampler = sampler; + } + + @Override + public TerraBiome getBiome(double x, double z, long seed) { + return biomes.get(sampler, x, z, seed); + } +} 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..6fe1eab4e --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.biome.pipeline.stages; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; + + +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; + } + + public enum Type { + FRACTAL + } +} 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..e1b42fb3c --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -0,0 +1,33 @@ +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.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; + + +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; + } + + public enum Type { + REPLACE, + REPLACE_LIST, + BORDER, + BORDER_LIST, + SMOOTH + } +} From a3aa6d49cf42552d06f799ad7764c1e669066bb3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 10:20:04 -0700 Subject: [PATCH 2/7] create addon manifests --- .../src/main/resources/terra.addon.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml 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..59524b58a --- /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: 0.1.0 +entrypoints: + - "com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon" +website: + issues: https://github.com/PolyhedralDev/Terra-biome-provider-pipeline/issues + source: https://github.com/PolyhedralDev/Terra-biome-provider-pipeline + docs: https://github.com/PolyhedralDev/Terra/wiki +license: GNU LGPL v3.0 \ No newline at end of file From ce5e691851c47211ecd49d0414d0b3b9086ebf7a Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 12:20:17 -0700 Subject: [PATCH 3/7] depend on manifest addons in core addon modules --- common/addons/biome-provider-pipeline/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 7d82dc72f..147905b20 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -1,2 +1,3 @@ dependencies { + "shadedApi"(project(":common:addons:manifest-addon-loader")) } From af1c04ebdc0c47bac92d149a939b4a6cd3d28974 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 12:39:23 -0700 Subject: [PATCH 4/7] create addon manifests --- .../addons/biome/pipeline/BiomePipelineAddon.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 6b32bd6f9..ce949fc12 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 @@ -14,7 +14,9 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMut 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.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -27,10 +29,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -@Addon("biome-provider-pipeline") -@Author("Terra") -@Version("1.0.0") -public class BiomePipelineAddon extends TerraAddon { +public class BiomePipelineAddon implements AddonInitializer { public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { }; @@ -42,11 +41,14 @@ public class BiomePipelineAddon extends TerraAddon { @Inject private Platform platform; + @Inject + private BaseAddon addon; + @Override public void initialize() { platform.getEventManager() .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) + .register(addon, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( PROVIDER_REGISTRY_KEY); From 20992e4334dd95b196f4946ea92a4ce0d6ade11e Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 16:28:38 -0700 Subject: [PATCH 5/7] format --- .../biome/pipeline/BiomePipelineAddon.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) 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 ce949fc12..f0ac17b37 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 @@ -17,10 +17,6 @@ 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.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; @@ -50,24 +46,25 @@ public class BiomePipelineAddon implements AddonInitializer { .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPreLoadEvent.class) .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(platform)); - }) + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(platform)); + }) .then(event -> { - CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( - SOURCE_REGISTRY_KEY); - sourceRegistry.register("NOISE", NoiseSourceTemplate::new); - }) + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( + SOURCE_REGISTRY_KEY); + sourceRegistry.register("NOISE", NoiseSourceTemplate::new); + }) .then(event -> { - CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); - stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); - stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); - stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); - stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); - stageRegistry.register("BORDER", BorderMutatorTemplate::new); - stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); - }) + CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry( + STAGE_REGISTRY_KEY); + stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); + stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); + stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); + stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); + stageRegistry.register("BORDER", BorderMutatorTemplate::new); + stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); + }) .failThrough(); } } From 68e7631a3b2e4556f3d63df24b5c923b97ed6716 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 19 Nov 2021 08:47:15 -0700 Subject: [PATCH 6/7] relicense addons under MIT license --- common/addons/biome-provider-pipeline/LICENSE | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 common/addons/biome-provider-pipeline/LICENSE 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 From 3cec0aa9ce758af06a567b9ab8c0480fb69247ee Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 19 Nov 2021 15:42:24 -0700 Subject: [PATCH 7/7] add license headers --- .../dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java | 7 +++++++ .../dfsek/terra/addons/biome/pipeline/BiomePipeline.java | 7 +++++++ .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 7 +++++++ .../terra/addons/biome/pipeline/BiomePipelineProvider.java | 7 +++++++ .../terra/addons/biome/pipeline/api/BiomeExpander.java | 7 +++++++ .../dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java | 7 +++++++ .../terra/addons/biome/pipeline/api/BiomeMutator.java | 7 +++++++ .../com/dfsek/terra/addons/biome/pipeline/api/Stage.java | 7 +++++++ .../biome/pipeline/config/BiomePipelineTemplate.java | 7 +++++++ .../addons/biome/pipeline/config/BiomeProviderLoader.java | 7 +++++++ .../biome/pipeline/config/BiomeProviderTemplate.java | 7 +++++++ .../addons/biome/pipeline/config/NoiseSourceTemplate.java | 7 +++++++ .../terra/addons/biome/pipeline/config/SourceTemplate.java | 7 +++++++ .../addons/biome/pipeline/config/stage/StageTemplate.java | 7 +++++++ .../config/stage/expander/ExpanderStageTemplate.java | 7 +++++++ .../config/stage/mutator/BorderListMutatorTemplate.java | 7 +++++++ .../config/stage/mutator/BorderMutatorTemplate.java | 7 +++++++ .../config/stage/mutator/ReplaceListMutatorTemplate.java | 7 +++++++ .../config/stage/mutator/ReplaceMutatorTemplate.java | 7 +++++++ .../config/stage/mutator/SmoothMutatorTemplate.java | 7 +++++++ .../addons/biome/pipeline/expand/FractalExpander.java | 7 +++++++ .../addons/biome/pipeline/mutator/BorderListMutator.java | 7 +++++++ .../terra/addons/biome/pipeline/mutator/BorderMutator.java | 7 +++++++ .../addons/biome/pipeline/mutator/ReplaceListMutator.java | 7 +++++++ .../addons/biome/pipeline/mutator/ReplaceMutator.java | 7 +++++++ .../terra/addons/biome/pipeline/mutator/SmoothMutator.java | 7 +++++++ .../terra/addons/biome/pipeline/source/BiomeSource.java | 7 +++++++ .../terra/addons/biome/pipeline/source/NoiseSource.java | 7 +++++++ .../terra/addons/biome/pipeline/stages/ExpanderStage.java | 7 +++++++ .../terra/addons/biome/pipeline/stages/MutatorStage.java | 7 +++++++ 30 files changed, 210 insertions(+) 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 index b00939095..cfa1ad884 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.BiomeExpander; 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 index a9c013fbc..36192f267 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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; 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 f0ac17b37..aa3de0993 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 @@ -1,3 +1,10 @@ +/* + * 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.loading.object.ObjectTemplate; 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 index 64fbeed18..564ed35c5 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.google.common.cache.CacheBuilder; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java index 462f8ebec..ac2be431e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java @@ -1,3 +1,10 @@ +/* + * 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.api.world.biome.TerraBiome; 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 index bf88c46e2..d81e8f736 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.source.BiomeSource; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java index fab417815..5b0f3260f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java @@ -1,3 +1,10 @@ +/* + * 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.api.world.biome.TerraBiome; 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 index af00308c3..0e3d9eba5 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/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -1,3 +1,10 @@ +/* + * 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; public interface Stage { 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 84548fbef..d190be7a9 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Default; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index a254082ca..524c54d31 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -1,3 +1,10 @@ +/* + * 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.exception.LoadException; 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 index c1aa496cb..077bf160b 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Default; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 627146800..ba3b6dd09 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 831ca3d88..741de6a4c 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 @@ -1,3 +1,10 @@ +/* + * 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.loading.object.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 4b491e482..0d7d9e666 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 ea74a303a..dffaa4fb7 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 @@ -1,3 +1,10 @@ +/* + * 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; 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 136243bc2..5b1a95bbe 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 6632bf6bb..9cc08137a 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 5a21ec95b..3a340dd7e 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 6dd7196c2..0d476a5db 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 @@ -1,3 +1,10 @@ +/* + * 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.annotations.Value; 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 400779433..777244374 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 @@ -1,3 +1,10 @@ +/* + * 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; 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 index 39050c873..a6b5f677e 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.BiomeExpander; 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 index ff8570001..c2d966f04 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.Map; 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 index 6bd5c39c8..9035e7364 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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 com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; 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 index 4712d41a7..4cf56f313 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/mutator/ReplaceListMutator.java @@ -1,3 +1,10 @@ +/* + * 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.Map; 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 index df77f796d..5ea4de791 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/mutator/ReplaceMutator.java @@ -1,3 +1,10 @@ +/* + * 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 com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; 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 index 3ac06370c..09b978048 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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; 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 index 694a820cf..032c8be5c 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.api.world.biome.TerraBiome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java index d7846a917..3f3fdb280 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java @@ -1,3 +1,10 @@ +/* + * 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.api.noise.NoiseSampler; 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 index 6fe1eab4e..008c88d0a 100644 --- 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 @@ -1,3 +1,10 @@ +/* + * 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.BiomeExpander; 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 e1b42fb3c..5bfe6772a 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 @@ -1,3 +1,10 @@ +/* + * 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;