From a4048d4fd10f3afa646e3e90df3a7fe3d79d2ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9D=97=E5=90=9B?= Date: Fri, 22 Jul 2022 22:08:02 +0800 Subject: [PATCH] Add auto sending player list --- .../opencommand/socket/SocketClient.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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 e07ecba..692092b 100644 --- a/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java +++ b/src/main/java/com/github/jie65535/opencommand/socket/SocketClient.java @@ -4,6 +4,7 @@ import com.github.jie65535.opencommand.OpenCommandConfig; import com.github.jie65535.opencommand.OpenCommandPlugin; import com.github.jie65535.opencommand.socket.packet.*; import com.github.jie65535.opencommand.socket.packet.player.Player; +import com.github.jie65535.opencommand.socket.packet.player.PlayerList; import emu.grasscutter.Grasscutter; import emu.grasscutter.command.CommandMap; import emu.grasscutter.utils.MessageHandler; @@ -13,6 +14,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; +import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; @@ -40,6 +42,7 @@ public class SocketClient { } timer = new Timer(); timer.schedule(new SendHeartBeatPacket(), 500); + timer.schedule(new SendPlayerListPacket(), 1000); } // 发送数据包 @@ -77,6 +80,23 @@ public class SocketClient { } } + private static class SendPlayerListPacket extends TimerTask { + @Override + public void run() { + if (connect) { + PlayerList playerList = new PlayerList(); + playerList.player = Grasscutter.getGameServer().getPlayers().size(); + ArrayList playerNames = new ArrayList<>(); + for (emu.grasscutter.game.player.Player player : Grasscutter.getGameServer().getPlayers().values()) { + playerNames.add(player.getNickname()); + playerList.playerMap.put(player.getUid(), player.getNickname()); + } + playerList.playerList = playerNames; + sendPacket(playerList); + } + } + } + // 数据包接收 private static class ReceiveThread extends Thread { private InputStream is;