auto restart system

master
Alex 2021-12-27 21:31:53 +01:00
parent b565237206
commit b4dd93fa3d
1 changed files with 27 additions and 13 deletions

View File

@ -3,12 +3,13 @@ package net.krakatoa.proxy.listener;
import de.dytanic.cloudnet.driver.CloudNetDriver; import de.dytanic.cloudnet.driver.CloudNetDriver;
import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot; import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot;
import de.dytanic.cloudnet.ext.bridge.BridgeServiceProperty; 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.IPlayerManager;
import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer; import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer;
import earth.krakatao.events.KraSocketClientEventInterface; import earth.krakatao.events.KraSocketClientEventInterface;
import earth.krakatao.protocol.KraSocketClientProtocolMessage; import earth.krakatao.protocol.KraSocketClientProtocolMessage;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import net.krakatoa.proxy.ProxySystem; import net.krakatoa.proxy.ProxySystem;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
@ -18,7 +19,7 @@ import org.java_websocket.handshake.ServerHandshake;
public class SocketClientMessageListener implements KraSocketClientEventInterface { public class SocketClientMessageListener implements KraSocketClientEventInterface {
private HashMap<String, UUID> playersServer = new HashMap<>(); private HashMap<String, Collection<ServicePlayer>> playersAutoRestartServerSystem = new HashMap<>();
private final IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry() private final IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry()
.getFirstService(IPlayerManager.class); .getFirstService(IPlayerManager.class);
@ -31,7 +32,6 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
@Override @Override
public void onMessage(KraSocketClientProtocolMessage kraProtocolMessage) { public void onMessage(KraSocketClientProtocolMessage kraProtocolMessage) {
System.out.println( System.out.println(
"kraProtocolMessage " + kraProtocolMessage.getCmdID() + " " + kraProtocolMessage.getArgs()); "kraProtocolMessage " + kraProtocolMessage.getCmdID() + " " + kraProtocolMessage.getArgs());
@ -63,27 +63,41 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
} }
}); });
break; break;
case 33329: // server auto restart case 33329: { // stop server - server auto restart
String serverName = kraProtocolMessage.getArgs().toLowerCase();
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance() ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
.getCloudServiceProvider().getCloudServiceByName(kraProtocolMessage.getArgs()); .getCloudServiceProvider()
.getCloudServiceByName(serverName);
if (serviceInfoSnapshot != null) { if (serviceInfoSnapshot != null) {
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> { serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
for (ServicePlayer player : players) { playersAutoRestartServerSystem.put(serverName, players);
playersServer.put(kraProtocolMessage.getArgs(), player.getUniqueId()); });
/*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()); player.getUniqueId());
if (cloudPlayer != null) { if (cloudPlayer != null) {
cloudPlayer.getPlayerExecutor().connect(kraProtocolMessage.getArgs()); cloudPlayer.getPlayerExecutor().connect(kraProtocolMessage.getArgs());
}*/ }*/
}
// stop target server
CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop();
});
}
break; break;
}
default: default:
break; break;