fix: 修复了新版玩家信息加载和跨服同步的问题

This commit is contained in:
2024-02-26 00:21:14 +08:00
parent 5af164ed1a
commit 419229ff15
14 changed files with 326 additions and 317 deletions

View File

@@ -62,7 +62,7 @@ public class HamsterBallPlugin extends JavaPlugin {
BallAPI.getInstance().getEventBus().register(BallBukkitListener.INSTANCE);
logger.info("已注册监听器 BallBukkitListener");
if (BallAPI.getInstance().getBallConfig().isGameServerUpdatePlayerInfo()) {
BallAPI.getInstance().subscribe(BallAPI.PLAYER_INFO_UPDATE_CHANNEL);
BallAPI.getInstance().subscribe(BallAPI.PLAYER_INFO_CHANNEL);
Bukkit.getPluginManager().registerEvents(UpdatePlayerInfoListener.INSTANCE, this);
BallAPI.getInstance().getEventBus().register(UpdatePlayerInfoListener.INSTANCE);
logger.info("已注册监听器 UpdatePlayerInfoListener");
@@ -76,15 +76,17 @@ public class HamsterBallPlugin extends JavaPlugin {
playerInfo.setOnline(false);
BallBukkitUtils.uploadPlayerInfo(playerInfo);
});
} else {
BallAPI.getInstance().subscribeIgnorePrefix(BallAPI.PLAYER_INFO_CHANNEL);
}
sync(() -> {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
PlaceholderHook.INSTANCE.register();
logger.info("已挂载 PlaceholderAPI 变量");
}
BallAPI.getInstance().sendBallMessage(
BallAPI.getInstance().sendRawBallMessage(
BallAPI.BALL_CHANNEL, BallActions.ServerOnline.name(),
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo()), false
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
);
});
long time = System.currentTimeMillis() - start;

View File

@@ -26,7 +26,7 @@ public class UpdatePlayerInfoListener implements Listener {
@Subscribe
public void onBallPlayerLogin(BallPlayerLoginEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
PLAYER_PROXY_SERVER.put(info.getUuid(), BallAPI.getInstance().getBallConfig().getChannelPrefix() + ":" + info.getProxyServer());
PLAYER_PROXY_SERVER.put(info.getUuid(), info.getProxyServer());
}
@EventHandler(ignoreCancelled = true)

View File

@@ -16,6 +16,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@SuppressWarnings("CallToPrintStackTrace")
public final class BallBukkitUtils {
private BallBukkitUtils() {
}
@@ -65,7 +66,7 @@ public final class BallBukkitUtils {
e.printStackTrace();
}
BallAPI.getInstance().sendBallMessage(
BallAPI.PLAYER_INFO_UPDATE_CHANNEL,
BallAPI.PLAYER_INFO_CHANNEL,
BallActions.BallPlayerInfoUpdate.name(),
new BallPlayerInfoUpdateEvent(playerInfo)
);