auto restart system

master
Alex 2021-12-27 20:03:50 +01:00
parent 9743f674a4
commit b565237206
2 changed files with 51 additions and 49 deletions

View File

@ -1,16 +1,7 @@
package net.krakatoa.proxy.command;
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 java.security.SecureRandom;
import java.util.HashMap;
import java.util.UUID;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
@ -20,8 +11,6 @@ public class CodeCommand extends Command {
super(name);
}
HashMap<String, UUID> playersServer = new HashMap<>();
@Override
public void execute(CommandSender commandSender, String[] strings) {
if (commandSender instanceof ProxiedPlayer) {
@ -50,29 +39,6 @@ public class CodeCommand extends Command {
// TODO: add url and copy text
//proxiedPlayer.sendMessage(new TextComponent("§eNeuer Code §c§l" + voiceWebCode));
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
.getCloudServiceProvider().getCloudServiceByName("lobby-1");
IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry()
.getFirstService(IPlayerManager.class);
assert serviceInfoSnapshot != null;
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
for (ServicePlayer player : players) {
System.out.println("player " + player.getName());
playersServer.put("lobby-1", player.getUniqueId());
ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer(
player.getUniqueId());
assert cloudPlayer != null;
cloudPlayer.getPlayerExecutor().connect("NewYork-1");
}
});
proxiedPlayer.sendMessage(
new TextComponent("players "));
}
}

View File

@ -1,7 +1,14 @@
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.IPlayerManager;
import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer;
import earth.krakatao.events.KraSocketClientEventInterface;
import earth.krakatao.protocol.KraSocketClientProtocolMessage;
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;
@ -11,6 +18,10 @@ import org.java_websocket.handshake.ServerHandshake;
public class SocketClientMessageListener implements KraSocketClientEventInterface {
private HashMap<String, UUID> playersServer = new HashMap<>();
private final IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry()
.getFirstService(IPlayerManager.class);
@Override
public void onOpen(ServerHandshake serverHandshake) {
for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) {
@ -32,8 +43,8 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
"consumer ids " + ProxySystem.getInstance().getKraSocketClientProtocol()
.getConsumerHashMap().keySet());
// test - mobile or voice socket connected
if (kraProtocolMessage.getCmdNumber() == 15) {
switch (kraProtocolMessage.getCmdNumber()) {
case 15: // @Deprecated: test - mobile or voice socket connected
ProxyServer.getInstance().getScheduler().runAsync(ProxySystem.getInstance(), () -> {
System.out.println(ProxySystem.getInstance().getFormatter()
.stringToUuid(kraProtocolMessage.getUuid()));
@ -51,6 +62,31 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
}
}
});
break;
case 33329: // server auto restart
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
.getCloudServiceProvider().getCloudServiceByName(kraProtocolMessage.getArgs());
if (serviceInfoSnapshot != null) {
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
for (ServicePlayer player : players) {
playersServer.put(kraProtocolMessage.getArgs(), player.getUniqueId());
/*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;
}
ProxySystem.getInstance().getKraSocketClientProtocol().getConsumerHashMap()