diff --git a/src/main/java/emu/grasscutter/plugin/api/ServerHelper.java b/src/main/java/emu/grasscutter/plugin/api/ServerHelper.java index 4fc8256bc..a1fcb66f5 100644 --- a/src/main/java/emu/grasscutter/plugin/api/ServerHelper.java +++ b/src/main/java/emu/grasscutter/plugin/api/ServerHelper.java @@ -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 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(); + } } diff --git a/src/main/java/emu/grasscutter/server/game/GameServer.java b/src/main/java/emu/grasscutter/server/game/GameServer.java index 76f4f9315..99f610696 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServer.java +++ b/src/main/java/emu/grasscutter/server/game/GameServer.java @@ -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 { // 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 iterator() { + return this.getPlayers().values().iterator(); + } }