From 5c4ef3f23bee142d8a2f4eb033bbda3953698050 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 6 Jul 2021 21:50:52 -0700 Subject: [PATCH] implement biome pipeline addon --- .../biome/pipeline/BiomePipelineAddon.java | 51 +++++++++++++++++++ .../config/BiomeProviderBuilderLoader.java | 15 ++++++ 2 files changed, 66 insertions(+) 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/config/BiomeProviderBuilderLoader.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java new file mode 100644 index 000000000..849dbaae4 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -0,0 +1,51 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.SourceBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageBuilderLoader; +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.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; +import com.dfsek.terra.api.event.EventListener; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SourceSeeded; + +import java.lang.reflect.Type; + +@Addon("biome-pipeline") +@Author("Terra") +@Version("1.0.0") +public class BiomePipelineAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.applyLoader(SourceSeeded.class, new SourceBuilderLoader()) + .applyLoader(StageSeeded.class, new StageBuilderLoader()) + .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((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()); + } +} diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java new file mode 100644 index 000000000..2e95f8784 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -0,0 +1,15 @@ +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.api.util.seeded.BiomeProviderBuilder; + +import java.lang.reflect.Type; + +public class BiomeProviderBuilderLoader implements TypeLoader { + @Override + public BiomeProviderBuilder load(Type t, Object c, ConfigLoader loader) throws LoadException { + return loader.loadClass(BiomePipelineTemplate.class, c); // TODO: actually implement this lol + } +}