mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 14:50:56 +00:00
Store palettes and predicates in registries
This commit is contained in:
+36
-28
@@ -7,18 +7,19 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.palette.BlockLayerPaletteTemplate;
|
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.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.RangeLayerPredicateTemplate;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.predicate.SamplerLayerPredicateTemplate;
|
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.PaletteLayerResolverTemplate;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.resolve.PredicateLayerResolverTemplate;
|
import com.dfsek.terra.addons.chunkgenerator.config.resolve.PredicateLayerResolverTemplate;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.generation.LayeredChunkGenerator;
|
import com.dfsek.terra.addons.chunkgenerator.generation.LayeredChunkGenerator;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver;
|
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.addons.manifest.api.AddonInitializer;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
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);
|
private static final Logger logger = LoggerFactory.getLogger(LayeredChunkGenerator.class);
|
||||||
|
|
||||||
public static final TypeKey<Supplier<ObjectTemplate<LayerPalette>>> LAYER_PALETTE_TOKEN = new TypeKey<>() {
|
public static final TypeKey<Supplier<ObjectTemplate<LayerPalette>>> LAYER_PALETTE_TYPE_TOKEN = new TypeKey<>() {
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final TypeKey<Supplier<ObjectTemplate<LayerResolver>>> LAYER_RESOLVER_TOKEN = new TypeKey<>() {
|
public static final TypeKey<InstanceWrapper<LayerPalette>> LAYER_PALETTE_TOKEN = new TypeKey<>() {
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final TypeKey<Supplier<ObjectTemplate<LayerPredicate>>> LAYER_PREDICATE_TOKEN = new TypeKey<>() {
|
public static final TypeKey<Supplier<ObjectTemplate<LayerPredicate>>> LAYER_PREDICATE_TYPE_TOKEN = new TypeKey<>() {
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final TypeKey<InstanceWrapper<LayerPredicate>> LAYER_PREDICATE_TOKEN = new TypeKey<>() {
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final TypeKey<Supplier<ObjectTemplate<LayerResolver>>> LAYER_RESOLVER_TYPE_TOKEN = new TypeKey<>() {
|
||||||
};
|
};
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -51,38 +58,39 @@ public class LayeredChunkGeneratorAddon implements AddonInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
|
|
||||||
LayerPalettePackConfigTemplate paletteConfig = new LayerPalettePackConfigTemplate();
|
|
||||||
LayerPredicatePackConfigTemplate predicateConfig = new LayerPredicatePackConfigTemplate();
|
|
||||||
LayerResolverPackConfigTemplate resolverConfig = new LayerResolverPackConfigTemplate();
|
|
||||||
|
|
||||||
platform.getEventManager()
|
platform.getEventManager()
|
||||||
.getHandler(FunctionalEventHandler.class)
|
.getHandler(FunctionalEventHandler.class)
|
||||||
.register(addon, ConfigPackPreLoadEvent.class)
|
.register(addon, ConfigPackPreLoadEvent.class)
|
||||||
.priority(1000)
|
.priority(1000)
|
||||||
.then(event -> {
|
.then(event -> {
|
||||||
CheckedRegistry<Supplier<ObjectTemplate<LayerPalette>>> paletteRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TOKEN);
|
CheckedRegistry<Supplier<ObjectTemplate<LayerPalette>>> paletteTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TYPE_TOKEN);
|
||||||
paletteRegistry.register(addon.key("BLOCK"), BlockLayerPaletteTemplate::new);
|
paletteTypeRegistry.register(addon.key("BLOCK"), BlockLayerPaletteTemplate::new);
|
||||||
event.loadTemplate(paletteConfig);
|
CheckedRegistry<InstanceWrapper<LayerPalette>> 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 -> {
|
.then(event -> {
|
||||||
CheckedRegistry<Supplier<ObjectTemplate<LayerPredicate>>> predicateRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TOKEN);
|
CheckedRegistry<Supplier<ObjectTemplate<LayerPredicate>>> predicateTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TYPE_TOKEN);
|
||||||
predicateRegistry.register(addon.key("BELOW"), BelowLayerPredicateTemplate::new);
|
predicateTypeRegistry.register(addon.key("BELOW"), BelowLayerPredicateTemplate::new);
|
||||||
predicateRegistry.register(addon.key("RANGE"), RangeLayerPredicateTemplate::new);
|
predicateTypeRegistry.register(addon.key("RANGE"), RangeLayerPredicateTemplate::new);
|
||||||
predicateRegistry.register(addon.key("SAMPLER"), SamplerLayerPredicateTemplate::new);
|
predicateTypeRegistry.register(addon.key("SAMPLER"), SamplerLayerPredicateTemplate::new);
|
||||||
event.loadTemplate(predicateConfig);
|
CheckedRegistry<InstanceWrapper<LayerPredicate>> predicateRegistry = event.getPack().getOrCreateRegistry(LAYER_PREDICATE_TOKEN);
|
||||||
})
|
event.loadTemplate(new LayerPredicatePackConfigTemplate()).getPredicates().forEach((key, predicate) -> {
|
||||||
.then(event -> {
|
predicateRegistry.register(addon.key(key), new InstanceWrapper<>(predicate));
|
||||||
CheckedRegistry<Supplier<ObjectTemplate<LayerResolver>>> 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);
|
|
||||||
})
|
})
|
||||||
.then(event -> {
|
.then(event -> {
|
||||||
|
CheckedRegistry<Supplier<ObjectTemplate<LayerResolver>>> 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()
|
event.getPack()
|
||||||
.getOrCreateRegistry(ChunkGeneratorProvider.class)
|
.getOrCreateRegistry(ChunkGeneratorProvider.class)
|
||||||
.register(addon.key("LAYERED"),
|
.register(addon.key("LAYERED"),
|
||||||
pack -> new LayeredChunkGenerator(platform, resolverConfig.getResolver()));
|
pack -> new LayeredChunkGenerator(platform, resolver));
|
||||||
})
|
})
|
||||||
.failThrough();
|
.failThrough();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
||||||
+1
-1
@@ -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;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
+1
-2
@@ -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;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
public interface LayerResolver {
|
public interface LayerResolver {
|
||||||
+2
-2
@@ -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.ConfigTemplate;
|
||||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||||
|
|
||||||
import java.util.Map;
|
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;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
|
||||||
|
|
||||||
+6
-3
@@ -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.ConfigTemplate;
|
||||||
|
import com.dfsek.tectonic.api.config.template.annotations.Default;
|
||||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
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;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
|
||||||
|
|
||||||
public class LayerPredicatePackConfigTemplate implements ConfigTemplate {
|
public class LayerPredicatePackConfigTemplate implements ConfigTemplate {
|
||||||
|
|
||||||
@Value("generation.predicates")
|
@Value("generation.predicates")
|
||||||
private @Meta Map<String, LayerPredicate> predicates;
|
@Default
|
||||||
|
private @Meta Map<String, LayerPredicate> predicates = new LinkedHashMap<>();
|
||||||
|
|
||||||
public Map<String, LayerPredicate> getPredicates() {
|
public Map<String, LayerPredicate> getPredicates() {
|
||||||
return predicates;
|
return predicates;
|
||||||
+2
-2
@@ -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.ConfigTemplate;
|
||||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
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;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -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.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.BlockLayerPalette;
|
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;
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.predicate.BelowLayerPredicate;
|
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;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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.annotations.Value;
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
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.addons.chunkgenerator.layer.predicate.RangeLayerPredicate;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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.annotations.Value;
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
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.addons.chunkgenerator.layer.predicate.SamplerLayerPredicate;
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
|
|||||||
+6
-22
@@ -1,37 +1,21 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.config.resolve;
|
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.annotations.Value;
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
import com.dfsek.tectonic.api.exception.ValidationException;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette;
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver;
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.PaletteLayerResolver;
|
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.PaletteLayerResolver;
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.util.InstanceWrapper;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
|
|
||||||
public class PaletteLayerResolverTemplate implements ObjectTemplate<LayerResolver>, ValidatedConfigTemplate {
|
public class PaletteLayerResolverTemplate implements ObjectTemplate<LayerResolver> {
|
||||||
|
|
||||||
private final Map<String, LayerPalette> palettes;
|
|
||||||
|
|
||||||
public PaletteLayerResolverTemplate(Map<String, LayerPalette> palettes) {
|
|
||||||
this.palettes = palettes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Value("palette")
|
@Value("palette")
|
||||||
private String palette;
|
private InstanceWrapper<LayerPalette> palette;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LayerResolver get() {
|
public LayerResolver get() {
|
||||||
return new PaletteLayerResolver(palettes.get(palette));
|
return new PaletteLayerResolver(palette.get());
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean validate() throws ValidationException {
|
|
||||||
if(!palettes.containsKey(palette)) throw new ValidationException("The palette " + palette + " does not exist!");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-22
@@ -1,28 +1,19 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.config.resolve;
|
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.annotations.Value;
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
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.api.LayerPredicate;
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate;
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver;
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.PredicateLayerResolver;
|
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;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
|
||||||
|
|
||||||
public class PredicateLayerResolverTemplate implements ObjectTemplate<LayerResolver>, ValidatedConfigTemplate {
|
public class PredicateLayerResolverTemplate implements ObjectTemplate<LayerResolver> {
|
||||||
|
|
||||||
private final Map<String, LayerPredicate> predicates;
|
|
||||||
|
|
||||||
public PredicateLayerResolverTemplate(Map<String, LayerPredicate> predicates) {
|
|
||||||
this.predicates = predicates;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Value("if")
|
@Value("if")
|
||||||
private @Meta String predicate;
|
private @Meta InstanceWrapper<LayerPredicate> predicate;
|
||||||
|
|
||||||
@Value("then")
|
@Value("then")
|
||||||
private @Meta LayerResolver trueResolver;
|
private @Meta LayerResolver trueResolver;
|
||||||
@@ -30,15 +21,8 @@ public class PredicateLayerResolverTemplate implements ObjectTemplate<LayerResol
|
|||||||
@Value("else")
|
@Value("else")
|
||||||
private @Meta LayerResolver falseResolver;
|
private @Meta LayerResolver falseResolver;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PredicateLayerResolver get() {
|
public PredicateLayerResolver get() {
|
||||||
return new PredicateLayerResolver(predicates.get(predicate), trueResolver, falseResolver);
|
return new PredicateLayerResolver(predicate.get(), trueResolver, falseResolver);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean validate() throws ValidationException {
|
|
||||||
if (!predicates.containsKey(predicate)) throw new ValidationException("The predicate " + predicate + " does not exist!");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.resolve.LayerResolver;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.util.Column;
|
import com.dfsek.terra.api.util.Column;
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.palette;
|
package com.dfsek.terra.addons.chunkgenerator.layer.palette;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
|
package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
public class PaletteLayerResolver implements LayerResolver {
|
public class PaletteLayerResolver implements LayerResolver {
|
||||||
|
|||||||
+3
-2
@@ -1,7 +1,8 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
|
package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.palette.LayerPalette;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.layer.predicate.LayerPredicate;
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
|
||||||
|
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
package com.dfsek.terra.addons.chunkgenerator.util;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
|
||||||
|
public record InstanceWrapper<T>(T instance) implements Supplier<T> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T get() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user