From 0cbca7cfd8097f50d9fafcd21aa95c8647c46ddb Mon Sep 17 00:00:00 2001 From: EoD <293499+EoD@users.noreply.github.com> Date: Fri, 2 May 2025 19:56:17 +0000 Subject: [PATCH 1/2] add logging for chat server --- .../java/vip/fubuki/playersync/PlayerSync.java | 1 + .../vip/fubuki/playersync/sync/ChatSync.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/vip/fubuki/playersync/PlayerSync.java b/src/main/java/vip/fubuki/playersync/PlayerSync.java index fa3dc65..e3b3ed6 100644 --- a/src/main/java/vip/fubuki/playersync/PlayerSync.java +++ b/src/main/java/vip/fubuki/playersync/PlayerSync.java @@ -36,6 +36,7 @@ public class PlayerSync { private void commonSetup(final FMLCommonSetupEvent event) { VanillaSync.register(); if (JdbcConfig.SYNC_CHAT.get()) { + LOGGER.info("Chat sync enabled."); ChatSync.register(); } } diff --git a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java index 4f14b63..087d241 100644 --- a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java @@ -18,7 +18,12 @@ import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.slf4j.Logger; + +import com.mojang.logging.LogUtils; + public class ChatSync { + private static final Logger LOGGER = LogUtils.getLogger(); static PlayerList playerList; @@ -28,8 +33,10 @@ public class ChatSync { static ExecutorService executorService = Executors.newCachedThreadPool(); public static void register(){ - if(JdbcConfig.IS_CHAT_SERVER.get()) + if(JdbcConfig.IS_CHAT_SERVER.get()) { + LOGGER.info("Launching chat server thread."); new Thread(ChatSync::ServerSocket).start(); + } ClientSocket(); MinecraftForge.EVENT_BUS.register(ChatSync.class); } @@ -37,6 +44,7 @@ public class ChatSync { private static void ServerSocket() { try { + LOGGER.info("Trying to setup chat server at port " + JdbcConfig.CHAT_SERVER_PORT.get()); serverSocket = new ServerSocket(JdbcConfig.CHAT_SERVER_PORT.get()); while (true) { Socket newSocket = serverSocket.accept(); @@ -44,6 +52,7 @@ public class ChatSync { executorService.submit(() -> handleClient(newSocket)); } } catch (IOException e) { + LOGGER.error("Unable to start chat server"); e.printStackTrace(); } finally { try { @@ -89,6 +98,10 @@ public class ChatSync { private static void ClientSocket() { try { + LOGGER.info("Trying to connect to chat server " + + JdbcConfig.CHAT_SERVER_IP.get() + + ":" + + JdbcConfig.CHAT_SERVER_PORT.get()); clientSocket = new Socket(JdbcConfig.CHAT_SERVER_IP.get(), JdbcConfig.CHAT_SERVER_PORT.get()); Scanner scanner = new Scanner(clientSocket.getInputStream()); while (scanner.hasNextLine()) { @@ -103,6 +116,7 @@ public class ChatSync { } private static void reconnectClient() { + LOGGER.warn("TODO: implement reconnectClient()"); //TODO } From 5a3e15787996a208db3a0c95f4f396cb8d5b6f9d Mon Sep 17 00:00:00 2001 From: EoD <293499+EoD@users.noreply.github.com> Date: Fri, 2 May 2025 20:08:06 +0000 Subject: [PATCH 2/2] fix chat sync always being enabled reading CHAT_SYNC immediately within FMLCommonSetupEvent can lead to timing issues that the default value instead of the real config value is being returned. Moving them within event.enqueueWork() fixes the timing issue. --- src/main/java/vip/fubuki/playersync/PlayerSync.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/vip/fubuki/playersync/PlayerSync.java b/src/main/java/vip/fubuki/playersync/PlayerSync.java index e3b3ed6..2ca63a1 100644 --- a/src/main/java/vip/fubuki/playersync/PlayerSync.java +++ b/src/main/java/vip/fubuki/playersync/PlayerSync.java @@ -35,10 +35,14 @@ public class PlayerSync { private void commonSetup(final FMLCommonSetupEvent event) { VanillaSync.register(); - if (JdbcConfig.SYNC_CHAT.get()) { - LOGGER.info("Chat sync enabled."); - ChatSync.register(); - } + event.enqueueWork(() -> { + // read SYNC_CHAT only within the enqueueWork to reliably get the real + // config value and not its default value. + if (JdbcConfig.SYNC_CHAT.get()) { + LOGGER.info("Chat sync enabled."); + ChatSync.register(); + } + }); } @SubscribeEvent