diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index 33157d194..f16fac6ab 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.biome; +import com.dfsek.terra.addons.biome.holder.PaletteHolder; +import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -19,6 +21,7 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); + main.applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } public void onPackLoad(ConfigPackPreLoadEvent event) { diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java index c98622318..8cf93760d 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java @@ -14,7 +14,6 @@ public class PaletteHolderBuilder { return this; } - @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) public PaletteHolder build() { int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java new file mode 100644 index 000000000..21e098cef --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.addons.biome.holder; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.world.generator.Palette; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; + +public class PaletteHolderLoader implements TypeLoader { + @Override + public PaletteHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + List> palette = (List>) o; + PaletteHolderBuilder builder = new PaletteHolderBuilder(); + for(Map layer : palette) { + for(Map.Entry entry : layer.entrySet()) { + builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); + } + } + return builder.build(); + } +}