From 1848f7dd7991cc4993b3a6be380719af5a3d506c Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 23 May 2024 15:36:57 +0200 Subject: [PATCH] only check dimension to unload on world tick --- .../alternativechunkloading/EventHandler.java | 33 ++++--------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/src/main/java/de/pilz/alternativechunkloading/EventHandler.java b/src/main/java/de/pilz/alternativechunkloading/EventHandler.java index 7a95601..c5ba6ef 100644 --- a/src/main/java/de/pilz/alternativechunkloading/EventHandler.java +++ b/src/main/java/de/pilz/alternativechunkloading/EventHandler.java @@ -35,10 +35,6 @@ public void onWorldLoad(WorldEvent.Load event) { ((ChunkProviderServer) chunkProvider).loadChunkOnProvideRequest = false; } } - - if (ConfigGeneral.autoUnloadDimensions) { - checkDimensionToUnload(world); - } } } @@ -74,13 +70,10 @@ public void onChunkUnforce(UnforceChunkEvent event) { WorldServer world = (WorldServer) event.ticket.world; // Prevent chunks to be auto loaded - var coordMap = getPendingForcedChunksForWorld((WorldServer) event.ticket.world); + var coordMap = getPendingForcedChunksForWorld(world); if (coordMap.containsKey(event.location)) { coordMap.remove(event.location); } - - // Check dimension to auto unload - checkDimensionToUnload(world); } } @@ -89,14 +82,6 @@ public void onChunkLoad(ChunkEvent.Load event) { pendingUnloadDimensions.remove(event.world); } - @SubscribeEvent - public void onChunkUnload(ChunkEvent.Load event) { - // Check dimension to unload - if (ConfigGeneral.autoUnloadDimensions && !event.world.isRemote && event.world instanceof WorldServer) { - checkDimensionToUnload((WorldServer) event.world); - } - } - @SubscribeEvent public void onWorldTick(WorldTickEvent event) { if (event.side == Side.SERVER && event.world instanceof WorldServer) { @@ -111,13 +96,9 @@ public void onWorldTick(WorldTickEvent event) { } private void checkDimensionToUnload(WorldServer world) { - // Check if already pending - if (pendingUnloadDimensions.containsKey(world)) { - return; - } - // Check blacklist - if (ConfigGeneral.isOnAutoUnloadDimensionBlacklist(world.provider.dimensionId)) { + if (!ConfigGeneral.autoUnloadDimensions + || ConfigGeneral.isOnAutoUnloadDimensionBlacklist(world.provider.dimensionId)) { return; } @@ -127,7 +108,7 @@ private void checkDimensionToUnload(WorldServer world) { return; } - // Put on list + // Put on list or reset timer pendingUnloadDimensions.put(world, 0); } @@ -167,10 +148,8 @@ private void unloadDimension(WorldServer world) { Integer ticksWaited = pendingUnloadDimensions.getOrDefault(world, -1); if (ticksWaited == -1) { - return; - } - - if (ticksWaited >= ConfigGeneral.ticksBeforeUnloadDimension) { + checkDimensionToUnload(world); + } else if (ticksWaited >= ConfigGeneral.ticksBeforeUnloadDimension) { // Unload dimension pendingUnloadDimensions.remove(world); DimensionManager.unloadWorld(world.provider.dimensionId);