auto restart system
parent
c6c55d512d
commit
7a75a4c205
|
@ -1,7 +1,9 @@
|
|||
package net.krakatoa.proxy.listener;
|
||||
|
||||
import de.dytanic.cloudnet.driver.CloudNetDriver;
|
||||
import de.dytanic.cloudnet.driver.service.ServiceConfiguration;
|
||||
import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot;
|
||||
import de.dytanic.cloudnet.driver.service.ServiceTask;
|
||||
import de.dytanic.cloudnet.ext.bridge.BridgeServiceProperty;
|
||||
import de.dytanic.cloudnet.ext.bridge.player.ICloudPlayer;
|
||||
import de.dytanic.cloudnet.ext.bridge.player.IPlayerManager;
|
||||
|
@ -66,31 +68,61 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
|
|||
case 33329: { // stop server - server auto restart
|
||||
String serverName = kraProtocolMessage.getArgs().toLowerCase();
|
||||
|
||||
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
|
||||
.getCloudServiceProvider()
|
||||
.getCloudServiceByName(serverName);
|
||||
if (serverName.equals("lobby")) { // start new lobby
|
||||
if (CloudNetDriver.getInstance().getServiceTaskProvider().isServiceTaskPresent("Lobby")) {
|
||||
ServiceTask serviceTask = CloudNetDriver.getInstance().getServiceTaskProvider()
|
||||
.getServiceTask("Lobby");
|
||||
|
||||
if (serviceInfoSnapshot != null) {
|
||||
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
|
||||
players.forEach(player -> {
|
||||
ProxiedPlayer proxiedPlayer = ProxySystem.getInstance().getProxy()
|
||||
.getPlayer(player.getUniqueId());
|
||||
proxiedPlayer.sendMessage(
|
||||
new TextComponent("§4AutoRestart §8» §cRestarting server..."));
|
||||
if (serviceTask != null) {
|
||||
ServiceInfoSnapshot serviceInfoSnapshot = ServiceConfiguration.builder(serviceTask)
|
||||
.build().createNewService();
|
||||
|
||||
if (serviceInfoSnapshot != null) {
|
||||
serviceInfoSnapshot.provider().start();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else { // game server
|
||||
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
|
||||
.getCloudServiceProvider()
|
||||
.getCloudServiceByName(serverName);
|
||||
|
||||
if (serviceInfoSnapshot != null) {
|
||||
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
|
||||
players.forEach(player -> {
|
||||
ProxiedPlayer proxiedPlayer = ProxySystem.getInstance().getProxy()
|
||||
.getPlayer(player.getUniqueId());
|
||||
proxiedPlayer.sendMessage(
|
||||
new TextComponent("§4AutoRestart §8» §cRestarting server..."));
|
||||
});
|
||||
|
||||
playersAutoRestartServerSystem.put(serverName, players);
|
||||
});
|
||||
|
||||
playersAutoRestartServerSystem.put(serverName, players);
|
||||
});
|
||||
// stop target server
|
||||
CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop();
|
||||
}
|
||||
|
||||
|
||||
// stop target server
|
||||
CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 59739: { // send players back to server - auto restart system
|
||||
String serverName = kraProtocolMessage.getArgs().toLowerCase();
|
||||
|
||||
if (playersAutoRestartServerSystem.containsKey(serverName)) {
|
||||
if (serverName.equals("lobby")) { // close old lobbies
|
||||
Collection<ServiceInfoSnapshot> serviceInfoSnapshots = CloudNetDriver.getInstance()
|
||||
.getCloudServiceProvider()
|
||||
.getCloudServices("Lobby");
|
||||
|
||||
if (serviceInfoSnapshots != null) {
|
||||
serviceInfoSnapshots.forEach(serviceInfoSnapshot -> {
|
||||
if (!serverName.equals(serviceInfoSnapshot.getName())) {
|
||||
serviceInfoSnapshot.provider().stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (playersAutoRestartServerSystem.containsKey(serverName)) { // send players back
|
||||
playersAutoRestartServerSystem.get(serverName).forEach(servicePlayer -> {
|
||||
ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer(servicePlayer.getUniqueId());
|
||||
|
||||
|
|
Loading…
Reference in New Issue