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 com.google.common.collect.Range;
|
||||||
import net.ME1312.Galaxi.Library.*;
|
import net.ME1312.Galaxi.Library.*;
|
||||||
import net.ME1312.Galaxi.Library.Callback.Callback;
|
import net.ME1312.Galaxi.Library.Callback.Callback;
|
||||||
|
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
|
||||||
import net.ME1312.SubData.Server.SubDataClient;
|
import net.ME1312.SubData.Server.SubDataClient;
|
||||||
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
|
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
|
||||||
import net.ME1312.SubServers.Bungee.Host.*;
|
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);
|
final SubCreateEvent event = new SubCreateEvent(player, host, name, template, version, port);
|
||||||
host.plugin.getPluginManager().callEvent(event);
|
host.plugin.getPluginManager().callEvent(event);
|
||||||
if (!event.isCancelled()) {
|
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();
|
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 {
|
try {
|
||||||
if (data.getInt(0x0001) == 0) {
|
if (data.getInt(0x0001) == 0) {
|
||||||
Logger.get(prefix).info("Saving...");
|
Logger.get(prefix).info("Saving...");
|
||||||
|
address.set(data.getRawString(0x0003));
|
||||||
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());
|
||||||
|
|
||||||
ObjectMap<String> server = new ObjectMap<String>();
|
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),
|
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) conversion.run(data.getMap(0x0002).get()));
|
||||||
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))));
|
|
||||||
|
|
||||||
config.remove("\033address");
|
config.remove("\033address");
|
||||||
|
|
||||||
|
@ -149,7 +154,7 @@ public class ExternalSubCreator extends SubCreator {
|
||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Logger.get(prefix).info(data.getString(0x0003));
|
Logger.get(prefix).info(data.getString(0x0004));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -216,7 +221,7 @@ public class ExternalSubCreator extends SubCreator {
|
||||||
ew.printStackTrace();
|
ew.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Logger.get(prefix).info(data.getString(0x0003));
|
Logger.get(prefix).info(data.getString(0x0004));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.google.common.collect.Range;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import net.ME1312.Galaxi.Library.*;
|
import net.ME1312.Galaxi.Library.*;
|
||||||
import net.ME1312.Galaxi.Library.Callback.Callback;
|
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.Config.YAMLSection;
|
||||||
import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
|
import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
|
||||||
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
|
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
|
||||||
|
@ -199,7 +200,12 @@ public class InternalSubCreator extends SubCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
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();
|
dir.mkdirs();
|
||||||
ObjectMap<String> server = new ObjectMap<String>();
|
ObjectMap<String> server = new ObjectMap<String>();
|
||||||
ObjectMap<String> config;
|
ObjectMap<String> config;
|
||||||
|
@ -222,9 +228,7 @@ public class InternalSubCreator extends SubCreator {
|
||||||
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, ?>) convert(config.get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
|
config = new ObjectMap<String>((Map<String, ?>) conversion.run(config.get()));
|
||||||
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))));
|
|
||||||
|
|
||||||
server.set("Enabled", true);
|
server.set("Enabled", true);
|
||||||
server.set("Display", "");
|
server.set("Display", "");
|
||||||
|
|
|
@ -22,6 +22,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 UUID log;
|
private UUID log;
|
||||||
private UUID tracker = null;
|
private UUID tracker = null;
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
this.template = server.getTemplate();
|
this.template = server.getTemplate();
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = server.getAddress().getPort();
|
this.port = server.getAddress().getPort();
|
||||||
|
this.dir = server.getPath();
|
||||||
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);
|
||||||
|
@ -59,16 +61,18 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
* @param template Server Template
|
* @param template Server Template
|
||||||
* @param version Server Version
|
* @param version Server Version
|
||||||
* @param port Server Port Number
|
* @param port Server Port Number
|
||||||
|
* @param directory Server Directory
|
||||||
* @param log Log Address
|
* @param log Log Address
|
||||||
* @param callback Callbacks
|
* @param callback Callbacks
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@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();
|
if (Util.isNull(name, template, port, log, callback)) throw new NullPointerException();
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.template = template;
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
this.dir = directory;
|
||||||
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);
|
||||||
|
@ -85,7 +89,8 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
data.set(0x0003, template.getName());
|
data.set(0x0003, template.getName());
|
||||||
data.set(0x0004, version);
|
data.set(0x0004, version);
|
||||||
data.set(0x0005, port);
|
data.set(0x0005, port);
|
||||||
data.set(0x0006, log);
|
data.set(0x0006, dir);
|
||||||
|
data.set(0x0007, log);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,18 +201,20 @@ public class SubCreator {
|
||||||
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 File dir;
|
||||||
private final UUID address;
|
private final UUID address;
|
||||||
private final UUID tracker;
|
private final UUID tracker;
|
||||||
private final SubLogger log;
|
private final SubLogger log;
|
||||||
private Process process;
|
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 + ')');
|
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
|
||||||
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
|
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.template = template;
|
this.template = template;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.port = port;
|
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.log = new SubLogger(null, this, name + File.separator + ((update == null)?"Creator":"Updater"), address, new Container<Boolean>(true), null);
|
||||||
this.address = address;
|
this.address = address;
|
||||||
this.tracker = tracker;
|
this.tracker = tracker;
|
||||||
|
@ -351,7 +353,6 @@ public class SubCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
File dir = new File(host.host.getRawString("Directory"), (update != null)?update.getDirectory():name);
|
|
||||||
dir.mkdirs();
|
dir.mkdirs();
|
||||||
ObjectMap<String> server;
|
ObjectMap<String> server;
|
||||||
try {
|
try {
|
||||||
|
@ -365,12 +366,11 @@ public class SubCreator {
|
||||||
log.logger.error.println(e);
|
log.logger.error.println(e);
|
||||||
}
|
}
|
||||||
ObjectMap<String> config = template.getConfigOptions().clone();
|
ObjectMap<String> config = template.getConfigOptions().clone();
|
||||||
config.set("\033address", host.config.get().getMap("Settings").getRawString("Server-Bind"));
|
|
||||||
if (server != null) {
|
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 {
|
} else {
|
||||||
log.logger.info.println("Couldn't build the server jar. Check the SubCreator logs for more detail.");
|
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());
|
SubCreator.this.thread.remove(name.toLowerCase());
|
||||||
}
|
}
|
||||||
|
@ -387,9 +387,9 @@ public class SubCreator {
|
||||||
this.thread = new TreeMap<>();
|
this.thread = new TreeMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean create(String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
|
public boolean create(String name, ServerTemplate template, Version version, int port, String dir, UUID address, UUID tracker) {
|
||||||
if (Util.isNull(name, template, port, address)) throw new NullPointerException();
|
if (Util.isNull(name, template, port, dir, address)) throw new NullPointerException();
|
||||||
CreatorTask task = new CreatorTask(name, template, version, port, address, tracker);
|
CreatorTask task = new CreatorTask(name, template, version, port, dir, address, tracker);
|
||||||
this.thread.put(name.toLowerCase(), task);
|
this.thread.put(name.toLowerCase(), task);
|
||||||
task.start();
|
task.start();
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -18,6 +18,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
private int response;
|
private int response;
|
||||||
private String message;
|
private String message;
|
||||||
private ObjectMap<String> info;
|
private ObjectMap<String> info;
|
||||||
|
private String address;
|
||||||
private UUID tracker;
|
private UUID tracker;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,14 +36,30 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
*
|
*
|
||||||
* @param response Response ID
|
* @param response Response ID
|
||||||
* @param message Message
|
* @param message Message
|
||||||
* @param info Creator Info
|
|
||||||
* @param tracker Receiver ID
|
* @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();
|
if (Util.isNull(response)) throw new NullPointerException();
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
this.address = address;
|
||||||
this.tracker = tracker;
|
this.tracker = tracker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,8 +68,9 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||||
if (tracker != null) data.set(0x0000, tracker);
|
if (tracker != null) data.set(0x0000, tracker);
|
||||||
data.set(0x0001, response);
|
data.set(0x0001, response);
|
||||||
data.set(0x0002, info);
|
if (info != null) data.set(0x0002, info);
|
||||||
if (message != null) data.set(0x0003, message);
|
if (address != null) data.set(0x0003, address);
|
||||||
|
if (message != null) data.set(0x0004, message);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,16 +84,17 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
|
||||||
} else {
|
} else {
|
||||||
host.creator.terminate();
|
host.creator.terminate();
|
||||||
}
|
}
|
||||||
client.sendPacket(new PacketExCreateServer(1, null, null, tracker));
|
client.sendPacket(new PacketExCreateServer(1, null, tracker));
|
||||||
} else {
|
} else {
|
||||||
String name = data.getRawString(0x0002);
|
String name = data.getRawString(0x0002);
|
||||||
String template = data.getRawString(0x0003);
|
String template = data.getRawString(0x0003);
|
||||||
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);
|
String dir = data.getRawString(0x0006);
|
||||||
|
UUID log = data.getUUID(0x0007);
|
||||||
|
|
||||||
host.creator.create(name, host.templates.get(template.toLowerCase()), version,
|
host.creator.create(name, host.templates.get(template.toLowerCase()), version,
|
||||||
port, log, tracker);
|
port, dir, log, tracker);
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
host.log.error.println(e);
|
host.log.error.println(e);
|
||||||
|
|
Loading…
Reference in New Issue