Allow custom formatting of server directories in SubCreator

This commit is contained in:
ME1312 2019-07-29 20:20:38 -04:00
parent c6d611836c
commit 3ff2459258
No known key found for this signature in database
GPG Key ID: FEFFE2F698E88FA8
5 changed files with 60 additions and 27 deletions

View File

@ -3,6 +3,7 @@ package net.ME1312.SubServers.Bungee.Host.External;
import com.google.common.collect.Range;
import net.ME1312.Galaxi.Library.*;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Host.*;
@ -94,18 +95,22 @@ public class ExternalSubCreator extends SubCreator {
final SubCreateEvent event = new SubCreateEvent(player, host, name, template, version, port);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
Container<String> address = new Container<>("$address$");
ReturnCallback<Object, Object> conversion = obj -> convert(obj, new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", address.get()), new NamedContainer<>("$port$", Integer.toString(fport)));
logger.start();
host.queue(new PacketExCreateServer(name, template, version, port, logger.getExternalAddress(), data -> {
host.queue(new PacketExCreateServer(name, template, version, port, (template.getConfigOptions().contains("Directory"))?conversion.run(template.getConfigOptions().getRawString("Directory")).toString():name, logger.getExternalAddress(), data -> {
try {
if (data.getInt(0x0001) == 0) {
Logger.get(prefix).info("Saving...");
address.set(data.getRawString(0x0003));
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, ?>) convert(data.getMap(0x0002).get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", new ObjectMap<String>((Map<String, ?>) data.getObject(0x0002)).getRawString("\033address", "null")), new NamedContainer<>("$port$", Integer.toString(fport))));
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) conversion.run(data.getMap(0x0002).get()));
config.remove("\033address");
@ -149,7 +154,7 @@ public class ExternalSubCreator extends SubCreator {
ew.printStackTrace();
}
} else {
Logger.get(prefix).info(data.getString(0x0003));
Logger.get(prefix).info(data.getString(0x0004));
}
} catch (Exception e) {
e.printStackTrace();
@ -216,7 +221,7 @@ public class ExternalSubCreator extends SubCreator {
ew.printStackTrace();
}
} else {
Logger.get(prefix).info(data.getString(0x0003));
Logger.get(prefix).info(data.getString(0x0004));
}
} catch (Exception e) {
e.printStackTrace();

View File

@ -4,6 +4,7 @@ import com.google.common.collect.Range;
import com.google.gson.Gson;
import net.ME1312.Galaxi.Library.*;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
import net.ME1312.Galaxi.Library.Config.YAMLSection;
import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
@ -199,7 +200,12 @@ public class InternalSubCreator extends SubCreator {
}
public void run() {
File dir = (update != null)?new File(update.getFullPath()):new File(host.getPath(), name);
ReturnCallback<Object, Object> conversion = obj -> convert(obj, new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", host.getAddress().getHostAddress()), new NamedContainer<>("$port$", Integer.toString(port)));
File dir = (update != null)?new File(update.getFullPath()):new File(host.getPath(),
(template.getConfigOptions().contains("Directory"))?conversion.run(template.getConfigOptions().getRawString("Directory")).toString():name);
dir.mkdirs();
ObjectMap<String> server = new ObjectMap<String>();
ObjectMap<String> config;
@ -222,9 +228,7 @@ public class InternalSubCreator extends SubCreator {
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());
config = new ObjectMap<String>((Map<String, ?>) convert(config.get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", version.toString().replace(" ", "@")),
new NamedContainer<>("$address$", host.getAddress().getHostAddress()), new NamedContainer<>("$port$", Integer.toString(port))));
config = new ObjectMap<String>((Map<String, ?>) conversion.run(config.get()));
server.set("Enabled", true);
server.set("Display", "");

View File

@ -22,6 +22,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
private SubCreator.ServerTemplate template;
private Version version;
private int port;
private String dir;
private UUID log;
private UUID tracker = null;
@ -47,6 +48,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
this.template = server.getTemplate();
this.version = version;
this.port = server.getAddress().getPort();
this.dir = server.getPath();
this.log = log;
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
callbacks.put(tracker, callback);
@ -59,16 +61,18 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
* @param template Server Template
* @param version Server Version
* @param port Server Port Number
* @param directory Server Directory
* @param log Log Address
* @param callback Callbacks
*/
@SafeVarargs
public PacketExCreateServer(String name, SubCreator.ServerTemplate template, Version version, int port, UUID log, Callback<ObjectMap<Integer>>... callback) {
public PacketExCreateServer(String name, SubCreator.ServerTemplate template, Version version, int port, String directory, UUID log, Callback<ObjectMap<Integer>>... callback) {
if (Util.isNull(name, template, port, log, callback)) throw new NullPointerException();
this.name = name;
this.template = template;
this.version = version;
this.port = port;
this.dir = directory;
this.log = log;
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
callbacks.put(tracker, callback);
@ -85,7 +89,8 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
data.set(0x0003, template.getName());
data.set(0x0004, version);
data.set(0x0005, port);
data.set(0x0006, log);
data.set(0x0006, dir);
data.set(0x0007, log);
}
return data;
}

View File

@ -201,18 +201,20 @@ public class SubCreator {
private final ServerTemplate template;
private final Version version;
private final int port;
private final File dir;
private final UUID address;
private final UUID tracker;
private final SubLogger log;
private Process process;
private CreatorTask(String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
private CreatorTask(String name, ServerTemplate template, Version version, int port, String dir, UUID address, UUID tracker) {
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
this.name = name;
this.template = template;
this.version = version;
this.port = port;
this.dir = new File(host.host.getRawString("Directory"), dir.replace("$address$", host.config.get().getMap("Settings").getRawString("Server-Bind")));
this.log = new SubLogger(null, this, name + File.separator + ((update == null)?"Creator":"Updater"), address, new Container<Boolean>(true), null);
this.address = address;
this.tracker = tracker;
@ -351,7 +353,6 @@ public class SubCreator {
}
public void run() {
File dir = new File(host.host.getRawString("Directory"), (update != null)?update.getDirectory():name);
dir.mkdirs();
ObjectMap<String> server;
try {
@ -365,12 +366,11 @@ public class SubCreator {
log.logger.error.println(e);
}
ObjectMap<String> config = template.getConfigOptions().clone();
config.set("\033address", host.config.get().getMap("Settings").getRawString("Server-Bind"));
if (server != null) {
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(0, null, config, tracker));
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(0, null, config, host.config.get().getMap("Settings").getRawString("Server-Bind"), tracker));
} else {
log.logger.info.println("Couldn't build the server jar. Check the SubCreator logs for more detail.");
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(-1, "Couldn't build the server jar. Check the SubCreator logs for more detail.", config, tracker));
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(-1, "Couldn't build the server jar. Check the SubCreator logs for more detail.", tracker));
}
SubCreator.this.thread.remove(name.toLowerCase());
}
@ -387,9 +387,9 @@ public class SubCreator {
this.thread = new TreeMap<>();
}
public boolean create(String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
if (Util.isNull(name, template, port, address)) throw new NullPointerException();
CreatorTask task = new CreatorTask(name, template, version, port, address, tracker);
public boolean create(String name, ServerTemplate template, Version version, int port, String dir, UUID address, UUID tracker) {
if (Util.isNull(name, template, port, dir, address)) throw new NullPointerException();
CreatorTask task = new CreatorTask(name, template, version, port, dir, address, tracker);
this.thread.put(name.toLowerCase(), task);
task.start();
return true;

View File

@ -18,6 +18,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
private int response;
private String message;
private ObjectMap<String> info;
private String address;
private UUID tracker;
/**
@ -35,14 +36,30 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
*
* @param response Response ID
* @param message Message
* @param info Creator Info
* @param tracker Receiver ID
*/
public PacketExCreateServer(int response, String message, ObjectMap<String> info, UUID tracker) {
public PacketExCreateServer(int response, String message, UUID tracker) {
if (Util.isNull(response)) throw new NullPointerException();
this.response = response;
this.message = message;
this.tracker = tracker;
}
/**
* New PacketCreateServer (Out)
*
* @param response Response ID
* @param message Message
* @param info Creator Info
* @param address Internal Server Address
* @param tracker Receiver ID
*/
public PacketExCreateServer(int response, String message, ObjectMap<String> info, String address, UUID tracker) {
if (Util.isNull(response)) throw new NullPointerException();
this.response = response;
this.message = message;
this.info = info;
this.address = address;
this.tracker = tracker;
}
@ -51,8 +68,9 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
ObjectMap<Integer> data = new ObjectMap<Integer>();
if (tracker != null) data.set(0x0000, tracker);
data.set(0x0001, response);
data.set(0x0002, info);
if (message != null) data.set(0x0003, message);
if (info != null) data.set(0x0002, info);
if (address != null) data.set(0x0003, address);
if (message != null) data.set(0x0004, message);
return data;
}
@ -66,16 +84,17 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
} else {
host.creator.terminate();
}
client.sendPacket(new PacketExCreateServer(1, null, null, tracker));
client.sendPacket(new PacketExCreateServer(1, null, tracker));
} else {
String name = data.getRawString(0x0002);
String template = data.getRawString(0x0003);
Version version = (data.contains(0x0004)?data.getVersion(0x0004):null);
Integer port = data.getInt(0x0005);
UUID log = data.getUUID(0x0006);
String dir = data.getRawString(0x0006);
UUID log = data.getUUID(0x0007);
host.creator.create(name, host.templates.get(template.toLowerCase()), version,
port, log, tracker);
port, dir, log, tracker);
}
} catch (Throwable e) {
host.log.error.println(e);