From b3a75b37381d1db64d7ad23be8a2e81f1bb3c880 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 16 Dec 2021 22:00:07 -0700 Subject: [PATCH] clean up palette addon --- .../addons/palette/PaletteConfigType.java | 11 ---- .../terra/addons/palette/PaletteFactory.java | 4 +- .../addons/palette/palette/NoisePalette.java | 35 ---------- .../addons/palette/palette/PaletteImpl.java | 66 +++++++------------ 4 files changed, 24 insertions(+), 92 deletions(-) delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 9b8f1a573..b8e9f3217 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -32,17 +32,6 @@ public class PaletteConfigType implements ConfigType { this.platform = platform; } - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { - if(((String) c).startsWith("BLOCK:")) - return new PaletteImpl.Singleton( - platform.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. - return registry.get((String) c).orElseThrow(() -> new LoadException( - "No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry.")); - }); - } - @Override public PaletteTemplate getTemplate(ConfigPack pack, Platform platform) { return new PaletteTemplate(); diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 1bcc73fa4..efcfbd425 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -7,7 +7,7 @@ package com.dfsek.terra.addons.palette; -import com.dfsek.terra.addons.palette.palette.NoisePalette; +import com.dfsek.terra.addons.palette.palette.PaletteImpl; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; @@ -17,7 +17,7 @@ import com.dfsek.terra.api.world.chunk.generation.util.Palette; public class PaletteFactory implements ConfigFactory { @Override public Palette build(PaletteTemplate config, Platform platform) { - NoisePalette palette = new NoisePalette(config.getNoise()); + PaletteImpl palette = new PaletteImpl(config.getNoise()); for(PaletteLayerHolder layer : config.getPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java deleted file mode 100644 index 4ae2761ed..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.palette.palette; - -import java.util.List; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class NoisePalette extends PaletteImpl { - private final NoiseSampler sampler; - - public NoisePalette(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BlockState get(int layer, double x, double y, double z, long seed) { - PaletteLayer paletteLayer; - if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); - else { - List pl = getLayers(); - if(layer >= pl.size()) paletteLayer = pl.get(pl.size() - 1); - else paletteLayer = pl.get(layer); - } - NoiseSampler paletteSampler = paletteLayer.getSampler(); - return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, seed); - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 84690a73b..ecba13e9f 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -7,27 +7,25 @@ package com.dfsek.terra.addons.palette.palette; -import java.util.ArrayList; -import java.util.List; - import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.chunk.generation.util.Palette; +import java.util.ArrayList; +import java.util.List; + /** * A class representation of a "slice" of the world. * Used to get a section of blocks, based on the depth at which they are found. */ -public abstract class PaletteImpl implements Palette { +public class PaletteImpl implements Palette { private final List pallet = new ArrayList<>(); + private final NoiseSampler sampler; - /** - * Constructs a blank palette. - */ - public PaletteImpl() { - + public PaletteImpl(NoiseSampler sampler) { + this.sampler = sampler; } public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { @@ -37,6 +35,19 @@ public abstract class PaletteImpl implements Palette { return this; } + @Override + public BlockState get(int layer, double x, double y, double z, long seed) { + PaletteLayer paletteLayer; + if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); + else { + List pl = getLayers(); + if(layer >= pl.size()) paletteLayer = pl.get(pl.size() - 1); + else paletteLayer = pl.get(layer); + } + NoiseSampler paletteSampler = paletteLayer.getSampler(); + return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, seed); + } + public int getSize() { return pallet.size(); @@ -50,10 +61,8 @@ public abstract class PaletteImpl implements Palette { * Class representation of a layer of a BlockPalette. */ public static class PaletteLayer { - private final boolean col; // Is layer using a collection? private final NoiseSampler sampler; - private ProbabilityCollection collection; - private BlockState m; + private final ProbabilityCollection collection; /** * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. @@ -63,47 +72,16 @@ public abstract class PaletteImpl implements Palette { */ public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { this.sampler = sampler; - this.col = true; this.collection = type; } - /** - * Constructs a PaletteLayerHolder with a single Material and a number of layers. - * - * @param type The material to use. - * @param sampler Noise sampler to use - */ - public PaletteLayer(BlockState type, NoiseSampler sampler) { - this.sampler = sampler; - this.col = false; - this.m = type; - } - public BlockState get(NoiseSampler random, double x, double y, double z, long seed) { - if(col) return this.collection.get(random, x, y, z, seed); - return m; + return this.collection.get(random, x, y, z, seed); } public NoiseSampler getSampler() { return sampler; } - public ProbabilityCollection getCollection() { - return collection; - } - } - - - public static class Singleton extends PaletteImpl { - private final BlockState item; - - public Singleton(BlockState item) { - this.item = item; - } - - @Override - public BlockState get(int layer, double x, double y, double z, long seed) { - return item; - } } }