mirror of
https://github.com/ME1312/SubServers-2.git
synced 2025-02-16 19:51:26 +01:00
Add an option to space out auto-starting servers
This commit is contained in:
parent
024dde444c
commit
6131790245
@ -68,10 +68,14 @@ public class PacketLinkServer implements PacketIn, PacketOut {
|
||||
Server server;
|
||||
if (data.contains("name") && servers.keySet().contains(data.getRawString("name").toLowerCase())) {
|
||||
link(client, servers.get(data.getRawString("name").toLowerCase()));
|
||||
} else if ((server = search(new InetSocketAddress(client.getAddress().getAddress(), data.getInt("port")))) != null) {
|
||||
link(client, server);
|
||||
} else if (data.contains("port")) {
|
||||
if ((server = search(new InetSocketAddress(client.getAddress().getAddress(), data.getInt("port")))) != null) {
|
||||
link(client, server);
|
||||
} else {
|
||||
throw new ServerLinkException("There is no server with address: " + client.getAddress().getAddress().getHostAddress() + ':' + data.getInt("port"));
|
||||
}
|
||||
} else {
|
||||
throw new ServerLinkException("There is no server with address: " + client.getAddress().getAddress().getHostAddress() + ':' + data.getInt("port"));
|
||||
throw new ServerLinkException("Not enough arguments");
|
||||
}
|
||||
} catch (ServerLinkException e) {
|
||||
if (data.contains("name")) {
|
||||
@ -89,8 +93,12 @@ public class PacketLinkServer implements PacketIn, PacketOut {
|
||||
if (server.getSubData() == null) {
|
||||
client.setHandler(server);
|
||||
System.out.println("SubData > " + client.getAddress().toString() + " has been defined as " + ((server instanceof SubServer) ? "SubServer" : "Server") + ": " + server.getName());
|
||||
client.sendPacket(new PacketLinkServer(server.getName(), 0, "Definition Successful"));
|
||||
if (server instanceof SubServer && !((SubServer) server).isRunning()) client.sendPacket(new PacketOutReset("Rogue SubServer Detected"));
|
||||
if (server instanceof SubServer && !((SubServer) server).isRunning()) {
|
||||
System.out.println("SubServers > Sending shutdown signal to rogue SubServer: " + server.getName());
|
||||
client.sendPacket(new PacketOutReset("Rogue SubServer Detected"));
|
||||
} else {
|
||||
client.sendPacket(new PacketLinkServer(server.getName(), 0, "Definition Successful"));
|
||||
}
|
||||
} else {
|
||||
client.sendPacket(new PacketLinkServer(null, 3, "Server already linked"));
|
||||
}
|
||||
|
@ -493,8 +493,6 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
SubServer oserver = api.getSubServer(oname);
|
||||
if (oserver != null && server.isCompatible(oserver)) server.toggleCompatibility(oserver);
|
||||
}
|
||||
if (autorun.contains(name))
|
||||
server.start();
|
||||
}
|
||||
ukeys.clear();
|
||||
api.ready = true;
|
||||
@ -520,6 +518,37 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
}
|
||||
|
||||
System.out.println("SubServers > " + ((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + ((proxies > 1)?proxies+" Proxies, ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" "+((status)?"re":"")+"loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");
|
||||
|
||||
long scd = TimeUnit.SECONDS.toMillis(config.get().getSection("Settings").getLong("Run-On-Launch-Cooldown", 0L));
|
||||
for (Host host : api.getHosts().values()) {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
while (running && begin == resetDate && !host.isAvailable()) {
|
||||
Thread.sleep(250);
|
||||
}
|
||||
List<String> ar = new LinkedList<String>();
|
||||
ar.addAll(autorun);
|
||||
long init = Calendar.getInstance().getTime().getTime();
|
||||
while (running && begin == resetDate && ar.size() > 0) {
|
||||
SubServer server = host.getSubServer(ar.get(0));
|
||||
ar.remove(0);
|
||||
if (server != null && !server.isRunning()) {
|
||||
server.start();
|
||||
if (ar.size() > 0 && scd > 0) {
|
||||
long sleep = Calendar.getInstance().getTime().getTime();
|
||||
while (running && begin == resetDate && server.getSubData() == null && Calendar.getInstance().getTime().getTime() - sleep < scd) {
|
||||
Thread.sleep(250);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (running && begin == resetDate && Calendar.getInstance().getTime().getTime() - init >= 5000)
|
||||
System.out.println("SubServers > The auto-start queue for " + host.getName() + " has been finished");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, "SubServers.Bungee::Automatic_Server_Starter(" + host.getName() + ")").start();
|
||||
}
|
||||
}
|
||||
|
||||
private void post() {
|
||||
|
@ -12,8 +12,8 @@ public class PacketInReset implements PacketIn {
|
||||
|
||||
@Override
|
||||
public void execute(YAMLSection data) {
|
||||
if (data != null && data.contains("m")) Bukkit.getLogger().warning("SubData > Received request for a server shutdown: " + data.getString("m"));
|
||||
else Bukkit.getLogger().warning("SubData > Received request for a server shutdown");
|
||||
if (data != null && data.contains("m")) Bukkit.getLogger().warning("SubData > Received shutdown signal: " + data.getString("m"));
|
||||
else Bukkit.getLogger().warning("SubData > Received shutdown signal");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
|
||||
|
@ -25,8 +25,8 @@ public class PacketInReset implements PacketIn {
|
||||
|
||||
@Override
|
||||
public void execute(YAMLSection data) {
|
||||
if (data != null && data.contains("m")) log.warn("Received request for a server shutdown: " + data.getString("m"));
|
||||
else log.warn("Received request for a server shutdown");
|
||||
if (data != null && data.contains("m")) log.warn("Received shutdown signal: " + data.getString("m"));
|
||||
else log.warn("Received shutdown signal");
|
||||
Sponge.getServer().shutdown();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user