From 11044b658977a27fb5084d71e783cbd04f4adc55 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 16 Jul 2022 16:28:57 +1000 Subject: [PATCH] Store palettes and predicates in registries --- .../LayeredChunkGeneratorAddon.java | 64 +++++++++++-------- .../{layer/palette => api}/LayerPalette.java | 2 +- .../predicate => api}/LayerPredicate.java | 2 +- .../{layer/resolve => api}/LayerResolver.java | 3 +- .../LayerPalettePackConfigTemplate.java | 4 +- .../LayerPredicatePackConfigTemplate.java | 9 ++- .../LayerResolverPackConfigTemplate.java | 4 +- .../palette/BlockLayerPaletteTemplate.java | 2 +- .../BelowLayerPredicateTemplate.java | 2 +- .../RangeLayerPredicateTemplate.java | 2 +- .../SamplerLayerPredicateTemplate.java | 2 +- .../resolve/PaletteLayerResolverTemplate.java | 28 ++------ .../PredicateLayerResolverTemplate.java | 28 ++------ .../generation/LayeredChunkGenerator.java | 4 +- .../layer/palette/BlockLayerPalette.java | 1 + .../layer/predicate/BelowLayerPredicate.java | 1 + .../layer/predicate/RangeLayerPredicate.java | 1 + .../predicate/SamplerLayerPredicate.java | 1 + .../layer/resolve/PaletteLayerResolver.java | 3 +- .../layer/resolve/PredicateLayerResolver.java | 5 +- .../chunkgenerator/util/InstanceWrapper.java | 12 ++++ 21 files changed, 88 insertions(+), 92 deletions(-) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/{layer/palette => api}/LayerPalette.java (78%) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/{layer/predicate => api}/LayerPredicate.java (70%) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/{layer/resolve => api}/LayerResolver.java (53%) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/{palette => pack}/LayerPalettePackConfigTemplate.java (77%) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/{predicate => pack}/LayerPredicatePackConfigTemplate.java (56%) rename common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/{resolve => pack}/LayerResolverPackConfigTemplate.java (75%) create mode 100644 common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/util/InstanceWrapper.java diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/LayeredChunkGeneratorAddon.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/LayeredChunkGeneratorAddon.java index 4b03f5121..3062d2027 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/LayeredChunkGeneratorAddon.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/LayeredChunkGeneratorAddon.java @@ -7,18 +7,19 @@ import org.slf4j.LoggerFactory; import java.util.function.Supplier; import com.dfsek.terra.addons.chunkgenerator.config.palette.BlockLayerPaletteTemplate; -import com.dfsek.terra.addons.chunkgenerator.config.palette.LayerPalettePackConfigTemplate; +import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerPalettePackConfigTemplate; import com.dfsek.terra.addons.chunkgenerator.config.predicate.BelowLayerPredicateTemplate; -import com.dfsek.terra.addons.chunkgenerator.config.predicate.LayerPredicatePackConfigTemplate; +import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerPredicatePackConfigTemplate; import com.dfsek.terra.addons.chunkgenerator.config.predicate.RangeLayerPredicateTemplate; import com.dfsek.terra.addons.chunkgenerator.config.predicate.SamplerLayerPredicateTemplate; -import com.dfsek.terra.addons.chunkgenerator.config.resolve.LayerResolverPackConfigTemplate; +import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerResolverPackConfigTemplate; import com.dfsek.terra.addons.chunkgenerator.config.resolve.PaletteLayerResolverTemplate; import com.dfsek.terra.addons.chunkgenerator.config.resolve.PredicateLayerResolverTemplate; import com.dfsek.terra.addons.chunkgenerator.generation.LayeredChunkGenerator; -import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette; -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; -import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; +import com.dfsek.terra.addons.chunkgenerator.util.InstanceWrapper; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -34,13 +35,19 @@ public class LayeredChunkGeneratorAddon implements AddonInitializer { private static final Logger logger = LoggerFactory.getLogger(LayeredChunkGenerator.class); - public static final TypeKey>> LAYER_PALETTE_TOKEN = new TypeKey<>() { + public static final TypeKey>> LAYER_PALETTE_TYPE_TOKEN = new TypeKey<>() { }; - public static final TypeKey>> LAYER_RESOLVER_TOKEN = new TypeKey<>() { + public static final TypeKey> LAYER_PALETTE_TOKEN = new TypeKey<>() { }; - public static final TypeKey>> LAYER_PREDICATE_TOKEN = new TypeKey<>() { + public static final TypeKey>> LAYER_PREDICATE_TYPE_TOKEN = new TypeKey<>() { + }; + + public static final TypeKey> LAYER_PREDICATE_TOKEN = new TypeKey<>() { + }; + + public static final TypeKey>> LAYER_RESOLVER_TYPE_TOKEN = new TypeKey<>() { }; @Inject @@ -51,38 +58,39 @@ public class LayeredChunkGeneratorAddon implements AddonInitializer { @Override public void initialize() { - - LayerPalettePackConfigTemplate paletteConfig = new LayerPalettePackConfigTemplate(); - LayerPredicatePackConfigTemplate predicateConfig = new LayerPredicatePackConfigTemplate(); - LayerResolverPackConfigTemplate resolverConfig = new LayerResolverPackConfigTemplate(); platform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPreLoadEvent.class) .priority(1000) .then(event -> { - CheckedRegistry>> paletteRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TOKEN); - paletteRegistry.register(addon.key("BLOCK"), BlockLayerPaletteTemplate::new); - event.loadTemplate(paletteConfig); + CheckedRegistry>> paletteTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TYPE_TOKEN); + paletteTypeRegistry.register(addon.key("BLOCK"), BlockLayerPaletteTemplate::new); + CheckedRegistry> paletteRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TOKEN); + event.loadTemplate(new LayerPalettePackConfigTemplate()).getPalettes().forEach((key, palette) -> { + paletteRegistry.register(addon.key(key), new InstanceWrapper<>(palette)); + }); }) .then(event -> { - CheckedRegistry>> predicateRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TOKEN); - predicateRegistry.register(addon.key("BELOW"), BelowLayerPredicateTemplate::new); - predicateRegistry.register(addon.key("RANGE"), RangeLayerPredicateTemplate::new); - predicateRegistry.register(addon.key("SAMPLER"), SamplerLayerPredicateTemplate::new); - event.loadTemplate(predicateConfig); - }) - .then(event -> { - CheckedRegistry>> resolverRegistry = event.getPack().getOrCreateRegistry(LAYER_RESOLVER_TOKEN); - resolverRegistry.register(addon.key("TEST_PREDICATE"), () -> new PredicateLayerResolverTemplate(predicateConfig.getPredicates())); - resolverRegistry.register(addon.key("USE_PALETTE"), () -> new PaletteLayerResolverTemplate(paletteConfig.getPalettes())); - event.loadTemplate(resolverConfig); + CheckedRegistry>> predicateTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TYPE_TOKEN); + predicateTypeRegistry.register(addon.key("BELOW"), BelowLayerPredicateTemplate::new); + predicateTypeRegistry.register(addon.key("RANGE"), RangeLayerPredicateTemplate::new); + predicateTypeRegistry.register(addon.key("SAMPLER"), SamplerLayerPredicateTemplate::new); + CheckedRegistry> predicateRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TOKEN); + event.loadTemplate(new LayerPredicatePackConfigTemplate()).getPredicates().forEach((key, predicate) -> { + predicateRegistry.register(addon.key(key), new InstanceWrapper<>(predicate)); + }); }) .then(event -> { + CheckedRegistry>> resolverTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_RESOLVER_TYPE_TOKEN); + resolverTypeRegistry.register(addon.key("TEST_PREDICATE"), PredicateLayerResolverTemplate::new); + resolverTypeRegistry.register(addon.key("USE_PALETTE"), PaletteLayerResolverTemplate::new); + LayerResolver resolver = event.loadTemplate(new LayerResolverPackConfigTemplate()).getResolver(); + event.getPack() .getOrCreateRegistry(ChunkGeneratorProvider.class) .register(addon.key("LAYERED"), - pack -> new LayeredChunkGenerator(platform, resolverConfig.getResolver())); + pack -> new LayeredChunkGenerator(platform, resolver)); }) .failThrough(); } diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/palette/LayerPalette.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPalette.java similarity index 78% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/palette/LayerPalette.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPalette.java index c75b0491d..f5e632165 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/palette/LayerPalette.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPalette.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.chunkgenerator.layer.palette; +package com.dfsek.terra.addons.chunkgenerator.api; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.chunk.generation.util.Palette; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/predicate/LayerPredicate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPredicate.java similarity index 70% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/predicate/LayerPredicate.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPredicate.java index 7e80604d0..bed38a3b0 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/predicate/LayerPredicate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerPredicate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.chunkgenerator.layer.predicate; +package com.dfsek.terra.addons.chunkgenerator.api; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/resolve/LayerResolver.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerResolver.java similarity index 53% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/resolve/LayerResolver.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerResolver.java index ed7d1532e..def10d8ec 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/layer/resolve/LayerResolver.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/api/LayerResolver.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.chunkgenerator.layer.resolve; +package com.dfsek.terra.addons.chunkgenerator.api; -import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette; import com.dfsek.terra.api.world.biome.Biome; public interface LayerResolver { diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/LayerPalettePackConfigTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPalettePackConfigTemplate.java similarity index 77% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/LayerPalettePackConfigTemplate.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPalettePackConfigTemplate.java index e68a0628d..1fed5f9e7 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/LayerPalettePackConfigTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPalettePackConfigTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.chunkgenerator.config.palette; +package com.dfsek.terra.addons.chunkgenerator.config.pack; import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; import com.dfsek.terra.api.config.meta.Meta; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/LayerPredicatePackConfigTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPredicatePackConfigTemplate.java similarity index 56% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/LayerPredicatePackConfigTemplate.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPredicatePackConfigTemplate.java index fbddab2c0..ca7d47254 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/LayerPredicatePackConfigTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerPredicatePackConfigTemplate.java @@ -1,18 +1,21 @@ -package com.dfsek.terra.addons.chunkgenerator.config.predicate; +package com.dfsek.terra.addons.chunkgenerator.config.pack; import com.dfsek.tectonic.api.config.template.ConfigTemplate; +import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; +import java.util.LinkedHashMap; import java.util.Map; -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.api.config.meta.Meta; public class LayerPredicatePackConfigTemplate implements ConfigTemplate { @Value("generation.predicates") - private @Meta Map predicates; + @Default + private @Meta Map predicates = new LinkedHashMap<>(); public Map getPredicates() { return predicates; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/LayerResolverPackConfigTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerResolverPackConfigTemplate.java similarity index 75% rename from common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/LayerResolverPackConfigTemplate.java rename to common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerResolverPackConfigTemplate.java index 8f848a27a..71e8363af 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/LayerResolverPackConfigTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/pack/LayerResolverPackConfigTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.chunkgenerator.config.resolve; +package com.dfsek.terra.addons.chunkgenerator.config.pack; import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver; +import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; import com.dfsek.terra.api.config.meta.Meta; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BlockLayerPaletteTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BlockLayerPaletteTemplate.java index f3afff5ea..d3fbfacb2 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BlockLayerPaletteTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BlockLayerPaletteTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.chunkgenerator.layer.palette.BlockLayerPalette; -import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/BelowLayerPredicateTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/BelowLayerPredicateTemplate.java index 9b0c41917..b6ec6d6c1 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/BelowLayerPredicateTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/BelowLayerPredicateTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.chunkgenerator.layer.predicate.BelowLayerPredicate; -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.api.config.meta.Meta; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/RangeLayerPredicateTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/RangeLayerPredicateTemplate.java index 309c5ba22..fec9f8a77 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/RangeLayerPredicateTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/RangeLayerPredicateTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.chunkgenerator.config.predicate; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.layer.predicate.RangeLayerPredicate; import com.dfsek.terra.api.util.Range; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/SamplerLayerPredicateTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/SamplerLayerPredicateTemplate.java index d47dd33ec..b784320a4 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/SamplerLayerPredicateTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/predicate/SamplerLayerPredicateTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.chunkgenerator.config.predicate; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.layer.predicate.SamplerLayerPredicate; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PaletteLayerResolverTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PaletteLayerResolverTemplate.java index 34955487d..53d7669d3 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PaletteLayerResolverTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PaletteLayerResolverTemplate.java @@ -1,37 +1,21 @@ package com.dfsek.terra.addons.chunkgenerator.config.resolve; -import com.dfsek.tectonic.api.config.template.ValidatedConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.tectonic.api.exception.ValidationException; - -import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette; -import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; +import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; import com.dfsek.terra.addons.chunkgenerator.layer.resolve.PaletteLayerResolver; - -import java.util.Map; +import com.dfsek.terra.addons.chunkgenerator.util.InstanceWrapper; -public class PaletteLayerResolverTemplate implements ObjectTemplate, ValidatedConfigTemplate { - - private final Map palettes; - - public PaletteLayerResolverTemplate(Map palettes) { - this.palettes = palettes; - } +public class PaletteLayerResolverTemplate implements ObjectTemplate { @Value("palette") - private String palette; + private InstanceWrapper palette; @Override public LayerResolver get() { - return new PaletteLayerResolver(palettes.get(palette)); - } - - @Override - public boolean validate() throws ValidationException { - if(!palettes.containsKey(palette)) throw new ValidationException("The palette " + palette + " does not exist!"); - return true; + return new PaletteLayerResolver(palette.get()); } } diff --git a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PredicateLayerResolverTemplate.java b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PredicateLayerResolverTemplate.java index 03a9c3346..b143a9c83 100644 --- a/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PredicateLayerResolverTemplate.java +++ b/common/addons/chunk-generator-layered/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/resolve/PredicateLayerResolverTemplate.java @@ -1,28 +1,19 @@ package com.dfsek.terra.addons.chunkgenerator.config.resolve; -import com.dfsek.tectonic.api.config.template.ValidatedConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.tectonic.api.exception.ValidationException; -import java.util.Map; - -import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate; -import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver; +import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; +import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; import com.dfsek.terra.addons.chunkgenerator.layer.resolve.PredicateLayerResolver; +import com.dfsek.terra.addons.chunkgenerator.util.InstanceWrapper; import com.dfsek.terra.api.config.meta.Meta; -public class PredicateLayerResolverTemplate implements ObjectTemplate, ValidatedConfigTemplate { - - private final Map predicates; - - public PredicateLayerResolverTemplate(Map predicates) { - this.predicates = predicates; - } +public class PredicateLayerResolverTemplate implements ObjectTemplate { @Value("if") - private @Meta String predicate; + private @Meta InstanceWrapper predicate; @Value("then") private @Meta LayerResolver trueResolver; @@ -30,15 +21,8 @@ public class PredicateLayerResolverTemplate implements ObjectTemplate(T instance) implements Supplier { + + @Override + public T get() { + return instance; + } +}