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 cc87ad645..377276816 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 @@ -68,22 +68,12 @@ public class ClientLevelWrapper implements IClientLevelWrapper return LEVEL_WRAPPER_BY_CLIENT_LEVEL.computeIfAbsent(level, ClientLevelWrapper::new); } - public static void closeLevel(ClientLevel level) { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(level); } - - @Nullable @Override public IServerLevelWrapper tryGetServerSideWrapper() { try { - // commented out because this breaks when traveling between dimensions, - // serverPlayer.getLevel() will return the previously loaded level, which causes issues -// PlayerList serverPlayerList = MinecraftClientWrapper.INSTANCE.mc.getSingleplayerServer().getPlayerList(); -// ServerPlayer serverPlayer = serverPlayerList.getPlayer(MinecraftClientWrapper.INSTANCE.mc.player.getUUID()); -// return ServerLevelWrapper.getWrapper(serverPlayer.getLevel()); - - Iterable serverLevels = MinecraftClientWrapper.INSTANCE.mc.getSingleplayerServer().getAllLevels(); // attempt to find the server level with the same dimension type @@ -108,14 +98,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper return null; } } - public static void cleanCheck() - { - if (!LEVEL_WRAPPER_BY_CLIENT_LEVEL.isEmpty()) - { - LOGGER.warn("{} client levels havn't been freed!", LEVEL_WRAPPER_BY_CLIENT_LEVEL.size()); - LEVEL_WRAPPER_BY_CLIENT_LEVEL.clear(); - } - } @@ -135,12 +117,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public EDhApiLevelType getLevelType() { return EDhApiLevelType.CLIENT_LEVEL; } - @Override - public int getBlockLight(int x, int y, int z) { return this.level.getBrightness(LightLayer.BLOCK, new BlockPos(x, y, z)); } - - @Override - public int getSkyLight(int x, int y, int z) { return this.level.getBrightness(LightLayer.SKY, new BlockPos(x, y, z)); } - public ClientLevel getLevel() { return this.level; } @Override @@ -198,6 +174,9 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public ClientLevel getWrappedMcObject() { return this.level; } + @Override + public void onUnload() { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(this.level); } + @Override public String toString() { diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java index f018b531e..c8aa907cb 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java @@ -38,9 +38,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper; -import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.level.chunk.ChunkStatus; @@ -54,33 +52,30 @@ import org.jetbrains.annotations.Nullable; public class ServerLevelWrapper implements IServerLevelWrapper { private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - private static final ConcurrentHashMap - levelWrapperMap = new ConcurrentHashMap<>(); - - public static ServerLevelWrapper getWrapper(ServerLevel level) - { - return levelWrapperMap.computeIfAbsent(level, ServerLevelWrapper::new); - } - public static void closeWrapper(ServerLevel level) - { - levelWrapperMap.remove(level); - } - public static void cleanCheck() - { - if (!levelWrapperMap.isEmpty()) - { - LOGGER.warn(levelWrapperMap.size() + " server levels haven't been freed!"); - levelWrapperMap.clear(); - } - } + private static final ConcurrentHashMap LEVEL_WRAPPER_BY_SERVER_LEVEL = new ConcurrentHashMap<>(); final ServerLevel level; ServerBlockDetailMap blockMap = new ServerBlockDetailMap(this); + + + //==============// + // constructors // + //==============// + + public static ServerLevelWrapper getWrapper(ServerLevel level) { return LEVEL_WRAPPER_BY_SERVER_LEVEL.computeIfAbsent(level, ServerLevelWrapper::new); } + public ServerLevelWrapper(ServerLevel level) { this.level = level; } + + + + //=========// + // methods // + //=========// + @Nullable @Override public IClientLevelWrapper tryGetClientLevelWrapper() @@ -109,18 +104,6 @@ public class ServerLevelWrapper implements IServerLevelWrapper @Override public EDhApiLevelType getLevelType() { return EDhApiLevelType.SERVER_LEVEL; } - @Override - public int getBlockLight(int x, int y, int z) - { - return level.getBrightness(LightLayer.BLOCK, new BlockPos(x, y, z)); - } - - @Override - public int getSkyLight(int x, int y, int z) - { - return level.getBrightness(LightLayer.SKY, new BlockPos(x, y, z)); - } - public ServerLevel getLevel() { return level; @@ -188,6 +171,9 @@ public class ServerLevelWrapper implements IServerLevelWrapper return level; } + @Override + public void onUnload() { LEVEL_WRAPPER_BY_SERVER_LEVEL.remove(this.level); } + @Override public String toString() { diff --git a/coreSubProjects b/coreSubProjects index 311326301..f57c52b2d 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 3113263012f1c82863b45ea49920698134449bee +Subproject commit f57c52b2d08f430155f5619cb76472e8bf67d13b