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;