diff --git a/src/main/java/com/github/jie65535/opencommand/EventListeners.java b/src/main/java/com/github/jie65535/opencommand/EventListeners.java index fa41be9..fc3a40a 100644 --- a/src/main/java/com/github/jie65535/opencommand/EventListeners.java +++ b/src/main/java/com/github/jie65535/opencommand/EventListeners.java @@ -44,13 +44,11 @@ public final class EventListeners { * @param uid 玩家uid * @return 新的玩家消息处理类 */ - public static StringBuilder getPlayerNewMessageHandler(int uid) { + public static StringBuilder getPlayerMessageHandler(int uid) { var handler = playerMessageHandlers.get(uid); if (handler == null) { handler = new StringBuilder(); playerMessageHandlers.put(uid, handler); - } else { - handler.setLength(0); } return handler; } diff --git a/src/main/java/com/github/jie65535/opencommand/OpenCommandHandler.java b/src/main/java/com/github/jie65535/opencommand/OpenCommandHandler.java index 9f8595b..5288363 100644 --- a/src/main/java/com/github/jie65535/opencommand/OpenCommandHandler.java +++ b/src/main/java/com/github/jie65535/opencommand/OpenCommandHandler.java @@ -152,11 +152,12 @@ public final class OpenCommandHandler implements Router { context.json(new JsonResponse(404, "Player not found")); return; } + // Player MessageHandler do not support concurrency + var handler = EventListeners.getPlayerMessageHandler(player.getUid()); //noinspection SynchronizationOnLocalVariableOrMethodParameter - synchronized (player) { - // Player MessageHandler do not support concurrency - var handler = EventListeners.getPlayerNewMessageHandler(player.getUid()); + synchronized (handler) { try { + handler.setLength(0); CommandMap.getInstance().invoke(player, player, command); context.json(new JsonResponse(handler.toString())); } catch (Exception e) { diff --git a/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java b/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java index 4c9e0b2..e32cebd 100644 --- a/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java +++ b/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java @@ -159,11 +159,12 @@ public class SocketClient { sendPacket(new HttpPacket(404, "Player not found."), packet.packetID); return; } + // Player MessageHandler do not support concurrency + var handler = EventListeners.getPlayerMessageHandler(playerData.getUid()); //noinspection SynchronizationOnLocalVariableOrMethodParameter - synchronized (playerData) { - // Player MessageHandler do not support concurrency - var handler = EventListeners.getPlayerNewMessageHandler(playerData.getUid()); + synchronized (handler) { try { + handler.setLength(0); CommandMap.getInstance().invoke(playerData, playerData, command); sendPacket(new HttpPacket(200, handler.toString()), packet.packetID); } catch (Exception e) {