Allow custom formatting of server directories in SubCreator
This commit is contained in:
parent
c6d611836c
commit
3ff2459258
|
@ -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();
|
||||
|
|
|
@ -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", "");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue