diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java index 5bc109cce..ec4fa2cfe 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java @@ -110,14 +110,26 @@ public class ClientLevelWrapper implements IClientLevelWrapper } } - return LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.compute(level, (newLevel, levelRef) -> + + WeakReference levelRef = LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.get(level); + if (levelRef != null) { - if (levelRef != null) + ClientLevelWrapper levelWrapper = levelRef.get(); + if (levelWrapper != null) { - ClientLevelWrapper oldLevelWrapper = levelRef.get(); + return levelWrapper; + } + } + + + return LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.compute(level, (newLevel, newLevelRef) -> + { + if (newLevelRef != null) + { + ClientLevelWrapper oldLevelWrapper = newLevelRef.get(); if (oldLevelWrapper != null) { - return levelRef; + return newLevelRef; } }