From 9e7bab340ef58e93854000284a62288c058c207b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 18:09:06 -0700 Subject: [PATCH] slant palette loading --- .../NoiseChunkGenerator3DAddon.java | 3 ++ .../palette/SlantHolderLoader.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 03c2dd66b..daee1ebd1 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -26,5 +28,6 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); + event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java new file mode 100644 index 000000000..5f4efd908 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.AnnotatedType; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +@SuppressWarnings("unchecked") +public class SlantHolderLoader implements TypeLoader { + @Override + public SlantHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { + List> layers = (List>) o; + TreeMap slantLayers = new TreeMap<>(); + double minThreshold = Double.MAX_VALUE; + + for(Map layer : layers) { + double threshold = ((Number) layer.get("threshold")).doubleValue(); + if(threshold < minThreshold) minThreshold = threshold; + slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); + } + + return new SlantHolder(slantLayers, minThreshold); + } +}