fix: 修复了新版玩家信息加载和跨服同步的问题
This commit is contained in:
@@ -2,25 +2,24 @@ package cn.hamster3.mc.plugin.ball.bungee;
|
||||
|
||||
import cn.hamster3.mc.plugin.ball.bungee.api.BallBungeeCordAPI;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.listener.BallBungeeListener;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.listener.BallBungeeListenerV2;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.listener.BallBungeeMainListener;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.listener.UpdatePlayerInfoListener;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.util.BallBungeeCordUtils;
|
||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@SuppressWarnings("CallToPrintStackTrace")
|
||||
public class HamsterBallPlugin extends Plugin {
|
||||
@Getter
|
||||
private static HamsterBallPlugin instance;
|
||||
|
||||
public static HamsterBallPlugin getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
long start = System.currentTimeMillis();
|
||||
@@ -48,16 +47,21 @@ public class HamsterBallPlugin extends Plugin {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeListener.INSTANCE);
|
||||
BallAPI.getInstance().getEventBus().register(BallBungeeListener.INSTANCE);
|
||||
logger.info("已注册监听器 BallBungeeListener");
|
||||
BallAPI.getInstance().getEventBus().register(BallBungeeListenerV2.INSTANCE);
|
||||
logger.info("已注册监听器 BallBungeeListenerV2");
|
||||
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeMainListener.INSTANCE);
|
||||
logger.info("已注册监听器 BallBungeeMainListener");
|
||||
ProxyServer.getInstance().getPluginManager().registerListener(this, UpdatePlayerInfoListener.INSTANCE);
|
||||
logger.info("已注册监听器 UpdatePlayerInfoListener");
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
|
||||
if (BallAPI.getInstance().getBallConfig().isGameServerUpdatePlayerInfo()) {
|
||||
BallAPI.getInstance().subscribePatterns("*" + BallAPI.PLAYER_INFO_CHANNEL);
|
||||
} else {
|
||||
BallAPI.getInstance().subscribeIgnorePrefix(BallAPI.PLAYER_INFO_CHANNEL);
|
||||
}
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.ServerOnline.name(),
|
||||
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo()),
|
||||
false
|
||||
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
|
||||
);
|
||||
// 移除失效的在线玩家
|
||||
BallAPI.getInstance().getAllPlayerInfo().values()
|
||||
@@ -68,7 +72,6 @@ public class HamsterBallPlugin extends Plugin {
|
||||
playerInfo.setOnline(false);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
});
|
||||
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球启动完成,总计耗时 " + time + " ms");
|
||||
}
|
||||
|
@@ -1,62 +1,107 @@
|
||||
package cn.hamster3.mc.plugin.ball.bungee.listener;
|
||||
|
||||
import cn.hamster3.mc.plugin.ball.bungee.util.BallBungeeCordUtils;
|
||||
import cn.hamster3.mc.plugin.ball.bungee.HamsterBallPlugin;
|
||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerLoginEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerPostLoginEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerPreLoginEvent;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.audience.Audience;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.LoginEvent;
|
||||
import net.md_5.bungee.api.event.PostLoginEvent;
|
||||
import net.md_5.bungee.api.event.PreLoginEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import net.md_5.bungee.event.EventPriority;
|
||||
|
||||
public final class BallBungeeListener implements Listener {
|
||||
import java.util.UUID;
|
||||
|
||||
public class BallBungeeListener {
|
||||
public static final BallBungeeListener INSTANCE = new BallBungeeListener();
|
||||
|
||||
private BallBungeeListener() {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPreLogin(PreLoginEvent event) {
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPreLogin.name(),
|
||||
new BallPlayerPreLoginEvent(event.getConnection().getName()),
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onLogin(LoginEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
@Subscribe
|
||||
public void onDispatchConsoleCommand(DispatchConsoleCommandEvent event) {
|
||||
if (event.getType() != null && event.getType() != BallServerType.PROXY) {
|
||||
return;
|
||||
}
|
||||
PendingConnection connection = event.getConnection();
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerLogin.name(),
|
||||
new BallPlayerLoginEvent(new BallPlayerInfo(
|
||||
connection.getUniqueId(), connection.getName(), "connecting",
|
||||
BallAPI.getInstance().getLocalServerId(), true
|
||||
)), false
|
||||
);
|
||||
if (event.getServerID() != null && !BallAPI.getInstance().isLocalServer(event.getServerID())) {
|
||||
return;
|
||||
}
|
||||
ProxyServer server = ProxyServer.getInstance();
|
||||
server.getPluginManager().dispatchCommand(server.getConsole(), event.getCommand());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPostLogin(PostLoginEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPostLogin.name(),
|
||||
new BallPlayerPostLoginEvent(playerInfo),
|
||||
false
|
||||
);
|
||||
@Subscribe
|
||||
public void onDispatchPlayerCommandEvent(DispatchPlayerCommandEvent event) {
|
||||
if (event.getType() != null && event.getType() != BallServerType.GAME) {
|
||||
return;
|
||||
}
|
||||
ProxyServer server = ProxyServer.getInstance();
|
||||
if (event.getUuid() != null) {
|
||||
ProxiedPlayer player = server.getPlayer(event.getUuid());
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
server.getPluginManager().dispatchCommand(player, event.getCommand());
|
||||
return;
|
||||
}
|
||||
for (ProxiedPlayer player : server.getPlayers()) {
|
||||
server.getPluginManager().dispatchCommand(player, event.getCommand());
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onKickPlayerEvent(KickPlayerEvent event) {
|
||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(event.getUuid());
|
||||
BaseComponent[] components = BungeeComponentSerializer.get().serialize(event.getReason());
|
||||
player.disconnect(components);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendMessageToPlayerEvent(SendMessageToPlayerEvent event) {
|
||||
for (UUID receiver : event.getReceivers()) {
|
||||
Audience audience = CoreAPI.getInstance().getAudienceProvider().player(receiver);
|
||||
event.getMessage().show(audience);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendPlayerToLocationEvent(SendPlayerToLocationEvent event) {
|
||||
String serverID = event.getLocation().getServerID();
|
||||
ServerInfo serverInfo = ProxyServer.getInstance().getServerInfo(serverID);
|
||||
if (serverInfo == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线");
|
||||
return;
|
||||
}
|
||||
for (UUID uuid : event.getSendPlayerUUID()) {
|
||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
||||
if (player == null) {
|
||||
continue;
|
||||
}
|
||||
if (player.getServer().getInfo().getName().equals(serverID)) {
|
||||
continue;
|
||||
}
|
||||
player.connect(serverInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendPlayerToPlayerEvent(SendPlayerToPlayerEvent event) {
|
||||
UUID toPlayerUUID = event.getToPlayerUUID();
|
||||
ProxiedPlayer toPlayer = ProxyServer.getInstance().getPlayer(toPlayerUUID);
|
||||
if (toPlayer == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线");
|
||||
return;
|
||||
}
|
||||
ServerInfo toServer = toPlayer.getServer().getInfo();
|
||||
for (UUID uuid : event.getSendPlayerUUID()) {
|
||||
ProxiedPlayer sendPlayer = ProxyServer.getInstance().getPlayer(uuid);
|
||||
if (sendPlayer.getServer().getInfo().getName().equals(toServer.getName())) {
|
||||
continue;
|
||||
}
|
||||
sendPlayer.connect(toServer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,107 +0,0 @@
|
||||
package cn.hamster3.mc.plugin.ball.bungee.listener;
|
||||
|
||||
import cn.hamster3.mc.plugin.ball.bungee.HamsterBallPlugin;
|
||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.audience.Audience;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class BallBungeeListenerV2 {
|
||||
public static final BallBungeeListenerV2 INSTANCE = new BallBungeeListenerV2();
|
||||
|
||||
private BallBungeeListenerV2() {
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDispatchConsoleCommand(DispatchConsoleCommandEvent event) {
|
||||
if (event.getType() != null && event.getType() != BallServerType.PROXY) {
|
||||
return;
|
||||
}
|
||||
if (event.getServerID() != null && !BallAPI.getInstance().isLocalServer(event.getServerID())) {
|
||||
return;
|
||||
}
|
||||
ProxyServer server = ProxyServer.getInstance();
|
||||
server.getPluginManager().dispatchCommand(server.getConsole(), event.getCommand());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDispatchPlayerCommandEvent(DispatchPlayerCommandEvent event) {
|
||||
if (event.getType() != null && event.getType() != BallServerType.GAME) {
|
||||
return;
|
||||
}
|
||||
ProxyServer server = ProxyServer.getInstance();
|
||||
if (event.getUuid() != null) {
|
||||
ProxiedPlayer player = server.getPlayer(event.getUuid());
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
server.getPluginManager().dispatchCommand(player, event.getCommand());
|
||||
return;
|
||||
}
|
||||
for (ProxiedPlayer player : server.getPlayers()) {
|
||||
server.getPluginManager().dispatchCommand(player, event.getCommand());
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onKickPlayerEvent(KickPlayerEvent event) {
|
||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(event.getUuid());
|
||||
BaseComponent[] components = BungeeComponentSerializer.get().serialize(event.getReason());
|
||||
player.disconnect(components);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendMessageToPlayerEvent(SendMessageToPlayerEvent event) {
|
||||
for (UUID receiver : event.getReceivers()) {
|
||||
Audience audience = CoreAPI.getInstance().getAudienceProvider().player(receiver);
|
||||
event.getMessage().show(audience);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendPlayerToLocationEvent(SendPlayerToLocationEvent event) {
|
||||
String serverID = event.getLocation().getServerID();
|
||||
ServerInfo serverInfo = ProxyServer.getInstance().getServerInfo(serverID);
|
||||
if (serverInfo == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线");
|
||||
return;
|
||||
}
|
||||
for (UUID uuid : event.getSendPlayerUUID()) {
|
||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
||||
if (player == null) {
|
||||
continue;
|
||||
}
|
||||
if (player.getServer().getInfo().getName().equals(serverID)) {
|
||||
continue;
|
||||
}
|
||||
player.connect(serverInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSendPlayerToPlayerEvent(SendPlayerToPlayerEvent event) {
|
||||
UUID toPlayerUUID = event.getToPlayerUUID();
|
||||
ProxiedPlayer toPlayer = ProxyServer.getInstance().getPlayer(toPlayerUUID);
|
||||
if (toPlayer == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线");
|
||||
return;
|
||||
}
|
||||
ServerInfo toServer = toPlayer.getServer().getInfo();
|
||||
for (UUID uuid : event.getSendPlayerUUID()) {
|
||||
ProxiedPlayer sendPlayer = ProxyServer.getInstance().getPlayer(uuid);
|
||||
if (sendPlayer.getServer().getInfo().getName().equals(toServer.getName())) {
|
||||
continue;
|
||||
}
|
||||
sendPlayer.connect(toServer);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
package cn.hamster3.mc.plugin.ball.bungee.listener;
|
||||
|
||||
import cn.hamster3.mc.plugin.ball.bungee.util.BallBungeeCordUtils;
|
||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerLoginEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerPostLoginEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerPreLoginEvent;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.LoginEvent;
|
||||
import net.md_5.bungee.api.event.PostLoginEvent;
|
||||
import net.md_5.bungee.api.event.PreLoginEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import net.md_5.bungee.event.EventPriority;
|
||||
|
||||
public final class BallBungeeMainListener implements Listener {
|
||||
public static final BallBungeeMainListener INSTANCE = new BallBungeeMainListener();
|
||||
|
||||
private BallBungeeMainListener() {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPreLogin(PreLoginEvent event) {
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPreLogin.name(),
|
||||
new BallPlayerPreLoginEvent(event.getConnection().getName())
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onLogin(LoginEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
PendingConnection connection = event.getConnection();
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerLogin.name(),
|
||||
new BallPlayerLoginEvent(new BallPlayerInfo(
|
||||
connection.getUniqueId(), connection.getName(), "connecting",
|
||||
BallAPI.getInstance().getLocalServerId(), true
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPostLogin(PostLoginEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPostLogin.name(),
|
||||
new BallPlayerPostLoginEvent(playerInfo)
|
||||
);
|
||||
}
|
||||
}
|
@@ -26,11 +26,10 @@ public class UpdatePlayerInfoListener implements Listener {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getTarget().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPreConnectServer.name(),
|
||||
new BallPlayerPreConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName()),
|
||||
false
|
||||
new BallPlayerPreConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName())
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
@@ -40,11 +39,10 @@ public class UpdatePlayerInfoListener implements Listener {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getServer().getInfo().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPostConnectServer.name(),
|
||||
new BallPlayerPostConnectServerEvent(playerInfo),
|
||||
false
|
||||
new BallPlayerPostConnectServerEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
@@ -53,11 +51,10 @@ public class UpdatePlayerInfoListener implements Listener {
|
||||
public void onPlayerDisconnect(PlayerDisconnectEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, false);
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerLogout.name(),
|
||||
new BallPlayerLogoutEvent(playerInfo),
|
||||
false
|
||||
new BallPlayerLogoutEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
|
||||
@SuppressWarnings("CallToPrintStackTrace")
|
||||
public final class BallBungeeCordUtils {
|
||||
private BallBungeeCordUtils() {
|
||||
}
|
||||
@@ -51,8 +52,8 @@ public final class BallBungeeCordUtils {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!BallAPI.getInstance().getBallConfig().isGameServerUpdatePlayerInfo()) {
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.PLAYER_INFO_UPDATE_CHANNEL,
|
||||
BallAPI.getInstance().sendRawBallMessage(
|
||||
BallAPI.PLAYER_INFO_CHANNEL,
|
||||
BallActions.BallPlayerInfoUpdate.name(),
|
||||
new BallPlayerInfoUpdateEvent(playerInfo)
|
||||
);
|
||||
|
Reference in New Issue
Block a user