perf: 优化稳定性

This commit is contained in:
2022-12-04 02:19:00 +08:00
parent 60bc19fcec
commit afbe103909
9 changed files with 78 additions and 53 deletions

View File

@@ -8,7 +8,8 @@ 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.BallServerType;
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
import cn.hamster3.mc.plugin.ball.common.event.player.*;
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerConnectServerEvent;
import cn.hamster3.mc.plugin.ball.common.event.player.BallPlayerInfoUpdateEvent;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
@@ -89,31 +90,7 @@ public abstract class BallAPI {
}
@Override
public void onBallPlayerLogout(@NotNull BallPlayerLogoutEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
playerInfo.put(info.getUuid(), info);
}
@Override
public void onBallPlayerLogin(@NotNull BallPlayerLoginEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
playerInfo.put(info.getUuid(), info);
}
@Override
public void onBallPlayerPostConnectServer(@NotNull BallPlayerPostConnectServerEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
playerInfo.put(info.getUuid(), info);
}
@Override
public void onBallPlayerPostLogin(@NotNull BallPlayerPostLoginEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
playerInfo.put(info.getUuid(), info);
}
@Override
public void onBallPlayerPreConnectServer(@NotNull BallPlayerPreConnectServerEvent event) {
public void onBallPlayerInfoUpdate(@NotNull BallPlayerInfoUpdateEvent event) {
BallPlayerInfo info = event.getPlayerInfo();
playerInfo.put(info.getUuid(), info);
}

View File

@@ -116,6 +116,17 @@ public class BallChannelHandler extends SimpleChannelInboundHandler<String> {
}
break;
}
case BallPlayerInfoUpdateEvent.ACTION: {
BallPlayerInfoUpdateEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerInfoUpdateEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) {
try {
listener.onBallPlayerInfoUpdate(event);
} catch (Exception | Error e) {
e.printStackTrace();
}
}
break;
}
case BallPlayerChatEvent.ACTION: {
BallPlayerChatEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerChatEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) {

View File

@@ -0,0 +1,18 @@
package cn.hamster3.mc.plugin.ball.common.event.player;
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.jetbrains.annotations.NotNull;
/**
* 玩家已进入子服
*/
@Data
@AllArgsConstructor
public class BallPlayerInfoUpdateEvent {
public static final String ACTION = "PlayerInfoUpdateEvent";
@NotNull
private final BallPlayerInfo playerInfo;
}

View File

@@ -6,7 +6,6 @@ import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
import org.jetbrains.annotations.NotNull;
@SuppressWarnings("unused")
public abstract class BallListener {
/**
* 该监听器的执行优先级
@@ -53,6 +52,9 @@ public abstract class BallListener {
public void onBallPlayerLogout(@NotNull BallPlayerLogoutEvent event) {
}
public void onBallPlayerInfoUpdate(@NotNull BallPlayerInfoUpdateEvent event) {
}
public void onBallPlayerChat(@NotNull BallPlayerChatEvent event) {
}