fix: 玩家数据不存储至数据库

This commit is contained in:
2022-10-31 12:18:03 +08:00
parent 53328d740b
commit 2d381d2025

View File

@@ -1,6 +1,7 @@
package cn.hamster3.mc.plugin.core.bungee.listener; package cn.hamster3.mc.plugin.core.bungee.listener;
import cn.hamster3.mc.plugin.ball.common.api.BallAPI; import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
import cn.hamster3.mc.plugin.ball.common.constant.BallCommonConstants;
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo;
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo; import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo; import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo;
@@ -27,6 +28,9 @@ import net.md_5.bungee.event.EventHandler;
import net.md_5.bungee.event.EventPriority; import net.md_5.bungee.event.EventPriority;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@@ -148,11 +152,13 @@ public final class BallBungeeCordListener extends BallListener implements Listen
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onPostLogin(PostLoginEvent event) { public void onPostLogin(PostLoginEvent event) {
ProxiedPlayer player = event.getPlayer(); ProxiedPlayer player = event.getPlayer();
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
BallAPI.getInstance().sendBallMessage( BallAPI.getInstance().sendBallMessage(
BallAPI.BALL_CHANNEL, BallAPI.BALL_CHANNEL,
BallPlayerPostLoginEvent.ACTION, BallPlayerPostLoginEvent.ACTION,
new BallPlayerPostLoginEvent(BallBungeeCordUtils.getPlayerInfo(player, true)) new BallPlayerPostLoginEvent(playerInfo)
); );
uploadPlayerInfo(playerInfo);
} }
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
@@ -164,6 +170,7 @@ public final class BallBungeeCordListener extends BallListener implements Listen
BallPlayerConnectServerEvent.ACTION, BallPlayerConnectServerEvent.ACTION,
new BallPlayerConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName()) new BallPlayerConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName())
); );
uploadPlayerInfo(playerInfo);
} }
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
@@ -175,6 +182,7 @@ public final class BallBungeeCordListener extends BallListener implements Listen
BallPlayerPostConnectServerEvent.ACTION, BallPlayerPostConnectServerEvent.ACTION,
new BallPlayerPostConnectServerEvent(playerInfo) new BallPlayerPostConnectServerEvent(playerInfo)
); );
uploadPlayerInfo(playerInfo);
} }
@EventHandler @EventHandler
@@ -188,10 +196,29 @@ public final class BallBungeeCordListener extends BallListener implements Listen
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onPlayerDisconnect(PlayerDisconnectEvent event) { public void onPlayerDisconnect(PlayerDisconnectEvent event) {
ProxiedPlayer player = event.getPlayer(); ProxiedPlayer player = event.getPlayer();
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, false);
BallAPI.getInstance().sendBallMessage( BallAPI.getInstance().sendBallMessage(
BallAPI.BALL_CHANNEL, BallAPI.BALL_CHANNEL,
BallPlayerLogoutEvent.ACTION, BallPlayerLogoutEvent.ACTION,
new BallPlayerLogoutEvent(BallBungeeCordUtils.getPlayerInfo(player, false)) new BallPlayerLogoutEvent(playerInfo)
); );
uploadPlayerInfo(playerInfo);
}
private void uploadPlayerInfo(BallPlayerInfo playerInfo) {
ProxyServer.getInstance().getScheduler().runAsync(HamsterBallPlugin.getInstance(), () -> {
try (Connection connection = CoreAPI.getInstance().getConnection()) {
PreparedStatement statement = connection.prepareStatement("REPLACE INTO " + BallCommonConstants.SQL.PLAYER_INFO_TABLE + " VALUES(?, ?, ?, ?, ?);");
statement.setString(1, playerInfo.getUuid().toString());
statement.setString(2, playerInfo.getName());
statement.setString(3, playerInfo.getGameServer());
statement.setString(4, playerInfo.getProxyServer());
statement.setBoolean(5, playerInfo.isOnline());
statement.executeUpdate();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
});
} }
} }