From 30b1690a73afbbb58d4bfd8ab3be224c5dcc48a5 Mon Sep 17 00:00:00 2001 From: mlus-Asuka <1319237806@qq.com> Date: Thu, 16 Feb 2023 14:26:24 +0800 Subject: [PATCH] fix chat and effects bugs. --- build.gradle | 2 +- .../vip/fubuki/playersync/sync/ChatSync.java | 6 +++--- .../fubuki/playersync/sync/VanillaSync.java | 19 ++++++++++--------- .../vip/fubuki/playersync/util/JDBCsetUp.java | 4 +--- src/main/resources/META-INF/mods.toml | 2 +- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/build.gradle b/build.gradle index 2d16f2e..4326d6b 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { id 'net.minecraftforge.gradle' version '5.1.+' } -version = '1.0' +version = '1.1.2' group = 'vip.fubuki.PlayerSync' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'playersync' diff --git a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java index 46b75f7..f97e84d 100644 --- a/src/main/java/vip/fubuki/playersync/sync/ChatSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/ChatSync.java @@ -3,19 +3,19 @@ package vip.fubuki.playersync.sync; import net.minecraft.network.chat.Component; import net.minecraft.server.players.PlayerList; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; import vip.fubuki.playersync.util.JDBCsetUp; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Objects; +@Mod.EventBusSubscriber public class ChatSync { static int tick = 0; static long current = System.currentTimeMillis(); @SubscribeEvent 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 + "')"); + JDBCsetUp.executeUpdate("INSERT INTO chat (player, message, timestamp) VALUES ('" + event.getUsername() + "', '" + event.getRawText() + "', '" + current + "')"); } @SubscribeEvent diff --git a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java index 60068b1..a2127eb 100644 --- a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java @@ -1,7 +1,6 @@ package vip.fubuki.playersync.sync; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.client.Minecraft; import net.minecraft.nbt.*; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -14,7 +13,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import vip.fubuki.playersync.PlayerSync; import vip.fubuki.playersync.config.JdbcConfig; import vip.fubuki.playersync.util.JDBCsetUp; import vip.fubuki.playersync.util.LocalJsonUtil; @@ -69,13 +67,16 @@ public class VanillaSync { serverPlayer.getEnderChestInventory().setItem(entry.getKey(),Deserialize(entry)); } //Effects - serverPlayer.removeAllEffects(); - Map effects = LocalJsonUtil.StringToEntryMap(resultSet.getString("effects")); - for (Map.Entry entry : effects.entrySet()) { - CompoundTag effectTag = NbtUtils.snbtToStructure(entry.getValue().replace("|", ",")); - MobEffectInstance mobEffectInstance = MobEffectInstance.load(effectTag); - assert mobEffectInstance != null; - serverPlayer.addEffect(mobEffectInstance); + String effectData=resultSet.getString("effects"); + if(effectData.length()>2) { + serverPlayer.removeAllEffects(); + Map effects = LocalJsonUtil.StringToEntryMap(effectData); + for (Map.Entry entry : effects.entrySet()) { + CompoundTag effectTag = NbtUtils.snbtToStructure(entry.getValue().replace("|", ",")); + MobEffectInstance mobEffectInstance = MobEffectInstance.load(effectTag); + assert mobEffectInstance != null; + serverPlayer.addEffect(mobEffectInstance); + } } //Advancements File gameDir = serverPlayer.getServer().getServerDirectory(); diff --git a/src/main/java/vip/fubuki/playersync/util/JDBCsetUp.java b/src/main/java/vip/fubuki/playersync/util/JDBCsetUp.java index dcdbc96..7ea9b8c 100644 --- a/src/main/java/vip/fubuki/playersync/util/JDBCsetUp.java +++ b/src/main/java/vip/fubuki/playersync/util/JDBCsetUp.java @@ -32,9 +32,7 @@ public class JDBCsetUp { } public static void executeUpdate(String sql) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException { - Statement statement= getConnection(false).createStatement(); - statement.executeUpdate(sql); - statement.close(); + executeUpdate(sql,false); } public static void executeUpdate(String sql,boolean init) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 17fb765..43c1650 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -19,7 +19,7 @@ modId="playersync" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it # ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata # see the associated build.gradle script for how to populate this completely automatically during a build -version="1.0" #mandatory +version="1.1.2" #mandatory # A display name for the mod displayName="PlayerSync" #mandatory # A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/