From f036934dbb60602665a5cc897bccc7b912090f2f Mon Sep 17 00:00:00 2001 From: ACGaming <4818419+ACGaming@users.noreply.github.com> Date: Wed, 19 Jun 2024 15:38:44 +0200 Subject: [PATCH] Handle already unloaded dimensions, fix #403 --- .../tweaks/world/loading/UTUnloader.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/mod/acgaming/universaltweaks/tweaks/world/loading/UTUnloader.java b/src/main/java/mod/acgaming/universaltweaks/tweaks/world/loading/UTUnloader.java index 48c7857f..05d60560 100644 --- a/src/main/java/mod/acgaming/universaltweaks/tweaks/world/loading/UTUnloader.java +++ b/src/main/java/mod/acgaming/universaltweaks/tweaks/world/loading/UTUnloader.java @@ -1,5 +1,8 @@ package mod.acgaming.universaltweaks.tweaks.world.loading; +import mod.acgaming.universaltweaks.UniversalTweaks; +import mod.acgaming.universaltweaks.config.UTConfigGeneral; +import mod.acgaming.universaltweaks.config.UTConfigTweaks; import net.minecraft.world.DimensionType; import net.minecraft.world.MinecraftException; import net.minecraft.world.WorldServer; @@ -12,10 +15,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; -import mod.acgaming.universaltweaks.UniversalTweaks; -import mod.acgaming.universaltweaks.config.UTConfigGeneral; -import mod.acgaming.universaltweaks.config.UTConfigTweaks; - // Courtesy of Unnoen & tie @Mod.EventBusSubscriber(modid = UniversalTweaks.MODID) public class UTUnloader @@ -37,8 +36,8 @@ public static void utUnloader(TickEvent.ServerTickEvent event) @SuppressWarnings("ConstantConditions") public static void utHandleDimUnload(Integer id) { - WorldServer worldServer = DimensionManager.getWorld(id); - ChunkProviderServer chunkProviderServer = worldServer.getChunkProvider(); + if (!DimensionManager.isDimensionRegistered(id)) return; + DimensionType dimensionType = DimensionManager.getProviderType(id); String dimensionName = ""; @@ -49,6 +48,9 @@ public static void utHandleDimUnload(Integer id) if (dimensionName.matches(dimConfig) || Integer.toString(id).matches(dimConfig)) return; } + WorldServer worldServer = DimensionManager.getWorld(id); + ChunkProviderServer chunkProviderServer = worldServer.getChunkProvider(); + if (!worldServer.provider.getDimensionType().shouldLoadSpawn() && ForgeChunkManager.getPersistentChunksFor(worldServer).isEmpty() && chunkProviderServer.getLoadedChunkCount() == 0