implement biome pipeline addon

This commit is contained in:
dfsek
2021-07-06 21:50:52 -07:00
parent 9c3b6ea8bd
commit 5c4ef3f23b
2 changed files with 66 additions and 0 deletions

View File

@@ -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());
}
}

View File

@@ -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<BiomeProviderBuilder> {
@Override
public BiomeProviderBuilder load(Type t, Object c, ConfigLoader loader) throws LoadException {
return loader.loadClass(BiomePipelineTemplate.class, c); // TODO: actually implement this lol
}
}