diff --git a/src/main/java/cc/reconnected/chatbox/ClientPacketsHandler.java b/src/main/java/cc/reconnected/chatbox/ClientPacketsHandler.java index 8fb8c79..601ca29 100644 --- a/src/main/java/cc/reconnected/chatbox/ClientPacketsHandler.java +++ b/src/main/java/cc/reconnected/chatbox/ClientPacketsHandler.java @@ -12,7 +12,6 @@ import cc.reconnected.chatbox.utils.Webhook; import cc.reconnected.chatbox.ws.ClientErrors; import cc.reconnected.library.data.PlayerMeta; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.json.JSONComponentSerializer; @@ -55,6 +54,13 @@ private static void tickQueue(MinecraftServer server) { continue; } + // anti-ai-monologue-bug! + // (also known as "we can't even yell back to the client because it disconnected") + if( msg.conn.isClosed()) { + messageQueue.remove(uuid); + continue; + } + if (msg.type == MessageTypes.SAY) { Webhook.send(uuid, msg, null); mcServer.getPlayerList().getPlayers().forEach(player -> player.sendMessage(msg.message)); @@ -102,8 +108,8 @@ private static String enqueueAndResult(UUID licenseId, ClientMessage message, in } } - public static void register() { - ServerLifecycleEvents.SERVER_STARTING.register(server -> mcServer = server); + public static void register(MinecraftServer server) { + mcServer = server; ServerTickEvents.END_SERVER_TICK.register(ClientPacketsHandler::tickQueue); ChatboxMessageEvents.SAY.register((client, packet) -> { diff --git a/src/main/java/cc/reconnected/chatbox/listeners/ChatboxEvents.java b/src/main/java/cc/reconnected/chatbox/listeners/ChatboxEvents.java index 00b5adb..2948bec 100644 --- a/src/main/java/cc/reconnected/chatbox/listeners/ChatboxEvents.java +++ b/src/main/java/cc/reconnected/chatbox/listeners/ChatboxEvents.java @@ -52,7 +52,10 @@ public static void register(MinecraftServer serverStarting) { SolsticeEvents.register(); } - ClientPacketsHandler.register(); + // Bomber: I would like to have a few words with whoever decided to try listening to the server starting + // event INSIDE ClientPacketsHandler's register method... that is only run after the server starting event + // has fired... + ClientPacketsHandler.register(serverStarting); ClientConnectionEvents.CONNECT.register((conn, license, isGuest) -> { var playerData = PlayerMeta.getPlayer(license.userId());