Store palettes and predicates in registries

This commit is contained in:
Astrash
2022-07-16 16:28:57 +10:00
parent 2a9d94094c
commit 11044b6589
21 changed files with 88 additions and 92 deletions
@@ -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,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,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,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 {
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
} }
} }
@@ -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,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,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,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,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,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;
@@ -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 {
@@ -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;
@@ -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;
}
}