From e336cee557579671eccc8f98e0f5ddb931ffc823 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:16:14 +1000 Subject: [PATCH] Fix likly corruption from multiple dimensions accessing things incorrectly --- .../voxy/common/voxelization/WorldConversionFactory.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/cortex/voxy/common/voxelization/WorldConversionFactory.java b/src/main/java/me/cortex/voxy/common/voxelization/WorldConversionFactory.java index 7e609829..faf86c90 100644 --- a/src/main/java/me/cortex/voxy/common/voxelization/WorldConversionFactory.java +++ b/src/main/java/me/cortex/voxy/common/voxelization/WorldConversionFactory.java @@ -10,9 +10,11 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.chunk.PalettedContainer; import net.minecraft.world.chunk.ReadableContainer; +import java.util.WeakHashMap; + public class WorldConversionFactory { //TODO: create a mapping for world/mapper -> local mapping - private static final ThreadLocal>> THREAD_LOCAL = ThreadLocal.withInitial(()->new Pair<>(new int[4*4*4], new Reference2IntOpenHashMap<>())); + private static final ThreadLocal>>> THREAD_LOCAL = ThreadLocal.withInitial(()->new Pair<>(new int[4*4*4], new WeakHashMap<>())); public static VoxelizedSection convert(VoxelizedSection section, Mapper stateMapper, @@ -20,7 +22,7 @@ public class WorldConversionFactory { ReadableContainer> biomeContainer, ILightingSupplier lightSupplier) { var threadLocal = THREAD_LOCAL.get(); - var blockCache = threadLocal.right(); + var blockCache = threadLocal.right().computeIfAbsent(stateMapper, (mapper)->new Reference2IntOpenHashMap<>()); var biomes = threadLocal.left(); var data = section.section;