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 ef6ef1b31..c8312604b 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 @@ -12,6 +12,12 @@ 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.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; +import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.TerraPlugin; @@ -46,14 +52,14 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) - .applyLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) - .applyLoader(BorderMutatorTemplate.class, BorderMutatorTemplate::new) - .applyLoader(BorderListMutatorTemplate.class, BorderListMutatorTemplate::new) - .applyLoader(ReplaceListMutatorTemplate.class, ReplaceListMutatorTemplate::new) - .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) - .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) - .applyLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(RandomSource.class, NoiseSourceTemplate::new) + .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) + .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) + .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) + .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) + .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) + .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) + .applyLoader(StandardBiomeProvider.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()); } } 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 924d40ff6..b6afe08f9 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 @@ -3,6 +3,8 @@ 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 com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; @@ -10,6 +12,6 @@ import java.lang.reflect.AnnotatedType; public class BiomeProviderLoader implements TypeLoader { @Override public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadType(BiomePipelineTemplate.class, c).get(); // TODO: actually implement this lol + return loader.loadType(StandardBiomeProvider.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/SourceLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java index 2031486d7..83b40f880 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java @@ -3,6 +3,7 @@ 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 com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; @@ -17,7 +18,7 @@ public class SourceLoader implements TypeLoader { BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); if(type == BiomeSource.Type.NOISE) { - return loader.loadType(NoiseSourceTemplate.class, source).get(); + return loader.loadType(RandomSource.class, source); } throw new LoadException("No such loader type: " + type); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java index 8791c5090..6805f4fcb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java @@ -10,6 +10,11 @@ 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.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; @@ -35,20 +40,20 @@ public class StageLoader implements TypeLoader { if(entry.getKey().equals("expand")) { ExpanderStage.Type stageType = loader.loadType(ExpanderStage.Type.class, mutator.get("type")); if(stageType.equals(ExpanderStage.Type.FRACTAL)) { - return loader.loadType(ExpanderStageTemplate.class, mutator).get(); + return loader.loadType(ExpanderStage.class, mutator); } else throw new LoadException("No such expander \"" + stageType + "\""); } else if(entry.getKey().equals("mutate")) { switch(loader.loadType(MutatorStage.Type.class, mutator.get("type"))) { case SMOOTH: - return loader.loadType(SmoothMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(SmoothMutator.class, mutator)); case REPLACE: - return loader.loadType(ReplaceMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(ReplaceMutator.class, mutator)); case REPLACE_LIST: - return loader.loadType(ReplaceListMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(ReplaceListMutator.class, mutator)); case BORDER: - return loader.loadType(BorderMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(BorderMutator.class, mutator)); case BORDER_LIST: - return loader.loadType(BorderListMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(BorderListMutator.class, mutator)); default: throw new LoadException("No such mutator type \"" + mutator.get("type")); } 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 3f595953d..9ced2ae5a 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 @@ -24,7 +24,7 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { 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 82a12f596..3bf37de7d 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 @@ -18,7 +18,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { 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/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index 8084ee894..285b55c93 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -1,15 +1,15 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -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.stages.MutatorStage; +import com.dfsek.terra.api.noise.NoiseSampler; -public abstract class MutatorStageTemplate extends StageTemplate { - public abstract BiomeMutator getMutator(); +public abstract class MutatorStageTemplate implements ObjectTemplate { + @Value("noise") + protected NoiseSampler noise; @Override - public Stage get() { - return new MutatorStage(getMutator()); - } + public abstract BiomeMutator get(); } 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 1a450c8a0..07d60fb56 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 @@ -20,7 +20,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private Map> replace; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { 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 24cd6c5b1..7659a0478 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 @@ -15,7 +15,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { 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 c1eb81c45..20f98e993 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 @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new SmoothMutator(noise); } }