PacketTeleportPlayer |
Teleport Player Packet
diff --git a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/Packet/package-tree.html b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/Packet/package-tree.html
index 4beae471..c9f6543c 100644
--- a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/Packet/package-tree.html
+++ b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/Packet/package-tree.html
@@ -91,6 +91,7 @@
net.ME1312.SubServers.Host.Network.Packet.PacketExAddServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExConfigureHost (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExCreateServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
+net.ME1312.SubServers.Host.Network.Packet.PacketExDeleteServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExRemoveServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExUpdateServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketInRunEvent (implements net.ME1312.SubServers.Host.Network.PacketIn)
diff --git a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketIn.html b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketIn.html
index 86e8f53d..0b3ada14 100644
--- a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketIn.html
+++ b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketIn.html
@@ -99,7 +99,7 @@ var activeTableTab = "activeTableTab";
- All Known Implementing Classes:
-- PacketAuthorization, PacketCommandServer, PacketCreateServer, PacketDownloadBuildScript, PacketDownloadHostInfo, PacketDownloadLang, PacketDownloadPlayerList, PacketDownloadServerInfo, PacketDownloadServerList, PacketExAddServer, PacketExConfigureHost, PacketExCreateServer, PacketExRemoveServer, PacketExUpdateServer, PacketInRunEvent, PacketLinkExHost, PacketStartServer, PacketStopServer, PacketTeleportPlayer
+- PacketAuthorization, PacketCommandServer, PacketCreateServer, PacketDownloadBuildScript, PacketDownloadHostInfo, PacketDownloadLang, PacketDownloadPlayerList, PacketDownloadServerInfo, PacketDownloadServerList, PacketExAddServer, PacketExConfigureHost, PacketExCreateServer, PacketExDeleteServer, PacketExRemoveServer, PacketExUpdateServer, PacketInRunEvent, PacketLinkExHost, PacketStartServer, PacketStopServer, PacketTeleportPlayer
diff --git a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketOut.html b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketOut.html
index 9cb870d9..787041e6 100644
--- a/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketOut.html
+++ b/Javadoc/SubServers.Host/net/ME1312/SubServers/Host/Network/PacketOut.html
@@ -99,7 +99,7 @@ var activeTableTab = "activeTableTab";
- All Known Implementing Classes:
-- PacketAuthorization, PacketCommandServer, PacketCreateServer, PacketDownloadBuildScript, PacketDownloadHostInfo, PacketDownloadLang, PacketDownloadPlayerList, PacketDownloadServerInfo, PacketDownloadServerList, PacketExAddServer, PacketExConfigureHost, PacketExCreateServer, PacketExRemoveServer, PacketExUpdateServer, PacketLinkExHost, PacketOutExLogMessage, PacketOutExRequestQueue, PacketStartServer, PacketStopServer, PacketTeleportPlayer
+- PacketAuthorization, PacketCommandServer, PacketCreateServer, PacketDownloadBuildScript, PacketDownloadHostInfo, PacketDownloadLang, PacketDownloadPlayerList, PacketDownloadServerInfo, PacketDownloadServerList, PacketExAddServer, PacketExConfigureHost, PacketExCreateServer, PacketExDeleteServer, PacketExRemoveServer, PacketExUpdateServer, PacketLinkExHost, PacketOutExLogMessage, PacketOutExRequestQueue, PacketStartServer, PacketStopServer, PacketTeleportPlayer
diff --git a/Javadoc/SubServers.Host/overview-tree.html b/Javadoc/SubServers.Host/overview-tree.html
index ba0c429f..559b584e 100644
--- a/Javadoc/SubServers.Host/overview-tree.html
+++ b/Javadoc/SubServers.Host/overview-tree.html
@@ -134,6 +134,7 @@
net.ME1312.SubServers.Host.Network.Packet.PacketExAddServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExConfigureHost (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExCreateServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
+net.ME1312.SubServers.Host.Network.Packet.PacketExDeleteServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExRemoveServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketExUpdateServer (implements net.ME1312.SubServers.Host.Network.PacketIn, net.ME1312.SubServers.Host.Network.PacketOut)
net.ME1312.SubServers.Host.Network.Packet.PacketInRunEvent (implements net.ME1312.SubServers.Host.Network.PacketIn)
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
index 1dd68e90..f579d863 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
@@ -12,9 +12,11 @@ import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.ClientHandler;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExAddServer;
+import net.ME1312.SubServers.Bungee.Network.Packet.PacketExDeleteServer;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExRemoveServer;
import net.ME1312.SubServers.Bungee.Network.PacketOut;
import net.ME1312.SubServers.Bungee.SubPlugin;
+import org.json.JSONObject;
import java.net.InetAddress;
import java.util.*;
@@ -178,4 +180,42 @@ public class ExternalHost extends Host implements ClientHandler {
return true;
} else return false;
}
+
+ @Override
+ public boolean deleteSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+
+ SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(name));
+ plugin.getPluginManager().callEvent(event);
+ if (!event.isCancelled()) {
+ if (getSubServer(name).isRunning()) {
+ getSubServer(name).stop();
+ getSubServer(name).waitFor();
+ }
+
+ System.out.println("SubServers > Saving...");
+ JSONObject info = (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(name.toLowerCase()).getName())) ? plugin.config.get().getSection("Servers").getSection(servers.get(name.toLowerCase()).getName()).toJSON() : new JSONObject();
+ info.put("Name", servers.get(name.toLowerCase()).getName());
+ info.put("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(name.toLowerCase()).getName())) {
+ plugin.config.get().getSection("Servers").remove(servers.get(name.toLowerCase()).getName());
+ plugin.config.save();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Removing Files...");
+ queue(new PacketExDeleteServer(name, info, json -> {
+ if (json.getInt("r") == 0) {
+ servers.remove(name.toLowerCase());
+ System.out.println("SubServers > Done!");
+ } else {
+ System.out.println("SubServers > Couldn't remove server from memory. See " + getName() + " console for more details");
+ }
+ }));
+ return true;
+ } else return false;
+ }
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
index 9fb565da..65715d47 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
@@ -281,7 +281,7 @@ public abstract class Host implements ExtraDataHandler {
*
* @param name SubServer Name
*/
- public boolean forceRemoveSubServer(String name) {
+ public boolean forceRemoveSubServer(String name) throws InterruptedException {
return forceRemoveSubServer(null, name);
}
@@ -291,7 +291,26 @@ public abstract class Host implements ExtraDataHandler {
* @param player Player Removing
* @param name SubServer Name
*/
- public abstract boolean forceRemoveSubServer(UUID player, String name);
+ public abstract boolean forceRemoveSubServer(UUID player, String name) throws InterruptedException;
+
+ /**
+ * Delete a SubServer
+ *
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public boolean deleteSubServer(String name) throws InterruptedException {
+ return deleteSubServer(null, name);
+ }
+
+ /**
+ * Delete a SubServer
+ *
+ * @param player Player Deleting
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public abstract boolean deleteSubServer(UUID player, String name) throws InterruptedException;
@Override
public void addExtra(String handle, Object value) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java
index 83cc4177..e64a798c 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java
@@ -1,5 +1,6 @@
package net.ME1312.SubServers.Bungee.Host.Internal;
+import com.google.common.io.Files;
import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent;
import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent;
import net.ME1312.SubServers.Bungee.Host.Executable;
@@ -7,15 +8,15 @@ import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Host.SubCreator;
import net.ME1312.SubServers.Bungee.Host.SubServer;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
+import net.ME1312.SubServers.Bungee.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.SubPlugin;
+import org.json.JSONObject;
+import java.io.File;
+import java.io.FileWriter;
import java.net.InetAddress;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.UUID;
+import java.util.*;
/**
* Internal Host Class
@@ -133,4 +134,48 @@ public class InternalHost extends Host {
return true;
} else return false;
}
+
+ @Override
+ public boolean deleteSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+
+ if (removeSubServer(player, name)) {
+ new Thread(() -> {
+ UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + name.toLowerCase());
+ try {
+ File from = new File(getDirectory(), servers.get(name.toLowerCase()).getDirectory());
+ if (from.exists()) {
+ System.out.println("SubServers > Removing Files...");
+ if (to.exists()) {
+ if (to.isDirectory()) Util.deleteDirectory(to);
+ else to.delete();
+ }
+ to.mkdirs();
+ Files.move(from, to);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Saving...");
+ JSONObject json = (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(name.toLowerCase()).getName()))?plugin.config.get().getSection("Servers").getSection(servers.get(name.toLowerCase()).getName()).toJSON():new JSONObject();
+ json.put("Name", servers.get(name.toLowerCase()).getName());
+ json.put("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(name.toLowerCase()).getName())) {
+ plugin.config.get().getSection("Servers").remove(servers.get(name.toLowerCase()).getName());
+ plugin.config.save();
+ }
+ if (!to.exists()) to.mkdirs();
+ FileWriter writer = new FileWriter(new File(to, "info.json"));
+ json.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("SubServers > Done!");
+ }).start();
+ return true;
+ } else return false;
+ }
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDeleteServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDeleteServer.java
index 59d1fc77..691e8d80 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDeleteServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDeleteServer.java
@@ -13,41 +13,30 @@ import java.util.HashMap;
import java.util.UUID;
/**
- * Create Server External Host Packet
+ * Delete Server External Host Packet
*/
public class PacketExDeleteServer implements PacketIn, PacketOut {
private static HashMap callbacks = new HashMap();
private String name;
- private SubCreator.ServerType type;
- private Version version;
- private int port;
- private int ram;
- private UUID log;
+ private JSONObject info;
private String id = null;
/**
- * New PacketExCreateServer
+ * New PacketExDeleteServer
*/
public PacketExDeleteServer() {}
/**
- * New PacketExCreateServer (Out)
+ * New PacketExDeleteServer (Out)
*
* @param name Server Name
- * @param type Server Type
- * @param version Server Version
- * @param memory Server Memory Amount (in MB)
- * @param port Server Port Number
+ * @param info Info.json Contents
* @param callback Callbacks
*/
- public PacketExDeleteServer(String name, SubCreator.ServerType type, Version version, int memory, int port, UUID log, JSONCallback... callback) {
- if (Util.isNull(name, type, version, port, memory, log, callback)) throw new NullPointerException();
+ public PacketExDeleteServer(String name, JSONObject info, JSONCallback... callback) {
+ if (Util.isNull(name, info, callback)) throw new NullPointerException();
this.name = name;
- this.type = type;
- this.version = version;
- this.port = port;
- this.ram = memory;
- this.log = log;
+ this.info = info;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
}
@@ -59,14 +48,8 @@ public class PacketExDeleteServer implements PacketIn, PacketOut {
} else {
JSONObject json = new JSONObject();
json.put("id", id);
- JSONObject creator = new JSONObject();
- creator.put("name", name);
- creator.put("type", type.toString());
- creator.put("version", version.toString());
- creator.put("port", port);
- creator.put("ram", ram);
- creator.put("log", log.toString());
- json.put("creator", creator);
+ json.put("server", name);
+ json.put("info", info);
return json;
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
index 47485344..eb4e1b48 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
@@ -1,11 +1,9 @@
package net.ME1312.SubServers.Bungee;
-import com.google.common.io.Files;
import net.ME1312.SubServers.Bungee.Host.Host;
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.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.md_5.bungee.api.ChatColor;
@@ -17,12 +15,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import net.md_5.bungee.command.ConsoleCommandSender;
-import org.json.JSONObject;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
import java.util.*;
/**
@@ -169,43 +162,8 @@ public final class SubCommand extends Command implements TabExecutor {
sender.sendMessage("SubServers > That Server is not a SubServer");
} else if (((SubServer) servers.get(args[1].toLowerCase())).isRunning()) {
sender.sendMessage("SubServers > That SubServer is still running");
- } else if (!((SubServer) servers.get(args[1].toLowerCase())).getHost().removeSubServer(args[1])) {
- sender.sendMessage("SubServers > Couldn't Remove SubServer");
- } else {
- new Thread(() -> {
- UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + args[1].toLowerCase());
- try {
- File from = new File(((SubServer) servers.get(args[1].toLowerCase())).getHost().getDirectory(), ((SubServer) servers.get(args[1].toLowerCase())).getDirectory());
- if (from.exists()) {
- sender.sendMessage("SubServers > Removing Files...");
- if (to.exists()) {
- if (to.isDirectory()) Util.deleteDirectory(to);
- else to.delete();
- }
- to.mkdirs();
- Files.move(from, to);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- sender.sendMessage("SubServers > Saving...");
- JSONObject json = (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(args[1].toLowerCase()).getName()))?plugin.config.get().getSection("Servers").getSection(servers.get(args[1].toLowerCase()).getName()).toJSON():new JSONObject();
- json.put("Name", servers.get(args[1].toLowerCase()).getName());
- json.put("Timestamp", Calendar.getInstance().getTime().getTime());
- try {
- if (plugin.config.get().getSection("Servers").getKeys().contains(servers.get(args[1].toLowerCase()).getName())) {
- plugin.config.get().getSection("Servers").remove(servers.get(args[1].toLowerCase()).getName());
- plugin.config.save();
- }
- if (!to.exists()) to.mkdirs();
- FileWriter writer = new FileWriter(new File(to, "info.json"));
- json.write(writer);
- writer.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- sender.sendMessage("SubServers > Done!");
- }).start();
+ } else if (!((SubServer) servers.get(args[1].toLowerCase())).getHost().deleteSubServer(args[1].toLowerCase())){
+ System.out.println("SubServers > Couldn't remove server from memory.");
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDeleteServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDeleteServer.java
new file mode 100644
index 00000000..470e8952
--- /dev/null
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExDeleteServer.java
@@ -0,0 +1,137 @@
+package net.ME1312.SubServers.Host.Network.Packet;
+
+import net.ME1312.SubServers.Host.Executable.SubServer;
+import net.ME1312.SubServers.Host.Library.Log.Logger;
+import net.ME1312.SubServers.Host.Library.UniversalFile;
+import net.ME1312.SubServers.Host.Library.Util;
+import net.ME1312.SubServers.Host.Library.Version.Version;
+import net.ME1312.SubServers.Host.Network.PacketIn;
+import net.ME1312.SubServers.Host.Network.PacketOut;
+import net.ME1312.SubServers.Host.Network.SubDataClient;
+import net.ME1312.SubServers.Host.SubServers;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.Calendar;
+
+/**
+ * Create Server Packet
+ */
+public class PacketExDeleteServer implements PacketIn, PacketOut {
+ private SubServers host;
+ private int response;
+ private String message;
+ private String id;
+ private Logger log = null;
+
+ /**
+ * New PacketExDeleteServer (In)
+ *
+ * @param host SubPlugin
+ */
+ public PacketExDeleteServer(SubServers host) {
+ if (Util.isNull(host)) throw new NullPointerException();
+ this.host = host;
+ try {
+ Field f = SubDataClient.class.getDeclaredField("log");
+ f.setAccessible(true);
+ this.log = (Logger) f.get(null);
+ f.setAccessible(false);
+ } catch (IllegalAccessException | NoSuchFieldException e) {}
+ }
+
+ /**
+ * New PacketExDeleteServer (Out)
+ *
+ * @param response Response ID
+ * @param message Message
+ * @param id Receiver ID
+ */
+ public PacketExDeleteServer(int response, String message, String id) {
+ if (Util.isNull(response, message)) throw new NullPointerException();
+ this.response = response;
+ this.message = message;
+ this.id = id;
+ }
+
+ @Override
+ public JSONObject generate() {
+ JSONObject json = new JSONObject();
+ json.put("id", id);
+ json.put("r", response);
+ json.put("m", message);
+ return json;
+ }
+
+ @Override
+ public void execute(JSONObject data) {
+ try {
+ if (!host.servers.keySet().contains(data.getString("server").toLowerCase())) {
+ host.subdata.sendPacket(new PacketExDeleteServer(0, "Server Didn't Exist", (data.keySet().contains("id"))?data.getString("id"):null));
+ } else if (host.servers.get(data.getString("server").toLowerCase()).isRunning()) {
+ host.subdata.sendPacket(new PacketExDeleteServer(2, "That server is still running.", (data.keySet().contains("id"))?data.getString("id"):null));
+ } else {
+ SubServer server = host.servers.get(data.getString("server").toLowerCase());
+ host.servers.remove(data.getString("server").toLowerCase());
+ new Thread(() -> {
+ UniversalFile to = new UniversalFile(host.dir, "Recently Deleted:" + server.getName().toLowerCase());
+ try {
+ File from = new File(host.host.getRawString("Directory"), server.getDirectory());
+ if (from.exists()) {
+ log.info.println("Removing Files...");
+ if (to.exists()) {
+ if (to.isDirectory()) Util.deleteDirectory(to);
+ else to.delete();
+ }
+ to.mkdirs();
+ move(from, to);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ log.info.println("Saving...");
+ try {
+ if (!to.exists()) to.mkdirs();
+ FileWriter writer = new FileWriter(new File(to, "info.json"));
+ data.getJSONObject("info").write(writer);
+ writer.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ log.info.println("Deleted Server \u2014 " + data.getString("server"));
+ host.subdata.sendPacket(new PacketExDeleteServer(0, "Server Deleted Successfully", (data.keySet().contains("id"))?data.getString("id"):null));
+ }).start();
+ }
+ } catch (Throwable e) {
+ host.subdata.sendPacket(new PacketExDeleteServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
+ }
+ }
+
+ @Override
+ public Version getVersion() {
+ return new Version("2.11.0a");
+ }
+
+ private boolean move(File sourceFile, File destFile) {
+ if (sourceFile.isDirectory()) {
+ for (File file : sourceFile.listFiles()) {
+ move(file, new File(file.getPath().substring("temp".length()+1)));
+ }
+ } else {
+ try {
+ Files.move(Paths.get(sourceFile.getPath()), Paths.get(destFile.getPath()), StandardCopyOption.REPLACE_EXISTING);
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExRemoveServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExRemoveServer.java
index e191ad59..22024427 100644
--- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExRemoveServer.java
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketExRemoveServer.java
@@ -71,7 +71,7 @@ public class PacketExRemoveServer implements PacketIn, PacketOut {
host.subdata.sendPacket(new PacketExRemoveServer(2, "That server is still running.", (data.keySet().contains("id"))?data.getString("id"):null));
} else {
host.servers.remove(data.getString("server").toLowerCase());
- log.info.println("Removed Server \u2014 " + data.getJSONObject("server").getString("name"));
+ log.info.println("Removed Server \u2014 " + data.getString("name"));
host.subdata.sendPacket(new PacketExRemoveServer(0, "Server Removed Successfully", (data.keySet().contains("id"))?data.getString("id"):null));
}
} catch (Throwable e) {
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubDataClient.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubDataClient.java
index bad7fe15..23243823 100644
--- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubDataClient.java
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubDataClient.java
@@ -78,6 +78,7 @@ public final class SubDataClient {
registerPacket(new PacketExAddServer(host), "SubExAddServer");
registerPacket(new PacketExConfigureHost(host), "SubExConfigureHost");
registerPacket(new PacketExCreateServer(host), "SubExCreateServer");
+ registerPacket(new PacketExDeleteServer(host), "SubExDeleteServer");
registerPacket(new PacketExRemoveServer(host), "SubExRemoveServer");
registerPacket(new PacketExUpdateServer(host), "SubExUpdateServer");
registerPacket(new PacketInRunEvent(), "SubRunEvent");
@@ -99,6 +100,7 @@ public final class SubDataClient {
registerPacket(PacketExAddServer.class, "SubExAddServer");
registerPacket(PacketExConfigureHost.class, "SubExConfigureHost");
registerPacket(PacketExCreateServer.class, "SubExCreateServer");
+ registerPacket(PacketExDeleteServer.class, "SubExDeleteServer");
registerPacket(PacketExRemoveServer.class, "SubExRemoveServer");
registerPacket(PacketExUpdateServer.class, "SubExUpdateServer");
registerPacket(PacketLinkExHost.class, "SubLinkExHost");
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/SubServers.java b/SubServers.Host/src/net/ME1312/SubServers/Host/SubServers.java
index 406a3ef1..75906864 100644
--- a/SubServers.Host/src/net/ME1312/SubServers/Host/SubServers.java
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/SubServers.java
@@ -17,8 +17,10 @@ import net.ME1312.SubServers.Host.Library.UniversalFile;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
import net.ME1312.SubServers.Host.Network.SubDataClient;
+import org.json.JSONObject;
import java.io.File;
+import java.io.FileReader;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.net.SocketException;
@@ -26,6 +28,7 @@ import java.net.URL;
import java.net.URLDecoder;
import java.nio.file.Files;
import java.util.*;
+import java.util.concurrent.TimeUnit;
/**
* SubServers.Host Main Class
@@ -86,6 +89,43 @@ public final class SubServers {
System.out.println("SubServers > Created ~/Templates/Sponge Mods");
}
+ if (new UniversalFile(dir, "Recently Deleted").exists()) {
+ int f = new UniversalFile(dir, "Recently Deleted").listFiles().length;
+ for (File file : new UniversalFile(dir, "Recently Deleted").listFiles()) {
+ try {
+ if (file.isDirectory()) {
+ if (new UniversalFile(dir, "Recently Deleted:" + file.getName() + ":info.json").exists()) {
+ JSONObject json = new JSONObject(Util.readAll(new FileReader(new UniversalFile(dir, "Recently Deleted:" + file.getName() + ":info.json"))));
+ if (json.keySet().contains("Timestamp")) {
+ if (TimeUnit.MILLISECONDS.toDays(Calendar.getInstance().getTime().getTime() - json.getLong("Timestamp")) >= 7) {
+ Util.deleteDirectory(file);
+ f--;
+ System.out.println("SubServers > Removed ~/Recently Deleted/" + file.getName());
+ }
+ } else {
+ Util.deleteDirectory(file);
+ f--;
+ System.out.println("SubServers > Removed ~/Recently Deleted/" + file.getName());
+ }
+ } else {
+ Util.deleteDirectory(file);
+ f--;
+ System.out.println("SubServers > Removed ~/Recently Deleted/" + file.getName());
+ }
+ } else {
+ Files.delete(file.toPath());
+ f--;
+ System.out.println("SubServers > Removed ~/Recently Deleted/" + file.getName());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ if (f <= 0) {
+ Files.delete(new UniversalFile(dir, "Recently Deleted").toPath());
+ }
+ }
+
config = new YAMLConfig(new UniversalFile(dir, "config.yml"));
subdata = new SubDataClient(this, config.get().getSection("Settings").getSection("SubData").getString("Name", "undefined"),
InetAddress.getByName(config.get().getSection("Settings").getSection("SubData").getString("Address", "127.0.0.1:4391").split(":")[0]),
|