diff --git a/src/main/java/com/coflnet/sky/SkyCofl.java b/src/main/java/com/coflnet/sky/SkyCofl.java index 8a1f7e7..3a5642b 100644 --- a/src/main/java/com/coflnet/sky/SkyCofl.java +++ b/src/main/java/com/coflnet/sky/SkyCofl.java @@ -53,8 +53,15 @@ public void preInit(FMLPreInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new com.coflnet.sky.listeners.SellProtectionListener()); MinecraftForge.EVENT_BUS.register(new com.coflnet.sky.handlers.SellProtectionTooltipHandler()); - // Cache all the mods on load - WSCommandHandler.cacheMods(); + // Cache all the mods on load in background to avoid blocking the main thread + new Thread(() -> { + try { + WSCommandHandler.cacheMods(); + } catch (Exception e) { + System.err.println("Failed to cache mods: " + e.getMessage()); + e.printStackTrace(); + } + }, "cofl-cache-mods").start(); } @EventHandler diff --git a/src/main/java/com/coflnet/sky/handlers/EventHandler.java b/src/main/java/com/coflnet/sky/handlers/EventHandler.java index f2fd50c..6403b9f 100644 --- a/src/main/java/com/coflnet/sky/handlers/EventHandler.java +++ b/src/main/java/com/coflnet/sky/handlers/EventHandler.java @@ -163,13 +163,13 @@ private static void ProcessTabMenu(String line) { } private static void checkIfInSkyblock(String s) { - if ((s.contains("SKYBLOCK") || s.contains("E")) && !isInSkyblock) { + if (s.contains("SKYBLOCK") && !isInSkyblock) { if (config.autoStart) { CoflCore.Wrapper.stop(); CoflCore.Wrapper.startConnection(PlayerDataProvider.getUsername()); } isInSkyblock = true; - } else if (!s.contains("SKYBLOCK") && !s.contains("E") && isInSkyblock) { + } else if (!s.contains("SKYBLOCK") && isInSkyblock) { if (config.autoStart) { CoflCore.Wrapper.stop(); Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("connection to ") diff --git a/src/main/java/com/coflnet/sky/handlers/EventRegistry.java b/src/main/java/com/coflnet/sky/handlers/EventRegistry.java index 3821ffb..b9b32fa 100644 --- a/src/main/java/com/coflnet/sky/handlers/EventRegistry.java +++ b/src/main/java/com/coflnet/sky/handlers/EventRegistry.java @@ -77,11 +77,18 @@ public class EventRegistry { @SubscribeEvent public void onDisconnectedFromServerEvent(ClientDisconnectionFromServerEvent event) { + EventHandler.isInSkyblock = false; if (CoflCore.CoflCore.Wrapper != null && CoflCore.CoflCore.Wrapper.isRunning) { System.out.println("Disconnected from server"); - CoflCore.CoflCore.Wrapper.stop(); - EventHandler.isInSkyblock = false; - System.out.println("SkyCofl stopped"); + new Thread(() -> { + try { + CoflCore.CoflCore.Wrapper.stop(); + System.out.println("SkyCofl stopped"); + } catch (Exception e) { + System.err.println("Failed to stop SkyCofl on disconnect: " + e.getMessage()); + e.printStackTrace(); + } + }, "cofl-disconnect").start(); } }