diff --git a/src/main/java/com/github/jie65535/opencommand/OpenCommandOnlyHttpHandler.java b/src/main/java/com/github/jie65535/opencommand/OpenCommandOnlyHttpHandler.java index db21c84..b3674f5 100644 --- a/src/main/java/com/github/jie65535/opencommand/OpenCommandOnlyHttpHandler.java +++ b/src/main/java/com/github/jie65535/opencommand/OpenCommandOnlyHttpHandler.java @@ -26,10 +26,8 @@ import com.github.jie65535.opencommand.socket.packet.HttpPacket; import com.github.jie65535.opencommand.socket.packet.RunConsoleCommand; import com.github.jie65535.opencommand.socket.packet.player.Player; import com.github.jie65535.opencommand.socket.packet.player.PlayerEnum; -import emu.grasscutter.command.CommandMap; import emu.grasscutter.server.http.Router; import emu.grasscutter.utils.Crypto; -import emu.grasscutter.utils.MessageHandler; import emu.grasscutter.utils.Utils; import express.Express; import express.http.Request; @@ -41,7 +39,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import java.util.Date; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.FutureTask; public final class OpenCommandOnlyHttpHandler implements Router { @@ -189,7 +186,7 @@ public final class OpenCommandOnlyHttpHandler implements Router { player.type = PlayerEnum.RunCommand; player.data = command; - if (!SocketServer.sendUidPacket(playerId, player, socketDataWait)) { + if (!SocketServer.sendUidPacketAndWait(playerId, player, socketDataWait)) { response.json(new JsonResponse(404, "Player Not Found.")); return; } diff --git a/src/main/java/com/github/jie65535/opencommand/socket/SocketServer.java b/src/main/java/com/github/jie65535/opencommand/socket/SocketServer.java index 4c8d192..4f2dde4 100644 --- a/src/main/java/com/github/jie65535/opencommand/socket/SocketServer.java +++ b/src/main/java/com/github/jie65535/opencommand/socket/SocketServer.java @@ -52,9 +52,9 @@ public class SocketServer { // 向全部客户端发送数据 public static boolean sendAllPacket(BasePacket packet) { var p = SocketUtils.getPacket(packet); - HashMap old = (HashMap) clientList.clone(); + HashMap old = (HashMap) clientList.clone(); for (var client : old.entrySet()) { - if (!client.getValue().sendPacket(p)) { + if (!client.getValue().clientThread.sendPacket(p)) { mLogger.warn("[OpenCommand] Send packet to client {} failed", client.getKey()); clientList.remove(client.getKey()); } @@ -90,8 +90,24 @@ public class SocketServer { return false; } + public static boolean sendUidPacket(Integer playerId, BasePacket player) { + var p = SocketUtils.getPacket(player); + var clientID = SocketData.getPlayerInServer(playerId); + if (clientID == null) return false; + var client = clientList.get(clientID); + if (client != null) { + if (!client.clientThread.sendPacket(p)) { + mLogger.warn("[OpenCommand] Send packet to client {} failed", clientID); + clientList.remove(clientID); + return false; + } + return true; + } + return false; + } + // 根据Uid发送到相应的客户端异步返回数据 - public static boolean sendUidPacket(Integer playerId, BasePacket player, SocketDataWait socketDataWait) { + public static boolean sendUidPacketAndWait(Integer playerId, BasePacket player, SocketDataWait socketDataWait) { var p = SocketUtils.getPacketAndPackID(player); var clientID = SocketData.getPlayerInServer(playerId); if (clientID == null) return false; diff --git a/src/main/java/com/github/jie65535/opencommand/socket/packet/player/Player.java b/src/main/java/com/github/jie65535/opencommand/socket/packet/player/Player.java index ee07fd8..dd3f324 100644 --- a/src/main/java/com/github/jie65535/opencommand/socket/packet/player/Player.java +++ b/src/main/java/com/github/jie65535/opencommand/socket/packet/player/Player.java @@ -26,6 +26,6 @@ public class Player extends BasePacket { p.type = PlayerEnum.DropMessage; p.uid = uid; p.data = str; - SocketServer.sendAllPacket(p); + SocketServer.sendUidPacket(uid, p); } }