From b4dd93fa3dc11f9f5e2833f3d1318e21e588b49b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Dec 2021 21:31:53 +0100 Subject: [PATCH] auto restart system --- .../listener/SocketClientMessageListener.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/krakatoa/proxy/listener/SocketClientMessageListener.java b/src/main/java/net/krakatoa/proxy/listener/SocketClientMessageListener.java index 699e5a1..6a9c975 100644 --- a/src/main/java/net/krakatoa/proxy/listener/SocketClientMessageListener.java +++ b/src/main/java/net/krakatoa/proxy/listener/SocketClientMessageListener.java @@ -3,12 +3,13 @@ package net.krakatoa.proxy.listener; import de.dytanic.cloudnet.driver.CloudNetDriver; import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot; import de.dytanic.cloudnet.ext.bridge.BridgeServiceProperty; +import de.dytanic.cloudnet.ext.bridge.player.ICloudPlayer; import de.dytanic.cloudnet.ext.bridge.player.IPlayerManager; import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer; import earth.krakatao.events.KraSocketClientEventInterface; import earth.krakatao.protocol.KraSocketClientProtocolMessage; +import java.util.Collection; import java.util.HashMap; -import java.util.UUID; import java.util.concurrent.TimeUnit; import net.krakatoa.proxy.ProxySystem; import net.md_5.bungee.api.ProxyServer; @@ -18,7 +19,7 @@ import org.java_websocket.handshake.ServerHandshake; public class SocketClientMessageListener implements KraSocketClientEventInterface { - private HashMap playersServer = new HashMap<>(); + private HashMap> playersAutoRestartServerSystem = new HashMap<>(); private final IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry() .getFirstService(IPlayerManager.class); @@ -31,7 +32,6 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac @Override public void onMessage(KraSocketClientProtocolMessage kraProtocolMessage) { - System.out.println( "kraProtocolMessage " + kraProtocolMessage.getCmdID() + " " + kraProtocolMessage.getArgs()); @@ -63,27 +63,41 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac } }); break; - case 33329: // server auto restart + case 33329: { // stop server - server auto restart + String serverName = kraProtocolMessage.getArgs().toLowerCase(); + ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance() - .getCloudServiceProvider().getCloudServiceByName(kraProtocolMessage.getArgs()); + .getCloudServiceProvider() + .getCloudServiceByName(serverName); if (serviceInfoSnapshot != null) { serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> { - for (ServicePlayer player : players) { - playersServer.put(kraProtocolMessage.getArgs(), player.getUniqueId()); + playersAutoRestartServerSystem.put(serverName, players); + }); - /*ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer( + // stop target server + CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop(); + } + break; + } + case 59739: { // send players back to server - auto restart system + String serverName = kraProtocolMessage.getArgs().toLowerCase(); + playersAutoRestartServerSystem.get(serverName).forEach(servicePlayer -> { + ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer(servicePlayer.getUniqueId()); + + if (cloudPlayer != null) { + cloudPlayer.getPlayerExecutor().connect(serverName); + } + }); + + /*ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer( player.getUniqueId()); if (cloudPlayer != null) { cloudPlayer.getPlayerExecutor().connect(kraProtocolMessage.getArgs()); }*/ - } - // stop target server - CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop(); - }); - } break; + } default: break;