diff --git a/gradle.properties b/gradle.properties index 94c0529..9bb16b4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -mod_version=1.16.5-1.2.2 \ No newline at end of file +mod_version=1.16.5-1.3.0 \ No newline at end of file diff --git a/src/main/java/vip/fubuki/playersync/PlayerSync.java b/src/main/java/vip/fubuki/playersync/PlayerSync.java index 26ad134..bc12750 100644 --- a/src/main/java/vip/fubuki/playersync/PlayerSync.java +++ b/src/main/java/vip/fubuki/playersync/PlayerSync.java @@ -11,14 +11,18 @@ import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import vip.fubuki.playersync.config.JdbcConfig; import vip.fubuki.playersync.util.JDBCsetUp; +import vip.fubuki.playersync.util.PSThreadPoolFactory; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; @Mod(PlayerSync.MODID) public class PlayerSync { public static final String MODID = "playersync"; + public static ExecutorService executorService = Executors.newCachedThreadPool(new PSThreadPoolFactory("PlayerSync")); public PlayerSync() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); @@ -27,20 +31,27 @@ public class PlayerSync } @SubscribeEvent - public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) throws SQLException { - if (event.getPlayer() instanceof ServerPlayerEntity) { - String player_uuid = event.getEntity().getUUID().toString(); - JDBCsetUp.QueryResult queryResult=JDBCsetUp.executeQuery("SELECT * FROM AstralSorcery WHERE player='" + player_uuid + "';"); - ResultSet resultSet=queryResult.getResultSet(); - if(!resultSet.next()){ - JDBCsetUp.executeUpdate("INSERT INTO AstralSorcery(player,tag) VALUES('"+player_uuid+"','{}');"); + public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) { + executorService.submit(() -> { + try { + if (event.getPlayer() instanceof ServerPlayerEntity) { + String player_uuid = event.getEntity().getUUID().toString(); + JDBCsetUp.QueryResult queryResult=JDBCsetUp.executeQuery("SELECT * FROM AstralSorcery WHERE player='" + player_uuid + "';"); + ResultSet resultSet=queryResult.getResultSet(); + if(!resultSet.next()){ + JDBCsetUp.executeUpdate("INSERT INTO AstralSorcery(player,tag) VALUES('"+player_uuid+"','{}');"); + } + JDBCsetUp.QueryResult queryResult1=JDBCsetUp.executeQuery("SELECT * FROM FTB WHERE player='" + player_uuid + "';"); + ResultSet resultSet1=queryResult1.getResultSet(); + if(!resultSet1.next()){ + JDBCsetUp.executeUpdate("INSERT INTO FTB(player,tag) VALUES('"+player_uuid+"','{}');"); + } + } + } catch (SQLException e) { + e.printStackTrace(); } - JDBCsetUp.QueryResult queryResult1=JDBCsetUp.executeQuery("SELECT * FROM FTB WHERE player='" + player_uuid + "';"); - ResultSet resultSet1=queryResult1.getResultSet(); - if(!resultSet1.next()){ - JDBCsetUp.executeUpdate("INSERT INTO FTB(player,tag) VALUES('"+player_uuid+"','{}');"); - } - } + }); + } } diff --git a/src/main/java/vip/fubuki/playersync/mixin/MixinPlayerProgress.java b/src/main/java/vip/fubuki/playersync/mixin/MixinPlayerProgress.java index 7aa3316..382a710 100644 --- a/src/main/java/vip/fubuki/playersync/mixin/MixinPlayerProgress.java +++ b/src/main/java/vip/fubuki/playersync/mixin/MixinPlayerProgress.java @@ -5,6 +5,7 @@ import net.minecraft.nbt.CompoundNBT; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +import vip.fubuki.playersync.PlayerSync; import vip.fubuki.playersync.util.JDBCsetUp; import java.sql.PreparedStatement; @@ -17,14 +18,16 @@ public class MixinPlayerProgress{ private CompoundNBT save(CompoundNBT tag) { String nbt = tag.toString(); nbt.replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~"); - try { - PreparedStatement preparedStatement= JDBCsetUp.getConnection().prepareStatement("UPDATE AstralSorcery SET tag=? WHERE player=?"); - preparedStatement.setString(2,tag.getString("UUID")); - preparedStatement.setString(1,nbt); - preparedStatement.executeUpdate(); - } catch (SQLException throwable) { - throwable.printStackTrace(); - } + PlayerSync.executorService.submit(() -> { + try { + PreparedStatement preparedStatement= JDBCsetUp.getConnection().prepareStatement("UPDATE AstralSorcery SET tag=? WHERE player=?"); + preparedStatement.setString(2,tag.getString("UUID")); + preparedStatement.setString(1,nbt); + preparedStatement.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } + }); return tag; } } diff --git a/src/main/java/vip/fubuki/playersync/util/PSThreadPoolFactory.java b/src/main/java/vip/fubuki/playersync/util/PSThreadPoolFactory.java new file mode 100644 index 0000000..7269daf --- /dev/null +++ b/src/main/java/vip/fubuki/playersync/util/PSThreadPoolFactory.java @@ -0,0 +1,21 @@ +package vip.fubuki.playersync.util; + +import javax.annotation.Nonnull; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicInteger; + +public class PSThreadPoolFactory implements ThreadFactory { + private final AtomicInteger threadIdx = new AtomicInteger(0); + + private final String threadNamePrefix; + + public PSThreadPoolFactory(String Prefix) { + threadNamePrefix = Prefix; + } + @Override + public Thread newThread(@Nonnull Runnable runnable) { + Thread thread = new Thread(runnable); + thread.setName(threadNamePrefix + "-thread-" + threadIdx.getAndIncrement()); + return thread; + } +}