diff --git a/src/main/java/vip/fubuki/playersync/PlayerSync.java b/src/main/java/vip/fubuki/playersync/PlayerSync.java index b1f425e..2512cb5 100644 --- a/src/main/java/vip/fubuki/playersync/PlayerSync.java +++ b/src/main/java/vip/fubuki/playersync/PlayerSync.java @@ -31,8 +31,9 @@ public class PlayerSync modEventBus.addListener(this::commonSetup); MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new VanillaSync()); - MinecraftForge.EVENT_BUS.register(new ChatSync()); - + if(JdbcConfig.SYNC_CHAT.get()){ + MinecraftForge.EVENT_BUS.register(new ChatSync()); + } } private void commonSetup(final FMLCommonSetupEvent event) {} diff --git a/src/main/java/vip/fubuki/playersync/config/JdbcConfig.java b/src/main/java/vip/fubuki/playersync/config/JdbcConfig.java index c68382f..61800b3 100644 --- a/src/main/java/vip/fubuki/playersync/config/JdbcConfig.java +++ b/src/main/java/vip/fubuki/playersync/config/JdbcConfig.java @@ -17,6 +17,7 @@ public class JdbcConfig { public static ForgeConfigSpec.ConfigValue PASSWORD; public static ForgeConfigSpec.ConfigValue> SYNC_WORLD; public static ForgeConfigSpec.BooleanValue USE_SSL; + public static ForgeConfigSpec.BooleanValue SYNC_CHAT; static { @@ -29,6 +30,7 @@ public class JdbcConfig { USERNAME = COMMON_BUILDER.comment("username").define("user_name", "root"); PASSWORD = COMMON_BUILDER.comment("password").define("password", "password"); SYNC_WORLD = COMMON_BUILDER.comment("The worlds that will be synchronized.If running in server it is supposed to have only one").define("sync_world", new ArrayList()); + SYNC_CHAT= COMMON_BUILDER.comment("Whether synchronize chat").define("sync_chat", true); COMMON_BUILDER.pop(); COMMON_CONFIG = COMMON_BUILDER.build(); } diff --git a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java index 355ed41..46b75f7 100644 --- a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java @@ -10,23 +10,23 @@ import java.sql.SQLException; import java.util.Objects; public class ChatSync { - int tick = 0; - long current = System.currentTimeMillis(); + static int tick = 0; + static long current = System.currentTimeMillis(); @SubscribeEvent - public void onPlayerChat(net.minecraftforge.event.ServerChatEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { + public static void onPlayerChat(net.minecraftforge.event.ServerChatEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { ReadMessage(Objects.requireNonNull(event.getPlayer().getServer()).getPlayerList()); JDBCsetUp.executeUpdate("INSERT INTO chat (player, message, timestamp) VALUES ('" + event.getUsername() + "', '" + event.getMessage() + "', '" + current + "')"); } @SubscribeEvent - public void Tick(net.minecraftforge.event.TickEvent.ServerTickEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { + public static void Tick(net.minecraftforge.event.TickEvent.ServerTickEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { tick++; if(tick == 20) { ReadMessage(event.getServer().getPlayerList()); } } - public void ReadMessage(PlayerList playerList) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { + public static void ReadMessage(PlayerList playerList) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { ResultSet resultSet= JDBCsetUp.executeQuery("SELECT * FROM chat WHERE timestamp > " + current); current = System.currentTimeMillis(); tick = 0; @@ -36,5 +36,6 @@ public class ChatSync { Component textComponents = Component.literal(player+": "+message); playerList.broadcastSystemMessage(textComponents, true); } + resultSet.close(); } } diff --git a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java index beb1577..53cf53d 100644 --- a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java @@ -108,7 +108,7 @@ public class VanillaSync { return ItemStack.of(compoundTag); } @SubscribeEvent - public void OnPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, IOException { + public static void OnPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, IOException { String player_uuid = event.getEntity().getUUID().toString(); JDBCsetUp.executeUpdate("UPDATE player_data SET online=false WHERE uuid='"+player_uuid+"'"); if(!event.getEntity().getTags().contains("player_synced")) return; @@ -119,7 +119,7 @@ public class VanillaSync { event.getEntity().removeTag("player_synced"); } - public void Store(Player player, boolean init,boolean isServer) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, IOException { + public static void Store(Player player, boolean init,boolean isServer) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, IOException { String player_uuid = player.getUUID().toString(); //Easy part int XP = player.totalExperience; @@ -183,7 +183,7 @@ public class VanillaSync { }else JDBCsetUp.executeUpdate("UPDATE player_data SET inventory = '"+inventoryMap+"',armor='"+equipment+"' ,xp='"+XP+"',effects='"+effectMap+"',enderchest='"+ender_chest+"',score='"+score+"',food_level='"+food_level+"',health='"+health+"',advancements='"+json+"' WHERE uuid = '"+player_uuid+"'"); } - private File[] ScanAdvancementsFile(String player_uuid, File gameDir) { + private static File[] ScanAdvancementsFile(String player_uuid, File gameDir) { File[] files = new File[JdbcConfig.SYNC_WORLD.get().size()]; for (int i = 0; i < JdbcConfig.SYNC_WORLD.get().size(); i++) { File advanceFile=new File(gameDir, "saves/"+JdbcConfig.SYNC_WORLD.get().get(i)+"/advancements"+"/"+player_uuid+".json");