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.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 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+"','{}');");
}
}
});
}
}

View File

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

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