mirror of
https://github.com/ME1312/SubServers-2.git
synced 2024-11-25 11:46:50 +01:00
Allow a subserver's template to be changed
This commit is contained in:
parent
443e3c2d44
commit
fa77eeeab0
@ -193,9 +193,10 @@ public class ExternalHost extends Host implements ClientHandler {
|
|||||||
server.stop();
|
server.stop();
|
||||||
server.waitFor();
|
server.waitFor();
|
||||||
}
|
}
|
||||||
queue(new PacketExRemoveServer(name.toLowerCase(), data -> {
|
|
||||||
if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) {
|
|
||||||
servers.remove(name.toLowerCase());
|
servers.remove(name.toLowerCase());
|
||||||
|
queue(new PacketExRemoveServer(name.toLowerCase(), data -> {
|
||||||
|
if (data.getInt(0x0001) != 0 && data.getInt(0x0001) != 1) {
|
||||||
|
servers.put(name.toLowerCase(), server);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
return true;
|
return true;
|
||||||
|
@ -109,58 +109,7 @@ public class ExternalSubCreator extends SubCreator {
|
|||||||
if (!event.isCancelled()) {
|
if (!event.isCancelled()) {
|
||||||
logger.start();
|
logger.start();
|
||||||
host.queue(new PacketExCreateServer(player, name, template, version, port, logger.getExternalAddress(), data -> {
|
host.queue(new PacketExCreateServer(player, name, template, version, port, logger.getExternalAddress(), data -> {
|
||||||
try {
|
finish(player, null, name, template, version, fport, prefix, origin, data, callback);
|
||||||
if (data.getInt(0x0001) == 0) {
|
|
||||||
Logger.get(prefix).info("Saving...");
|
|
||||||
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
|
|
||||||
host.plugin.exServers.remove(name.toLowerCase());
|
|
||||||
|
|
||||||
ObjectMap<String> server = new ObjectMap<String>();
|
|
||||||
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) data.getObject(0x0002));
|
|
||||||
|
|
||||||
server.set("Enabled", true);
|
|
||||||
server.set("Display", "");
|
|
||||||
server.set("Host", host.getName());
|
|
||||||
server.set("Template", template.getName());
|
|
||||||
server.set("Group", new ArrayList<String>());
|
|
||||||
server.set("Port", fport);
|
|
||||||
server.set("Motd", "Some SubServer");
|
|
||||||
server.set("Log", true);
|
|
||||||
server.set("Directory", "./" + name);
|
|
||||||
server.set("Executable", "java -Xmx1024M -jar " + template.getType().toString() + ".jar");
|
|
||||||
server.set("Stop-Command", "stop");
|
|
||||||
server.set("Stop-Action", "NONE");
|
|
||||||
server.set("Run-On-Launch", false);
|
|
||||||
server.set("Restricted", false);
|
|
||||||
server.set("Incompatible", new ArrayList<String>());
|
|
||||||
server.set("Hidden", false);
|
|
||||||
server.setAll(config);
|
|
||||||
|
|
||||||
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(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);
|
|
||||||
if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys())
|
|
||||||
subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
|
|
||||||
host.plugin.servers.get().getMap("Servers").set(name, server);
|
|
||||||
host.plugin.servers.save();
|
|
||||||
if (template.getBuildOptions().getBoolean("Run-On-Finish", true))
|
|
||||||
subserver.start();
|
|
||||||
|
|
||||||
host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, fport, subserver, false, true));
|
|
||||||
callback(origin, callback, subserver);
|
|
||||||
} else {
|
|
||||||
Logger.get(prefix).info(data.getString(0x0003));
|
|
||||||
host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, fport, null, false, false));
|
|
||||||
callback(origin, callback, null);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
callback(origin, callback, null);
|
|
||||||
}
|
|
||||||
logger.stop();
|
logger.stop();
|
||||||
this.thread.remove(name.toLowerCase());
|
this.thread.remove(name.toLowerCase());
|
||||||
}));
|
}));
|
||||||
@ -181,9 +130,10 @@ public class ExternalSubCreator extends SubCreator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean update(UUID player, SubServer server, Version version, Callback<Boolean> callback) {
|
public boolean update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Boolean> callback) {
|
||||||
if (Util.isNull(server)) throw new NullPointerException();
|
if (Util.isNull(server)) throw new NullPointerException();
|
||||||
if (host.isAvailable() && host.isEnabled() && host == server.getHost() && server.isAvailable() && !server.isRunning() && server.getTemplate() != null && server.getTemplate().isEnabled() && server.getTemplate().canUpdate() && (version != null || !server.getTemplate().requiresVersion())) {
|
final ServerTemplate ft = (template == null)?server.getTemplate():template;
|
||||||
|
if (host.isAvailable() && host.isEnabled() && host == server.getHost() && server.isAvailable() && !server.isRunning() && ft != null && ft.isEnabled() && ft.canUpdate() && (version != null || !ft.requiresVersion())) {
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
|
|
||||||
String name = server.getName();
|
String name = server.getName();
|
||||||
@ -196,22 +146,11 @@ public class ExternalSubCreator extends SubCreator {
|
|||||||
host.plugin.getPluginManager().callEvent(event);
|
host.plugin.getPluginManager().callEvent(event);
|
||||||
if (!event.isCancelled()) {
|
if (!event.isCancelled()) {
|
||||||
logger.start();
|
logger.start();
|
||||||
host.queue(new PacketExCreateServer(player, server, version, logger.getExternalAddress(), data -> {
|
host.queue(new PacketExCreateServer(player, server, ft, version, logger.getExternalAddress(), data -> {
|
||||||
|
finish(player, server, server.getName(), ft, version, server.getAddress().getPort(), prefix, origin, data, s -> {
|
||||||
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, false));
|
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, false));
|
||||||
if (data.getInt(0x0001) == 0) {
|
if (callback != null) callback.run(s != null);
|
||||||
Logger.get(prefix).info("Saving...");
|
});
|
||||||
} else {
|
|
||||||
Logger.get(prefix).info(data.getString(0x0003));
|
|
||||||
}
|
|
||||||
|
|
||||||
host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, server.getTemplate(), version, server.getAddress().getPort(), server, true, data.getInt(0x0001) == 0));
|
|
||||||
if (callback != null) try {
|
|
||||||
callback.run(data.getInt(0x0001) == 0);
|
|
||||||
} catch (Throwable e) {
|
|
||||||
Throwable ew = new InvocationTargetException(e);
|
|
||||||
ew.setStackTrace(origin);
|
|
||||||
ew.printStackTrace();
|
|
||||||
}
|
|
||||||
logger.stop();
|
logger.stop();
|
||||||
this.thread.remove(name.toLowerCase());
|
this.thread.remove(name.toLowerCase());
|
||||||
}));
|
}));
|
||||||
@ -223,6 +162,72 @@ public class ExternalSubCreator extends SubCreator {
|
|||||||
} else return false;
|
} else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void finish(UUID player, SubServer update, String name, ServerTemplate template, Version version, int port, String prefix, StackTraceElement[] origin, ObjectMap<Integer> data, Callback<SubServer> callback) {
|
||||||
|
try {
|
||||||
|
if (data.getInt(0x0001) == 0) {
|
||||||
|
Logger.get(prefix).info("Saving...");
|
||||||
|
SubServer subserver = update;
|
||||||
|
if (update == null || update.getTemplate() != template || template.getBuildOptions().getBoolean("Update-Settings", false)) {
|
||||||
|
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
|
||||||
|
host.plugin.exServers.remove(name.toLowerCase());
|
||||||
|
|
||||||
|
ObjectMap<String> server = new ObjectMap<String>();
|
||||||
|
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) data.getObject(0x0002));
|
||||||
|
|
||||||
|
if (update == null) {
|
||||||
|
server.set("Enabled", true);
|
||||||
|
server.set("Display", "");
|
||||||
|
server.set("Host", host.getName());
|
||||||
|
server.set("Template", template.getName());
|
||||||
|
server.set("Group", new ArrayList<String>());
|
||||||
|
server.set("Port", port);
|
||||||
|
server.set("Motd", "Some SubServer");
|
||||||
|
server.set("Log", true);
|
||||||
|
server.set("Directory", "./" + name);
|
||||||
|
server.set("Executable", "java -Xmx1024M -jar " + template.getType().toString() + ".jar");
|
||||||
|
server.set("Stop-Command", "stop");
|
||||||
|
server.set("Stop-Action", "NONE");
|
||||||
|
server.set("Run-On-Launch", false);
|
||||||
|
server.set("Restricted", false);
|
||||||
|
server.set("Incompatible", new ArrayList<String>());
|
||||||
|
server.set("Hidden", false);
|
||||||
|
} else {
|
||||||
|
server.setAll(host.plugin.servers.get().getMap("Servers").getMap(name, new HashMap<>()));
|
||||||
|
server.set("Template", template.getName());
|
||||||
|
}
|
||||||
|
server.setAll(config);
|
||||||
|
|
||||||
|
if (update != null) Util.isException(() -> update.getHost().forceRemoveSubServer(name));
|
||||||
|
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(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);
|
||||||
|
if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys())
|
||||||
|
subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
|
||||||
|
host.plugin.servers.get().getMap("Servers").set(name, server);
|
||||||
|
host.plugin.servers.save();
|
||||||
|
|
||||||
|
if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true))
|
||||||
|
subserver.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, subserver, update != null, true));
|
||||||
|
callback(origin, callback, subserver);
|
||||||
|
} else {
|
||||||
|
Logger.get(prefix).info(data.getString(0x0003));
|
||||||
|
host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, update, update != null, false));
|
||||||
|
callback(origin, callback, null);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
callback(origin, callback, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void terminate() {
|
public void terminate() {
|
||||||
HashMap<String, NamedContainer<Integer, ExternalSubLogger>> thread = new HashMap<String, NamedContainer<Integer, ExternalSubLogger>>();
|
HashMap<String, NamedContainer<Integer, ExternalSubLogger>> thread = new HashMap<String, NamedContainer<Integer, ExternalSubLogger>>();
|
||||||
|
@ -72,12 +72,12 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CreatorTask(UUID player, SubServer server, Version version, Callback<SubServer> callback) {
|
private CreatorTask(UUID player, SubServer server, ServerTemplate template, Version version, Callback<SubServer> callback) {
|
||||||
super("SubServers.Bungee::Internal_SubCreator_Process_Handler(" + server.getName() + ')');
|
super("SubServers.Bungee::Internal_SubCreator_Process_Handler(" + server.getName() + ')');
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.update = server;
|
this.update = server;
|
||||||
this.name = server.getName();
|
this.name = server.getName();
|
||||||
this.template = server.getTemplate();
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = server.getAddress().getPort();
|
this.port = server.getAddress().getPort();
|
||||||
this.log = new InternalSubLogger(null, this, prefix = name + File.separator + "Updater", InternalSubCreator.this.log, null);
|
this.log = new InternalSubLogger(null, this, prefix = name + File.separator + "Updater", InternalSubCreator.this.log, null);
|
||||||
@ -128,7 +128,7 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
|
|
||||||
var.putAll(replacements);
|
var.putAll(replacements);
|
||||||
var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java");
|
var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java");
|
||||||
var.put("mode", (update == null)?"CREATE":"UPDATE");
|
var.put("mode", (update == null)? "CREATE" : ((CreatorTask.this.template.equals(update.getTemplate()))?"UPDATE":"SWITCH"));
|
||||||
if (player != null) var.put("player", player.toString().toUpperCase());
|
if (player != null) var.put("player", player.toString().toUpperCase());
|
||||||
else var.remove("player");
|
else var.remove("player");
|
||||||
var.put("name", name);
|
var.put("name", name);
|
||||||
@ -267,12 +267,13 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
try {
|
try {
|
||||||
Logger.get(prefix).info("Saving...");
|
Logger.get(prefix).info("Saving...");
|
||||||
SubServer subserver = update;
|
SubServer subserver = update;
|
||||||
if (update == null) {
|
if (update == null || update.getTemplate() != template || template.getBuildOptions().getBoolean("Update-Settings", false)) {
|
||||||
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
|
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
|
||||||
host.plugin.exServers.remove(name.toLowerCase());
|
host.plugin.exServers.remove(name.toLowerCase());
|
||||||
|
|
||||||
config = new ObjectMap<String>((Map<String, ?>) replacements.replace(config.get()));
|
config = new ObjectMap<String>((Map<String, ?>) replacements.replace(config.get()));
|
||||||
|
|
||||||
|
if (update == null) {
|
||||||
server.set("Enabled", true);
|
server.set("Enabled", true);
|
||||||
server.set("Display", "");
|
server.set("Display", "");
|
||||||
server.set("Host", host.getName());
|
server.set("Host", host.getName());
|
||||||
@ -289,10 +290,16 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
server.set("Restricted", false);
|
server.set("Restricted", false);
|
||||||
server.set("Incompatible", new ArrayList<String>());
|
server.set("Incompatible", new ArrayList<String>());
|
||||||
server.set("Hidden", false);
|
server.set("Hidden", false);
|
||||||
|
} else {
|
||||||
|
server.setAll(host.plugin.servers.get().getMap("Servers").getMap(name, new HashMap<>()));
|
||||||
|
server.set("Template", template.getName());
|
||||||
|
}
|
||||||
server.setAll(config);
|
server.setAll(config);
|
||||||
|
|
||||||
subserver = host.addSubServer(player, name, server.getBoolean("Enabled"), port, ChatColor.translateAlternateColorCodes('&', server.getString("Motd")), server.getBoolean("Log"), server.getRawString("Directory"),
|
if (update != null) Util.isException(() -> update.getHost().forceRemoveSubServer(name));
|
||||||
server.getRawString("Executable"), server.getRawString("Stop-Command"), server.getBoolean("Hidden"), server.getBoolean("Restricted"));
|
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"));
|
if (server.getString("Display").length() > 0) subserver.setDisplayName(server.getString("Display"));
|
||||||
subserver.setTemplate(server.getRawString("Template"));
|
subserver.setTemplate(server.getRawString("Template"));
|
||||||
for (String group : server.getStringList("Group")) subserver.addGroup(group);
|
for (String group : server.getStringList("Group")) subserver.addGroup(group);
|
||||||
@ -302,7 +309,8 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
|
subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
|
||||||
host.plugin.servers.get().getMap("Servers").set(name, server);
|
host.plugin.servers.get().getMap("Servers").set(name, server);
|
||||||
host.plugin.servers.save();
|
host.plugin.servers.save();
|
||||||
if (template.getBuildOptions().getBoolean("Run-On-Finish", true))
|
|
||||||
|
if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true))
|
||||||
subserver.start();
|
subserver.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,14 +414,15 @@ public class InternalSubCreator extends SubCreator {
|
|||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public boolean update(UUID player, SubServer server, Version version, Callback<Boolean> callback) {
|
public boolean update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Boolean> callback) {
|
||||||
if (Util.isNull(server)) throw new NullPointerException();
|
if (Util.isNull(server)) throw new NullPointerException();
|
||||||
if (host.isAvailable() && host.isEnabled() && host == server.getHost() && server.isAvailable() && !server.isRunning() && server.getTemplate() != null && server.getTemplate().isEnabled() && server.getTemplate().canUpdate() && (version != null || !server.getTemplate().requiresVersion())) {
|
final ServerTemplate ft = (template == null)?server.getTemplate():template;
|
||||||
|
if (host.isAvailable() && host.isEnabled() && host == server.getHost() && server.isAvailable() && !server.isRunning() && ft != null && ft.isEnabled() && ft.canUpdate() && (version != null || !ft.requiresVersion())) {
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
|
|
||||||
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, true));
|
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, true));
|
||||||
|
|
||||||
CreatorTask task = new CreatorTask(player, server, version, x -> {
|
CreatorTask task = new CreatorTask(player, server, ft, version, x -> {
|
||||||
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, false));
|
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, false));
|
||||||
if (callback != null) try {
|
if (callback != null) try {
|
||||||
callback.run(x != null);
|
callback.run(x != null);
|
||||||
|
@ -252,11 +252,50 @@ public abstract class SubCreator {
|
|||||||
*
|
*
|
||||||
* @param player Player Updating
|
* @param player Player Updating
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param callback Callback
|
* @param callback Callback
|
||||||
* @return Success Status
|
* @return Success Status
|
||||||
*/
|
*/
|
||||||
public abstract boolean update(UUID player, SubServer server, Version version, Callback<Boolean> callback);
|
public abstract boolean update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Boolean> callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param player Player Updating
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
* @return Success Status
|
||||||
|
*/
|
||||||
|
public boolean update(UUID player, SubServer server, ServerTemplate template, Version version) {
|
||||||
|
return update(player, server, template, version, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
* @param callback Callback
|
||||||
|
* @return Success Status
|
||||||
|
*/
|
||||||
|
public boolean update(SubServer server, ServerTemplate template, Version version, Callback<Boolean> callback) {
|
||||||
|
return update(null, server, template, version, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
* @return Success Status
|
||||||
|
*/
|
||||||
|
public boolean update(SubServer server, ServerTemplate template, Version version) {
|
||||||
|
return update(null, server, template, version);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a SubServer
|
* Update a SubServer
|
||||||
@ -267,19 +306,7 @@ public abstract class SubCreator {
|
|||||||
* @return Success Status
|
* @return Success Status
|
||||||
*/
|
*/
|
||||||
public boolean update(UUID player, SubServer server, Version version) {
|
public boolean update(UUID player, SubServer server, Version version) {
|
||||||
return update(player, server, version, null);
|
return update(player, server, null, version);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update a SubServer
|
|
||||||
*
|
|
||||||
* @param server Server to Update
|
|
||||||
* @param version Server Version (may be null)
|
|
||||||
* @param callback Callback
|
|
||||||
* @return Success Status
|
|
||||||
*/
|
|
||||||
public boolean update(SubServer server, Version version, Callback<Boolean> callback) {
|
|
||||||
return update(null, server, version, callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -317,6 +317,10 @@ public class ConfigUpdater {
|
|||||||
|
|
||||||
existing = updated.clone();
|
existing = updated.clone();
|
||||||
i++;
|
i++;
|
||||||
|
} if (was.compareTo(new Version("20w34c")) <= 0) {
|
||||||
|
|
||||||
|
//existing = updated.clone();
|
||||||
|
i++;
|
||||||
}// if (was.compareTo(new Version("99w99a")) <= 0) {
|
}// if (was.compareTo(new Version("99w99a")) <= 0) {
|
||||||
// // do something
|
// // do something
|
||||||
// i++
|
// i++
|
||||||
@ -428,6 +432,7 @@ public class ConfigUpdater {
|
|||||||
def.put("Command.Creator.Host-Disabled", "&cSubServers &4&l\\u00BB&c That host is not enabled");
|
def.put("Command.Creator.Host-Disabled", "&cSubServers &4&l\\u00BB&c That host is not enabled");
|
||||||
def.put("Command.Creator.Unknown-Template", "&cSubServers &4&l\\u00BB&c There is no template with that name");
|
def.put("Command.Creator.Unknown-Template", "&cSubServers &4&l\\u00BB&c There is no template with that name");
|
||||||
def.put("Command.Creator.Template-Disabled", "&cSubServers &4&l\\u00BB&c That template is not enabled");
|
def.put("Command.Creator.Template-Disabled", "&cSubServers &4&l\\u00BB&c That template is not enabled");
|
||||||
|
def.put("Command.Creator.Template-Invalid", "&cSubServers &4&l\\u00BB&c That template does not support subserver updating");
|
||||||
def.put("Command.Creator.Version-Required", "&cSubServers &4&l\\u00BB&c That template requires a Minecraft version to be specified");
|
def.put("Command.Creator.Version-Required", "&cSubServers &4&l\\u00BB&c That template requires a Minecraft version to be specified");
|
||||||
def.put("Command.Creator.Invalid-Port", "&cSubServers &4&l\\u00BB&c Invalid port number");
|
def.put("Command.Creator.Invalid-Port", "&cSubServers &4&l\\u00BB&c Invalid port number");
|
||||||
def.put("Command.Update", "&aSubServers &2&l\\u00BB&a Updating &2$int$&a subserver(s)");
|
def.put("Command.Update", "&aSubServers &2&l\\u00BB&a Updating &2$int$&a subserver(s)");
|
||||||
|
@ -23,7 +23,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
private SubCreator.ServerTemplate template;
|
private SubCreator.ServerTemplate template;
|
||||||
private Version version;
|
private Version version;
|
||||||
private int port;
|
private int port;
|
||||||
private String dir;
|
private Boolean mode;
|
||||||
private UUID log;
|
private UUID log;
|
||||||
private UUID tracker = null;
|
private UUID tracker = null;
|
||||||
|
|
||||||
@ -39,19 +39,20 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
*
|
*
|
||||||
* @param player Player
|
* @param player Player
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param log Log Address
|
* @param log Log Address
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketExCreateServer(UUID player, SubServer server, Version version, UUID log, Callback<ObjectMap<Integer>>... callback) {
|
public PacketExCreateServer(UUID player, SubServer server, SubCreator.ServerTemplate template, Version version, UUID log, Callback<ObjectMap<Integer>>... callback) {
|
||||||
if (Util.isNull(server, log, callback)) throw new NullPointerException();
|
if (Util.isNull(server, template, log, callback)) throw new NullPointerException();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.name = server.getName();
|
this.name = server.getName();
|
||||||
this.template = server.getTemplate();
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = server.getAddress().getPort();
|
this.port = server.getAddress().getPort();
|
||||||
this.dir = server.getPath();
|
this.mode = template == server.getTemplate();
|
||||||
this.log = log;
|
this.log = log;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
callbacks.put(tracker, callback);
|
callbacks.put(tracker, callback);
|
||||||
@ -76,6 +77,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
this.template = template;
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
this.mode = null;
|
||||||
this.log = log;
|
this.log = log;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
callbacks.put(tracker, callback);
|
callbacks.put(tracker, callback);
|
||||||
@ -93,8 +95,10 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
data.set(0x0004, version);
|
data.set(0x0004, version);
|
||||||
data.set(0x0005, port);
|
data.set(0x0005, port);
|
||||||
data.set(0x0006, log);
|
data.set(0x0006, log);
|
||||||
|
if (mode != null)
|
||||||
|
data.set(0x0007, mode);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
data.set(0x0007, player);
|
data.set(0x0008, player);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -107,6 +111,6 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import net.ME1312.SubData.Server.Protocol.PacketObjectIn;
|
|||||||
import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
|
import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
|
||||||
import net.ME1312.SubData.Server.SubDataClient;
|
import net.ME1312.SubData.Server.SubDataClient;
|
||||||
import net.ME1312.SubServers.Bungee.Host.Server;
|
import net.ME1312.SubServers.Bungee.Host.Server;
|
||||||
|
import net.ME1312.SubServers.Bungee.Host.SubCreator;
|
||||||
import net.ME1312.SubServers.Bungee.Host.SubServer;
|
import net.ME1312.SubServers.Bungee.Host.SubServer;
|
||||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||||
|
|
||||||
@ -53,9 +54,10 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
UUID tracker = (data.contains(0x0000)?data.getUUID(0x0000):null);
|
UUID tracker = (data.contains(0x0000)?data.getUUID(0x0000):null);
|
||||||
try {
|
try {
|
||||||
String name = data.getRawString(0x0001);
|
String name = data.getRawString(0x0001);
|
||||||
Version version = (data.contains(0x0002)?data.getVersion(0x0002):null);
|
String template = (data.contains(0x0002)?data.getRawString(0x0002):null);
|
||||||
UUID player = (data.contains(0x0003)?data.getUUID(0x0003):null);
|
Version version = (data.contains(0x0003)?data.getVersion(0x0003):null);
|
||||||
boolean waitfor = (data.contains(0x0004)?data.getBoolean(0x0004):false);
|
UUID player = (data.contains(0x0004)?data.getUUID(0x0004):null);
|
||||||
|
boolean waitfor = (data.contains(0x0005)?data.getBoolean(0x0005):false);
|
||||||
|
|
||||||
Map<String, Server> servers = plugin.api.getServers();
|
Map<String, Server> servers = plugin.api.getServers();
|
||||||
if (!servers.keySet().contains(name.toLowerCase())) {
|
if (!servers.keySet().contains(name.toLowerCase())) {
|
||||||
@ -70,16 +72,18 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
client.sendPacket(new PacketUpdateServer(7, tracker));
|
client.sendPacket(new PacketUpdateServer(7, tracker));
|
||||||
} else if (((SubServer) servers.get(name.toLowerCase())).isRunning()) {
|
} else if (((SubServer) servers.get(name.toLowerCase())).isRunning()) {
|
||||||
client.sendPacket(new PacketUpdateServer(8, tracker));
|
client.sendPacket(new PacketUpdateServer(8, tracker));
|
||||||
} else if (((SubServer) servers.get(name.toLowerCase())).getTemplate() == null) {
|
} else {
|
||||||
|
SubCreator.ServerTemplate ft = (template != null)?((SubServer) servers.get(name.toLowerCase())).getHost().getCreator().getTemplate(template):((SubServer) servers.get(name.toLowerCase())).getTemplate();
|
||||||
|
if (ft == null) {
|
||||||
client.sendPacket(new PacketUpdateServer(9, tracker));
|
client.sendPacket(new PacketUpdateServer(9, tracker));
|
||||||
} else if (!((SubServer) servers.get(name.toLowerCase())).getTemplate().isEnabled()) {
|
} else if (!ft.isEnabled()) {
|
||||||
client.sendPacket(new PacketUpdateServer(10, tracker));
|
client.sendPacket(new PacketUpdateServer(10, tracker));
|
||||||
} else if (!((SubServer) servers.get(name.toLowerCase())).getTemplate().canUpdate()) {
|
} else if (!ft.canUpdate()) {
|
||||||
client.sendPacket(new PacketUpdateServer(11, tracker));
|
client.sendPacket(new PacketUpdateServer(11, tracker));
|
||||||
} else if (version == null && ((SubServer) servers.get(name.toLowerCase())).getTemplate().requiresVersion()) {
|
} else if (version == null && ft.requiresVersion()) {
|
||||||
client.sendPacket(new PacketUpdateServer(12, tracker));
|
client.sendPacket(new PacketUpdateServer(12, tracker));
|
||||||
} else {
|
} else {
|
||||||
if (((SubServer) servers.get(name.toLowerCase())).getHost().getCreator().update(player, (SubServer) servers.get(name.toLowerCase()), version, success -> {
|
if (((SubServer) servers.get(name.toLowerCase())).getHost().getCreator().update(player, (SubServer) servers.get(name.toLowerCase()), ft, version, success -> {
|
||||||
if (waitfor) client.sendPacket(new PacketUpdateServer((!success)?13:0, tracker));
|
if (waitfor) client.sendPacket(new PacketUpdateServer((!success)?13:0, tracker));
|
||||||
})) {
|
})) {
|
||||||
if (!waitfor) {
|
if (!waitfor) {
|
||||||
@ -90,6 +94,7 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
client.sendPacket(new PacketUpdateServer(2, tracker));
|
client.sendPacket(new PacketUpdateServer(2, tracker));
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -98,6 +103,6 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -608,6 +608,9 @@ public final class SubCommand extends CommandX {
|
|||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
ServerSelection select = selectServers(sender, args, 1, true);
|
ServerSelection select = selectServers(sender, args, 1, true);
|
||||||
if (select.subservers.length > 0) {
|
if (select.subservers.length > 0) {
|
||||||
|
String template = (select.args.length > 3)?select.args[2].toLowerCase():null;
|
||||||
|
Version version = (select.args.length > 2)?new Version(select.args[(template == null)?2:3]):null;
|
||||||
|
|
||||||
int success = 0;
|
int success = 0;
|
||||||
for (SubServer server : select.subservers) {
|
for (SubServer server : select.subservers) {
|
||||||
if (!server.isAvailable()) {
|
if (!server.isAvailable()) {
|
||||||
@ -618,22 +621,29 @@ public final class SubCommand extends CommandX {
|
|||||||
sender.sendMessage("SubServers > Subserver " + server.getName() + " is not available");
|
sender.sendMessage("SubServers > Subserver " + server.getName() + " is not available");
|
||||||
} else if (server.isRunning()) {
|
} else if (server.isRunning()) {
|
||||||
sender.sendMessage("SubServers > Cannot update " + server.getName() + " while it is still running");
|
sender.sendMessage("SubServers > Cannot update " + server.getName() + " while it is still running");
|
||||||
} else if (server.getTemplate() == null) {
|
} else {
|
||||||
sender.sendMessage("SubServers > We don't know which template built " + server.getName());
|
SubCreator.ServerTemplate ft = (template != null)?server.getHost().getCreator().getTemplate(template):server.getTemplate();
|
||||||
} else if (!server.getTemplate().isEnabled()) {
|
boolean ts = template == null;
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " is not enabled");
|
if (ft == null) {
|
||||||
} else if (!server.getTemplate().canUpdate()) {
|
if (ts) sender.sendMessage("SubServers > We don't know which template built " + server.getName());
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " does not support subserver updating");
|
else sender.sendMessage("SubServers > There is no template with that name");
|
||||||
} else if (select.args.length <= 2 && server.getTemplate().requiresVersion()) {
|
} else if (!ft.isEnabled()) {
|
||||||
|
if (ts) sender.sendMessage("SubServers > The template that created " + server.getName() + " is not enabled");
|
||||||
|
else sender.sendMessage("SubServers > That template is not enabled");
|
||||||
|
} else if (!ft.canUpdate()) {
|
||||||
|
if (ts) sender.sendMessage("SubServers > The template that created " + server.getName() + " does not support subserver updating");
|
||||||
|
else sender.sendMessage("SubServers > That template does not support subserver updating");
|
||||||
|
} else if (version == null && ft.requiresVersion()) {
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
sender.sendMessage("SubServers > The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
||||||
} else if (server.getHost().getCreator().update(server, (select.args.length > 2)?new Version(select.args[2]):null)) {
|
} else if (server.getHost().getCreator().update(server, ft, version)) {
|
||||||
success++;
|
success++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (success > 0) sender.sendMessage("SubServers > Updating " + success + " subserver"+((success == 1)?"":"s"));
|
if (success > 0) sender.sendMessage("SubServers > Updating " + success + " subserver"+((success == 1)?"":"s"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage("SubServers > Usage: " + label + " " + args[0].toLowerCase() + " <Subservers> [Version]");
|
sender.sendMessage("SubServers > Usage: " + label + " " + args[0].toLowerCase() + " <Subservers> [[Template] <Version>]");
|
||||||
}
|
}
|
||||||
} else if (args[0].equalsIgnoreCase("remove") || args[0].equalsIgnoreCase("del") || args[0].equalsIgnoreCase("delete")) {
|
} else if (args[0].equalsIgnoreCase("remove") || args[0].equalsIgnoreCase("del") || args[0].equalsIgnoreCase("delete")) {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
@ -826,7 +836,7 @@ public final class SubCommand extends CommandX {
|
|||||||
" Command Server: /sub cmd <Subservers> <Command> [Args...]",
|
" Command Server: /sub cmd <Subservers> <Command> [Args...]",
|
||||||
" Sudo Server: /sub sudo <Subserver>",
|
" Sudo Server: /sub sudo <Subserver>",
|
||||||
" Create Server: /sub create <Name> <Host> <Template> [Version] [Port]",
|
" Create Server: /sub create <Name> <Host> <Template> [Version] [Port]",
|
||||||
" Update Server: /sub update <Subservers> [Version]",
|
" Update Server: /sub update <Subservers> [[Template] <Version>]",
|
||||||
" Remove Server: /sub delete <Subservers>",
|
" Remove Server: /sub delete <Subservers>",
|
||||||
//" Restore Server: /sub restore <Subservers>",
|
//" Restore Server: /sub restore <Subservers>",
|
||||||
"",
|
"",
|
||||||
@ -1044,7 +1054,9 @@ public final class SubCommand extends CommandX {
|
|||||||
}
|
}
|
||||||
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
|
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
|
||||||
if (select.args.length == 3) {
|
if (select.args.length == 3) {
|
||||||
return new NamedContainer<>(null, Collections.singletonList("[Version]"));
|
return new NamedContainer<>(null, Arrays.asList("[Template]", "[Version]"));
|
||||||
|
} else if (select.args.length == 4) {
|
||||||
|
return new NamedContainer<>(null, Collections.singletonList("<Version>"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new NamedContainer<>(null, Collections.emptyList());
|
return new NamedContainer<>(null, Collections.emptyList());
|
||||||
|
@ -854,7 +854,7 @@ public final class SubProxy extends BungeeCord implements Listener {
|
|||||||
RemotePlayer player = rPlayers.get(e.getConnection().getUniqueId());
|
RemotePlayer player = rPlayers.get(e.getConnection().getUniqueId());
|
||||||
if (player.getProxy() == null || player.getProxy().isMaster()) {
|
if (player.getProxy() == null || player.getProxy().isMaster()) {
|
||||||
getPlayer(player.getUniqueId()).disconnect(new TextComponent(getTranslation("already_connected_proxy")));
|
getPlayer(player.getUniqueId()).disconnect(new TextComponent(getTranslation("already_connected_proxy")));
|
||||||
} else {
|
} else if (player.getProxy().getSubData()[0] != null) {
|
||||||
((SubDataClient) player.getProxy().getSubData()[0]).sendPacket(new PacketExDisconnectPlayer(player.getUniqueId(), getTranslation("already_connected_proxy")));
|
((SubDataClient) player.getProxy().getSubData()[0]).sendPacket(new PacketExDisconnectPlayer(player.getUniqueId(), getTranslation("already_connected_proxy")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -325,7 +325,7 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
|||||||
input.put(player.getUniqueId(), m -> {
|
input.put(player.getUniqueId(), m -> {
|
||||||
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
|
||||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player.getUniqueId(), ((SubServer) gui.lastVisitedObjects[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 -> {
|
null, (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();
|
gui.reopen();
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@ -189,13 +189,14 @@ public class SubCreator {
|
|||||||
*
|
*
|
||||||
* @param player Player Updating
|
* @param player Player Updating
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version, Callback<Integer> response) {
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
if (Util.isNull(response)) throw new NullPointerException();
|
if (Util.isNull(response)) throw new NullPointerException();
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server, version, data -> {
|
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> {
|
||||||
try {
|
try {
|
||||||
response.run(data.getInt(0x0001));
|
response.run(data.getInt(0x0001));
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -204,17 +205,41 @@ public class SubCreator {
|
|||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param player Player Updating
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(player, server, template, version, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a SubServer
|
* Update a SubServer
|
||||||
*
|
*
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version, Callback<Integer> response) {
|
public void update(SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
update(null, server, version, response);
|
update(null, server, template, version, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(null, server, template, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -224,8 +249,8 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version) {
|
public void update(UUID player, SubServer server, Version version) {
|
||||||
update(player, server, version, i -> {});
|
update(player, server, null, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -234,7 +259,7 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version) {
|
public void update(SubServer server, Version version) {
|
||||||
update(null, server, version);
|
update(null, server, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
||||||
private UUID player;
|
private UUID player;
|
||||||
private String name;
|
private String name;
|
||||||
|
private String template;
|
||||||
private Version version;
|
private Version version;
|
||||||
private boolean waitfor;
|
private boolean waitfor;
|
||||||
private UUID tracker;
|
private UUID tracker;
|
||||||
@ -33,12 +34,13 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, Callback<ObjectMap<Integer>>... callback) {
|
||||||
this(player, name, version, false, callback);
|
this(player, name, template, version, false, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,15 +48,17 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param waitfor Wait until completion to send callback
|
* @param waitfor Wait until completion to send callback
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
||||||
if (Util.isNull(name, callback)) throw new NullPointerException();
|
if (Util.isNull(name, callback)) throw new NullPointerException();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.waitfor = waitfor;
|
this.waitfor = waitfor;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
@ -66,9 +70,10 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||||
data.set(0x0000, tracker);
|
data.set(0x0000, tracker);
|
||||||
data.set(0x0001, name);
|
data.set(0x0001, name);
|
||||||
if (version != null) data.set(0x0002, version);
|
if (template != null) data.set(0x0002, template);
|
||||||
if (player != null) data.set(0x0003, player);
|
if (version != null) data.set(0x0003, version);
|
||||||
if (waitfor) data.set(0x0004, true);
|
if (player != null) data.set(0x0004, player);
|
||||||
|
if (waitfor) data.set(0x0005, true);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +85,6 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -666,13 +666,17 @@ public final class SubCommand extends BukkitCommand {
|
|||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
selectServers(sender, args, 1, true, Arrays.asList("subservers.subserver.%.*", "subservers.subserver.%.update"), select -> {
|
selectServers(sender, args, 1, true, Arrays.asList("subservers.subserver.%.*", "subservers.subserver.%.update"), select -> {
|
||||||
if (select.subservers.length > 0) {
|
if (select.subservers.length > 0) {
|
||||||
|
String template = (select.args.length > 3)?select.args[2].toLowerCase():null;
|
||||||
|
Version version = (select.args.length > 2)?new Version(select.args[(template == null)?2:3]):null;
|
||||||
|
boolean ts = template == null;
|
||||||
|
|
||||||
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
||||||
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
||||||
if (success.value > 0) sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update").replace("$int$", success.value.toString()));
|
if (success.value > 0) sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update").replace("$int$", success.value.toString()));
|
||||||
});
|
});
|
||||||
for (SubServer server : select.subservers) {
|
for (SubServer server : select.subservers) {
|
||||||
merge.reserve();
|
merge.reserve();
|
||||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer((sender instanceof Player)?((Player) sender).getUniqueId():null, server.getName(), (select.args.length > 2)?new Version(select.args[2]):null, data -> {
|
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer((sender instanceof Player)?((Player) sender).getUniqueId():null, server.getName(), template, version, data -> {
|
||||||
switch (data.getInt(0x0001)) {
|
switch (data.getInt(0x0001)) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -691,13 +695,16 @@ public final class SubCommand extends BukkitCommand {
|
|||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Running").replace("$str$", server.getName()));
|
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Running").replace("$str$", server.getName()));
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Unknown-Template").replace("$str$", server.getName()));
|
if (ts) sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Unknown-Template").replace("$str$", server.getName()));
|
||||||
|
else sender.sendMessage(plugin.api.getLang("SubServers", "Command.Creator.Unknown-Template"));
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Template-Disabled").replace("$str$", server.getName()));
|
if (ts) sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Template-Disabled").replace("$str$", server.getName()));
|
||||||
|
else sender.sendMessage(plugin.api.getLang("SubServers", "Command.Creator.Template-Disabled"));
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Template-Invalid").replace("$str$", server.getName()));
|
if (ts) sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Template-Invalid").replace("$str$", server.getName()));
|
||||||
|
else sender.sendMessage(plugin.api.getLang("SubServers", "Command.Creator.Template-Invalid"));
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Version-Required").replace("$str$", server.getName()));
|
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Update.Version-Required").replace("$str$", server.getName()));
|
||||||
@ -712,7 +719,7 @@ public final class SubCommand extends BukkitCommand {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Generic.Usage").replace("$str$", label.toLowerCase() + " " + args[0].toLowerCase() + " <Subservers> [Version]"));
|
sender.sendMessage(plugin.api.getLang("SubServers", "Command.Generic.Usage").replace("$str$", label.toLowerCase() + " " + args[0].toLowerCase() + " <Subservers> [[Template] <Version>]"));
|
||||||
}
|
}
|
||||||
} else if (args[0].equalsIgnoreCase("tp") || args[0].equalsIgnoreCase("teleport")) {
|
} else if (args[0].equalsIgnoreCase("tp") || args[0].equalsIgnoreCase("teleport")) {
|
||||||
if (args.length > ((sender instanceof Player)?1:2)) {
|
if (args.length > ((sender instanceof Player)?1:2)) {
|
||||||
@ -1063,7 +1070,7 @@ public final class SubCommand extends BukkitCommand {
|
|||||||
plugin.api.getLang("SubServers", "Command.Help.SubServer.Terminate").replace("$str$", label.toLowerCase() + " kill <Subservers>"),
|
plugin.api.getLang("SubServers", "Command.Help.SubServer.Terminate").replace("$str$", label.toLowerCase() + " kill <Subservers>"),
|
||||||
plugin.api.getLang("SubServers", "Command.Help.SubServer.Command").replace("$str$", label.toLowerCase() + " cmd <Subservers> <Command> [Args...]"),
|
plugin.api.getLang("SubServers", "Command.Help.SubServer.Command").replace("$str$", label.toLowerCase() + " cmd <Subservers> <Command> [Args...]"),
|
||||||
plugin.api.getLang("SubServers", "Command.Help.Host.Create").replace("$str$", label.toLowerCase() + " create <Name> <Host> <Template> [Version] [Port]"),
|
plugin.api.getLang("SubServers", "Command.Help.Host.Create").replace("$str$", label.toLowerCase() + " create <Name> <Host> <Template> [Version] [Port]"),
|
||||||
plugin.api.getLang("SubServers", "Command.Help.SubServer.Update").replace("$str$", label.toLowerCase() + " update <Subservers> [Version]"),
|
plugin.api.getLang("SubServers", "Command.Help.SubServer.Update").replace("$str$", label.toLowerCase() + " update <Subservers> [[Template] <Version>]"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -189,13 +189,14 @@ public class SubCreator {
|
|||||||
*
|
*
|
||||||
* @param player Player Updating
|
* @param player Player Updating
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version, Callback<Integer> response) {
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
if (Util.isNull(response)) throw new NullPointerException();
|
if (Util.isNull(response)) throw new NullPointerException();
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server, version, data -> {
|
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> {
|
||||||
try {
|
try {
|
||||||
response.run(data.getInt(0x0001));
|
response.run(data.getInt(0x0001));
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -204,17 +205,41 @@ public class SubCreator {
|
|||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param player Player Updating
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(player, server, template, version, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a SubServer
|
* Update a SubServer
|
||||||
*
|
*
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version, Callback<Integer> response) {
|
public void update(SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
update(null, server, version, response);
|
update(null, server, template, version, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(null, server, template, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -224,8 +249,8 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version) {
|
public void update(UUID player, SubServer server, Version version) {
|
||||||
update(player, server, version, i -> {});
|
update(player, server, null, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -234,7 +259,7 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version) {
|
public void update(SubServer server, Version version) {
|
||||||
update(null, server, version);
|
update(null, server, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
||||||
private UUID player;
|
private UUID player;
|
||||||
private String name;
|
private String name;
|
||||||
|
private String template;
|
||||||
private Version version;
|
private Version version;
|
||||||
private boolean waitfor;
|
private boolean waitfor;
|
||||||
private UUID tracker;
|
private UUID tracker;
|
||||||
@ -32,12 +33,13 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, Callback<ObjectMap<Integer>>... callback) {
|
||||||
this(player, name, version, false, callback);
|
this(player, name, template, version, false, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,15 +47,17 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param waitfor Wait until completion to send callback
|
* @param waitfor Wait until completion to send callback
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
||||||
if (Util.isNull(name, callback)) throw new NullPointerException();
|
if (Util.isNull(name, callback)) throw new NullPointerException();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.waitfor = waitfor;
|
this.waitfor = waitfor;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
@ -65,9 +69,10 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||||
data.set(0x0000, tracker);
|
data.set(0x0000, tracker);
|
||||||
data.set(0x0001, name);
|
data.set(0x0001, name);
|
||||||
if (version != null) data.set(0x0002, version);
|
if (template != null) data.set(0x0002, template);
|
||||||
if (player != null) data.set(0x0003, player);
|
if (version != null) data.set(0x0003, version);
|
||||||
if (waitfor) data.set(0x0004, true);
|
if (player != null) data.set(0x0004, player);
|
||||||
|
if (waitfor) data.set(0x0005, true);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +84,6 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
.child(CommandSpec.builder()
|
.child(CommandSpec.builder()
|
||||||
.description(Text.of("The SubServers Command - Update"))
|
.description(Text.of("The SubServers Command - Update"))
|
||||||
.executor(new UPDATE())
|
.executor(new UPDATE())
|
||||||
.arguments(GenericArguments.optional(new ListArgument(Text.of("Subservers"))), GenericArguments.optional(GenericArguments.string(Text.of("Version"))), GenericArguments.optional(GenericArguments.remainingJoinedStrings(Text.of("extra"))))
|
.arguments(GenericArguments.optional(new ListArgument(Text.of("Subservers"))), GenericArguments.optional(GenericArguments.string(Text.of("Template"))), GenericArguments.optional(GenericArguments.string(Text.of("Version"))), GenericArguments.optional(GenericArguments.remainingJoinedStrings(Text.of("extra"))))
|
||||||
.build(), "update", "upgrade")
|
.build(), "update", "upgrade")
|
||||||
.child(CommandSpec.builder()
|
.child(CommandSpec.builder()
|
||||||
.description(Text.of("The SubServers Command - Teleport"))
|
.description(Text.of("The SubServers Command - Teleport"))
|
||||||
@ -1017,7 +1017,7 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Creator")));
|
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Creator").replace("$str$", name.get())));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
@ -1042,17 +1042,34 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
public CommandResult execute(CommandSource sender, CommandContext args) throws CommandException {
|
public CommandResult execute(CommandSource sender, CommandContext args) throws CommandException {
|
||||||
if (canRun(sender)) {
|
if (canRun(sender)) {
|
||||||
Optional<String[]> s = args.getOne(Text.of("Subservers"));
|
Optional<String[]> s = args.getOne(Text.of("Subservers"));
|
||||||
|
Optional<String> template = args.getOne(Text.of("Template"));
|
||||||
Optional<String> version = args.getOne(Text.of("Version"));
|
Optional<String> version = args.getOne(Text.of("Version"));
|
||||||
|
|
||||||
|
final String ft;
|
||||||
|
final Version fv;
|
||||||
|
if (version.isPresent()) {
|
||||||
|
ft = template.get();
|
||||||
|
fv = new Version(version.get());
|
||||||
|
} else if (template.isPresent()) {
|
||||||
|
ft = null;
|
||||||
|
fv = new Version(template.get());
|
||||||
|
} else {
|
||||||
|
ft = null;
|
||||||
|
fv = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (s.isPresent()) {
|
if (s.isPresent()) {
|
||||||
selectServers(sender, s.get(), true, Arrays.asList("subservers.subserver.%.*", "subservers.subserver.%.update"), select -> {
|
selectServers(sender, s.get(), true, Arrays.asList("subservers.subserver.%.*", "subservers.subserver.%.update"), select -> {
|
||||||
if (select.subservers.length > 0) {
|
if (select.subservers.length > 0) {
|
||||||
|
boolean ts = ft == null;
|
||||||
|
|
||||||
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
||||||
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
||||||
if (success.value > 0) sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update").replace("$int$", success.value.toString())));
|
if (success.value > 0) sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update").replace("$int$", success.value.toString())));
|
||||||
});
|
});
|
||||||
for (SubServer server : select.subservers) {
|
for (SubServer server : select.subservers) {
|
||||||
merge.reserve();
|
merge.reserve();
|
||||||
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer((sender instanceof Player)?((Player) sender).getUniqueId():null, server.getName(), (version.isPresent() && version.get().length() > 0)?new Version(version.get()):null, data -> {
|
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer((sender instanceof Player)?((Player) sender).getUniqueId():null, server.getName(), ft, fv, data -> {
|
||||||
switch (data.getInt(0x0001)) {
|
switch (data.getInt(0x0001)) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -1071,13 +1088,16 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Running").replace("$str$", server.getName())));
|
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Running").replace("$str$", server.getName())));
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Unknown-Template").replace("$str$", server.getName())));
|
if (ts) sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Unknown-Template").replace("$str$", server.getName())));
|
||||||
|
else sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Creator.Unknown-Template")));
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Template-Disabled").replace("$str$", server.getName())));
|
if (ts) sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Template-Disabled").replace("$str$", server.getName())));
|
||||||
|
else sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Creator.Template-Disabled")));
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Template-Invalid").replace("$str$", server.getName())));
|
if (ts) sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Template-Invalid").replace("$str$", server.getName())));
|
||||||
|
else sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Creator.Template-Invalid")));
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Version-Required").replace("$str$", server.getName())));
|
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Update.Version-Required").replace("$str$", server.getName())));
|
||||||
@ -1093,7 +1113,7 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
});
|
});
|
||||||
return CommandResult.builder().successCount(1).build();
|
return CommandResult.builder().successCount(1).build();
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Generic.Usage").replace("$str$", "/sub update <Subservers> [Version]")));
|
sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Generic.Usage").replace("$str$", "/sub update <Subservers> [[Template] <Version>]")));
|
||||||
return CommandResult.builder().successCount(0).build();
|
return CommandResult.builder().successCount(0).build();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1451,7 +1471,7 @@ public final class SubCommand implements CommandExecutor {
|
|||||||
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Terminate").replace("$str$", "/sub kill <Subservers>")),
|
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Terminate").replace("$str$", "/sub kill <Subservers>")),
|
||||||
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Command").replace("$str$", "/sub cmd <Subservers> <Command> [Args...]")),
|
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Command").replace("$str$", "/sub cmd <Subservers> <Command> [Args...]")),
|
||||||
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.Host.Create").replace("$str$", "/sub create <Name> <Host> <Template> [Version] [Port]")),
|
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.Host.Create").replace("$str$", "/sub create <Name> <Host> <Template> [Version] [Port]")),
|
||||||
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Update").replace("$str$", "/sub update <Subservers> [Version]")),
|
ChatColor.convertColor(plugin.api.getLang("SubServers","Command.Help.SubServer.Update").replace("$str$", "/sub update <Subservers> [[Template] <Version>]")),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package net.ME1312.SubServers.Host.Executable;
|
package net.ME1312.SubServers.Host.Executable;
|
||||||
|
|
||||||
|
import com.sun.org.apache.xpath.internal.operations.Bool;
|
||||||
import net.ME1312.Galaxi.Engine.GalaxiEngine;
|
import net.ME1312.Galaxi.Engine.GalaxiEngine;
|
||||||
import net.ME1312.Galaxi.Library.Config.YAMLConfig;
|
import net.ME1312.Galaxi.Library.Config.YAMLConfig;
|
||||||
import net.ME1312.Galaxi.Library.Config.YAMLSection;
|
import net.ME1312.Galaxi.Library.Config.YAMLSection;
|
||||||
@ -234,13 +235,14 @@ public class SubCreatorImpl {
|
|||||||
private final ServerTemplate template;
|
private final ServerTemplate template;
|
||||||
private final Version version;
|
private final Version version;
|
||||||
private final int port;
|
private final int port;
|
||||||
|
private final Boolean mode;
|
||||||
private final UUID address;
|
private final UUID address;
|
||||||
private final UUID tracker;
|
private final UUID tracker;
|
||||||
private final SubLoggerImpl log;
|
private final SubLoggerImpl log;
|
||||||
private final HashMap<String, String> replacements;
|
private final HashMap<String, String> replacements;
|
||||||
private Process process;
|
private Process process;
|
||||||
|
|
||||||
private CreatorTask(UUID player, String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
|
private CreatorTask(UUID player, String name, ServerTemplate template, Version version, int port, Boolean mode, UUID address, UUID tracker) {
|
||||||
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
|
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
|
||||||
this.templates = new HashMap<String, ServerTemplate>();
|
this.templates = new HashMap<String, ServerTemplate>();
|
||||||
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
|
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
|
||||||
@ -249,6 +251,7 @@ public class SubCreatorImpl {
|
|||||||
this.template = template;
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
this.mode = mode;
|
||||||
this.log = new SubLoggerImpl(null, this, name + File.separator + ((update == null)?"Creator":"Updater"), address, new Container<Boolean>(true), null);
|
this.log = new SubLoggerImpl(null, this, name + File.separator + ((update == null)?"Creator":"Updater"), address, new Container<Boolean>(true), null);
|
||||||
this.replacements = new HashMap<String, String>();
|
this.replacements = new HashMap<String, String>();
|
||||||
this.address = address;
|
this.address = address;
|
||||||
@ -306,7 +309,7 @@ public class SubCreatorImpl {
|
|||||||
|
|
||||||
var.putAll(replacements);
|
var.putAll(replacements);
|
||||||
var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java");
|
var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java");
|
||||||
var.put("mode", (update == null)?"CREATE":"UPDATE");
|
var.put("mode", (update == null)? "CREATE" : ((mode)?"UPDATE":"SWITCH"));
|
||||||
if (player != null) var.put("player", player.toString().toUpperCase());
|
if (player != null) var.put("player", player.toString().toUpperCase());
|
||||||
else var.remove("player");
|
else var.remove("player");
|
||||||
var.put("name", name);
|
var.put("name", name);
|
||||||
@ -465,9 +468,9 @@ public class SubCreatorImpl {
|
|||||||
this.thread = new TreeMap<>();
|
this.thread = new TreeMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean create(UUID player, String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
|
public boolean create(UUID player, String name, ServerTemplate template, Version version, int port, Boolean mode, UUID address, UUID tracker) {
|
||||||
if (Util.isNull(name, template, port, address)) throw new NullPointerException();
|
if (Util.isNull(name, template, port, address)) throw new NullPointerException();
|
||||||
CreatorTask task = new CreatorTask(player, name, template, version, port, address, tracker);
|
CreatorTask task = new CreatorTask(player, name, template, version, port, mode, address, tracker);
|
||||||
this.thread.put(name.toLowerCase(), task);
|
this.thread.put(name.toLowerCase(), task);
|
||||||
task.start();
|
task.start();
|
||||||
return true;
|
return true;
|
||||||
|
@ -189,13 +189,14 @@ public class SubCreator {
|
|||||||
*
|
*
|
||||||
* @param player Player Updating
|
* @param player Player Updating
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version, Callback<Integer> response) {
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
if (Util.isNull(response)) throw new NullPointerException();
|
if (Util.isNull(response)) throw new NullPointerException();
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server, version, data -> {
|
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> {
|
||||||
try {
|
try {
|
||||||
response.run(data.getInt(0x0001));
|
response.run(data.getInt(0x0001));
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -204,17 +205,41 @@ public class SubCreator {
|
|||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param player Player Updating
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(player, server, template, version, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a SubServer
|
* Update a SubServer
|
||||||
*
|
*
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version, Callback<Integer> response) {
|
public void update(SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
update(null, server, version, response);
|
update(null, server, template, version, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(null, server, template, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -224,8 +249,8 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version) {
|
public void update(UUID player, SubServer server, Version version) {
|
||||||
update(player, server, version, i -> {});
|
update(player, server, null, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -234,7 +259,7 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version) {
|
public void update(SubServer server, Version version) {
|
||||||
update(null, server, version);
|
update(null, server, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,12 +89,13 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
Version version = (data.contains(0x0004)?data.getVersion(0x0004):null);
|
Version version = (data.contains(0x0004)?data.getVersion(0x0004):null);
|
||||||
Integer port = data.getInt(0x0005);
|
Integer port = data.getInt(0x0005);
|
||||||
UUID log = data.getUUID(0x0006);
|
UUID log = data.getUUID(0x0006);
|
||||||
UUID player = (data.contains(0x0007)?data.getUUID(0x0007):null);
|
Boolean mode = (data.contains(0x0007)?data.getBoolean(0x0007):null);
|
||||||
|
UUID player = (data.contains(0x0008)?data.getUUID(0x0008):null);
|
||||||
|
|
||||||
SubCreatorImpl.ServerTemplate templateV = host.templates.get(template.toLowerCase());
|
SubCreatorImpl.ServerTemplate templateV = host.templates.get(template.toLowerCase());
|
||||||
if (templateV == null) templateV = host.templatesR.get(template.toLowerCase());
|
if (templateV == null) templateV = host.templatesR.get(template.toLowerCase());
|
||||||
|
|
||||||
host.creator.create(player, name, templateV, version, port, log, tracker);
|
host.creator.create(player, name, templateV, version, port, mode, log, tracker);
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
host.log.error.println(e);
|
host.log.error.println(e);
|
||||||
@ -103,6 +104,6 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,6 +18,7 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
||||||
private UUID player;
|
private UUID player;
|
||||||
private String name;
|
private String name;
|
||||||
|
private String template;
|
||||||
private Version version;
|
private Version version;
|
||||||
private boolean waitfor;
|
private boolean waitfor;
|
||||||
private UUID tracker;
|
private UUID tracker;
|
||||||
@ -32,12 +33,13 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, Callback<ObjectMap<Integer>>... callback) {
|
||||||
this(player, name, version, false, callback);
|
this(player, name, template, version, false, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,15 +47,17 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param waitfor Wait until completion to send callback
|
* @param waitfor Wait until completion to send callback
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
||||||
if (Util.isNull(name, callback)) throw new NullPointerException();
|
if (Util.isNull(name, callback)) throw new NullPointerException();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.waitfor = waitfor;
|
this.waitfor = waitfor;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
@ -65,9 +69,10 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||||
data.set(0x0000, tracker);
|
data.set(0x0000, tracker);
|
||||||
data.set(0x0001, name);
|
data.set(0x0001, name);
|
||||||
if (version != null) data.set(0x0002, version);
|
if (template != null) data.set(0x0002, template);
|
||||||
if (player != null) data.set(0x0003, player);
|
if (version != null) data.set(0x0003, version);
|
||||||
if (waitfor) data.set(0x0004, true);
|
if (player != null) data.set(0x0004, player);
|
||||||
|
if (waitfor) data.set(0x0005, true);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +84,6 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -831,13 +831,17 @@ public class SubCommand {
|
|||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
selectServers(sender, args, 0, true, select -> {
|
selectServers(sender, args, 0, true, select -> {
|
||||||
if (select.subservers.length > 0) {
|
if (select.subservers.length > 0) {
|
||||||
|
String template = (select.args.length > 2)?select.args[1].toLowerCase():null;
|
||||||
|
Version version = (select.args.length > 1)?new Version(select.args[(template == null)?1:2]):null;
|
||||||
|
boolean ts = template == null;
|
||||||
|
|
||||||
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
||||||
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
||||||
if (success.value > 0) sender.sendMessage("Updating " + success.value + " subserver"+((success.value == 1)?"":"s"));
|
if (success.value > 0) sender.sendMessage("Updating " + success.value + " subserver"+((success.value == 1)?"":"s"));
|
||||||
});
|
});
|
||||||
for (SubServer server : select.subservers) {
|
for (SubServer server : select.subservers) {
|
||||||
merge.reserve();
|
merge.reserve();
|
||||||
((SubDataClient) host.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(null, server.getName(), (select.args.length > 1)?new Version(select.args[1]):null, data -> {
|
((SubDataClient) host.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(null, server.getName(), template, version, data -> {
|
||||||
switch (data.getInt(0x0001)) {
|
switch (data.getInt(0x0001)) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -856,13 +860,16 @@ public class SubCommand {
|
|||||||
sender.sendMessage("Cannot update " + server.getName() + " while it is still running");
|
sender.sendMessage("Cannot update " + server.getName() + " while it is still running");
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sender.sendMessage("We don't know which template built " + server.getName());
|
if (ts) sender.sendMessage("We don't know which template built " + server.getName());
|
||||||
|
else sender.sendMessage("There is no template with that name");
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sender.sendMessage("The template that created " + server.getName() + " is not enabled");
|
if (ts) sender.sendMessage("The template that created " + server.getName() + " is not enabled");
|
||||||
|
else sender.sendMessage("That template is not enabled");
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
sender.sendMessage("The template that created " + server.getName() + " does not support subserver updating");
|
if (ts) sender.sendMessage("The template that created " + server.getName() + " does not support subserver updating");
|
||||||
|
else sender.sendMessage("That template does not support subserver updating");
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
sender.sendMessage("The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
sender.sendMessage("The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
||||||
@ -877,11 +884,11 @@ public class SubCommand {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage("Usage: /" + handle + " <Subservers> [Version]");
|
sender.sendMessage("Usage: /" + handle + " <Subservers> [[Template] <Version>]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.autocomplete(defaultCompletor).usage("<Subservers>", "[Version]").description("Updates one or more subservers").help(
|
}.autocomplete(defaultCompletor).usage("<Subservers>", "[[Template]", "<Version>]").description("Updates one or more subservers").help(
|
||||||
"Updates one or more subservers on the network.",
|
"Updates one or more subservers on the network.",
|
||||||
"",
|
"",
|
||||||
"The version argument is template-dependent in this command,",
|
"The version argument is template-dependent in this command,",
|
||||||
@ -897,7 +904,8 @@ public class SubCommand {
|
|||||||
"",
|
"",
|
||||||
"Examples:",
|
"Examples:",
|
||||||
" /update Server2",
|
" /update Server2",
|
||||||
" /update Server2 1.14.4"
|
" /update Server2 1.14.4",
|
||||||
|
" /update Server2 Paper 1.14.4"
|
||||||
).register("update", "upgrade");
|
).register("update", "upgrade");
|
||||||
new Command(host.info) {
|
new Command(host.info) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -189,13 +189,14 @@ public class SubCreator {
|
|||||||
*
|
*
|
||||||
* @param player Player Updating
|
* @param player Player Updating
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version, Callback<Integer> response) {
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
if (Util.isNull(response)) throw new NullPointerException();
|
if (Util.isNull(response)) throw new NullPointerException();
|
||||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||||
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server, version, data -> {
|
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> {
|
||||||
try {
|
try {
|
||||||
response.run(data.getInt(0x0001));
|
response.run(data.getInt(0x0001));
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -204,17 +205,41 @@ public class SubCreator {
|
|||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param player Player Updating
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(UUID player, SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(player, server, template, version, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a SubServer
|
* Update a SubServer
|
||||||
*
|
*
|
||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
* @param response Response Code
|
* @param response Response Code
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version, Callback<Integer> response) {
|
public void update(SubServer server, ServerTemplate template, Version version, Callback<Integer> response) {
|
||||||
update(null, server, version, response);
|
update(null, server, template, version, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a SubServer
|
||||||
|
*
|
||||||
|
* @param server Server to Update
|
||||||
|
* @param template Server Template
|
||||||
|
* @param version Server Version (may be null)
|
||||||
|
*/
|
||||||
|
public void update(SubServer server, ServerTemplate template, Version version) {
|
||||||
|
update(null, server, template, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -224,8 +249,8 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(UUID player, String server, Version version) {
|
public void update(UUID player, SubServer server, Version version) {
|
||||||
update(player, server, version, i -> {});
|
update(player, server, null, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -234,7 +259,7 @@ public class SubCreator {
|
|||||||
* @param server Server to Update
|
* @param server Server to Update
|
||||||
* @param version Server Version (may be null)
|
* @param version Server Version (may be null)
|
||||||
*/
|
*/
|
||||||
public void update(String server, Version version) {
|
public void update(SubServer server, Version version) {
|
||||||
update(null, server, version);
|
update(null, server, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
private static HashMap<UUID, Callback<ObjectMap<Integer>>[]> callbacks = new HashMap<UUID, Callback<ObjectMap<Integer>>[]>();
|
||||||
private UUID player;
|
private UUID player;
|
||||||
private String name;
|
private String name;
|
||||||
|
private String template;
|
||||||
private Version version;
|
private Version version;
|
||||||
private boolean waitfor;
|
private boolean waitfor;
|
||||||
private UUID tracker;
|
private UUID tracker;
|
||||||
@ -32,12 +33,13 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, Callback<ObjectMap<Integer>>... callback) {
|
||||||
this(player, name, version, false, callback);
|
this(player, name, template, version, false, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,15 +47,17 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
*
|
*
|
||||||
* @param player Player Creating
|
* @param player Player Creating
|
||||||
* @param name Server Name
|
* @param name Server Name
|
||||||
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param waitfor Wait until completion to send callback
|
* @param waitfor Wait until completion to send callback
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public PacketUpdateServer(UUID player, String name, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback<ObjectMap<Integer>>... callback) {
|
||||||
if (Util.isNull(name, callback)) throw new NullPointerException();
|
if (Util.isNull(name, callback)) throw new NullPointerException();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.waitfor = waitfor;
|
this.waitfor = waitfor;
|
||||||
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
|
||||||
@ -65,9 +69,10 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||||
data.set(0x0000, tracker);
|
data.set(0x0000, tracker);
|
||||||
data.set(0x0001, name);
|
data.set(0x0001, name);
|
||||||
if (version != null) data.set(0x0002, version);
|
if (template != null) data.set(0x0002, template);
|
||||||
if (player != null) data.set(0x0003, player);
|
if (version != null) data.set(0x0003, version);
|
||||||
if (waitfor) data.set(0x0004, true);
|
if (player != null) data.set(0x0004, player);
|
||||||
|
if (waitfor) data.set(0x0005, true);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +84,6 @@ public class PacketUpdateServer implements PacketObjectIn<Integer>, PacketObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int version() {
|
public int version() {
|
||||||
return 0x0001;
|
return 0x0002;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -643,13 +643,17 @@ public final class SubCommand extends CommandX {
|
|||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
selectServers(sender, args, 1, true, select -> {
|
selectServers(sender, args, 1, true, select -> {
|
||||||
if (select.subservers.length > 0) {
|
if (select.subservers.length > 0) {
|
||||||
|
String template = (select.args.length > 3)?select.args[2].toLowerCase():null;
|
||||||
|
Version version = (select.args.length > 2)?new Version(select.args[(template == null)?2:3]):null;
|
||||||
|
boolean ts = template == null;
|
||||||
|
|
||||||
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
PrimitiveContainer<Integer> success = new PrimitiveContainer<Integer>(0);
|
||||||
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
AsyncConsolidator merge = new AsyncConsolidator(() -> {
|
||||||
if (success.value > 0) sender.sendMessage("SubServers > Updating " + success.value + " subserver"+((success.value == 1)?"":"s"));
|
if (success.value > 0) sender.sendMessage("SubServers > Updating " + success.value + " subserver"+((success.value == 1)?"":"s"));
|
||||||
});
|
});
|
||||||
for (SubServer server : select.subservers) {
|
for (SubServer server : select.subservers) {
|
||||||
merge.reserve();
|
merge.reserve();
|
||||||
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(null, server.getName(), (select.args.length > 2)?new Version(select.args[2]):null, data -> {
|
((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(null, server.getName(), template, version, data -> {
|
||||||
switch (data.getInt(0x0001)) {
|
switch (data.getInt(0x0001)) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -668,13 +672,16 @@ public final class SubCommand extends CommandX {
|
|||||||
sender.sendMessage("SubServers > Cannot update " + server.getName() + " while it is still running");
|
sender.sendMessage("SubServers > Cannot update " + server.getName() + " while it is still running");
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sender.sendMessage("SubServers > We don't know which template built " + server.getName());
|
if (ts) sender.sendMessage("SubServers > We don't know which template built " + server.getName());
|
||||||
|
else sender.sendMessage("SubServers > There is no template with that name");
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " is not enabled");
|
if (ts) sender.sendMessage("SubServers > The template that created " + server.getName() + " is not enabled");
|
||||||
|
else sender.sendMessage("SubServers > That template is not enabled");
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " does not support subserver updating");
|
if (ts) sender.sendMessage("SubServers > The template that created " + server.getName() + " does not support subserver updating");
|
||||||
|
else sender.sendMessage("SubServers > That template does not support subserver updating");
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
sender.sendMessage("SubServers > The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
sender.sendMessage("SubServers > The template that created " + server.getName() + " requires a Minecraft version to be specified");
|
||||||
@ -689,7 +696,7 @@ public final class SubCommand extends CommandX {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage("Usage: " + label + " " + args[0].toLowerCase() + " <Subservers> [Version]");
|
sender.sendMessage("Usage: " + label + " " + args[0].toLowerCase() + " <Subservers> [[Template] <Version>]");
|
||||||
}
|
}
|
||||||
} else if (args[0].equalsIgnoreCase("remove") || args[0].equalsIgnoreCase("del") || args[0].equalsIgnoreCase("delete")) {
|
} else if (args[0].equalsIgnoreCase("remove") || args[0].equalsIgnoreCase("del") || args[0].equalsIgnoreCase("delete")) {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
@ -935,7 +942,7 @@ public final class SubCommand extends CommandX {
|
|||||||
" Terminate Server: /sub kill <Subservers>",
|
" Terminate Server: /sub kill <Subservers>",
|
||||||
" Command Server: /sub cmd <Subservers> <Command> [Args...]",
|
" Command Server: /sub cmd <Subservers> <Command> [Args...]",
|
||||||
" Create Server: /sub create <Name> <Host> <Template> [Version] [Port]",
|
" Create Server: /sub create <Name> <Host> <Template> [Version] [Port]",
|
||||||
" Update Server: /sub update <Subservers> [Version]",
|
" Update Server: /sub update <Subservers> [[Template] <Version>]",
|
||||||
" Remove Server: /sub delete <Subservers>",
|
" Remove Server: /sub delete <Subservers>",
|
||||||
"",
|
"",
|
||||||
" To see BungeeCord Supplied Commands, please visit:",
|
" To see BungeeCord Supplied Commands, please visit:",
|
||||||
@ -1150,7 +1157,9 @@ public final class SubCommand extends CommandX {
|
|||||||
}
|
}
|
||||||
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
|
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
|
||||||
if (select.args.length == 3) {
|
if (select.args.length == 3) {
|
||||||
return new NamedContainer<>(null, Collections.singletonList("[Version]"));
|
return new NamedContainer<>(null, Arrays.asList("[Template]", "[Version]"));
|
||||||
|
} else if (select.args.length == 4) {
|
||||||
|
return new NamedContainer<>(null, Collections.singletonList("<Version>"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new NamedContainer<>(null, Collections.emptyList());
|
return new NamedContainer<>(null, Collections.emptyList());
|
||||||
|
Loading…
Reference in New Issue
Block a user