Add dispatch to server hook & create instance

This commit is contained in:
KingRainbow44 2022-04-26 20:47:28 -04:00
parent f1623e9eab
commit 7ac31d9991
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
2 changed files with 13 additions and 5 deletions

View File

@ -9,6 +9,7 @@ import java.net.InetSocketAddress;
import emu.grasscutter.command.CommandMap; import emu.grasscutter.command.CommandMap;
import emu.grasscutter.plugin.PluginManager; import emu.grasscutter.plugin.PluginManager;
import emu.grasscutter.plugin.api.ServerHook;
import emu.grasscutter.utils.Utils; import emu.grasscutter.utils.Utils;
import org.reflections.Reflections; import org.reflections.Reflections;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -77,6 +78,9 @@ public final class Grasscutter {
dispatchServer = new DispatchServer(); dispatchServer = new DispatchServer();
gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port)); gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port));
// Create server hook instance.
new ServerHook(gameServer, dispatchServer);
// Start servers. // Start servers.
if(getConfig().RunMode.equalsIgnoreCase("HYBRID")) { if(getConfig().RunMode.equalsIgnoreCase("HYBRID")) {
dispatchServer.start(); dispatchServer.start();

View File

@ -1,6 +1,7 @@
package emu.grasscutter.plugin.api; package emu.grasscutter.plugin.api;
import emu.grasscutter.game.GenshinPlayer; import emu.grasscutter.game.GenshinPlayer;
import emu.grasscutter.server.dispatch.DispatchServer;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import java.util.LinkedList; import java.util.LinkedList;
@ -11,7 +12,8 @@ import java.util.List;
*/ */
public final class ServerHook { public final class ServerHook {
private static ServerHook instance; private static ServerHook instance;
private final GameServer server; private final GameServer gameServer;
private final DispatchServer dispatchServer;
/** /**
* Gets the server hook instance. * Gets the server hook instance.
@ -23,10 +25,12 @@ public final class ServerHook {
/** /**
* Hooks into a server. * Hooks into a server.
* @param server The server to hook into. * @param gameServer The game server to hook into.
* @param dispatchServer The dispatch server to hook into.
*/ */
public ServerHook(GameServer server) { public ServerHook(GameServer gameServer, DispatchServer dispatchServer) {
this.server = server; this.gameServer = gameServer;
this.dispatchServer = dispatchServer;
instance = this; instance = this;
} }
@ -36,6 +40,6 @@ public final class ServerHook {
* @return Players connected to the server. * @return Players connected to the server.
*/ */
public List<GenshinPlayer> getOnlinePlayers() { public List<GenshinPlayer> getOnlinePlayers() {
return new LinkedList<>(this.server.getPlayers().values()); return new LinkedList<>(this.gameServer.getPlayers().values());
} }
} }