From 40cd6607b20162770e9505e843006037feecc207 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:05:04 -0700 Subject: [PATCH] generify biome provider --- .../terra/addons/biome/image/ImageBiomeProvider.java | 4 ++-- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 8 ++++++-- .../biome/pipeline/config/BiomeProviderBuilderLoader.java | 7 ++++--- .../biome/pipeline/config/BiomeProviderTemplate.java | 7 ++++--- .../terra/addons/biome/single/SingleBiomeProvider.java | 4 ++-- .../addons/biome/single/SingleBiomeProviderTemplate.java | 6 +++--- .../main/java/com/dfsek/terra/api/config/ConfigPack.java | 5 +++-- .../dfsek/terra/api/util/seeded/SeededBiomeProvider.java | 6 ------ .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 7 ++++--- .../dfsek/terra/config/pack/ConfigPackPostTemplate.java | 7 ++++--- 10 files changed, 32 insertions(+), 29 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 49b550be5..ea715500d 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome.image; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class ImageBiomeProvider implements BiomeProvider, SeededBiomeProvider { // This provider does not need a seed, so it is its own builder. +public class ImageBiomeProvider implements BiomeProvider, SeededBuilder { // This provider does not need a seed, so it is its own builder. private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; 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 3eab49bf5..bf4b156e4 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 @@ -21,8 +21,10 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.util.seeded.SeededBiomeSource; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.Type; @@ -33,6 +35,8 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; + public static final TypeToken> BIOME_PROVIDER_BUILDER_TOKEN = new TypeToken<>(){}; + @Override public void initialize() { main.getEventManager().registerListener(this, this); @@ -51,6 +55,6 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(SeededBiomeProvider.class, new BiomeProviderBuilderLoader()); + .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), 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 index f2f1b193e..41f3f7f1c 100644 --- 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 @@ -3,13 +3,14 @@ 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.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; -public class BiomeProviderBuilderLoader implements TypeLoader { +public class BiomeProviderBuilderLoader implements TypeLoader> { @Override - public SeededBiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return loader.loadType(BiomePipelineTemplate.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 index 8444d907c..126347c8e 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 @@ -3,10 +3,11 @@ 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.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public abstract class BiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { +public abstract class BiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { @Value("resolution") @Default protected int resolution = 1; @@ -18,7 +19,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate get() { return this; } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index b77500fd0..47ba7c052 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.single; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public class SingleBiomeProvider implements BiomeProvider, SeededBiomeProvider { +public class SingleBiomeProvider implements BiomeProvider, SeededBuilder { private final TerraBiome biome; public SingleBiomeProvider(TerraBiome biome) { diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 1a29a2a9c..3b6a9b2ba 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,11 +2,11 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public class SingleBiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { +public class SingleBiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { @Value("biome") private SeededTerraBiome biome; @@ -16,7 +16,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate get() { return this; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 4353747d0..1d6c029f5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -7,8 +7,9 @@ import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.TypeToken; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -18,7 +19,7 @@ import java.util.Map; import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { - SeededBiomeProvider getBiomeProviderBuilder(); + SeededBuilder getBiomeProviderBuilder(); CheckedRegistry getOrCreateRegistry(Type clazz); default CheckedRegistry getOrCreateRegistry(Class clazz) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java deleted file mode 100644 index fff86cfcb..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - -public interface SeededBiomeProvider extends SeededBuilder { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index abb71df02..98a8a58ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,8 +30,9 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.config.dummy.DummyWorld; @@ -83,7 +84,7 @@ public class ConfigPackImpl implements ConfigPack { private final Set addons; - private final SeededBiomeProvider seededBiomeProvider; + private final SeededBuilder seededBiomeProvider; private final Map, CheckedRegistry>> registryMap = new HashMap<>(); @@ -294,7 +295,7 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public SeededBiomeProvider getBiomeProviderBuilder() { + public SeededBuilder getBiomeProviderBuilder() { return seededBiomeProvider; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index 8d4c7bee9..eea9d85ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,13 +2,14 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") - private SeededBiomeProvider providerBuilder; + private SeededBuilder providerBuilder; - public SeededBiomeProvider getProviderBuilder() { + public SeededBuilder getProviderBuilder() { return providerBuilder; } }