From 9bf1bb07103fc326eedc94d4fb4269994539248d Mon Sep 17 00:00:00 2001 From: ME1312 Date: Mon, 2 Aug 2021 18:33:10 -0400 Subject: [PATCH] Wait for response before marking a server as `registered` --- .../SubServers/Bungee/Host/External/ExternalHost.java | 2 +- .../Bungee/Host/External/ExternalSubCreator.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java index d737b6d6..a229b8ca 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java @@ -177,9 +177,9 @@ public class ExternalHost extends Host implements ClientHandler { plugin.getPluginManager().callEvent(event); if (!event.isCancelled()) { queue(new PacketExAddServer(((ExternalSubServer) server), (server.isRunning())?((ExternalSubLogger) server.getLogger()).getExternalAddress():null, data -> { + ((ExternalSubServer) server).registered(true); if (data.contains(0x0002)) ((ExternalSubServer) server).started(data.getUUID(0x0002)); })); - ((ExternalSubServer) server).registered(true); servers.put(server.getName().toLowerCase(), server); return true; } else { diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java index 72c2fc26..adffab03 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java @@ -220,8 +220,14 @@ public class ExternalSubCreator extends SubCreator { } host.addSubServer(subserver); - if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true)) - subserver.start(); + if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true)) { + while (!subserver.isAvailable() && host.isAvailable()) { + Thread.sleep(250); + } + if (subserver.isAvailable()) { + subserver.start(); + } + } } host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, subserver, update != null, true));