From 65a5b7d0c97e855b0a0bdaea38099016e1262b5f Mon Sep 17 00:00:00 2001 From: ME1312 Date: Sun, 16 Feb 2020 22:25:15 -0500 Subject: [PATCH] Send actual data packet on ExCreator reload --- .../Bungee/Host/External/ExternalHost.java | 10 +++---- .../Host/External/ExternalSubCreator.java | 29 +++++++++++-------- .../Packet/PacketExDownloadTemplates.java | 16 +++++++--- 3 files changed, 34 insertions(+), 21 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 6e31cf0e..0f3d2e1f 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 @@ -3,6 +3,7 @@ package net.ME1312.SubServers.Bungee.Host.External; import com.google.common.collect.Range; import net.ME1312.SubData.Server.ClientHandler; import net.ME1312.SubData.Server.DataClient; +import net.ME1312.SubData.Server.Protocol.PacketOut; import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent; import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent; @@ -13,7 +14,6 @@ import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Server.Protocol.PacketObjectOut; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExAddServer; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExDeleteServer; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExRemoveServer; @@ -36,7 +36,7 @@ public class ExternalHost extends Host implements ClientHandler { private InetAddress address; private SubCreator creator; private String directory; - private LinkedList queue; + private LinkedList queue; private boolean clean; protected SubProxy plugin; @@ -61,7 +61,7 @@ public class ExternalHost extends Host implements ClientHandler { this.address = address; this.creator = new ExternalSubCreator(this, ports, log, gitBash); this.directory = directory; - this.queue = new LinkedList(); + this.queue = new LinkedList(); this.clean = false; subdata.put(0, null); @@ -93,8 +93,8 @@ public class ExternalHost extends Host implements ClientHandler { for (Integer channel : Util.getBackwards(subdata, (SubDataClient) client)) setSubData(null, channel); } - protected void queue(PacketObjectOut... packet) { - for (PacketObjectOut p : packet) if (getSubData()[0] == null || !available) { + protected void queue(PacketOut... packet) { + for (PacketOut p : packet) if (getSubData()[0] == null || !available) { queue.add(p); } else { ((SubDataClient) getSubData()[0]).sendPacket(p); 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 a28a0eb8..26590128 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 @@ -14,6 +14,7 @@ import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExConfigureHost; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExCreateServer; +import net.ME1312.SubServers.Bungee.Network.Packet.PacketExDownloadTemplates; import net.ME1312.SubServers.Bungee.SubAPI; import net.md_5.bungee.api.ChatColor; @@ -55,21 +56,25 @@ public class ExternalSubCreator extends SubCreator { @Override public void reload() { - templates.clear(); - if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) { - try { - if (file.isDirectory() && !file.getName().endsWith(".x")) { - ObjectMap config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap()):new ObjectMap(); - ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap()), config.getMap("Settings", new ObjectMap())); - templates.put(file.getName().toLowerCase(), template); - if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display")); + if (host.available) { + templates.clear(); + if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) { + try { + if (file.isDirectory() && !file.getName().endsWith(".x")) { + ObjectMap config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap()):new ObjectMap(); + ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap()), config.getMap("Settings", new ObjectMap())); + templates.put(file.getName().toLowerCase(), template); + if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display")); + } + } catch (Exception e) { + System.out.println(host.getName() + "/Creator > Couldn't load template: " + file.getName()); + e.printStackTrace(); } - } catch (Exception e) { - System.out.println(host.getName() + "/Creator > Couldn't load template: " + file.getName()); - e.printStackTrace(); } + + host.queue(new PacketExConfigureHost(host.plugin, host)); + host.queue(new PacketExDownloadTemplates(host.plugin, host)); } - if (host.available) host.queue(new PacketExConfigureHost(host.plugin, host)); } @Override diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDownloadTemplates.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDownloadTemplates.java index de693d96..6da50efa 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDownloadTemplates.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDownloadTemplates.java @@ -15,6 +15,7 @@ import java.io.InputStream; * External Host Template Download Packet */ public class PacketExDownloadTemplates implements PacketOut, PacketStreamIn { + private static boolean first = false; private ExHost host; /** @@ -26,20 +27,27 @@ public class PacketExDownloadTemplates implements PacketOut, PacketStreamIn { @Override public void sending(SubDataSender client) throws Throwable { - UniversalFile dir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Templates"); - if (dir.exists()) Util.deleteDirectory(dir); host.log.info.println("Downloading Template Files..."); + first = true; } @Override public void receive(SubDataSender client, InputStream stream) { + UniversalFile dir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Templates"); try { - Util.unzip(stream, new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Templates")); - host.log.info.println("Template Files Downloaded"); + if (dir.exists()) Util.deleteDirectory(dir); + } catch (Exception e) { + SubAPI.getInstance().getAppInfo().getLogger().error.println(e); + } + + try { + Util.unzip(stream, dir); + host.log.info.println(((first)?"":"New ") + "Template Files Downloaded"); } catch (Exception e) { SubAPI.getInstance().getAppInfo().getLogger().error.println("Problem decoding template files"); SubAPI.getInstance().getAppInfo().getLogger().error.println(e); } + first = false; } @Override