Add methods to get players from the server

This commit is contained in:
KingRainbow44 2023-05-19 19:32:20 -04:00
parent 8b9ca5ec7e
commit 8210fe6485
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
2 changed files with 37 additions and 11 deletions

View File

@ -10,6 +10,8 @@ import emu.grasscutter.game.player.Player;
import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.http.HttpServer;
import emu.grasscutter.server.http.Router;
import emu.grasscutter.server.scheduler.ServerTaskScheduler;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
@ -42,6 +44,13 @@ public class ServerHelper {
return instance;
}
/**
* @return The server's current run mode.
*/
public Grasscutter.ServerRunMode getRunMode() {
return Grasscutter.getRunMode();
}
/**
* @return The game server.
*/
@ -61,7 +70,6 @@ public class ServerHelper {
*
* @return Players connected to the server.
*/
@Deprecated(forRemoval = true)
public List<Player> getOnlinePlayers() {
return new ArrayList<>(this.gameServer.getPlayers().values());
}
@ -123,4 +131,14 @@ public class ServerHelper {
public void setPermissionHandler(PermissionHandler permHandler) {
Grasscutter.setPermissionHandler(permHandler);
}
/**
* @return The server's task scheduler.
*/
public ServerTaskScheduler getScheduler() {
if (this.getGameServer() == null)
return null;
return this.getGameServer().getScheduler();
}
}

View File

@ -1,9 +1,5 @@
package emu.grasscutter.server.game;
import static emu.grasscutter.config.Configuration.DISPATCH_INFO;
import static emu.grasscutter.config.Configuration.GAME_INFO;
import static emu.grasscutter.utils.Language.translate;
import emu.grasscutter.GameConstants;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.Grasscutter.ServerRunMode;
@ -42,20 +38,26 @@ import emu.grasscutter.server.event.internal.ServerStopEvent;
import emu.grasscutter.server.event.types.ServerEvent;
import emu.grasscutter.server.scheduler.ServerTaskScheduler;
import emu.grasscutter.task.TaskMap;
import kcp.highway.ChannelConfig;
import kcp.highway.KcpServer;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import org.jetbrains.annotations.NotNull;
import java.net.InetSocketAddress;
import java.net.URI;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import kcp.highway.ChannelConfig;
import kcp.highway.KcpServer;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import static emu.grasscutter.config.Configuration.DISPATCH_INFO;
import static emu.grasscutter.config.Configuration.GAME_INFO;
import static emu.grasscutter.utils.Language.translate;
@Getter
public final class GameServer extends KcpServer {
public final class GameServer extends KcpServer implements Iterable<Player> {
// Game server base
private final InetSocketAddress address;
private final GameServerPacketHandler packetHandler;
@ -357,4 +359,10 @@ public final class GameServer extends KcpServer {
getWorlds().forEach(World::save);
}
@NotNull
@Override
public Iterator<Player> iterator() {
return this.getPlayers().values().iterator();
}
}