Replace BLOCK layer palette with PALETTE

This commit is contained in:
Astrash
2022-07-16 17:17:18 +10:00
parent 698725c921
commit b57b71baa7
5 changed files with 42 additions and 50 deletions

View File

@@ -14,7 +14,7 @@ import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerPalettePackConfigT
import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerPredicatePackConfigTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerResolverPackConfigTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.pack.LayerSamplerPackConfigTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.palette.BlockLayerPaletteTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.palette.SimpleLayerPaletteTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.predicate.BelowLayerPredicateTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.predicate.RangeLayerPredicateTemplate;
import com.dfsek.terra.addons.chunkgenerator.config.predicate.SamplerLayerPredicateTemplate;
@@ -82,7 +82,7 @@ public class LayeredChunkGeneratorAddon implements AddonInitializer {
})
.then(event -> {
CheckedRegistry<Supplier<ObjectTemplate<LayerPalette>>> paletteTypeRegistry = event.getPack().getOrCreateRegistry(LAYER_PALETTE_TYPE_TOKEN);
paletteTypeRegistry.register(addon.key("BLOCK"), BlockLayerPaletteTemplate::new);
paletteTypeRegistry.register(addon.key("PALETTE"), SimpleLayerPaletteTemplate::new);
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));

View File

@@ -1,20 +0,0 @@
package com.dfsek.terra.addons.chunkgenerator.config.palette;
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.api.LayerPalette;
import com.dfsek.terra.api.block.state.BlockState;
public class BlockLayerPaletteTemplate implements ObjectTemplate<LayerPalette> {
@Value("block")
private BlockState block;
@Override
public BlockLayerPalette get() {
return new BlockLayerPalette(block);
}
}

View File

@@ -0,0 +1,20 @@
package com.dfsek.terra.addons.chunkgenerator.config.palette;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
import com.dfsek.terra.addons.chunkgenerator.layer.palette.SimpleLayerPalette;
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
public class SimpleLayerPaletteTemplate implements ObjectTemplate<LayerPalette> {
@Value("palette")
private Palette palette;
@Override
public LayerPalette get() {
return new SimpleLayerPalette(palette);
}
}

View File

@@ -1,28 +0,0 @@
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.world.biome.Biome;
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
public class BlockLayerPalette implements LayerPalette {
private final Palette palette;
public BlockLayerPalette(BlockState block) {
this.palette = new SingletonPalette(block);
}
@Override
public Palette get(long seed, Biome biome, int x, int y, int z) {
return palette;
}
private record SingletonPalette(BlockState blockState) implements Palette {
@Override
public BlockState get(int layer, double x, double y, double z, long seed) {
return blockState;
}
}
}

View File

@@ -0,0 +1,20 @@
package com.dfsek.terra.addons.chunkgenerator.layer.palette;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
public class SimpleLayerPalette implements LayerPalette {
private final Palette palette;
public SimpleLayerPalette(Palette palette) {
this.palette = palette;
}
@Override
public Palette get(long seed, Biome biome, int x, int y, int z) {
return palette;
}
}