From 93db7ee0ee156c4ca8f8a0fe0a2ee54d39979503 Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Sun, 11 Jun 2023 14:09:15 -0400 Subject: [PATCH] coco's other pr --- .../iris/core/nms/v20/CustomBiomeSource.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java b/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java index 67fb169e6..3a22557e6 100644 --- a/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java +++ b/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java @@ -12,6 +12,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSource; @@ -25,6 +26,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Stream; public class CustomBiomeSource extends BiomeSource { @@ -117,15 +119,26 @@ protected Stream> collectPossibleBiomes() { ((CraftWorld) engine.getWorld().realWorld()).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), engine).stream(); } - private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { KMap> m = new KMap<>(); for (IrisBiome i : engine.getAllBiomes()) { if (i.isCustom()) { for (IrisBiomeCustom j : i.getCustomDerivitives()) { - m.put(j.getId(), customRegistry.getHolder(customRegistry.getResourceKey(customRegistry - .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + ResourceLocation resourceLocation = new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()); + Biome biome = customRegistry.get(resourceLocation); + Optional> optionalBiomeKey = customRegistry.getResourceKey(biome); + if (optionalBiomeKey.isEmpty()) { + Iris.error("Cannot find biome for IrisBiomeCustom " + j.getId() + " from engine " + engine.getName()); + continue; + } + ResourceKey biomeKey = optionalBiomeKey.get(); + Optional> optionalReferenceHolder = customRegistry.getHolder(biomeKey); + if (optionalReferenceHolder.isEmpty()) { + Iris.error("Cannot find reference to biome " + biomeKey + " for engine " + engine.getName()); + continue; + } + m.put(j.getId(), optionalReferenceHolder.get()); } } }