mirror of
https://github.com/jie65535/gc-opencommand-plugin.git
synced 2025-07-28 18:59:16 +08:00
DON'T LOCK PLAYER!
This commit is contained in:
parent
564f4d1e56
commit
290c4fbf8c
@ -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;
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user