This commit is contained in:
mlus 2025-06-05 00:28:12 +08:00
parent 266fcf0473
commit 699ef4a2ce
4 changed files with 57 additions and 22 deletions

View File

@ -3,4 +3,4 @@
org.gradle.jvmargs=-Xmx3G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=false
mod_version=1.16.5-1.2.2 mod_version=1.16.5-1.3.0

View File

@ -11,14 +11,18 @@ import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import vip.fubuki.playersync.config.JdbcConfig; import vip.fubuki.playersync.config.JdbcConfig;
import vip.fubuki.playersync.util.JDBCsetUp; import vip.fubuki.playersync.util.JDBCsetUp;
import vip.fubuki.playersync.util.PSThreadPoolFactory;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Mod(PlayerSync.MODID) @Mod(PlayerSync.MODID)
public class PlayerSync public class PlayerSync
{ {
public static final String MODID = "playersync"; public static final String MODID = "playersync";
public static ExecutorService executorService = Executors.newCachedThreadPool(new PSThreadPoolFactory("PlayerSync"));
public PlayerSync() public PlayerSync()
{ {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
@ -27,20 +31,27 @@ public class PlayerSync
} }
@SubscribeEvent @SubscribeEvent
public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) throws SQLException { public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {
if (event.getPlayer() instanceof ServerPlayerEntity) { executorService.submit(() -> {
String player_uuid = event.getEntity().getUUID().toString(); try {
JDBCsetUp.QueryResult queryResult=JDBCsetUp.executeQuery("SELECT * FROM AstralSorcery WHERE player='" + player_uuid + "';"); if (event.getPlayer() instanceof ServerPlayerEntity) {
ResultSet resultSet=queryResult.getResultSet(); String player_uuid = event.getEntity().getUUID().toString();
if(!resultSet.next()){ JDBCsetUp.QueryResult queryResult=JDBCsetUp.executeQuery("SELECT * FROM AstralSorcery WHERE player='" + player_uuid + "';");
JDBCsetUp.executeUpdate("INSERT INTO AstralSorcery(player,tag) VALUES('"+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+"','{}');");
}
}
} }
} }

View File

@ -5,6 +5,7 @@ import net.minecraft.nbt.CompoundNBT;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.ModifyArg;
import vip.fubuki.playersync.PlayerSync;
import vip.fubuki.playersync.util.JDBCsetUp; import vip.fubuki.playersync.util.JDBCsetUp;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -17,14 +18,16 @@ public class MixinPlayerProgress{
private CompoundNBT save(CompoundNBT tag) { private CompoundNBT save(CompoundNBT tag) {
String nbt = tag.toString(); String nbt = tag.toString();
nbt.replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~"); nbt.replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~");
try { PlayerSync.executorService.submit(() -> {
PreparedStatement preparedStatement= JDBCsetUp.getConnection().prepareStatement("UPDATE AstralSorcery SET tag=? WHERE player=?"); try {
preparedStatement.setString(2,tag.getString("UUID")); PreparedStatement preparedStatement= JDBCsetUp.getConnection().prepareStatement("UPDATE AstralSorcery SET tag=? WHERE player=?");
preparedStatement.setString(1,nbt); preparedStatement.setString(2,tag.getString("UUID"));
preparedStatement.executeUpdate(); preparedStatement.setString(1,nbt);
} catch (SQLException throwable) { preparedStatement.executeUpdate();
throwable.printStackTrace(); } catch (SQLException e) {
} e.printStackTrace();
}
});
return tag; return tag;
} }
} }

View File

@ -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;
}
}