mirror of
https://github.com/ME1312/SubServers-2.git
synced 2025-03-24 20:39:37 +01:00
Re-Add local templates to SubServers.Host
Local templates are now stored in `/Templates` Template cache files are still stored in `/Cache/Templates` Remote templates are now stored in `/Cache/Remote/Templates`
This commit is contained in:
parent
3fc249cf07
commit
0e8bae4187
SubServers.Bungee/src/net/ME1312/SubServers/Bungee
SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic
SubServers.Host/src/net/ME1312/SubServers/Host
@ -3,7 +3,6 @@ package net.ME1312.SubServers.Bungee.Host.External;
|
||||
import com.google.common.collect.Range;
|
||||
import net.ME1312.Galaxi.Library.*;
|
||||
import net.ME1312.Galaxi.Library.Callback.Callback;
|
||||
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
|
||||
import net.ME1312.Galaxi.Library.Container.Container;
|
||||
import net.ME1312.Galaxi.Library.Container.NamedContainer;
|
||||
import net.ME1312.SubData.Server.SubDataClient;
|
||||
@ -14,11 +13,12 @@ import net.ME1312.Galaxi.Library.Config.YAMLConfig;
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
import net.ME1312.Galaxi.Library.Version.Version;
|
||||
import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger;
|
||||
import net.ME1312.SubServers.Bungee.Library.ReplacementScanner;
|
||||
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.Network.Packet.PacketExUploadTemplates;
|
||||
import net.ME1312.SubServers.Bungee.SubAPI;
|
||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
|
||||
import java.io.File;
|
||||
@ -32,6 +32,8 @@ import java.util.*;
|
||||
@SuppressWarnings("unchecked")
|
||||
public class ExternalSubCreator extends SubCreator {
|
||||
private HashMap<String, ServerTemplate> templates = new HashMap<String, ServerTemplate>();
|
||||
private HashMap<String, ServerTemplate> templatesR = new HashMap<String, ServerTemplate>();
|
||||
private Boolean enableRT = false;
|
||||
private ExternalHost host;
|
||||
private Range<Integer> ports;
|
||||
private Container<Boolean> log;
|
||||
@ -59,13 +61,13 @@ public class ExternalSubCreator extends SubCreator {
|
||||
|
||||
@Override
|
||||
public void reload() {
|
||||
templates.clear();
|
||||
templatesR.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<String> config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap<String>()):new ObjectMap<String>();
|
||||
ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap<String>()), config.getMap("Settings", new ObjectMap<String>()));
|
||||
templates.put(file.getName().toLowerCase(), template);
|
||||
templatesR.put(file.getName().toLowerCase(), template);
|
||||
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -74,9 +76,10 @@ public class ExternalSubCreator extends SubCreator {
|
||||
}
|
||||
}
|
||||
|
||||
if (host.available) {
|
||||
if (host.available && !Util.getDespiteException(() -> Util.reflect(SubProxy.class.getDeclaredField("reloading"), host.plugin), false)) {
|
||||
host.queue(new PacketExConfigureHost(host.plugin, host));
|
||||
host.queue(new PacketExDownloadTemplates(host.plugin, host));
|
||||
host.queue(new PacketExUploadTemplates(host.plugin));
|
||||
if (enableRT == null || enableRT) host.queue(new PacketExDownloadTemplates(host.plugin, host));
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,7 +139,7 @@ public class ExternalSubCreator extends SubCreator {
|
||||
SubServer subserver = host.addSubServer(player, name, server.getBoolean("Enabled"), fport, ChatColor.translateAlternateColorCodes('&', server.getString("Motd")), server.getBoolean("Log"), server.getRawString("Directory"),
|
||||
server.getRawString("Executable"), server.getRawString("Stop-Command"), server.getBoolean("Hidden"), server.getBoolean("Restricted"));
|
||||
if (server.getString("Display").length() > 0) subserver.setDisplayName(server.getString("Display"));
|
||||
subserver.setTemplate(getTemplate(server.getRawString("Template")));
|
||||
subserver.setTemplate(server.getRawString("Template"));
|
||||
for (String group : server.getStringList("Group")) subserver.addGroup(group);
|
||||
SubServer.StopAction action = Util.getDespiteException(() -> SubServer.StopAction.valueOf(server.getRawString("Stop-Action").toUpperCase().replace('-', '_').replace(' ', '_')), null);
|
||||
if (action != null) subserver.setStopAction(action);
|
||||
@ -315,7 +318,10 @@ public class ExternalSubCreator extends SubCreator {
|
||||
|
||||
@Override
|
||||
public Map<String, ServerTemplate> getTemplates() {
|
||||
return new TreeMap<String, ServerTemplate>(templates);
|
||||
TreeMap<String, ServerTemplate> map = new TreeMap<String, ServerTemplate>();
|
||||
if (enableRT != null && enableRT) map.putAll(templatesR);
|
||||
map.putAll(templates);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,7 +4,6 @@ import com.google.common.collect.Range;
|
||||
import com.google.gson.Gson;
|
||||
import net.ME1312.Galaxi.Library.*;
|
||||
import net.ME1312.Galaxi.Library.Callback.Callback;
|
||||
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
|
||||
import net.ME1312.Galaxi.Library.Config.YAMLSection;
|
||||
import net.ME1312.Galaxi.Library.Container.Container;
|
||||
import net.ME1312.Galaxi.Library.Container.NamedContainer;
|
||||
@ -295,7 +294,7 @@ public class InternalSubCreator extends SubCreator {
|
||||
subserver = host.addSubServer(player, name, server.getBoolean("Enabled"), port, ChatColor.translateAlternateColorCodes('&', server.getString("Motd")), server.getBoolean("Log"), server.getRawString("Directory"),
|
||||
server.getRawString("Executable"), server.getRawString("Stop-Command"), server.getBoolean("Hidden"), server.getBoolean("Restricted"));
|
||||
if (server.getString("Display").length() > 0) subserver.setDisplayName(server.getString("Display"));
|
||||
subserver.setTemplate(getTemplate(server.getRawString("Template")));
|
||||
subserver.setTemplate(server.getRawString("Template"));
|
||||
for (String group : server.getStringList("Group")) subserver.addGroup(group);
|
||||
SubServer.StopAction action = Util.getDespiteException(() -> SubServer.StopAction.valueOf(server.getRawString("Stop-Action").toUpperCase().replace('-', '_').replace(' ', '_')), null);
|
||||
if (action != null) subserver.setStopAction(action);
|
||||
|
@ -240,6 +240,13 @@ public interface SubServer extends Server {
|
||||
*/
|
||||
void setTemplate(SubCreator.ServerTemplate value);
|
||||
|
||||
/**
|
||||
* Sets the Template this Server was created from
|
||||
*
|
||||
* @param value Value
|
||||
*/
|
||||
void setTemplate(String value);
|
||||
|
||||
/**
|
||||
* Is this Host Available?
|
||||
*
|
||||
|
@ -16,7 +16,8 @@ import java.util.*;
|
||||
*/
|
||||
public abstract class SubServerImpl extends ServerImpl implements SubServer {
|
||||
private List<NamedContainer<String, String>> incompatibilities = new ArrayList<NamedContainer<String, String>>();
|
||||
private String template = null;
|
||||
private SubCreator.ServerTemplate templateV = null;
|
||||
private String templateS = null;
|
||||
protected boolean started;
|
||||
private boolean updating;
|
||||
|
||||
@ -84,16 +85,26 @@ public abstract class SubServerImpl extends ServerImpl implements SubServer {
|
||||
return !updating && getHost().isAvailable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTemplate(String template) {
|
||||
SubAPI.getInstance().getInternals().getPluginManager().callEvent(new SubEditServerEvent(null, this, new NamedContainer<String, Object>("template", template), false));
|
||||
this.templateV = null;
|
||||
this.templateS = template;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTemplate(SubCreator.ServerTemplate template) {
|
||||
SubAPI.getInstance().getInternals().getPluginManager().callEvent(new SubEditServerEvent(null, this, new NamedContainer<String, Object>("template", (template != null)?template.getName():null), false));
|
||||
this.template = (template != null)?template.getName():null;
|
||||
this.templateV = template;
|
||||
this.templateS = (template != null)?template.getName():null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubCreator.ServerTemplate getTemplate() {
|
||||
if (template != null && getHost().getCreator().getTemplates().keySet().contains(template.toLowerCase())) {
|
||||
return getHost().getCreator().getTemplate(template.toLowerCase());
|
||||
if (templateV != null) {
|
||||
return templateV;
|
||||
} else if (templateS != null && getHost().getCreator().getTemplates().keySet().contains(templateS.toLowerCase())) {
|
||||
return getHost().getCreator().getTemplate(templateS.toLowerCase());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
package net.ME1312.SubServers.Bungee.Network.Packet;
|
||||
|
||||
import net.ME1312.Galaxi.Library.Util;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketObjectIn;
|
||||
import net.ME1312.SubServers.Bungee.Host.External.ExternalHost;
|
||||
import net.ME1312.SubServers.Bungee.Host.SubCreator;
|
||||
import net.ME1312.SubServers.Bungee.Host.External.ExternalSubCreator;
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
import net.ME1312.SubData.Server.SubDataClient;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketIn;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
|
||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||
|
||||
/**
|
||||
* External Host Configuration Packet
|
||||
*/
|
||||
public class PacketExConfigureHost implements PacketIn, PacketObjectOut<Integer> {
|
||||
public class PacketExConfigureHost implements PacketObjectIn<Integer>, PacketObjectOut<Integer> {
|
||||
private SubProxy plugin;
|
||||
private ExternalHost host;
|
||||
|
||||
@ -34,25 +35,15 @@ public class PacketExConfigureHost implements PacketIn, PacketObjectOut<Integer>
|
||||
public ObjectMap<Integer> send(SubDataClient client) {
|
||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||
data.set(0x0000, plugin.config.get().getMap("Hosts").getMap(host.getName()).clone());
|
||||
ObjectMap<String> templates = new ObjectMap<String>();
|
||||
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values()) {
|
||||
ObjectMap<String> tinfo = new ObjectMap<String>();
|
||||
tinfo.set("enabled", template.isEnabled());
|
||||
tinfo.set("display", template.getDisplayName());
|
||||
tinfo.set("icon", template.getIcon());
|
||||
tinfo.set("build", template.getBuildOptions().clone());
|
||||
tinfo.set("settings", template.getConfigOptions().clone());
|
||||
templates.set(template.getName(), tinfo);
|
||||
}
|
||||
data.set(0x0001, templates);
|
||||
return data;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void receive(SubDataClient client) {
|
||||
public void receive(SubDataClient client, ObjectMap<Integer> data) {
|
||||
if (client.getHandler() != null && client.getHandler() instanceof ExternalHost && plugin.config.get().getMap("Hosts").getKeys().contains(((ExternalHost) client.getHandler()).getName())) {
|
||||
client.sendPacket(new PacketExConfigureHost(plugin, (ExternalHost) client.getHandler()));
|
||||
Util.isException(() -> Util.reflect(ExternalSubCreator.class.getDeclaredField("enableRT"), ((ExternalHost) client.getHandler()).getCreator(), ((data == null || data.getBoolean(0x0000, false))?null:false)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import net.ME1312.Galaxi.Library.Util;
|
||||
import net.ME1312.SubData.Server.SubDataClient;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketIn;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketStreamOut;
|
||||
import net.ME1312.SubServers.Bungee.Host.External.ExternalSubCreator;
|
||||
import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger;
|
||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||
|
||||
@ -38,6 +39,8 @@ public class PacketExDownloadTemplates implements PacketIn, PacketStreamOut {
|
||||
try {
|
||||
Util.zip(new UniversalFile(plugin.dir, "SubServers:Templates"), stream);
|
||||
stream.close();
|
||||
|
||||
Util.isException(() -> Util.reflect(ExternalSubCreator.class.getDeclaredField("enableRT"), host.getCreator(), true));
|
||||
} catch (Exception e) {
|
||||
Logger.get("SubData").info("Problem encoding template files for Host: " + host.getName());
|
||||
e.printStackTrace();
|
||||
|
@ -0,0 +1,58 @@
|
||||
package net.ME1312.SubServers.Bungee.Network.Packet;
|
||||
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
import net.ME1312.Galaxi.Library.UniversalFile;
|
||||
import net.ME1312.Galaxi.Library.Util;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketObjectIn;
|
||||
import net.ME1312.SubData.Server.Protocol.PacketOut;
|
||||
import net.ME1312.SubData.Server.SubDataClient;
|
||||
import net.ME1312.SubServers.Bungee.Host.External.ExternalHost;
|
||||
import net.ME1312.SubServers.Bungee.Host.External.ExternalSubCreator;
|
||||
import net.ME1312.SubServers.Bungee.Host.SubCreator;
|
||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* External Host Template Upload Packet
|
||||
*/
|
||||
public class PacketExUploadTemplates implements PacketObjectIn<Integer>, PacketOut {
|
||||
private SubProxy plugin;
|
||||
|
||||
/**
|
||||
* New PacketExUploadTemplates
|
||||
*/
|
||||
public PacketExUploadTemplates(SubProxy plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void receive(SubDataClient client, ObjectMap<Integer> data) {
|
||||
if (client.getHandler() != null && client.getHandler() instanceof ExternalHost) {
|
||||
HashMap<String, SubCreator.ServerTemplate> map = Util.getDespiteException(() -> Util.reflect(ExternalSubCreator.class.getDeclaredField("templates"), ((ExternalHost) client.getHandler()).getCreator()), new HashMap<>());
|
||||
UniversalFile templatedir = new UniversalFile(plugin.dir, "SubServers:Cache:Remote:Templates");
|
||||
ObjectMap<String> templates = new ObjectMap<>((Map<String, ?>) data.getObject(0x0000));
|
||||
templatedir.mkdirs();
|
||||
for (String name : templates.getKeys()) {
|
||||
try {
|
||||
UniversalFile dir = new UniversalFile(templatedir, name);
|
||||
SubCreator.ServerTemplate template = new SubCreator.ServerTemplate(name, templates.getMap(name).getBoolean("enabled"), templates.getMap(name).getRawString("icon"), dir,
|
||||
templates.getMap(name).getMap("build").clone(), templates.getMap(name).getMap("settings").clone());
|
||||
map.put(name.toLowerCase(), template);
|
||||
if (!templates.getMap(name).getRawString("display").equals(name)) template.setDisplayName(templates.getMap(name).getRawString("display"));
|
||||
} catch (Exception e) {
|
||||
Logger.getLogger("SubServers").severe("Couldn't load template: " + name);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int version() {
|
||||
return 0x0001;
|
||||
}
|
||||
}
|
@ -96,26 +96,28 @@ public class SubProtocol extends SubDataProtocol {
|
||||
|
||||
// 50-6F: External Host Packets
|
||||
instance.registerPacket(0x0050, PacketExConfigureHost.class);
|
||||
instance.registerPacket(0x0051, PacketExDownloadTemplates.class);
|
||||
//instance.registerPacket(0x0052, PacketInExRequestQueue.class);
|
||||
instance.registerPacket(0x0053, PacketExCreateServer.class);
|
||||
instance.registerPacket(0x0054, PacketExAddServer.class);
|
||||
instance.registerPacket(0x0055, PacketExEditServer.class);
|
||||
//instance.registerPacket(0x0056, PacketInExLogMessage.class);
|
||||
instance.registerPacket(0x0057, PacketExRemoveServer.class);
|
||||
instance.registerPacket(0x0058, PacketExDeleteServer.class);
|
||||
//instance.registerPacket(0x0059, PacketExRestoreServer.class);
|
||||
instance.registerPacket(0x0051, PacketExUploadTemplates.class);
|
||||
instance.registerPacket(0x0052, PacketExDownloadTemplates.class);
|
||||
//instance.registerPacket(0x0053, PacketInExRequestQueue.class);
|
||||
instance.registerPacket(0x0054, PacketExCreateServer.class);
|
||||
instance.registerPacket(0x0055, PacketExAddServer.class);
|
||||
instance.registerPacket(0x0056, PacketExEditServer.class);
|
||||
//instance.registerPacket(0x0057, PacketInExLogMessage.class);
|
||||
instance.registerPacket(0x0058, PacketExRemoveServer.class);
|
||||
instance.registerPacket(0x0059, PacketExDeleteServer.class);
|
||||
//instance.registerPacket(0x005A, PacketExRestoreServer.class);
|
||||
|
||||
instance.registerPacket(0x0050, new PacketExConfigureHost(plugin));
|
||||
instance.registerPacket(0x0051, new PacketExDownloadTemplates(plugin));
|
||||
instance.registerPacket(0x0052, new PacketInExRequestQueue(plugin));
|
||||
instance.registerPacket(0x0053, new PacketExCreateServer(null));
|
||||
instance.registerPacket(0x0054, new PacketExAddServer());
|
||||
instance.registerPacket(0x0055, new PacketExEditServer(plugin));
|
||||
instance.registerPacket(0x0056, new PacketInExLogMessage());
|
||||
instance.registerPacket(0x0057, new PacketExRemoveServer());
|
||||
instance.registerPacket(0x0058, new PacketExDeleteServer());
|
||||
//instance.registerPacket(0x0059, new PacketExRestoreServer());
|
||||
instance.registerPacket(0x0051, new PacketExUploadTemplates(plugin));
|
||||
instance.registerPacket(0x0052, new PacketExDownloadTemplates(plugin));
|
||||
instance.registerPacket(0x0053, new PacketInExRequestQueue(plugin));
|
||||
instance.registerPacket(0x0054, new PacketExCreateServer(null));
|
||||
instance.registerPacket(0x0055, new PacketExAddServer());
|
||||
instance.registerPacket(0x0056, new PacketExEditServer(plugin));
|
||||
instance.registerPacket(0x0057, new PacketInExLogMessage());
|
||||
instance.registerPacket(0x0058, new PacketExRemoveServer());
|
||||
instance.registerPacket(0x0059, new PacketExDeleteServer());
|
||||
//instance.registerPacket(0x005A, new PacketExRestoreServer());
|
||||
|
||||
|
||||
// 70-7F: External Misc Packets
|
||||
|
@ -83,6 +83,7 @@ public final class SubProxy extends BungeeCord implements Listener {
|
||||
public final boolean isGalaxi;
|
||||
public long resetDate = 0;
|
||||
private boolean running = false;
|
||||
private boolean reloading = false;
|
||||
private boolean posted = false;
|
||||
private static BigInteger lastSignature = BigInteger.valueOf(-1);
|
||||
|
||||
@ -284,6 +285,7 @@ public final class SubProxy extends BungeeCord implements Listener {
|
||||
long begin = Calendar.getInstance().getTime().getTime();
|
||||
boolean status;
|
||||
if (!(status = running)) resetDate = begin;
|
||||
reloading = true;
|
||||
|
||||
ConfigUpdater.updateConfig(new UniversalFile(dir, "SubServers:config.yml"));
|
||||
ConfigUpdater.updateServers(new UniversalFile(dir, "SubServers:servers.yml"));
|
||||
@ -505,7 +507,7 @@ public final class SubProxy extends BungeeCord implements Listener {
|
||||
if (this.servers.get().getMap("Servers").getMap(name).getKeys().contains("Display") && ((this.servers.get().getMap("Servers").getMap(name).getRawString("Display").length() == 0 && !server.getName().equals(server.getDisplayName())) || (this.servers.get().getMap("Servers").getMap(name).getRawString("Display").length() > 0 && !this.servers.get().getMap("Servers").getMap(name).getRawString("Display").equals(server.getDisplayName()))))
|
||||
server.setDisplayName(this.servers.get().getMap("Servers").getMap(name).getRawString("Display"));
|
||||
if (this.servers.get().getMap("Servers").getMap(name).getKeys().contains("Template") && ((this.servers.get().getMap("Servers").getMap(name).getRawString("Template").length() == 0 && server.getTemplate() != null) || (this.servers.get().getMap("Servers").getMap(name).getRawString("Template").length() > 0 && server.getTemplate() == null) || (server.getTemplate() != null && !this.servers.get().getMap("Servers").getMap(name).getString("Template").equalsIgnoreCase(server.getTemplate().getName()))))
|
||||
server.setTemplate(server.getHost().getCreator().getTemplate(this.servers.get().getMap("Servers").getMap(name).getString("Template")));
|
||||
server.setTemplate(this.servers.get().getMap("Servers").getMap(name).getRawString("Template"));
|
||||
if (this.servers.get().getMap("Servers").getMap(name).getKeys().contains("Group")) {
|
||||
for (String group : server.getGroups()) server.removeGroup(group);
|
||||
for (String group : this.servers.get().getMap("Servers").getMap(name).getStringList("Group")) server.addGroup(group);
|
||||
@ -609,6 +611,7 @@ public final class SubProxy extends BungeeCord implements Listener {
|
||||
for (Server server : api.getServers().values()) if (server.getSubData()[0] != null) ((SubDataClient) server.getSubData()[0]).sendPacket(new PacketOutExReload(null));
|
||||
}
|
||||
|
||||
reloading = false;
|
||||
Logger.get("SubServers").info(((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(this.servers.get().getMap("Settings").getLong("Run-On-Launch-Timeout", 0L));
|
||||
|
@ -104,14 +104,14 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
gui.back();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Undo"))) {
|
||||
player.closeInventory();
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).undo();
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).undo();
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Host-Creator.Submit"))) {
|
||||
String host = ((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).getHost().toLowerCase();
|
||||
String host = ((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).getHost().toLowerCase();
|
||||
if (player.hasPermission("subservers.host.*.*") || player.hasPermission("subservers.host.*.create") || player.hasPermission("subservers.host." + host + ".*") || player.hasPermission("subservers.host." + host + ".create")) {
|
||||
player.closeInventory();
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player.getUniqueId(), ((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]), data -> {
|
||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player.getUniqueId(), ((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), data -> {
|
||||
gui.back();
|
||||
}));
|
||||
} else {
|
||||
@ -125,7 +125,7 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
if (m.getString("message").contains(" ")) {
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Invalid-Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Invalid"));
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]), 4 * 20);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), 4 * 20);
|
||||
} else {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
plugin.api.getSubServer(m.getString("message"), server -> {
|
||||
@ -133,26 +133,26 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
gui.setDownloading(null);
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Exists-Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Exists"));
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]), 4 * 20);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), 4 * 20);
|
||||
} else {
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setName(m.getString("message"));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setName(m.getString("message"));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (ChatColor.stripColor(item).equals(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template")))) {
|
||||
player.closeInventory();
|
||||
gui.hostCreatorTemplates(1, (UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
gui.hostCreatorTemplates(1, (UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else if (ChatColor.stripColor(item).equals(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Version")))) {
|
||||
player.closeInventory();
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Version.Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Version.Message"));
|
||||
input.put(player.getUniqueId(), m -> {
|
||||
if (m.getString("message").length() <= 0) {
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setVersion(null);
|
||||
} else ((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setVersion(new Version(m.getString("message")));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setVersion(null);
|
||||
} else ((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setVersion(new Version(m.getString("message")));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
});
|
||||
} else if (ChatColor.stripColor(item).equals(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Port")))) {
|
||||
player.closeInventory();
|
||||
@ -160,15 +160,15 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Port.Message"));
|
||||
input.put(player.getUniqueId(), m -> {
|
||||
if (m.getString("message").length() <= 0) {
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setPort(null);
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setPort(null);
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else if (Util.isException(() -> Integer.parseInt(m.getString("message"))) || Integer.parseInt(m.getString("message")) <= 0 || Integer.parseInt(m.getString("message")) > 65535) {
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Port.Invalid-Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Port.Invalid"));
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]), 4 * 20);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), 4 * 20);
|
||||
} else {
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setPort(Integer.valueOf(m.getString("message")));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setPort(Integer.valueOf(m.getString("message")));
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -180,13 +180,13 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
String item = event.getCurrentItem().getItemMeta().getDisplayName();
|
||||
if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.hostCreatorTemplates(gui.lastPage - 1, (UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
gui.hostCreatorTemplates(gui.lastPage - 1, (UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.hostCreatorTemplates(gui.lastPage + 1, (UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
gui.hostCreatorTemplates(gui.lastPage + 1, (UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back"))) {
|
||||
player.closeInventory();
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
} else {
|
||||
player.closeInventory();
|
||||
String obj;
|
||||
@ -195,8 +195,8 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
} else {
|
||||
obj = ChatColor.stripColor(item);
|
||||
}
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]).setTemplate(obj);
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjectz[0]);
|
||||
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setTemplate(obj);
|
||||
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
|
||||
}
|
||||
}
|
||||
} else if (title.startsWith(plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").split("\\$str\\$")[0]) && // Host Plugin
|
||||
@ -206,10 +206,10 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
String item = event.getCurrentItem().getItemMeta().getDisplayName();
|
||||
if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.hostPlugin(gui.lastPage - 1, ((Host) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.hostPlugin(gui.lastPage - 1, ((Host) gui.lastVisitedObjects[0]).getName());
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.hostPlugin(gui.lastPage + 1, ((Host) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.hostPlugin(gui.lastPage + 1, ((Host) gui.lastVisitedObjects[0]).getName());
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back"))) {
|
||||
player.closeInventory();
|
||||
gui.back();
|
||||
@ -222,8 +222,8 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
if (plugin.get() == null) {
|
||||
gui.reopen();
|
||||
} else {
|
||||
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", ((Host) gui.lastVisitedObjectz[0]).getName())));
|
||||
this.plugin.api.getHost(((Host) gui.lastVisitedObjectz[0]).getName(), host -> {
|
||||
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", ((Host) gui.lastVisitedObjects[0]).getName())));
|
||||
this.plugin.api.getHost(((Host) gui.lastVisitedObjects[0]).getName(), host -> {
|
||||
if (host != null) {
|
||||
gui.setDownloading(null);
|
||||
plugin.get().open(player, host);
|
||||
@ -265,10 +265,10 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
|
||||
if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(gui.lastPage - 1, (String) gui.lastVisitedObjectz[0], (String) gui.lastVisitedObjectz[1]);
|
||||
gui.serverMenu(gui.lastPage - 1, (String) gui.lastVisitedObjects[0], (String) gui.lastVisitedObjects[1]);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(gui.lastPage + 1, (String) gui.lastVisitedObjectz[0], (String) gui.lastVisitedObjectz[1]);
|
||||
gui.serverMenu(gui.lastPage + 1, (String) gui.lastVisitedObjects[0], (String) gui.lastVisitedObjects[1]);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Server-Menu.Host-Menu"))) {
|
||||
player.closeInventory();
|
||||
gui.hostMenu(1);
|
||||
@ -297,15 +297,15 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
gui.back();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Host-Admin.Creator"))) {
|
||||
player.closeInventory();
|
||||
if (player.hasPermission("subservers.host.create.*") || player.hasPermission("subservers.host.create." + ((Host) gui.lastVisitedObjectz[0]).getName().toLowerCase())) {
|
||||
gui.hostCreator(new UIRenderer.CreatorOptions(((Host) gui.lastVisitedObjectz[0]).getName()));
|
||||
if (player.hasPermission("subservers.host.create.*") || player.hasPermission("subservers.host.create." + ((Host) gui.lastVisitedObjects[0]).getName().toLowerCase())) {
|
||||
gui.hostCreator(new UIRenderer.CreatorOptions(((Host) gui.lastVisitedObjects[0]).getName()));
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Host-Admin.SubServers"))) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(1, ((Host) gui.lastVisitedObjectz[0]).getName(), null);
|
||||
gui.serverMenu(1, ((Host) gui.lastVisitedObjects[0]).getName(), null);
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Host-Admin.Plugins"))) {
|
||||
player.closeInventory();
|
||||
gui.hostPlugin(1, ((Host) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.hostPlugin(1, ((Host) gui.lastVisitedObjects[0]).getName());
|
||||
}
|
||||
}
|
||||
} else if (title.startsWith(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Title").split("\\$str\\$")[0]) && // SubServer Admin
|
||||
@ -319,12 +319,12 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
gui.back();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update"))) {
|
||||
player.closeInventory();
|
||||
if (((SubServer) gui.lastVisitedObjectz[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.update")) {
|
||||
if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.update")) {
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update.Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update.Message"));
|
||||
input.put(player.getUniqueId(), m -> {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player.getUniqueId(), ((SubServer) gui.lastVisitedObjectz[0]).getName(),
|
||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player.getUniqueId(), ((SubServer) gui.lastVisitedObjects[0]).getName(),
|
||||
(m.getString("message").length() == 0 || m.getString("message").equals("/"))?null:new Version((m.getString("message").startsWith("/"))?m.getString("message").substring(1):m.getString("message")), data -> {
|
||||
gui.reopen();
|
||||
}));
|
||||
@ -332,23 +332,23 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start"))) {
|
||||
player.closeInventory();
|
||||
if (((SubServer) gui.lastVisitedObjectz[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.start")) {
|
||||
if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.start")) {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
((SubServer) gui.lastVisitedObjectz[0]).start(player.getUniqueId(), response -> {
|
||||
((SubServer) gui.lastVisitedObjects[0]).start(player.getUniqueId(), response -> {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start.Title"));
|
||||
Bukkit.getScheduler().runTaskLater(plugin, gui::reopen, 30);
|
||||
});
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop"))) {
|
||||
player.closeInventory();
|
||||
if (((SubServer) gui.lastVisitedObjectz[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) {
|
||||
if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
final Container<Boolean> listening = new Container<Boolean>(true);
|
||||
PacketInExRunEvent.callback("SubStoppedEvent", new Callback<ObjectMap<String>>() {
|
||||
@Override
|
||||
public void run(ObjectMap<String> json) {
|
||||
try {
|
||||
if (listening.get()) if (!json.getString("server").equalsIgnoreCase(((SubServer) gui.lastVisitedObjectz[0]).getName())) {
|
||||
if (listening.get()) if (!json.getString("server").equalsIgnoreCase(((SubServer) gui.lastVisitedObjects[0]).getName())) {
|
||||
PacketInExRunEvent.callback("SubStoppedEvent", this);
|
||||
} else {
|
||||
Bukkit.getScheduler().runTaskLater(plugin, gui::reopen, 5);
|
||||
@ -356,23 +356,23 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
});
|
||||
((SubServer) gui.lastVisitedObjectz[0]).stop(player.getUniqueId(), response -> {
|
||||
((SubServer) gui.lastVisitedObjects[0]).stop(player.getUniqueId(), response -> {
|
||||
if (response != 0) {
|
||||
gui.reopen();
|
||||
listening.set(false);
|
||||
} else gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop.Title").replace("$str$", ((SubServer) gui.lastVisitedObjectz[0]).getName()));
|
||||
} else gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop.Title").replace("$str$", ((SubServer) gui.lastVisitedObjects[0]).getName()));
|
||||
});
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate"))) {
|
||||
player.closeInventory();
|
||||
if (((SubServer) gui.lastVisitedObjectz[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) {
|
||||
if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
final Container<Boolean> listening = new Container<Boolean>(true);
|
||||
PacketInExRunEvent.callback("SubStoppedEvent", new Callback<ObjectMap<String>>() {
|
||||
@Override
|
||||
public void run(ObjectMap<String> json) {
|
||||
try {
|
||||
if (listening.get()) if (!json.getString("server").equalsIgnoreCase(((SubServer) gui.lastVisitedObjectz[0]).getName())) {
|
||||
if (listening.get()) if (!json.getString("server").equalsIgnoreCase(((SubServer) gui.lastVisitedObjects[0]).getName())) {
|
||||
PacketInExRunEvent.callback("SubStoppedEvent", this);
|
||||
} else {
|
||||
gui.reopen();
|
||||
@ -380,28 +380,28 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
});
|
||||
((SubServer) gui.lastVisitedObjectz[0]).terminate(player.getUniqueId(), response -> {
|
||||
((SubServer) gui.lastVisitedObjects[0]).terminate(player.getUniqueId(), response -> {
|
||||
if (response != 0) {
|
||||
gui.reopen();
|
||||
listening.set(false);
|
||||
} else gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate.Title").replace("$str$", ((SubServer) gui.lastVisitedObjectz[0]).getName()));
|
||||
} else gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate.Title").replace("$str$", ((SubServer) gui.lastVisitedObjects[0]).getName()));
|
||||
});
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command"))) {
|
||||
player.closeInventory();
|
||||
if (((SubServer) gui.lastVisitedObjectz[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.command")) {
|
||||
if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.command")) {
|
||||
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command.Title"), 4 * 20))
|
||||
player.sendMessage(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command.Message"));
|
||||
input.put(player.getUniqueId(), m -> {
|
||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||
((SubServer) gui.lastVisitedObjectz[0]).command(player.getUniqueId(), (m.getString("message").startsWith("/"))?m.getString("message").substring(1):m.getString("message"), response -> {
|
||||
((SubServer) gui.lastVisitedObjects[0]).command(player.getUniqueId(), (m.getString("message").startsWith("/"))?m.getString("message").substring(1):m.getString("message"), response -> {
|
||||
gui.reopen();
|
||||
});
|
||||
});
|
||||
} else gui.reopen();
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Plugins"))) {
|
||||
player.closeInventory();
|
||||
gui.subserverPlugin(1, ((SubServer) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.subserverPlugin(1, ((SubServer) gui.lastVisitedObjects[0]).getName());
|
||||
}
|
||||
}
|
||||
} else if (title.startsWith(plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").split("\\$str\\$")[0]) && // SubServer Plugin
|
||||
@ -411,10 +411,10 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
String item = event.getCurrentItem().getItemMeta().getDisplayName();
|
||||
if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.subserverPlugin(gui.lastPage - 1, ((SubServer) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.subserverPlugin(gui.lastPage - 1, ((SubServer) gui.lastVisitedObjects[0]).getName());
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"))) {
|
||||
player.closeInventory();
|
||||
gui.subserverPlugin(gui.lastPage + 1, ((SubServer) gui.lastVisitedObjectz[0]).getName());
|
||||
gui.subserverPlugin(gui.lastPage + 1, ((SubServer) gui.lastVisitedObjects[0]).getName());
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Generic.Back"))) {
|
||||
player.closeInventory();
|
||||
gui.back();
|
||||
@ -427,8 +427,8 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
if (plugin.get() == null) {
|
||||
gui.reopen();
|
||||
} else {
|
||||
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", ((SubServer) gui.lastVisitedObjectz[0]).getName())));
|
||||
this.plugin.api.getSubServer(((SubServer) gui.lastVisitedObjectz[0]).getName(), subserver -> {
|
||||
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", ((SubServer) gui.lastVisitedObjects[0]).getName())));
|
||||
this.plugin.api.getSubServer(((SubServer) gui.lastVisitedObjects[0]).getName(), subserver -> {
|
||||
if (subserver != null) {
|
||||
gui.setDownloading(null);
|
||||
plugin.get().open(player, subserver);
|
||||
|
@ -3,7 +3,6 @@ package net.ME1312.SubServers.Client.Bukkit.Graphic;
|
||||
import net.ME1312.Galaxi.Library.Container.Container;
|
||||
import net.ME1312.Galaxi.Library.Container.NamedContainer;
|
||||
import net.ME1312.Galaxi.Library.Version.Version;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketObjectOut;
|
||||
import net.ME1312.SubServers.Client.Bukkit.Network.API.Host;
|
||||
import net.ME1312.SubServers.Client.Bukkit.Network.API.Server;
|
||||
import net.ME1312.SubServers.Client.Bukkit.Network.API.SubCreator;
|
||||
@ -26,7 +25,7 @@ import java.util.*;
|
||||
public class DefaultUIRenderer extends UIRenderer {
|
||||
private static int MAX_VISITED_OBJECTS = 2;
|
||||
private List<Runnable> windowHistory = new LinkedList<Runnable>();
|
||||
Object[] lastVisitedObjectz = new Object[MAX_VISITED_OBJECTS];
|
||||
Object[] lastVisitedObjects = new Object[MAX_VISITED_OBJECTS];
|
||||
int lastPage = 1;
|
||||
Runnable lastMenu = null;
|
||||
boolean open = false;
|
||||
@ -84,7 +83,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Menu.Title")));
|
||||
plugin.api.getHosts(hosts -> plugin.api.getGroups(groups -> {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = null;
|
||||
lastVisitedObjects[0] = null;
|
||||
lastPage = page;
|
||||
lastMenu = () -> hostMenu(1);
|
||||
windowHistory.add(() -> hostMenu(page));
|
||||
@ -220,7 +219,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = host;
|
||||
lastVisitedObjects[0] = host;
|
||||
|
||||
ItemStack block;
|
||||
ItemMeta blockMeta;
|
||||
@ -328,11 +327,11 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
public void hostCreator(final CreatorOptions options) {
|
||||
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Title").replace("$str$", options.getHost())));
|
||||
if (!options.init()) windowHistory.add(() -> hostCreator(options));
|
||||
lastVisitedObjectz[0] = options;
|
||||
lastVisitedObjects[0] = options;
|
||||
|
||||
plugin.api.getHost(options.getHost(), host -> {
|
||||
if (host == null || !host.isAvailable() || !host.isEnabled()) {
|
||||
lastVisitedObjectz[0] = null;
|
||||
lastVisitedObjects[0] = null;
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
setDownloading(null);
|
||||
@ -455,10 +454,10 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
public void hostCreatorTemplates(final int page, final CreatorOptions options) {
|
||||
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.Title").replace("$str$", options.getHost())));
|
||||
options.init();
|
||||
lastVisitedObjectz[0] = options;
|
||||
lastVisitedObjects[0] = options;
|
||||
plugin.api.getHost(options.getHost(), host -> {
|
||||
if (host == null || !host.isAvailable() || !host.isEnabled()) {
|
||||
lastVisitedObjectz[0] = null;
|
||||
lastVisitedObjects[0] = null;
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
lastPage = page;
|
||||
@ -573,7 +572,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = host;
|
||||
lastVisitedObjects[0] = host;
|
||||
lastPage = page;
|
||||
List<String> renderers = new LinkedList<String>();
|
||||
for (String renderer : renderers) {
|
||||
@ -677,7 +676,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Group-Menu.Title")));
|
||||
plugin.api.getGroups(groups -> {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = null;
|
||||
lastVisitedObjects[0] = null;
|
||||
lastPage = page;
|
||||
lastMenu = () -> groupMenu(1);
|
||||
windowHistory.add(() -> groupMenu(page));
|
||||
@ -791,8 +790,8 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
lastPage = page;
|
||||
|
||||
List<Server> servers = servercontainer.get();
|
||||
lastVisitedObjectz[0] = host;
|
||||
lastVisitedObjectz[1] = group;
|
||||
lastVisitedObjects[0] = host;
|
||||
lastVisitedObjects[1] = group;
|
||||
windowHistory.add(() -> serverMenu(page, host, group));
|
||||
|
||||
ItemStack block;
|
||||
@ -985,7 +984,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = subserver;
|
||||
lastVisitedObjects[0] = subserver;
|
||||
ItemStack block;
|
||||
ItemMeta blockMeta;
|
||||
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
|
||||
@ -1191,7 +1190,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
setDownloading(null);
|
||||
lastVisitedObjectz[0] = subserver;
|
||||
lastVisitedObjects[0] = subserver;
|
||||
lastPage = page;
|
||||
List<String> renderers = new LinkedList<String>();
|
||||
for (String renderer : renderers) {
|
||||
|
@ -46,6 +46,7 @@ import java.util.jar.Manifest;
|
||||
public final class ExHost {
|
||||
HashMap<Integer, SubDataClient> subdata = new HashMap<Integer, SubDataClient>();
|
||||
NamedContainer<Long, Map<String, Map<String, String>>> lang = null;
|
||||
public HashMap<String, SubCreatorImpl.ServerTemplate> templatesR = new HashMap<String, SubCreatorImpl.ServerTemplate>();
|
||||
public HashMap<String, SubCreatorImpl.ServerTemplate> templates = new HashMap<String, SubCreatorImpl.ServerTemplate>();
|
||||
public HashMap<String, SubServerImpl> servers = new HashMap<String, SubServerImpl>();
|
||||
public SubCreatorImpl creator;
|
||||
@ -122,7 +123,7 @@ public final class ExHost {
|
||||
config = new YAMLConfig(new UniversalFile(engine.getRuntimeDirectory(), "config.yml"));
|
||||
|
||||
if (!(new UniversalFile(engine.getRuntimeDirectory(), "Templates").exists())) {
|
||||
new UniversalFile(engine.getRuntimeDirectory(), "Templates").mkdir();
|
||||
new UniversalFile(engine.getRuntimeDirectory(), "Templates").mkdirs();
|
||||
log.info.println("Created ./Templates/");
|
||||
}
|
||||
|
||||
@ -234,6 +235,7 @@ public final class ExHost {
|
||||
|
||||
ConfigUpdater.updateConfig(new UniversalFile(engine.getRuntimeDirectory(), "config.yml"));
|
||||
config.reload();
|
||||
creator.load(false);
|
||||
|
||||
subprotocol.unregisterCipher("AES");
|
||||
subprotocol.unregisterCipher("AES-128");
|
||||
@ -347,7 +349,7 @@ public final class ExHost {
|
||||
log.error.println(e);
|
||||
}
|
||||
|
||||
if (new File(engine.getRuntimeDirectory(), "Templates").exists()) Util.deleteDirectory(new File(engine.getRuntimeDirectory(), "Templates"));
|
||||
if (new UniversalFile(engine.getRuntimeDirectory(), "Cache:Remote").exists()) Util.deleteDirectory(new UniversalFile(engine.getRuntimeDirectory(), "Cache:Remote"));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package net.ME1312.SubServers.Host.Executable;
|
||||
|
||||
import net.ME1312.Galaxi.Engine.GalaxiEngine;
|
||||
import net.ME1312.Galaxi.Library.Config.YAMLConfig;
|
||||
import net.ME1312.Galaxi.Library.Config.YAMLSection;
|
||||
import net.ME1312.Galaxi.Library.Container.NamedContainer;
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
@ -201,7 +202,32 @@ public class SubCreatorImpl {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Template Metadata
|
||||
*
|
||||
* @param remote Loads from the Remote Templates directory when true
|
||||
*/
|
||||
public void load(boolean remote) {
|
||||
HashMap<String, ServerTemplate> templates = (remote)?host.templatesR:host.templates;
|
||||
UniversalFile dir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), ((remote)?"Cache:Remote:":"") + "Templates");
|
||||
templates.clear();
|
||||
if (dir.exists()) for (File file : dir.listFiles()) {
|
||||
try {
|
||||
if (file.isDirectory() && !file.getName().endsWith(".x")) {
|
||||
ObjectMap<String> config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap<String>()):new ObjectMap<String>();
|
||||
ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap<String>()), config.getMap("Settings", new ObjectMap<String>()));
|
||||
templates.put(file.getName().toLowerCase(), template);
|
||||
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
host.log.error.println("Couldn't load template: " + file.getName());
|
||||
host.log.error.println(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class CreatorTask extends Thread {
|
||||
private final HashMap<String, ServerTemplate> templates;
|
||||
private final SubServerImpl update;
|
||||
private final UUID player;
|
||||
private final String name;
|
||||
@ -216,6 +242,7 @@ public class SubCreatorImpl {
|
||||
|
||||
private CreatorTask(UUID player, String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
|
||||
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
|
||||
this.templates = new HashMap<String, ServerTemplate>();
|
||||
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
|
||||
this.player = player;
|
||||
this.name = name;
|
||||
@ -226,6 +253,9 @@ public class SubCreatorImpl {
|
||||
this.replacements = new HashMap<String, String>();
|
||||
this.address = address;
|
||||
this.tracker = tracker;
|
||||
|
||||
templates.putAll(host.templatesR);
|
||||
templates.putAll(host.templates);
|
||||
}
|
||||
|
||||
private ObjectMap<String> build(File dir, ServerTemplate template, List<ServerTemplate> history) throws SubCreatorException {
|
||||
@ -236,11 +266,11 @@ public class SubCreatorImpl {
|
||||
if (history.contains(template)) throw new IllegalStateException("Template Import loop detected");
|
||||
history.add(template);
|
||||
for (String other : template.getBuildOptions().getStringList("Import", new ArrayList<String>())) {
|
||||
if (host.templates.keySet().contains(other.toLowerCase())) {
|
||||
if (host.templates.get(other.toLowerCase()).isEnabled()) {
|
||||
if (version != null || !host.templates.get(other.toLowerCase()).requiresVersion()) {
|
||||
if (update == null || host.templates.get(other.toLowerCase()).canUpdate()) {
|
||||
ObjectMap<String> config = build(dir, host.templates.get(other.toLowerCase()), history);
|
||||
if (templates.keySet().contains(other.toLowerCase())) {
|
||||
if (templates.get(other.toLowerCase()).isEnabled()) {
|
||||
if (version != null || !templates.get(other.toLowerCase()).requiresVersion()) {
|
||||
if (update == null || templates.get(other.toLowerCase()).canUpdate()) {
|
||||
ObjectMap<String> config = build(dir, templates.get(other.toLowerCase()), history);
|
||||
if (config == null) {
|
||||
throw new SubCreatorException();
|
||||
} else {
|
||||
|
@ -46,9 +46,13 @@ public class ConfigUpdater {
|
||||
|
||||
existing = updated.clone();
|
||||
i++;
|
||||
} if (was.compareTo(new Version("20w24c")) <= 0) {
|
||||
// additions only this time
|
||||
|
||||
i++;
|
||||
}// if (was.compareTo(new Version("99w99a")) <= 0) {
|
||||
// // do something
|
||||
// i++
|
||||
// i++;
|
||||
//}
|
||||
|
||||
if (i > 0) SubAPI.getInstance().getAppInfo().getLogger().info.println("Updated ./config.yml (" + i + " pass" + ((i != 1)?"es":"") + ")");
|
||||
@ -59,6 +63,7 @@ public class ConfigUpdater {
|
||||
settings.set("Version", ((now.compareTo(was) <= 0)?was:now).toString());
|
||||
settings.set("Console-Log", updated.getMap("Settings", new YAMLSection()).getBoolean("Console-Log", true));
|
||||
settings.set("Network-Log", updated.getMap("Settings", new YAMLSection()).getBoolean("Network-Log", true));
|
||||
settings.set("Download-Templates", updated.getMap("Settings", new YAMLSection()).getBoolean("Download-Templates", true));
|
||||
settings.set("Server-Bind", updated.getMap("Settings", new YAMLSection()).getRawString("Server-Bind", "127.0.0.1"));
|
||||
|
||||
YAMLSection upnp = new YAMLSection();
|
||||
|
@ -1,13 +1,9 @@
|
||||
package net.ME1312.SubServers.Host.Network.Packet;
|
||||
|
||||
import net.ME1312.Galaxi.Engine.GalaxiEngine;
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
import net.ME1312.Galaxi.Library.UniversalFile;
|
||||
import net.ME1312.Galaxi.Library.Util;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketObjectIn;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketOut;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketObjectOut;
|
||||
import net.ME1312.SubData.Client.SubDataSender;
|
||||
import net.ME1312.SubServers.Host.Executable.SubCreatorImpl;
|
||||
import net.ME1312.SubServers.Host.ExHost;
|
||||
|
||||
import java.util.Map;
|
||||
@ -15,7 +11,7 @@ import java.util.Map;
|
||||
/**
|
||||
* External Host Configuration Packet
|
||||
*/
|
||||
public class PacketExConfigureHost implements PacketObjectIn<Integer>, PacketOut {
|
||||
public class PacketExConfigureHost implements PacketObjectIn<Integer>, PacketObjectOut<Integer> {
|
||||
private static boolean first = false;
|
||||
private ExHost host;
|
||||
|
||||
@ -27,35 +23,20 @@ public class PacketExConfigureHost implements PacketObjectIn<Integer>, PacketOut
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sending(SubDataSender client) {
|
||||
public ObjectMap<Integer> send(SubDataSender client) {
|
||||
host.log.info.println("Downloading Host Settings...");
|
||||
first = true;
|
||||
|
||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||
data.set(0x0000, host.config.get().getMap("Settings").getBoolean("Download-Templates", true));
|
||||
return data;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void receive(SubDataSender client, ObjectMap<Integer> data) {
|
||||
host.host = new ObjectMap<>((Map<String, ?>) data.getObject(0x0000));
|
||||
for (SubCreatorImpl.ServerTemplate template : host.templates.values()) {
|
||||
Util.deleteDirectory(template.getDirectory());
|
||||
}
|
||||
host.templates.clear();
|
||||
UniversalFile templatedir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Templates");
|
||||
ObjectMap<String> templates = new ObjectMap<>((Map<String, ?>) data.getObject(0x0001));
|
||||
Util.deleteDirectory(templatedir);
|
||||
templatedir.mkdirs();
|
||||
for (String name : templates.getKeys()) {
|
||||
try {
|
||||
UniversalFile dir = new UniversalFile(templatedir, name);
|
||||
SubCreatorImpl.ServerTemplate template = new SubCreatorImpl.ServerTemplate(name, templates.getMap(name).getBoolean("enabled"), templates.getMap(name).getRawString("icon"), dir,
|
||||
templates.getMap(name).getMap("build").clone(), templates.getMap(name).getMap("settings").clone());
|
||||
host.templates.put(name.toLowerCase(), template);
|
||||
if (!templates.getMap(name).getRawString("display").equals(name)) template.setDisplayName(templates.getMap(name).getRawString("display"));
|
||||
} catch (Exception e) {
|
||||
host.log.error.println("Couldn't load template: " + name);
|
||||
host.log.error.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
host.log.info.println(((first)?"":"New ") + "Host Settings Downloaded");
|
||||
first = false;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import net.ME1312.SubData.Client.Protocol.PacketObjectIn;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketObjectOut;
|
||||
import net.ME1312.SubData.Client.SubDataSender;
|
||||
import net.ME1312.SubServers.Host.ExHost;
|
||||
import net.ME1312.SubServers.Host.Executable.SubCreatorImpl;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@ -90,7 +91,10 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||
UUID log = data.getUUID(0x0006);
|
||||
UUID player = (data.contains(0x0007)?data.getUUID(0x0007):null);
|
||||
|
||||
host.creator.create(player, name, host.templates.get(template.toLowerCase()), version, port, log, tracker);
|
||||
SubCreatorImpl.ServerTemplate templateV = host.templates.get(template.toLowerCase());
|
||||
if (templateV == null) templateV = host.templatesR.get(template.toLowerCase());
|
||||
|
||||
host.creator.create(player, name, templateV, version, port, log, tracker);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
host.log.error.println(e);
|
||||
|
@ -27,13 +27,13 @@ public class PacketExDownloadTemplates implements PacketOut, PacketStreamIn {
|
||||
|
||||
@Override
|
||||
public void sending(SubDataSender client) throws Throwable {
|
||||
host.log.info.println("Downloading Template Files...");
|
||||
host.log.info.println("Downloading Remote Template Files...");
|
||||
first = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive(SubDataSender client, InputStream stream) {
|
||||
UniversalFile dir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Templates");
|
||||
UniversalFile dir = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Cache:Remote:Templates");
|
||||
try {
|
||||
if (dir.exists()) Util.deleteDirectory(dir);
|
||||
} catch (Exception e) {
|
||||
@ -41,8 +41,10 @@ public class PacketExDownloadTemplates implements PacketOut, PacketStreamIn {
|
||||
}
|
||||
|
||||
try {
|
||||
dir.mkdirs();
|
||||
Util.unzip(stream, dir);
|
||||
host.log.info.println(((first)?"":"New ") + "Template Files Downloaded");
|
||||
host.creator.load(true);
|
||||
host.log.info.println(((first)?"":"New ") + "Remote Template Files Downloaded");
|
||||
} catch (Exception e) {
|
||||
SubAPI.getInstance().getAppInfo().getLogger().error.println("Problem decoding template files");
|
||||
SubAPI.getInstance().getAppInfo().getLogger().error.println(e);
|
||||
|
@ -0,0 +1,58 @@
|
||||
package net.ME1312.SubServers.Host.Network.Packet;
|
||||
|
||||
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketIn;
|
||||
import net.ME1312.SubData.Client.Protocol.PacketObjectOut;
|
||||
import net.ME1312.SubData.Client.SubDataSender;
|
||||
import net.ME1312.SubServers.Host.ExHost;
|
||||
import net.ME1312.SubServers.Host.Executable.SubCreatorImpl;
|
||||
|
||||
/**
|
||||
* External Host Template Upload Packet
|
||||
*/
|
||||
public class PacketExUploadTemplates implements PacketIn, PacketObjectOut<Integer> {
|
||||
private boolean first;
|
||||
private ExHost host;
|
||||
|
||||
/**
|
||||
* New PacketExUploadTemplates
|
||||
*/
|
||||
public PacketExUploadTemplates(ExHost host) {
|
||||
this(host, true);
|
||||
}
|
||||
private PacketExUploadTemplates(ExHost host, boolean first) {
|
||||
this.host = host;
|
||||
this.first = first;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ObjectMap<Integer> send(SubDataSender client) {
|
||||
host.log.info.println(((first)?"S":"Res") + "ending Local Template Metadata...");
|
||||
if (!first) host.creator.load(false);
|
||||
|
||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||
ObjectMap<String> templates = new ObjectMap<String>();
|
||||
for (SubCreatorImpl.ServerTemplate template : host.templates.values()) {
|
||||
ObjectMap<String> tinfo = new ObjectMap<String>();
|
||||
tinfo.set("enabled", template.isEnabled());
|
||||
tinfo.set("display", template.getDisplayName());
|
||||
tinfo.set("icon", template.getIcon());
|
||||
tinfo.set("build", template.getBuildOptions().clone());
|
||||
tinfo.set("settings", template.getConfigOptions().clone());
|
||||
templates.set(template.getName(), tinfo);
|
||||
}
|
||||
data.set(0x0000, templates);
|
||||
return data;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void receive(SubDataSender client) {
|
||||
client.sendPacket(new PacketExUploadTemplates(host, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int version() {
|
||||
return 0x0001;
|
||||
}
|
||||
}
|
@ -89,24 +89,26 @@ public class SubProtocol extends SubDataProtocol {
|
||||
|
||||
// 50-6F: External Host Packets
|
||||
instance.registerPacket(0x0050, PacketExConfigureHost.class);
|
||||
instance.registerPacket(0x0051, PacketExDownloadTemplates.class);
|
||||
instance.registerPacket(0x0052, PacketOutExRequestQueue.class);
|
||||
instance.registerPacket(0x0053, PacketExCreateServer.class);
|
||||
instance.registerPacket(0x0054, PacketExAddServer.class);
|
||||
instance.registerPacket(0x0055, PacketExEditServer.class);
|
||||
instance.registerPacket(0x0056, PacketOutExLogMessage.class);
|
||||
instance.registerPacket(0x0057, PacketExRemoveServer.class);
|
||||
instance.registerPacket(0x0058, PacketExDeleteServer.class);
|
||||
instance.registerPacket(0x0051, PacketExUploadTemplates.class);
|
||||
instance.registerPacket(0x0052, PacketExDownloadTemplates.class);
|
||||
instance.registerPacket(0x0053, PacketOutExRequestQueue.class);
|
||||
instance.registerPacket(0x0054, PacketExCreateServer.class);
|
||||
instance.registerPacket(0x0055, PacketExAddServer.class);
|
||||
instance.registerPacket(0x0056, PacketExEditServer.class);
|
||||
instance.registerPacket(0x0057, PacketOutExLogMessage.class);
|
||||
instance.registerPacket(0x0058, PacketExRemoveServer.class);
|
||||
instance.registerPacket(0x0059, PacketExDeleteServer.class);
|
||||
|
||||
instance.registerPacket(0x0050, new PacketExConfigureHost(host));
|
||||
instance.registerPacket(0x0051, new PacketExDownloadTemplates(host));
|
||||
//instance.registerPacket(0x0052, new PacketOutExRequestQueue(host));
|
||||
instance.registerPacket(0x0053, new PacketExCreateServer(host));
|
||||
instance.registerPacket(0x0054, new PacketExAddServer(host));
|
||||
instance.registerPacket(0x0055, new PacketExEditServer(host));
|
||||
//instance.registerPacket(0x0056, new PacketOutExLogMessage());
|
||||
instance.registerPacket(0x0057, new PacketExRemoveServer(host));
|
||||
instance.registerPacket(0x0058, new PacketExDeleteServer(host));
|
||||
instance.registerPacket(0x0051, new PacketExUploadTemplates(host));
|
||||
instance.registerPacket(0x0052, new PacketExDownloadTemplates(host));
|
||||
//instance.registerPacket(0x0053, new PacketOutExRequestQueue(host));
|
||||
instance.registerPacket(0x0054, new PacketExCreateServer(host));
|
||||
instance.registerPacket(0x0055, new PacketExAddServer(host));
|
||||
instance.registerPacket(0x0056, new PacketExEditServer(host));
|
||||
//instance.registerPacket(0x0057, new PacketOutExLogMessage());
|
||||
instance.registerPacket(0x0058, new PacketExRemoveServer(host));
|
||||
instance.registerPacket(0x0059, new PacketExDeleteServer(host));
|
||||
|
||||
|
||||
// 70-7F: External Misc Packets
|
||||
@ -152,7 +154,9 @@ public class SubProtocol extends SubDataProtocol {
|
||||
SubDataClient subdata = super.open(scheduler, logger, address, port);
|
||||
subdata.sendPacket(new PacketLinkExHost(host, 0));
|
||||
subdata.sendPacket(new PacketExConfigureHost(host));
|
||||
subdata.sendPacket(new PacketExDownloadTemplates(host));
|
||||
subdata.sendPacket(new PacketExUploadTemplates(host));
|
||||
if (host.config.get().getMap("Settings").getBoolean("Download-Templates", true))
|
||||
subdata.sendPacket(new PacketExDownloadTemplates(host));
|
||||
subdata.sendPacket(new PacketDownloadLang());
|
||||
subdata.sendPacket(new PacketOutExRequestQueue());
|
||||
subdata.on.ready(client -> host.engine.getPluginManager().executeEvent(new SubNetworkConnectEvent((SubDataClient) client)));
|
||||
|
Loading…
Reference in New Issue
Block a user