diff --git a/SubServers.Bungee/pom.xml b/SubServers.Bungee/pom.xml
index 656298ce..2b090a46 100644
--- a/SubServers.Bungee/pom.xml
+++ b/SubServers.Bungee/pom.xml
@@ -28,9 +28,15 @@
provided
- org.msgpack
- msgpack-core
- 0.8.16
+ net.ME1312.Galaxi
+ GalaxiUtil
+ 19w16a
+ compile
+
+
+ net.ME1312.SubData
+ Server
+ 19w16b
compile
@@ -136,6 +142,8 @@
${basedir}/../Javadoc/SubServers.Bungee
-Xdoclint:none
+ https://src.me1312.net/jenkins/job/GalaxiEngine/javadoc/GalaxiUtil/
+ https://src.me1312.net/jenkins/job/SubData/javadoc/Server/
https://ci.md-5.net/job/BungeeCord/ws/api/target/apidocs/
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddHostEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddHostEvent.java
index 9bcc69cc..30a78e56 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddHostEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddHostEvent.java
@@ -1,9 +1,8 @@
package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Host;
-import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddProxyEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddProxyEvent.java
index c2fcb1e4..cdb1008c 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddProxyEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddProxyEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Proxy;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Event;
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.java
index 7aa2cb08..b09e7661 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.java
@@ -3,7 +3,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java
index 3aede938..76c8f533 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java
@@ -3,8 +3,8 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Host.SubCreator;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.Galaxi.Library.Version.Version;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
@@ -33,7 +33,7 @@ public class SubCreateEvent extends Event implements SubEvent, Cancellable {
* @param port Server Port Number
*/
public SubCreateEvent(UUID player, Host host, String name, SubCreator.ServerTemplate template, Version version, int port) {
- if (Util.isNull(host, name, template, version, port)) throw new NullPointerException();
+ if (Util.isNull(host, name, template, port)) throw new NullPointerException();
this.player = player;
this.host = host;
this.name = name;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.java
index c5e3c9cc..93f49ebd 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.java
@@ -1,11 +1,11 @@
package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Server;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
+import net.ME1312.Galaxi.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
@@ -18,7 +18,7 @@ public class SubEditServerEvent extends Event implements SubEvent, Cancellable {
private boolean cancelled = false;
private UUID player;
private Server server;
- private NamedContainer edit;
+ private NamedContainer edit;
private boolean perm;
/**
@@ -31,11 +31,11 @@ public class SubEditServerEvent extends Event implements SubEvent, Cancellable {
*/
public SubEditServerEvent(UUID player, Server server, NamedContainer edit, boolean permanent) {
if (Util.isNull(server, edit)) throw new NullPointerException();
- YAMLSection section = new YAMLSection();
+ ObjectMap section = new ObjectMap();
section.set(".", edit.get());
this.player = player;
this.server = server;
- this.edit = new NamedContainer(edit.name(), section.get("."));
+ this.edit = new NamedContainer(edit.name(), section.get("."));
this.perm = permanent;
}
@@ -58,7 +58,7 @@ public class SubEditServerEvent extends Event implements SubEvent, Cancellable {
*
* @return Edit to be made
*/
- public NamedContainer getEdit() {
+ public NamedContainer getEdit() {
return edit;
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkConnectEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkConnectEvent.java
index 8006f074..1580feb2 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkConnectEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkConnectEvent.java
@@ -1,8 +1,11 @@
package net.ME1312.SubServers.Bungee.Event;
+import net.ME1312.SubData.Server.DataClient;
+import net.ME1312.SubData.Server.DataServer;
+import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.SubDataServer;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubData.Server.SubDataServer;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
@@ -13,16 +16,16 @@ import java.net.InetAddress;
*/
public class SubNetworkConnectEvent extends Event implements SubEvent, Cancellable {
private boolean cancelled = false;
- private SubDataServer network;
- private InetAddress address;
+ private DataServer network;
+ private DataClient client;
/**
* SubData Network Connect Event
*/
- public SubNetworkConnectEvent(SubDataServer network, InetAddress address) {
- if (Util.isNull(network, address)) throw new NullPointerException();
+ public SubNetworkConnectEvent(DataServer network, DataClient client) {
+ if (Util.isNull(network, client)) throw new NullPointerException();
this.network = network;
- this.address = address;
+ this.client = client;
}
/**
@@ -30,17 +33,17 @@ public class SubNetworkConnectEvent extends Event implements SubEvent, Cancellab
*
* @return SubData Network
*/
- public SubDataServer getNetwork() {
+ public DataServer getNetwork() {
return network;
}
/**
- * Get the address of the connecting client
+ * Get the connecting client
*
- * @return Client address
+ * @return Client
*/
- public InetAddress getAddress() {
- return address;
+ public DataClient getClient() {
+ return client;
}
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkDisconnectEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkDisconnectEvent.java
index 5445532c..87ef0250 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkDisconnectEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubNetworkDisconnectEvent.java
@@ -1,25 +1,30 @@
package net.ME1312.SubServers.Bungee.Event;
+import net.ME1312.SubData.Server.DataClient;
+import net.ME1312.SubData.Server.DataServer;
+import net.ME1312.SubData.Server.Library.DisconnectReason;
+import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.Client;
-import net.ME1312.SubServers.Bungee.Network.SubDataServer;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubData.Server.SubDataServer;
import net.md_5.bungee.api.plugin.Event;
/**
* SubData Network Disconnect Event
*/
public class SubNetworkDisconnectEvent extends Event implements SubEvent {
- private SubDataServer network;
- private Client client;
+ private DataServer network;
+ private DataClient client;
+ private DisconnectReason reason;
/**
* SubData Network Disconnect Event
*/
- public SubNetworkDisconnectEvent(SubDataServer network, Client client) {
- if (Util.isNull(network, client)) throw new NullPointerException();
+ public SubNetworkDisconnectEvent(DataServer network, DataClient client, DisconnectReason reason) {
+ if (Util.isNull(network, client, reason)) throw new NullPointerException();
this.network = network;
this.client = client;
+ this.reason = reason;
}
/**
@@ -27,7 +32,7 @@ public class SubNetworkDisconnectEvent extends Event implements SubEvent {
*
* @return SubData Network
*/
- public SubDataServer getNetwork() {
+ public DataServer getNetwork() {
return network;
}
@@ -36,8 +41,16 @@ public class SubNetworkDisconnectEvent extends Event implements SubEvent {
*
* @return Client
*/
- public Client getClient() {
+ public DataClient getClient() {
return client;
}
+ /**
+ * Get the reason the client disconnected
+ *
+ * @return Disconnect Reason
+ */
+ public DisconnectReason getReason() {
+ return reason;
+ }
}
\ No newline at end of file
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveHostEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveHostEvent.java
index 23cc8dbd..f4aba2b9 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveHostEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveHostEvent.java
@@ -1,9 +1,8 @@
package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Host;
-import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveProxyEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveProxyEvent.java
index 65e7fae6..a69f3ae7 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveProxyEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveProxyEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Proxy;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Event;
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveServerEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveServerEvent.java
index a0098b31..82fbde20 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveServerEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubRemoveServerEvent.java
@@ -3,7 +3,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubSendCommandEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubSendCommandEvent.java
index 9eb28aff..d07fcb2b 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubSendCommandEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubSendCommandEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.SubServer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStartEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStartEvent.java
index eda9209f..6ecf38d1 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStartEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStartEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.SubServer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStopEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStopEvent.java
index daf3bd6f..bb7f43ae 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStopEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStopEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.SubServer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
import net.md_5.bungee.api.plugin.Event;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStoppedEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStoppedEvent.java
index c63cd67f..339f7d81 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStoppedEvent.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubStoppedEvent.java
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Bungee.Event;
import net.ME1312.SubServers.Bungee.Host.SubServer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Event;
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java
index e65f3ab0..3fcc5c18 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java
@@ -1,10 +1,9 @@
package net.ME1312.SubServers.Bungee.Host;
import net.ME1312.SubServers.Bungee.Library.Compatibility.JNA;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Util;
import java.io.File;
-import java.lang.reflect.Field;
/**
* Executable Handler Class
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 c6ce67cf..279dc99b 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
@@ -1,23 +1,23 @@
package net.ME1312.SubServers.Bungee.Host.External;
import com.google.common.collect.Range;
+import net.ME1312.SubData.Server.DataClient;
+import net.ME1312.SubData.Server.SerializableClientHandler;
+import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent;
import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent;
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.Callback;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.Client;
-import net.ME1312.SubServers.Bungee.Network.ClientHandler;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
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.Packet.PacketOutReset;
-import net.ME1312.SubServers.Bungee.Network.PacketOut;
+import net.ME1312.SubServers.Bungee.Network.Packet.PacketOutExReset;
import net.ME1312.SubServers.Bungee.SubPlugin;
import java.net.InetAddress;
@@ -26,15 +26,15 @@ import java.util.*;
/**
* External Host Class
*/
-public class ExternalHost extends Host implements ClientHandler {
+public class ExternalHost extends Host implements SerializableClientHandler {
private HashMap servers = new HashMap();
private String name;
private boolean enabled;
private InetAddress address;
private SubCreator creator;
private String directory;
- protected NamedContainer client;
- private LinkedList queue;
+ protected NamedContainer client;
+ private LinkedList queue;
private boolean clean;
protected SubPlugin plugin;
@@ -56,26 +56,26 @@ public class ExternalHost extends Host implements ClientHandler {
this.name = name;
this.enabled = enabled;
this.address = address;
- this.client = new NamedContainer(false, null);
+ this.client = new NamedContainer(false, null);
this.creator = new ExternalSubCreator(this, ports, log, gitBash);
this.directory = directory;
- this.queue = new LinkedList();
+ this.queue = new LinkedList();
this.clean = false;
}
@Override
- public Client getSubData() {
+ public DataClient getSubData() {
return client.get();
}
@Override
- public void setSubData(Client client) {
- this.client = new NamedContainer(false, client);
- if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) client.setHandler(this);
+ public void setSubData(DataClient client) {
+ this.client = new NamedContainer(false, (SubDataClient) client);
+ if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) ((SubDataClient) client).setHandler(this);
}
- protected void queue(PacketOut... packet) {
- for (PacketOut p : packet) if (client.get() == null || client.name() == false) {
+ protected void queue(PacketObjectOut... packet) {
+ for (PacketObjectOut p : packet) if (client.get() == null || client.name() == false) {
queue.add(p);
} else {
client.get().sendPacket(p);
@@ -83,7 +83,7 @@ public class ExternalHost extends Host implements ClientHandler {
}
private void requeue() {
if (!clean) {
- client.get().sendPacket(new PacketOutReset("Prevent Desync"));
+ client.get().sendPacket(new PacketOutExReset("Prevent Desync"));
clean = true;
}
for (SubServer server : servers.values()) {
@@ -170,7 +170,7 @@ public class ExternalHost extends Host implements ClientHandler {
getSubServer(server).waitFor();
}
queue(new PacketExRemoveServer(server, data -> {
- if (data.getInt("r") == 0) {
+ if (data.getInt(0x0001) == 0) {
servers.remove(server.toLowerCase());
}
}));
@@ -189,13 +189,89 @@ public class ExternalHost extends Host implements ClientHandler {
getSubServer(server).terminate();
}
queue(new PacketExRemoveServer(server, data -> {
- if (data.getInt("r") == 0) {
+ if (data.getInt(0x0001) == 0) {
servers.remove(server.toLowerCase());
}
}));
return true;
}
+ @Override
+ public boolean recycleSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+ String server = servers.get(name.toLowerCase()).getName();
+
+ SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
+ plugin.getPluginManager().callEvent(event);
+ if (!event.isCancelled()) {
+ if (getSubServer(server).isRunning()) {
+ getSubServer(server).stop();
+ getSubServer(server).waitFor();
+ }
+
+ System.out.println("SubServers > Saving...");
+ ObjectMap info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?plugin.config.get().getMap("Servers").getMap(server).clone():new ObjectMap();
+ info.set("Name", server);
+ info.set("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
+ plugin.config.save();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Moving Files...");
+ queue(new PacketExDeleteServer(server, info, true, data -> {
+ if (data.getInt(0x0001) == 0) {
+ servers.remove(server.toLowerCase());
+ System.out.println("SubServers > Deleted SubServer: " + server);
+ } else {
+ System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details");
+ }
+ }));
+ return true;
+ } else return false;
+ }
+
+ @Override
+ public boolean forceRecycleSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+ String server = servers.get(name.toLowerCase()).getName();
+
+ SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
+ plugin.getPluginManager().callEvent(event);
+ if (getSubServer(server).isRunning()) {
+ getSubServer(server).terminate();
+ }
+
+ System.out.println("SubServers > Saving...");
+ ObjectMap info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?plugin.config.get().getMap("Servers").getMap(server).clone():new ObjectMap();
+ info.set("Name", server);
+ info.set("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
+ plugin.config.save();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Moving Files...");
+ queue(new PacketExDeleteServer(server, info, true, data -> {
+ if (data.getInt(0x0001) == 0) {
+ for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group);
+ servers.remove(server.toLowerCase());
+ System.out.println("SubServers > Deleted SubServer: " + server);
+ } else {
+ System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details");
+ }
+ }));
+ return true;
+ }
+
@Override
public boolean deleteSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
@@ -210,12 +286,12 @@ public class ExternalHost extends Host implements ClientHandler {
}
System.out.println("SubServers > Saving...");
- YAMLSection info = (plugin.config.get().getSection("Servers").getKeys().contains(server))?plugin.config.get().getSection("Servers").getSection(server).clone():new YAMLSection();
+ ObjectMap info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?plugin.config.get().getMap("Servers").getMap(server).clone():new ObjectMap();
info.set("Name", server);
info.set("Timestamp", Calendar.getInstance().getTime().getTime());
try {
- if (plugin.config.get().getSection("Servers").getKeys().contains(server)) {
- plugin.config.get().getSection("Servers").remove(server);
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
plugin.config.save();
}
} catch (Exception e) {
@@ -223,8 +299,8 @@ public class ExternalHost extends Host implements ClientHandler {
}
System.out.println("SubServers > Removing Files...");
- queue(new PacketExDeleteServer(server, info, data -> {
- if (data.getInt("r") == 0) {
+ queue(new PacketExDeleteServer(server, info, false, data -> {
+ if (data.getInt(0x0001) == 0) {
servers.remove(server.toLowerCase());
System.out.println("SubServers > Deleted SubServer: " + server);
} else {
@@ -247,12 +323,12 @@ public class ExternalHost extends Host implements ClientHandler {
}
System.out.println("SubServers > Saving...");
- YAMLSection info = (plugin.config.get().getSection("Servers").getKeys().contains(server))?plugin.config.get().getSection("Servers").getSection(server).clone():new YAMLSection();
+ ObjectMap info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?plugin.config.get().getMap("Servers").getMap(server).clone():new ObjectMap();
info.set("Name", server);
info.set("Timestamp", Calendar.getInstance().getTime().getTime());
try {
- if (plugin.config.get().getSection("Servers").getKeys().contains(server)) {
- plugin.config.get().getSection("Servers").remove(server);
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
plugin.config.save();
}
} catch (Exception e) {
@@ -260,8 +336,8 @@ public class ExternalHost extends Host implements ClientHandler {
}
System.out.println("SubServers > Removing Files...");
- queue(new PacketExDeleteServer(server, info, data -> {
- if (data.getInt("r") == 0) {
+ queue(new PacketExDeleteServer(server, info, false, data -> {
+ if (data.getInt(0x0001) == 0) {
for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group);
servers.remove(server.toLowerCase());
System.out.println("SubServers > Deleted SubServer: " + server);
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java
index 22d01c8f..455bc96d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java
@@ -1,17 +1,18 @@
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.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Host.*;
-import net.ME1312.SubServers.Bungee.Host.Internal.InternalSubCreator;
-import net.ME1312.SubServers.Bungee.Library.*;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLConfig;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Exception.InvalidHostException;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.Galaxi.Library.Config.YAMLConfig;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExConfigureHost;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExCreateServer;
import net.ME1312.SubServers.Bungee.SubAPI;
+import net.md_5.bungee.api.ChatColor;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
@@ -55,8 +56,8 @@ public class ExternalSubCreator extends SubCreator {
if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
try {
if (file.isDirectory() && !file.getName().endsWith(".x")) {
- YAMLSection config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()):new YAMLSection();
- ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
+ ObjectMap config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap()):new ObjectMap();
+ ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap()), config.getMap("Settings", new ObjectMap()));
templates.put(file.getName().toLowerCase(), template);
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
}
@@ -70,7 +71,7 @@ public class ExternalSubCreator extends SubCreator {
@Override
public boolean create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback callback) {
- if (Util.isNull(name, template, version)) throw new NullPointerException();
+ if (Util.isNull(name, template)) throw new NullPointerException();
if (host.isAvailable() && host.isEnabled() && template.isEnabled() && !SubAPI.getInstance().getSubServers().keySet().contains(name.toLowerCase()) && !SubCreator.isReserved(name)) {
StackTraceElement[] origin = new Exception().getStackTrace();
@@ -94,15 +95,15 @@ public class ExternalSubCreator extends SubCreator {
logger.start();
host.queue(new PacketExCreateServer(name, template, version, port, logger.getExternalAddress(), data -> {
try {
- if (data.getInt("r") == 0) {
+ if (data.getInt(0x0001) == 0) {
System.out.println(name + "/Creator > Saving...");
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());
- YAMLSection server = new YAMLSection();
- YAMLSection config = new YAMLSection((Map) convert(data.getSection("c").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$", data.getSection("c").getRawString("\033address", "null")), new NamedContainer<>("$port$", Integer.toString(fport))));
+ ObjectMap server = new ObjectMap();
+ ObjectMap config = new ObjectMap((Map) 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((Map) data.getObject(0x0002)).getRawString("\033address", "null")), new NamedContainer<>("$port$", Integer.toString(fport))));
config.remove("\033address");
@@ -123,15 +124,15 @@ public class ExternalSubCreator extends SubCreator {
server.set("Hidden", false);
server.setAll(config);
- SubServer subserver = host.addSubServer(player, name, server.getBoolean("Enabled"), fport, server.getColoredString("Motd", '&'), server.getBoolean("Log"), server.getRawString("Directory"),
+ 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"));
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.getSection("Extra").getKeys())
- subserver.addExtra(extra, server.getSection("Extra").getObject(extra));
- host.plugin.config.get().getSection("Servers").set(name, server);
+ if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys())
+ subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
+ host.plugin.config.get().getMap("Servers").set(name, server);
host.plugin.config.save();
if (template.getBuildOptions().getBoolean("Run-On-Finish", true))
subserver.start();
@@ -144,7 +145,7 @@ public class ExternalSubCreator extends SubCreator {
ew.printStackTrace();
}
} else {
- System.out.println(name + "/Creator > " + data.getString("m"));
+ System.out.println(name + "/Creator > " + data.getString(0x0003));
}
} catch (Exception e) {
e.printStackTrace();
@@ -194,7 +195,7 @@ public class ExternalSubCreator extends SubCreator {
@Override
public void terminate(String name) {
if (this.thread.keySet().contains(name.toLowerCase())) {
- host.getSubData().sendPacket(new PacketExCreateServer(name.toLowerCase()));
+ ((SubDataClient) host.getSubData()).sendPacket(new PacketExCreateServer(name.toLowerCase()));
thread.remove(name.toLowerCase());
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java
index eaf44fe5..0d7826e0 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java
@@ -2,8 +2,8 @@ package net.ME1312.SubServers.Bungee.Host.External;
import net.ME1312.SubServers.Bungee.Host.SubLogFilter;
import net.ME1312.SubServers.Bungee.Host.SubLogger;
-import net.ME1312.SubServers.Bungee.Library.Container;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Container;
+import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketInExLogMessage;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.md_5.bungee.api.ProxyServer;
@@ -14,7 +14,6 @@ import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
index 90999b6d..bbad1493 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
@@ -1,18 +1,18 @@
package net.ME1312.SubServers.Bungee.Host.External;
+import net.ME1312.Galaxi.Library.Callback.ReturnRunnable;
import net.ME1312.SubServers.Bungee.Event.*;
import net.ME1312.SubServers.Bungee.Host.*;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
-import net.ME1312.SubServers.Bungee.Library.Container;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
+import net.ME1312.Galaxi.Library.Container;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExUpdateServer;
-import net.ME1312.SubServers.Bungee.SubAPI;
import net.md_5.bungee.BungeeServerInfo;
+import net.md_5.bungee.api.ChatColor;
-import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -111,14 +111,16 @@ public class ExternalSubServer extends SubServerContainer {
history.clear();
running = false;
- if (stopaction == StopAction.REMOVE_SERVER || stopaction == StopAction.DELETE_SERVER) {
+ if (stopaction == StopAction.REMOVE_SERVER || stopaction == StopAction.RECYCLE_SERVER || stopaction == StopAction.DELETE_SERVER) {
try {
- if (stopaction == StopAction.DELETE_SERVER) {
+ if (stopaction == StopAction.RECYCLE_SERVER) {
+ host.recycleSubServer(getName());
+ } else if (stopaction == StopAction.DELETE_SERVER) {
host.deleteSubServer(getName());
} else {
try {
- if (host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- host.plugin.config.get().getSection("Servers").remove(getName());
+ if (host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ host.plugin.config.get().getMap("Servers").remove(getName());
host.plugin.config.save();
}
} catch (IOException e) {
@@ -175,16 +177,16 @@ public class ExternalSubServer extends SubServerContainer {
- @SuppressWarnings("deprecation")
- public int edit(UUID player, YAMLSection edit) {
+ @SuppressWarnings({"deprecation", "unchecked"})
+ public int edit(UUID player, ObjectMap edit) {
int c = 0;
boolean state = isRunning();
SubServer forward = null;
- YAMLSection pending = edit.clone();
+ ObjectMap pending = edit.clone();
for (String key : edit.getKeys()) {
pending.remove(key);
- YAMLValue value = edit.get(key);
- SubEditServerEvent event = new SubEditServerEvent(player, this, new NamedContainer(key, value), true);
+ ObjectMapValue value = edit.get(key);
+ SubEditServerEvent event = new SubEditServerEvent(player, this, new NamedContainer(key, value), true);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
try {
@@ -193,10 +195,10 @@ public class ExternalSubServer extends SubServerContainer {
if (value.isString() && host.removeSubServer(player, getName())) {
SubServer server = host.addSubServer(player, value.asRawString(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- YAMLSection config = this.host.plugin.config.get().getSection("Servers").getSection(getName());
- this.host.plugin.config.get().getSection("Servers").remove(getName());
- this.host.plugin.config.get().getSection("Servers").set(server.getName(), config);
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ ObjectMap config = this.host.plugin.config.get().getMap("Servers").getMap(getName());
+ this.host.plugin.config.get().getMap("Servers").remove(getName());
+ this.host.plugin.config.get().getMap("Servers").set(server.getName(), config);
this.host.plugin.config.save();
}
forward = server;
@@ -215,11 +217,11 @@ public class ExternalSubServer extends SubServerContainer {
}
f.setAccessible(false);
logger.name = getDisplayName();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
if (getName().equals(getDisplayName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display");
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).remove("Display");
} else {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display", getDisplayName());
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Display", getDisplayName());
}
this.host.plugin.config.save();
}
@@ -230,8 +232,8 @@ public class ExternalSubServer extends SubServerContainer {
if (value.isBoolean()) {
if (enabled != value.asBoolean()) host.queue(new PacketExUpdateServer(this, PacketExUpdateServer.UpdateType.SET_ENABLED, (Boolean) value.asBoolean()));
enabled = value.asBoolean();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Enabled", isEnabled());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Enabled", isEnabled());
this.host.plugin.config.save();
}
c++;
@@ -240,8 +242,8 @@ public class ExternalSubServer extends SubServerContainer {
case "group":
if (value.isList()) {
Util.reflect(ServerContainer.class.getDeclaredField("groups"), this, value.asStringList());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Group", value.asStringList());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Group", value.asStringList());
this.host.plugin.config.save();
}
c++;
@@ -252,8 +254,8 @@ public class ExternalSubServer extends SubServerContainer {
waitFor(() -> host.getSubServer(getName()), null);
SubServer server = this.host.plugin.api.getHost(value.asRawString()).addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Host", server.getHost().getName());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Host", server.getHost().getName());
this.host.plugin.config.save();
}
forward = server;
@@ -266,8 +268,8 @@ public class ExternalSubServer extends SubServerContainer {
waitFor(() -> host.getSubServer(getName()), null);
SubServer server = host.addSubServer(player, getName(), isEnabled(), value.asInt(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Port", server.getAddress().getPort());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Port", server.getAddress().getPort());
this.host.plugin.config.save();
}
forward = server;
@@ -277,9 +279,9 @@ public class ExternalSubServer extends SubServerContainer {
break;
case "motd":
if (value.isString()) {
- Util.reflect(BungeeServerInfo.class.getDeclaredField("motd"), this, value.asColoredString('&'));
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Motd", value.asString());
+ Util.reflect(BungeeServerInfo.class.getDeclaredField("motd"), this, ChatColor.translateAlternateColorCodes('&', value.asString()));
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Motd", value.asString());
this.host.plugin.config.save();
}
c++;
@@ -289,8 +291,8 @@ public class ExternalSubServer extends SubServerContainer {
if (value.isBoolean()) {
if (log.get() != value.asBoolean()) host.queue(new PacketExUpdateServer(this, PacketExUpdateServer.UpdateType.SET_LOGGING, (Boolean) value.asBoolean()));
log.set(value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Log", isLogging());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Log", isLogging());
this.host.plugin.config.save();
}
c++;
@@ -301,8 +303,8 @@ public class ExternalSubServer extends SubServerContainer {
waitFor(() -> host.getSubServer(getName()), null);
SubServer server = host.addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), value.asRawString(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Directory", server.getPath());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Directory", server.getPath());
this.host.plugin.config.save();
}
forward = server;
@@ -315,8 +317,8 @@ public class ExternalSubServer extends SubServerContainer {
waitFor(() -> host.getSubServer(getName()), null);
SubServer server = host.addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), value.asRawString(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Executable", value.asRawString());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Executable", value.asRawString());
this.host.plugin.config.save();
}
forward = server;
@@ -333,8 +335,8 @@ public class ExternalSubServer extends SubServerContainer {
if (value.isString()) {
if (!stopcmd.equals(value)) host.queue(new PacketExUpdateServer(this, PacketExUpdateServer.UpdateType.SET_STOP_COMMAND, value.asRawString()));
stopcmd = value.asRawString();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Stop-Command", getStopCommand());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Stop-Command", getStopCommand());
this.host.plugin.config.save();
}
c++;
@@ -345,8 +347,8 @@ public class ExternalSubServer extends SubServerContainer {
StopAction action = Util.getDespiteException(() -> StopAction.valueOf(value.asRawString().toUpperCase().replace('-', '_').replace(' ', '_')), null);
if (action != null) {
stopaction = action;
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Stop-Action", getStopAction().toString());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Stop-Action", getStopAction().toString());
this.host.plugin.config.save();
}
c++;
@@ -355,8 +357,8 @@ public class ExternalSubServer extends SubServerContainer {
break;
case "auto-run":
if (value.isBoolean()) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Run-On-Launch", value.asBoolean());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Run-On-Launch", value.asBoolean());
this.host.plugin.config.save();
}
c++;
@@ -364,12 +366,12 @@ public class ExternalSubServer extends SubServerContainer {
break;
case "incompatible":
if (value.isList()) {
- for (String oname : value.asStringList()) {
+ for (String oname : (List) value.asStringList()) {
SubServer oserver = host.plugin.api.getSubServer(oname);
if (oserver != null && isCompatible(oserver)) toggleCompatibility(oserver);
}
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Incompatible", value.asStringList());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Incompatible", value.asStringList());
this.host.plugin.config.save();
}
c++;
@@ -378,8 +380,8 @@ public class ExternalSubServer extends SubServerContainer {
case "restricted":
if (value.isBoolean()) {
Util.reflect(BungeeServerInfo.class.getDeclaredField("restricted"), this, value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Restricted", isRestricted());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Restricted", isRestricted());
this.host.plugin.config.save();
}
c++;
@@ -388,8 +390,8 @@ public class ExternalSubServer extends SubServerContainer {
case "hidden":
if (value.isBoolean()) {
Util.reflect(ServerContainer.class.getDeclaredField("hidden"), this, value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Hidden", isHidden());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Hidden", isHidden());
this.host.plugin.config.save();
}
c++;
@@ -422,7 +424,7 @@ public class ExternalSubServer extends SubServerContainer {
}
if (!isRunning() && forward == null && state) start(player);
return c;
- } private void waitFor(Util.ReturnRunnable method, V value) throws InterruptedException {
+ } private void waitFor(ReturnRunnable method, V value) throws InterruptedException {
while (method.run() != value) {
Thread.sleep(250);
}
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 0ac2b7fa..afc987db 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
@@ -1,16 +1,14 @@
package net.ME1312.SubServers.Bungee.Host;
import com.google.common.collect.Range;
-import com.google.gson.Gson;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidHostException;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-import net.ME1312.SubServers.Bungee.Library.ExtraDataHandler;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.ClientHandler;
-import net.ME1312.SubServers.Bungee.Network.SubDataServer;
+import net.ME1312.Galaxi.Library.ExtraDataHandler;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubData.Server.ClientHandler;
+import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubPlugin;
import java.net.InetAddress;
@@ -21,7 +19,7 @@ import java.util.UUID;
* Host Layout Class
*/
public abstract class Host implements ExtraDataHandler {
- private YAMLSection extra = new YAMLSection();
+ private ObjectMap extra = new ObjectMap();
private final String signature;
private String nick = null;
@@ -42,7 +40,7 @@ public abstract class Host implements ExtraDataHandler {
if (!ports.hasLowerBound() || !ports.hasUpperBound()) throw new InvalidHostException("Port range is not bound");
if (Util.isNull(plugin, name, enabled, ports, log, address, directory, gitBash)) throw new NullPointerException();
signature = plugin.api.signAnonymousObject();
- SubDataServer.allowConnection(address.getHostAddress());
+ SubAPI.getInstance().getSubDataNetwork().getProtocol().whitelist(address.getHostAddress());
}
/**
@@ -305,13 +303,51 @@ public abstract class Host implements ExtraDataHandler {
}
/**
- * Forces the Removal of a SubServer
+ * Forces the Removal of a SubServer (will move to 'Recently Deleted')
*
* @param player Player Removing
* @param name SubServer Name
*/
public abstract boolean forceRemoveSubServer(UUID player, String name) throws InterruptedException;
+ /**
+ * Delete a SubServer (will move to 'Recently Deleted')
+ *
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public boolean recycleSubServer(String name) throws InterruptedException {
+ return recycleSubServer(null, name);
+ }
+
+ /**
+ * Delete a SubServer
+ *
+ * @param player Player Deleting
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public abstract boolean recycleSubServer(UUID player, String name) throws InterruptedException;
+
+ /**
+ * Forced the Deletion of a SubServer (will move to 'Recently Deleted')
+ *
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public boolean forceRecycleSubServer(String name) throws InterruptedException {
+ return forceRecycleSubServer(null, name);
+ }
+
+ /**
+ * Forces the Deletion of a SubServer (will move to 'Recently Deleted')
+ *
+ * @param player Player Deleting
+ * @param name SubServer Name
+ * @return Success Status
+ */
+ public abstract boolean forceRecycleSubServer(UUID player, String name) throws InterruptedException;
+
/**
* Delete a SubServer
*
@@ -338,7 +374,7 @@ public abstract class Host implements ExtraDataHandler {
* @return Success Status
*/
public boolean forceDeleteSubServer(String name) throws InterruptedException {
- return deleteSubServer(null, name);
+ return forceDeleteSubServer(null, name);
}
/**
@@ -372,13 +408,13 @@ public abstract class Host implements ExtraDataHandler {
}
@Override
- public YAMLValue getExtra(String handle) {
+ public ObjectMapValue getExtra(String handle) {
if (Util.isNull(handle)) throw new NullPointerException();
return extra.get(handle);
}
@Override
- public YAMLSection getExtra() {
+ public ObjectMap getExtra() {
return extra.clone();
}
@@ -388,10 +424,8 @@ public abstract class Host implements ExtraDataHandler {
extra.remove(handle);
}
- @Override
- @SuppressWarnings("unchecked")
- public String toString() {
- YAMLSection hinfo = new YAMLSection();
+ public ObjectMap forSubData() {
+ ObjectMap hinfo = new ObjectMap();
hinfo.set("type", "Host");
hinfo.set("name", getName());
hinfo.set("display", getDisplayName());
@@ -400,21 +434,21 @@ public abstract class Host implements ExtraDataHandler {
hinfo.set("address", getAddress().getHostAddress());
hinfo.set("dir", getPath());
- YAMLSection cinfo = new YAMLSection();
- YAMLSection templates = new YAMLSection();
+ ObjectMap cinfo = new ObjectMap();
+ ObjectMap templates = new ObjectMap();
for (SubCreator.ServerTemplate template : getCreator().getTemplates().values())
- templates.set(template.getName(), new YAMLSection(new Gson().fromJson(template.toString(), Map.class)));
+ templates.set(template.getName(), template.forSubData());
cinfo.set("templates", templates);
hinfo.set("creator", cinfo);
- YAMLSection servers = new YAMLSection();
+ ObjectMap servers = new ObjectMap();
for (SubServer server : getSubServers().values()) {
- servers.set(server.getName(), new YAMLSection(new Gson().fromJson(server.toString(), Map.class)));
+ servers.set(server.getName(), server.forSubData());
}
hinfo.set("servers", servers);
- if (this instanceof ClientHandler && ((ClientHandler) this).getSubData() != null) hinfo.set("subdata", ((ClientHandler) this).getSubData().getAddress().toString());
+ if (this instanceof ClientHandler && ((ClientHandler) this).getSubData() != null) hinfo.set("subdata", ((ClientHandler) this).getSubData().getID());
hinfo.set("signature", signature);
hinfo.set("extra", getExtra());
- return hinfo.toJSON();
+ return hinfo;
}
}
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 0e6bd753..2bf2eff3 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
@@ -2,15 +2,16 @@ package net.ME1312.SubServers.Bungee.Host.Internal;
import com.dosse.upnp.UPnP;
import com.google.common.collect.Range;
+import net.ME1312.Galaxi.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent;
import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
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.UniversalFile;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.UniversalFile;
+import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubServers.Bungee.SubPlugin;
import java.io.File;
@@ -103,7 +104,7 @@ public class InternalHost extends Host {
plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
servers.put(name.toLowerCase(), server);
- if (UPnP.isUPnPAvailable() && plugin.config.get().getSection("Settings").getSection("UPnP", new YAMLSection()).getBoolean("Forward-Servers", false)) UPnP.openPortTCP(port);
+ if (UPnP.isUPnPAvailable() && plugin.config.get().getMap("Settings").getMap("UPnP", new ObjectMap()).getBoolean("Forward-Servers", false)) UPnP.openPortTCP(port);
return server;
} else {
return null;
@@ -143,6 +144,96 @@ public class InternalHost extends Host {
return true;
}
+ @Override
+ public boolean recycleSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+ String server = servers.get(name.toLowerCase()).getName();
+ File from = new File(getPath(), servers.get(server.toLowerCase()).getPath());
+ if (removeSubServer(player, server)) {
+ new Thread(() -> {
+ UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + server.toLowerCase());
+ try {
+ if (from.exists()) {
+ System.out.println("SubServers > Moving Files...");
+ if (to.exists()) {
+ if (to.isDirectory()) Util.deleteDirectory(to);
+ else to.delete();
+ }
+ to.mkdirs();
+ Util.copyDirectory(from, to);
+ Util.deleteDirectory(from);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Saving...");
+ YAMLSection info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.config.get().getMap("Servers").getMap(server).get()):new YAMLSection();
+ info.set("Name", server);
+ info.set("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
+ plugin.config.save();
+ }
+ if (!to.exists()) to.mkdirs();
+ FileWriter writer = new FileWriter(new File(to, "info.json"));
+ writer.write(info.toJSON().toString());
+ writer.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("SubServers > Deleted SubServer: " + server);
+ }, "SubServers.Bungee::Internal_Server_Recycler(" + name + ')').start();
+ return true;
+ } else return false;
+ }
+
+ @Override
+ public boolean forceRecycleSubServer(UUID player, String name) throws InterruptedException {
+ if (Util.isNull(name)) throw new NullPointerException();
+ String server = servers.get(name.toLowerCase()).getName();
+ File from = new File(getPath(), servers.get(server.toLowerCase()).getPath());
+ if (forceRemoveSubServer(player, server)) {
+ new Thread(() -> {
+ UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + server.toLowerCase());
+ try {
+ if (from.exists()) {
+ System.out.println("SubServers > Moving Files...");
+ if (to.exists()) {
+ if (to.isDirectory()) Util.deleteDirectory(to);
+ else to.delete();
+ }
+ to.mkdirs();
+ Util.copyDirectory(from, to);
+ Util.deleteDirectory(from);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("SubServers > Saving...");
+ YAMLSection info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.config.get().getMap("Servers").getMap(server).get()):new YAMLSection();
+ info.set("Name", server);
+ info.set("Timestamp", Calendar.getInstance().getTime().getTime());
+ try {
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
+ plugin.config.save();
+ }
+ if (!to.exists()) to.mkdirs();
+ FileWriter writer = new FileWriter(new File(to, "info.json"), false);
+ writer.write(info.toJSON().toString());
+ writer.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("SubServers > Deleted SubServer: " + server);
+ }, "SubServers.Bungee::Internal_Server_Recycler(" + name + ')').start();
+ return true;
+ } else return false;
+ }
+
@Override
public boolean deleteSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
@@ -159,7 +250,6 @@ public class InternalHost extends Host {
else to.delete();
}
to.mkdirs();
- Util.copyDirectory(from, to);
Util.deleteDirectory(from);
}
} catch (Exception e) {
@@ -167,17 +257,17 @@ public class InternalHost extends Host {
}
System.out.println("SubServers > Saving...");
- YAMLSection info = (plugin.config.get().getSection("Servers").getKeys().contains(server))?plugin.config.get().getSection("Servers").getSection(server).clone():new YAMLSection();
+ YAMLSection info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.config.get().getMap("Servers").getMap(server).get()):new YAMLSection();
info.set("Name", server);
info.set("Timestamp", Calendar.getInstance().getTime().getTime());
try {
- if (plugin.config.get().getSection("Servers").getKeys().contains(server)) {
- plugin.config.get().getSection("Servers").remove(server);
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
plugin.config.save();
}
if (!to.exists()) to.mkdirs();
FileWriter writer = new FileWriter(new File(to, "info.json"));
- writer.write(info.toJSON());
+ writer.write(info.toJSON().toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
@@ -212,17 +302,17 @@ public class InternalHost extends Host {
}
System.out.println("SubServers > Saving...");
- YAMLSection info = (plugin.config.get().getSection("Servers").getKeys().contains(server))?plugin.config.get().getSection("Servers").getSection(server).clone():new YAMLSection();
+ YAMLSection info = (plugin.config.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.config.get().getMap("Servers").getMap(server).get()):new YAMLSection();
info.set("Name", server);
info.set("Timestamp", Calendar.getInstance().getTime().getTime());
try {
- if (plugin.config.get().getSection("Servers").getKeys().contains(server)) {
- plugin.config.get().getSection("Servers").remove(server);
+ if (plugin.config.get().getMap("Servers").getKeys().contains(server)) {
+ plugin.config.get().getMap("Servers").remove(server);
plugin.config.save();
}
if (!to.exists()) to.mkdirs();
FileWriter writer = new FileWriter(new File(to, "info.json"), false);
- writer.write(info.toJSON());
+ writer.write(info.toJSON().toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java
index f90dbbc4..dad9f93d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java
@@ -2,27 +2,27 @@ package net.ME1312.SubServers.Bungee.Host.Internal;
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.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Host.*;
-import net.ME1312.SubServers.Bungee.Library.*;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLConfig;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Config.YAMLConfig;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
import net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubPlugin;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
+import net.md_5.bungee.api.ChatColor;
-import javax.xml.parsers.DocumentBuilderFactory;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.net.InetSocketAddress;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.file.Files;
import java.util.*;
import java.util.regex.Pattern;
@@ -59,8 +59,8 @@ public class InternalSubCreator extends SubCreator {
this.callback = callback;
}
- private YAMLSection build(File dir, ServerTemplate template, List history) throws SubCreatorException {
- YAMLSection server = new YAMLSection();
+ private ObjectMap build(File dir, ServerTemplate template, List history) throws SubCreatorException {
+ ObjectMap server = new ObjectMap();
Version version = this.version;
HashMap var = new HashMap();
boolean error = false;
@@ -69,7 +69,7 @@ public class InternalSubCreator extends SubCreator {
for (String other : template.getBuildOptions().getStringList("Import", new ArrayList())) {
if (templates.keySet().contains(other.toLowerCase())) {
if (templates.get(other.toLowerCase()).isEnabled()) {
- YAMLSection config = build(dir, templates.get(other.toLowerCase()), history);
+ ObjectMap config = build(dir, templates.get(other.toLowerCase()), history);
if (config == null) {
throw new SubCreatorException();
} else {
@@ -89,34 +89,36 @@ public class InternalSubCreator extends SubCreator {
var.put("name", name);
var.put("template", template.getName());
var.put("type", template.getType().toString().toUpperCase());
- var.put("version", version.toString());
+ if (version != null) var.put("version", version.toString());
var.put("address", host.getAddress().getHostAddress());
var.put("port", Integer.toString(port));
switch (template.getType()) {
case SPONGE:
case FORGE:
- System.out.println(name + File.separator + "Creator > Searching Versions...");
- YAMLSection spversionmanifest = new YAMLSection(new Gson().fromJson("{\"versions\":" + Util.readAll(new BufferedReader(new InputStreamReader(new URL("https://dl-api.spongepowered.org/v1/org.spongepowered/sponge" + ((template.getType() == ServerType.FORGE)?"forge":"vanilla") + "/downloads?type=stable&minecraft=" + version).openStream(), Charset.forName("UTF-8")))) + '}', Map.class));
+ if (version != null) {
+ System.out.println(name + File.separator + "Creator > Searching Versions...");
+ ObjectMap spversionmanifest = new ObjectMap(new Gson().fromJson("{\"versions\":" + Util.readAll(new BufferedReader(new InputStreamReader(new URL("https://dl-api.spongepowered.org/v1/org.spongepowered/sponge" + ((template.getType() == ServerType.FORGE)?"forge":"vanilla") + "/downloads?type=stable&minecraft=" + version).openStream(), Charset.forName("UTF-8")))) + '}', Map.class));
- YAMLSection spprofile = null;
- Version spversion = null;
- for (YAMLSection profile : spversionmanifest.getSectionList("versions")) {
- if (profile.getSection("dependencies").getRawString("minecraft").equalsIgnoreCase(version.toString()) && (spversion == null || new Version(profile.getRawString("version")).compareTo(spversion) >= 0)) {
- spprofile = profile;
- spversion = new Version(profile.getRawString("version"));
+ ObjectMap spprofile = null;
+ Version spversion = null;
+ for (ObjectMap profile : spversionmanifest.getMapList("versions")) {
+ if (profile.getMap("dependencies").getRawString("minecraft").equalsIgnoreCase(version.toString()) && (spversion == null || new Version(profile.getRawString("version")).compareTo(spversion) >= 0)) {
+ spprofile = profile;
+ spversion = new Version(profile.getRawString("version"));
+ }
}
- }
- if (spversion == null)
- throw new InvalidServerException("Cannot find Sponge version for Minecraft " + version.toString());
- System.out.println(name + File.separator + "Creator > Found \"sponge" + ((template.getType() == ServerType.FORGE)?"forge":"vanilla") + "-" + spversion.toString() + '"');
+ if (spversion == null)
+ throw new InvalidServerException("Cannot find Sponge version for Minecraft " + version.toString());
+ System.out.println(name + File.separator + "Creator > Found \"sponge" + ((template.getType() == ServerType.FORGE)?"forge":"vanilla") + "-" + spversion.toString() + '"');
- if (template.getType() == ServerType.FORGE) {
- Version mcfversion = new Version(spprofile.getSection("dependencies").getRawString("minecraft") + '-' + spprofile.getSection("dependencies").getRawString("forge"));
- System.out.println(name + File.separator + "Creator > Found \"forge-" + mcfversion.toString() + '"');
+ if (template.getType() == ServerType.FORGE) {
+ Version mcfversion = new Version(((spprofile.getMap("dependencies").getRawString("forge").contains("-"))?"":spprofile.getMap("dependencies").getRawString("minecraft") + '-') + spprofile.getMap("dependencies").getRawString("forge"));
+ System.out.println(name + File.separator + "Creator > Found \"forge-" + mcfversion.toString() + '"');
- var.put("mcf_version", mcfversion.toString());
+ var.put("mcf_version", mcfversion.toString());
+ }
+ var.put("sp_version", spversion.toString());
}
- var.put("sp_version", spversion.toString());
break;
}
} catch (Exception e) {
@@ -141,7 +143,7 @@ public class InternalSubCreator extends SubCreator {
ProcessBuilder pb = new ProcessBuilder().command(Executable.parse(gitBash, template.getBuildOptions().getRawString("Executable"))).directory(dir);
pb.environment().putAll(var);
process = pb.start();
- log.file = new File(dir, "SubCreator-" + template.getName() + "-" + version.toString() + ".log");
+ log.file = new File(dir, "SubCreator-" + template.getName() + ((version != null)?"-"+version.toString():"") + ".log");
log.process = process;
log.start();
@@ -173,8 +175,8 @@ public class InternalSubCreator extends SubCreator {
public void run() {
UniversalFile dir = new UniversalFile(new File(host.getPath()), name);
dir.mkdirs();
- YAMLSection server = new YAMLSection();
- YAMLSection config;
+ ObjectMap server = new ObjectMap();
+ ObjectMap config;
try {
config = build(dir, template, new LinkedList<>());
generateProperties(dir, port);
@@ -192,7 +194,7 @@ public class InternalSubCreator extends SubCreator {
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());
- config = new YAMLSection((Map) convert(config.get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
+ config = new ObjectMap((Map) 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))));
@@ -213,15 +215,15 @@ public class InternalSubCreator extends SubCreator {
server.set("Hidden", false);
server.setAll(config);
- SubServer subserver = host.addSubServer(player, name, server.getBoolean("Enabled"), port, server.getColoredString("Motd", '&'), server.getBoolean("Log"), server.getRawString("Directory"),
+ SubServer 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"));
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.getSection("Extra").getKeys())
- subserver.addExtra(extra, server.getSection("Extra").getObject(extra));
- host.plugin.config.get().getSection("Servers").set(name, server);
+ if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys())
+ subserver.addExtra(extra, server.getMap("Extra").getObject(extra));
+ host.plugin.config.get().getMap("Servers").set(name, server);
host.plugin.config.save();
if (template.getBuildOptions().getBoolean("Run-On-Finish", true))
subserver.start();
@@ -287,8 +289,8 @@ public class InternalSubCreator extends SubCreator {
for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
try {
if (file.isDirectory() && !file.getName().endsWith(".x")) {
- YAMLSection config = (new UniversalFile(file, "template.yml").exists()) ? new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()) : new YAMLSection();
- ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
+ ObjectMap config = (new UniversalFile(file, "template.yml").exists()) ? new YAMLConfig(new UniversalFile(file, "template.yml")).get().getMap("Template", new ObjectMap()) : new ObjectMap();
+ ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getMap("Build", new ObjectMap()), config.getMap("Settings", new ObjectMap()));
templates.put(file.getName().toLowerCase(), template);
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
}
@@ -302,7 +304,7 @@ public class InternalSubCreator extends SubCreator {
@SuppressWarnings("deprecation")
@Override
public boolean create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback callback) {
- if (Util.isNull(name, template, version)) throw new NullPointerException();
+ if (Util.isNull(name, template)) throw new NullPointerException();
if (host.isAvailable() && host.isEnabled() && template.isEnabled() && !SubAPI.getInstance().getSubServers().keySet().contains(name.toLowerCase()) && !SubCreator.isReserved(name)) {
StackTraceElement[] origin = new Exception().getStackTrace();
@@ -450,6 +452,7 @@ public class InternalSubCreator extends SubCreator {
private void generateClient(File dir, ServerType type, String name) throws IOException {
if (new UniversalFile(dir, "subservers.client").exists()) {
+ Files.delete(new UniversalFile(dir, "subservers.client").toPath());
if (type == ServerType.SPIGOT) {
if (!new UniversalFile(dir, "plugins").exists()) new UniversalFile(dir, "plugins").mkdirs();
Util.copyFromJar(SubPlugin.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/client.jar", new UniversalFile(dir, "plugins:SubServers.Client.jar").getPath());
@@ -458,13 +461,16 @@ public class InternalSubCreator extends SubCreator {
Util.copyFromJar(SubPlugin.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/client.jar", new UniversalFile(dir, "mods:SubServers.Client.jar").getPath());
}
YAMLSection config = new YAMLSection();
- FileWriter writer = new FileWriter(new UniversalFile(dir, "subservers.client"), false);
+ FileWriter writer = new FileWriter(new UniversalFile(dir, "subdata.json"), false);
config.set("Name", name);
- config.set("Address", host.plugin.config.get().getSection("Settings").getSection("SubData").getRawString("Address", "127.0.0.1").replace("0.0.0.0", "127.0.0.1"));
- config.set("Password", host.plugin.config.get().getSection("Settings").getSection("SubData").getRawString("Password", ""));
- config.set("Encryption", host.plugin.config.get().getSection("Settings").getSection("SubData").getRawString("Encryption", "NONE"));
- writer.write(config.toJSON());
+ config.set("Address", host.plugin.config.get().getMap("Settings").getMap("SubData").getRawString("Address", "127.0.0.1").replace("0.0.0.0", "127.0.0.1"));
+ config.set("Password", host.plugin.config.get().getMap("Settings").getMap("SubData").getRawString("Password", ""));
+ writer.write(config.toJSON().toString());
writer.close();
+
+ if (new UniversalFile("SubServers:subdata.rsa.key").exists()) {
+ Files.copy(new UniversalFile("SubServers:subdata.rsa.key").toPath(), new UniversalFile(dir, "subdata.rsa.key").toPath());
+ }
}
}
private void generateProperties(File dir, int port) throws IOException {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
index 1fb05913..f7c95383 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
@@ -2,16 +2,14 @@ package net.ME1312.SubServers.Bungee.Host.Internal;
import net.ME1312.SubServers.Bungee.Host.SubLogFilter;
import net.ME1312.SubServers.Bungee.Host.SubLogger;
-import net.ME1312.SubServers.Bungee.Library.Container;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Container;
+import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.md_5.bungee.api.ProxyServer;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.regex.Matcher;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
index 17556f2b..e107fbd3 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
@@ -2,20 +2,20 @@ package net.ME1312.SubServers.Bungee.Host.Internal;
import net.ME1312.SubServers.Bungee.Event.*;
import net.ME1312.SubServers.Bungee.Host.*;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
-import net.ME1312.SubServers.Bungee.Library.Container;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
+import net.ME1312.Galaxi.Library.Container;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-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.Library.Version.Version;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.UniversalFile;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubPlugin;
import net.md_5.bungee.BungeeServerInfo;
+import net.md_5.bungee.api.ChatColor;
import java.io.*;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -147,14 +147,16 @@ public class InternalSubServer extends SubServerContainer {
command = null;
history.clear();
- if (stopaction == StopAction.REMOVE_SERVER || stopaction == StopAction.DELETE_SERVER) {
+ if (stopaction == StopAction.REMOVE_SERVER || stopaction == StopAction.RECYCLE_SERVER || stopaction == StopAction.DELETE_SERVER) {
try {
- if (stopaction == StopAction.DELETE_SERVER) {
+ if (stopaction == StopAction.RECYCLE_SERVER) {
+ host.recycleSubServer(getName());
+ } else if (stopaction == StopAction.DELETE_SERVER) {
host.deleteSubServer(getName());
} else {
try {
- if (host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- host.plugin.config.get().getSection("Servers").remove(getName());
+ if (host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ host.plugin.config.get().getMap("Servers").remove(getName());
host.plugin.config.save();
}
} catch (IOException e) {
@@ -255,16 +257,16 @@ public class InternalSubServer extends SubServerContainer {
} else return false;
}
- @SuppressWarnings("deprecation")
- public int edit(UUID player, YAMLSection edit) {
+ @SuppressWarnings({"deprecation", "unchecked"})
+ public int edit(UUID player, ObjectMap edit) {
int c = 0;
boolean state = isRunning();
SubServer forward = null;
- YAMLSection pending = edit.clone();
+ ObjectMap pending = edit.clone();
for (String key : edit.getKeys()) {
pending.remove(key);
- YAMLValue value = edit.get(key);
- SubEditServerEvent event = new SubEditServerEvent(player, this, new NamedContainer(key, value), true);
+ ObjectMapValue value = edit.get(key);
+ SubEditServerEvent event = new SubEditServerEvent(player, this, new NamedContainer(key, value), true);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
try {
@@ -273,10 +275,10 @@ public class InternalSubServer extends SubServerContainer {
if (value.isString() && host.removeSubServer(player, getName())) {
SubServer server = host.addSubServer(player, value.asRawString(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- YAMLSection config = this.host.plugin.config.get().getSection("Servers").getSection(getName());
- this.host.plugin.config.get().getSection("Servers").remove(getName());
- this.host.plugin.config.get().getSection("Servers").set(server.getName(), config);
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ ObjectMap config = this.host.plugin.config.get().getMap("Servers").getMap(getName());
+ this.host.plugin.config.get().getMap("Servers").remove(getName());
+ this.host.plugin.config.get().getMap("Servers").set(server.getName(), config);
this.host.plugin.config.save();
}
forward = server;
@@ -295,11 +297,11 @@ public class InternalSubServer extends SubServerContainer {
}
f.setAccessible(false);
logger.name = getDisplayName();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
if (getName().equals(getDisplayName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display");
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).remove("Display");
} else {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display", getDisplayName());
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Display", getDisplayName());
}
this.host.plugin.config.save();
}
@@ -309,8 +311,8 @@ public class InternalSubServer extends SubServerContainer {
case "enabled":
if (value.isBoolean()) {
enabled = value.asBoolean();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Enabled", isEnabled());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Enabled", isEnabled());
this.host.plugin.config.save();
}
c++;
@@ -319,8 +321,8 @@ public class InternalSubServer extends SubServerContainer {
case "group":
if (value.isList()) {
Util.reflect(ServerContainer.class.getDeclaredField("groups"), this, value.asStringList());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Group", value.asStringList());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Group", value.asStringList());
this.host.plugin.config.save();
}
c++;
@@ -330,8 +332,8 @@ public class InternalSubServer extends SubServerContainer {
if (value.isString() && host.removeSubServer(player, getName())) {
SubServer server = this.host.plugin.api.getHost(value.asRawString()).addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Host", server.getHost().getName());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Host", server.getHost().getName());
this.host.plugin.config.save();
}
forward = server;
@@ -343,8 +345,8 @@ public class InternalSubServer extends SubServerContainer {
if (value.isNumber() && host.removeSubServer(player, getName())) {
SubServer server = host.addSubServer(player, getName(), isEnabled(), value.asInt(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), isHidden(), isRestricted());
if (server != null) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Port", server.getAddress().getPort());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Port", server.getAddress().getPort());
this.host.plugin.config.save();
}
forward = server;
@@ -354,9 +356,9 @@ public class InternalSubServer extends SubServerContainer {
break;
case "motd":
if (value.isString()) {
- Util.reflect(BungeeServerInfo.class.getDeclaredField("motd"), this, value.asColoredString('&'));
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Motd", value.asString());
+ Util.reflect(BungeeServerInfo.class.getDeclaredField("motd"), this, ChatColor.translateAlternateColorCodes('&', value.asString()));
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Motd", value.asString());
this.host.plugin.config.save();
}
c++;
@@ -365,8 +367,8 @@ public class InternalSubServer extends SubServerContainer {
case "log":
if (value.isBoolean()) {
log.set(value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Log", isLogging());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Log", isLogging());
this.host.plugin.config.save();
}
c++;
@@ -380,8 +382,8 @@ public class InternalSubServer extends SubServerContainer {
}
dir = value.asRawString();
directory = new File(getHost().getPath(), value.asRawString());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Directory", getPath());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Directory", getPath());
this.host.plugin.config.save();
}
c++;
@@ -394,8 +396,8 @@ public class InternalSubServer extends SubServerContainer {
waitFor();
}
executable = value.asRawString();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Executable", value.asRawString());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Executable", value.asRawString());
this.host.plugin.config.save();
}
c++;
@@ -404,8 +406,8 @@ public class InternalSubServer extends SubServerContainer {
case "stop-cmd":
if (value.isString()) {
stopcmd = value.asRawString();
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Stop-Command", getStopCommand());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Stop-Command", getStopCommand());
this.host.plugin.config.save();
}
c++;
@@ -416,8 +418,8 @@ public class InternalSubServer extends SubServerContainer {
StopAction action = Util.getDespiteException(() -> StopAction.valueOf(value.asRawString().toUpperCase().replace('-', '_').replace(' ', '_')), null);
if (action != null) {
stopaction = action;
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Stop-Action", getStopAction().toString());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Stop-Action", getStopAction().toString());
this.host.plugin.config.save();
}
c++;
@@ -431,8 +433,8 @@ public class InternalSubServer extends SubServerContainer {
break;
case "auto-run":
if (value.isBoolean()) {
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Run-On-Launch", value.asBoolean());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Run-On-Launch", value.asBoolean());
this.host.plugin.config.save();
}
c++;
@@ -440,12 +442,12 @@ public class InternalSubServer extends SubServerContainer {
break;
case "incompatible":
if (value.isList()) {
- for (String oname : value.asStringList()) {
+ for (String oname : (List) value.asStringList()) {
SubServer oserver = host.plugin.api.getSubServer(oname);
if (oserver != null && isCompatible(oserver)) toggleCompatibility(oserver);
}
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Incompatible", value.asStringList());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Incompatible", value.asStringList());
this.host.plugin.config.save();
}
c++;
@@ -454,8 +456,8 @@ public class InternalSubServer extends SubServerContainer {
case "restricted":
if (value.isBoolean()) {
Util.reflect(BungeeServerInfo.class.getDeclaredField("restricted"), this, value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Restricted", isRestricted());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Restricted", isRestricted());
this.host.plugin.config.save();
}
c++;
@@ -464,8 +466,8 @@ public class InternalSubServer extends SubServerContainer {
case "hidden":
if (value.isBoolean()) {
Util.reflect(ServerContainer.class.getDeclaredField("hidden"), this, value.asBoolean());
- if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
- this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Hidden", isHidden());
+ if (this.host.plugin.config.get().getMap("Servers").getKeys().contains(getName())) {
+ this.host.plugin.config.get().getMap("Servers").getMap(getName()).set("Hidden", isHidden());
this.host.plugin.config.save();
}
c++;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
index 632cdcf7..778ea773 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
@@ -1,13 +1,15 @@
package net.ME1312.SubServers.Bungee.Host;
+import net.ME1312.SubData.Server.DataClient;
+import net.ME1312.SubData.Server.SerializableClientHandler;
+import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubRemoveProxyEvent;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
-import net.ME1312.SubServers.Bungee.Library.ExtraDataHandler;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.Client;
-import net.ME1312.SubServers.Bungee.Network.ClientHandler;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
+import net.ME1312.Galaxi.Library.ExtraDataHandler;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubData.Server.ClientHandler;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubPlugin;
import net.md_5.bungee.api.ProxyServer;
@@ -17,11 +19,11 @@ import java.util.*;
/**
* Proxy Class
*/
-public class Proxy implements ClientHandler, ExtraDataHandler {
- private YAMLSection extra = new YAMLSection();
+public class Proxy implements SerializableClientHandler, ExtraDataHandler {
+ private ObjectMap extra = new ObjectMap();
private final String signature;
private boolean persistent = true;
- private Client client = null;
+ private SubDataClient client = null;
private String nick = null;
private final String name;
@@ -37,19 +39,19 @@ public class Proxy implements ClientHandler, ExtraDataHandler {
}
@Override
- public Client getSubData() {
+ public DataClient getSubData() {
return client;
}
@Override
@SuppressWarnings("deprecation")
- public void setSubData(Client client) {
- this.client = client;
+ public void setSubData(DataClient client) {
+ this.client = (SubDataClient) client;
if (client == null && !persistent) {
ProxyServer.getInstance().getPluginManager().callEvent(new SubRemoveProxyEvent(this));
SubAPI.getInstance().getInternals().proxies.remove(getName().toLowerCase());
}
- if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) client.setHandler(this);
+ if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) ((SubDataClient) client).setHandler(this);
}
/**
@@ -134,13 +136,13 @@ public class Proxy implements ClientHandler, ExtraDataHandler {
}
@Override
- public YAMLValue getExtra(String handle) {
+ public ObjectMapValue getExtra(String handle) {
if (Util.isNull(handle)) throw new NullPointerException();
return extra.get(handle);
}
@Override
- public YAMLSection getExtra() {
+ public ObjectMap getExtra() {
return extra.clone();
}
@@ -151,22 +153,22 @@ public class Proxy implements ClientHandler, ExtraDataHandler {
}
@Override
- public String toString() {
- YAMLSection info = new YAMLSection();
+ public ObjectMap forSubData() {
+ ObjectMap info = new ObjectMap();
info.set("type", "Proxy");
info.set("name", getName());
info.set("display", getDisplayName());
- YAMLSection players = new YAMLSection();
+ ObjectMap players = new ObjectMap();
for (NamedContainer player : getPlayers()) {
- YAMLSection pinfo = new YAMLSection();
+ ObjectMap pinfo = new ObjectMap();
pinfo.set("name", player.name());
players.set(player.get().toString(), pinfo);
}
info.set("players", players);
info.set("redis", isRedis());
- if (getSubData() != null) info.set("subdata", getSubData().getAddress().toString());
+ if (getSubData() != null) info.set("subdata", getSubData().getID());
info.set("signature", signature);
info.set("extra", getExtra());
- return info.toJSON();
+ return info;
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
index b9a738dd..73f7ecbe 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
@@ -1,8 +1,9 @@
package net.ME1312.SubServers.Bungee.Host;
-import net.ME1312.SubServers.Bungee.Library.ExtraDataHandler;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Network.ClientHandler;
+import net.ME1312.Galaxi.Library.ExtraDataHandler;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.SubData.Server.ClientHandler;
+import net.ME1312.SubData.Server.SerializableClientHandler;
import net.md_5.bungee.api.config.ServerInfo;
import java.util.Collection;
@@ -12,7 +13,7 @@ import java.util.UUID;
/**
* Server Interface
*/
-public interface Server extends ServerInfo, ClientHandler, ExtraDataHandler {
+public interface Server extends ServerInfo, SerializableClientHandler, ExtraDataHandler {
/**
* Get the Display Name of this Server
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
index 329a70d2..494867d5 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
@@ -1,24 +1,23 @@
package net.ME1312.SubServers.Bungee.Host;
+import net.ME1312.SubData.Server.DataClient;
+import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubEditServerEvent;
import net.ME1312.SubServers.Bungee.Event.SubNetworkConnectEvent;
import net.ME1312.SubServers.Bungee.Event.SubNetworkDisconnectEvent;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLValue;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Network.Client;
+import net.ME1312.Galaxi.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.SubServers.Bungee.Network.Packet.PacketOutExRunEvent;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketOutExUpdateWhitelist;
-import net.ME1312.SubServers.Bungee.Network.Packet.PacketOutRunEvent;
-import net.ME1312.SubServers.Bungee.Network.SubDataServer;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubPlugin;
import net.md_5.bungee.BungeeServerInfo;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
-import java.lang.reflect.Field;
import java.net.InetSocketAddress;
import java.util.*;
@@ -26,8 +25,8 @@ import java.util.*;
* Server Class
*/
public class ServerContainer extends BungeeServerInfo implements Server {
- private YAMLSection extra = new YAMLSection();
- private Client client = null;
+ private ObjectMap extra = new ObjectMap();
+ private SubDataClient client = null;
private String nick = null;
private List groups = new ArrayList();
private List whitelist = new ArrayList();
@@ -39,25 +38,25 @@ public class ServerContainer extends BungeeServerInfo implements Server {
if (Util.isNull(name, address, motd, hidden, restricted)) throw new NullPointerException();
if (name.contains(" ")) throw new InvalidServerException("Server names cannot have spaces: " + name);
signature = SubAPI.getInstance().signAnonymousObject();
- SubDataServer.allowConnection(getAddress().getAddress().getHostAddress());
+ SubAPI.getInstance().getSubDataNetwork().getProtocol().whitelist(getAddress().getAddress().getHostAddress());
this.hidden = hidden;
}
@Override
- public Client getSubData() {
+ public DataClient getSubData() {
return client;
}
@Override
- public void setSubData(Client client) {
- this.client = client;
+ public void setSubData(DataClient client) {
+ this.client = (SubDataClient) client;
for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) {
- YAMLSection args = new YAMLSection();
+ ObjectMap args = new ObjectMap();
args.set("server", getName());
if (client != null) args.set("address", client.getAddress().toString());
- proxy.getSubData().sendPacket(new PacketOutRunEvent((client != null)?SubNetworkConnectEvent.class:SubNetworkDisconnectEvent.class, args));
+ ((SubDataClient) proxy.getSubData()).sendPacket(new PacketOutExRunEvent((client != null)?SubNetworkConnectEvent.class:SubNetworkDisconnectEvent.class, args));
}
- if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) client.setHandler(this);
+ if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) ((SubDataClient) client).setHandler(this);
}
@Override
@@ -175,14 +174,14 @@ public class ServerContainer extends BungeeServerInfo implements Server {
public void whitelist(UUID player) {
if (Util.isNull(player)) throw new NullPointerException();
whitelist.add(player);
- for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) proxy.getSubData().sendPacket(new PacketOutExUpdateWhitelist(getName(), true, player));
+ for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) ((SubDataClient) proxy.getSubData()).sendPacket(new PacketOutExUpdateWhitelist(getName(), true, player));
}
@Override
public void unwhitelist(UUID player) {
if (Util.isNull(player)) throw new NullPointerException();
whitelist.remove(player);
- for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) proxy.getSubData().sendPacket(new PacketOutExUpdateWhitelist(getName(), false, player));
+ for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) ((SubDataClient) proxy.getSubData()).sendPacket(new PacketOutExUpdateWhitelist(getName(), false, player));
}
@Override
@@ -203,13 +202,13 @@ public class ServerContainer extends BungeeServerInfo implements Server {
}
@Override
- public YAMLValue getExtra(String handle) {
+ public ObjectMapValue getExtra(String handle) {
if (Util.isNull(handle)) throw new NullPointerException();
return extra.get(handle);
}
@Override
- public YAMLSection getExtra() {
+ public ObjectMap getExtra() {
return extra.clone();
}
@@ -220,8 +219,8 @@ public class ServerContainer extends BungeeServerInfo implements Server {
}
@Override
- public String toString() {
- YAMLSection info = new YAMLSection();
+ public ObjectMap forSubData() {
+ ObjectMap info = new ObjectMap();
info.set("type", "Server");
info.set("name", getName());
info.set("display", getDisplayName());
@@ -231,17 +230,16 @@ public class ServerContainer extends BungeeServerInfo implements Server {
info.set("whitelist", whitelist);
info.set("restricted", isRestricted());
info.set("hidden", isHidden());
- if (getSubData() != null) info.set("subdata", getSubData().getAddress().toString());
- YAMLSection players = new YAMLSection();
+ ObjectMap players = new ObjectMap();
for (NamedContainer player : getGlobalPlayers()) {
- YAMLSection pinfo = new YAMLSection();
+ ObjectMap pinfo = new ObjectMap();
pinfo.set("name", player.name());
players.set(player.get().toString(), pinfo);
}
info.set("players", players);
- if (getSubData() != null) info.set("subdata", getSubData().getAddress().toString());
+ if (getSubData() != null) info.set("subdata", getSubData().getID());
info.set("signature", signature);
info.set("extra", getExtra());
- return info.toJSON();
+ return info;
}
}
\ No newline at end of file
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubCreator.java
index 75b76029..29f0c12a 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubCreator.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubCreator.java
@@ -1,15 +1,14 @@
package net.ME1312.SubServers.Bungee.Host;
import com.google.common.collect.Range;
-import net.ME1312.SubServers.Bungee.Library.Callback;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Callback.Callback;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidTemplateException;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.Galaxi.Library.Util;
+import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubAPI;
import java.io.File;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.*;
@@ -24,8 +23,8 @@ public abstract class SubCreator {
private String icon;
private File directory;
private ServerType type;
- private YAMLSection build;
- private YAMLSection options;
+ private ObjectMap build;
+ private ObjectMap options;
/**
* Create a SubCreator Template
@@ -35,7 +34,7 @@ public abstract class SubCreator {
* @param build Build Options
* @param options Configuration Options
*/
- public ServerTemplate(String name, boolean enabled, String icon, File directory, YAMLSection build, YAMLSection options) {
+ public ServerTemplate(String name, boolean enabled, String icon, File directory, ObjectMap build, ObjectMap options) {
if (Util.isNull(name, enabled, directory, build, options)) throw new NullPointerException();
if (name.contains(" ")) throw new InvalidTemplateException("Template names cannot have spaces: " + name);
this.name = name;
@@ -137,7 +136,7 @@ public abstract class SubCreator {
*
* @return Build Options
*/
- public YAMLSection getBuildOptions() {
+ public ObjectMap getBuildOptions() {
return build;
}
@@ -146,19 +145,19 @@ public abstract class SubCreator {
*
* @return Configuration Options
*/
- public YAMLSection getConfigOptions() {
+ public ObjectMap getConfigOptions() {
return options;
}
- @Override
- public String toString() {
- YAMLSection tinfo = new YAMLSection();
+
+ public ObjectMap forSubData() {
+ ObjectMap tinfo = new ObjectMap();
tinfo.set("enabled", isEnabled());
tinfo.set("name", getName());
tinfo.set("display", getDisplayName());
tinfo.set("icon", getIcon());
tinfo.set("type", getType().toString());
- return tinfo.toJSON();
+ return tinfo;
}
}
public enum ServerType {
@@ -180,7 +179,7 @@ public abstract class SubCreator {
* @param player Player Creating
* @param name Server Name
* @param template Server Template
- * @param version Server Version
+ * @param version Server Version (may be null)
* @param port Server Port Number (null to auto-select)
* @return Success Status
*/
@@ -192,7 +191,7 @@ public abstract class SubCreator {
* @param player Player Creating
* @param name Server Name
* @param template Server Template
- * @param version Server Version
+ * @param version Server Version (may be null)
* @param port Server Port Number (null to auto-select)
* @return Success Status
*/
@@ -205,7 +204,7 @@ public abstract class SubCreator {
*
* @param name Server Name
* @param template Server Template
- * @param version Server Version
+ * @param version Server Version (may be null)
* @param port Server Port Number (null to auto-select)
* @return Success Status
*/
@@ -218,7 +217,7 @@ public abstract class SubCreator {
*
* @param name Server Name
* @param template Server Template
- * @param version Server Version
+ * @param version Server Version (may be null)
* @param port Server Port Number (null to auto-select)
* @return Success Status
*/
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
index 7d5c43d3..4abb3bb4 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
@@ -1,7 +1,7 @@
package net.ME1312.SubServers.Bungee.Host;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
+import net.ME1312.Galaxi.Library.Util;
import java.util.*;
@@ -17,6 +17,7 @@ public interface SubServer extends Server {
NONE,
RESTART,
REMOVE_SERVER,
+ RECYCLE_SERVER,
DELETE_SERVER;
@Override
@@ -169,7 +170,7 @@ public interface SubServer extends Server {
* @param edit Edits
* @return Success Status
*/
- default int edit(UUID player, YAMLSection edit) {
+ default int edit(UUID player, ObjectMap edit) {
return -1;
}
@@ -179,7 +180,7 @@ public interface SubServer extends Server {
* @param edit Edits
* @return Success Status
*/
- default int edit(YAMLSection edit) {
+ default int edit(ObjectMap edit) {
return -1;
}
@@ -221,12 +222,12 @@ public interface SubServer extends Server {
/**
* If the Server is accepting requests to edit()
*
- * @see #edit(YAMLSection)
- * @see #edit(UUID, YAMLSection)
+ * @see #edit(ObjectMap)
+ * @see #edit(UUID, ObjectMap)
* @return Edit Status
*/
default boolean isEditable() {
- return edit(new YAMLSection()) >= 0;
+ return edit(new ObjectMap()) >= 0;
}
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerContainer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerContainer.java
index 012f5544..1354c54b 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerContainer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerContainer.java
@@ -1,9 +1,8 @@
package net.ME1312.SubServers.Bungee.Host;
-import com.google.gson.Gson;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.SubAPI;
import java.io.File;
@@ -51,7 +50,7 @@ public abstract class SubServerContainer extends ServerContainer implements SubS
}
@Override
- public int edit(YAMLSection edit) {
+ public int edit(ObjectMap edit) {
return edit(null, edit);
}
@@ -109,8 +108,8 @@ public abstract class SubServerContainer extends ServerContainer implements SubS
@SuppressWarnings({"deprecation", "unchecked"})
@Override
- public String toString() {
- YAMLSection sinfo = new YAMLSection(new Gson().fromJson(super.toString(), Map.class));
+ public ObjectMap forSubData() {
+ ObjectMap sinfo = super.forSubData();
sinfo.set("type", "SubServer");
sinfo.set("host", getHost().getName());
sinfo.set("enabled", isEnabled());
@@ -121,13 +120,13 @@ public abstract class SubServerContainer extends ServerContainer implements SubS
sinfo.set("running", isRunning());
sinfo.set("stop-cmd", getStopCommand());
sinfo.set("stop-action", getStopAction().toString());
- sinfo.set("auto-run", SubAPI.getInstance().getInternals().config.get().getSection("Servers").getSection(getName(), new YAMLSection()).getBoolean("Run-On-Launch", false));
+ sinfo.set("auto-run", SubAPI.getInstance().getInternals().config.get().getMap("Servers").getMap(getName(), new ObjectMap()).getBoolean("Run-On-Launch", false));
List incompatibleCurrent = new ArrayList();
List incompatible = new ArrayList();
for (SubServer server : getCurrentIncompatibilities()) incompatibleCurrent.add(server.getName());
for (SubServer server : getIncompatibilities()) incompatible.add(server.getName());
sinfo.set("incompatible", incompatibleCurrent);
sinfo.set("incompatible-list", incompatible);
- return sinfo.toJSON();
+ return sinfo;
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerController.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerController.java
index f25f94ca..958631db 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerController.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServerController.java
@@ -1,6 +1,6 @@
package net.ME1312.SubServers.Bungee.Host;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
import java.util.*;
@@ -64,12 +64,12 @@ public abstract class SubServerController {
}
@Override
- public int edit(YAMLSection edit) {
+ public int edit(ObjectMap edit) {
return SubServerController.this.edit(edit);
}
@Override
- public int edit(UUID player, YAMLSection edit) {
+ public int edit(UUID player, ObjectMap edit) {
return SubServerController.this.edit(player, edit);
}
@@ -236,7 +236,7 @@ public abstract class SubServerController {
* @param edit Edits
* @return Success Status
*/
- public int edit(UUID player, YAMLSection edit) {
+ public int edit(UUID player, ObjectMap edit) {
return -1;
}
@@ -246,7 +246,7 @@ public abstract class SubServerController {
* @param edit Edits
* @return Success Status
*/
- public int edit(YAMLSection edit) {
+ public int edit(ObjectMap edit) {
return -1;
}
@@ -352,9 +352,4 @@ public abstract class SubServerController {
* @param action Stop Action
*/
public abstract void setStopAction(SubServer.StopAction action);
-
- @Override
- public String toString() {
- return control.toString();
- }
}
\ No newline at end of file
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
index 64a83ed9..407f012d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
@@ -1,11 +1,7 @@
package net.ME1312.SubServers.Bungee;
-import net.ME1312.SubServers.Bungee.Library.Container;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
-import net.ME1312.SubServers.Bungee.Library.Version.VersionType;
+import net.ME1312.Galaxi.Library.Util;
-import java.lang.reflect.Field;
import java.security.Security;
import java.text.SimpleDateFormat;
import java.util.Calendar;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Callback.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Callback.java
deleted file mode 100644
index d230f513..00000000
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Callback.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package net.ME1312.SubServers.Bungee.Library;
-
-/**
- * Callback Class
- */
-public interface Callback {
- /**
- * Run the Callback
- *
- * @param obj Object
- */
- void run(T obj);
-}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/CommandX.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/CommandX.java
index 3f8416bb..145493da 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/CommandX.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/CommandX.java
@@ -1,6 +1,6 @@
package net.ME1312.SubServers.Bungee.Library.Compatibility;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.NamedContainer;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/JNA.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/JNA.java
index 9d25b560..56de7cce 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/JNA.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/JNA.java
@@ -1,7 +1,7 @@
package net.ME1312.SubServers.Bungee.Library.Compatibility;
import com.google.common.io.Resources;
-import net.ME1312.SubServers.Bungee.Library.UniversalFile;
+import net.ME1312.Galaxi.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.SubAPI;
import java.io.FileNotFoundException;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/mc1_13/CommandX.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/mc1_13/CommandX.java
index ebc1550a..8f80d3bc 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/mc1_13/CommandX.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/mc1_13/CommandX.java
@@ -1,6 +1,6 @@
package net.ME1312.SubServers.Bungee.Library.Compatibility.mc1_13;
-import net.ME1312.SubServers.Bungee.Library.NamedContainer;
+import net.ME1312.Galaxi.Library.NamedContainer;
import net.md_5.bungee.api.CommandSender;
import java.util.LinkedList;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLConfig.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLConfig.java
deleted file mode 100644
index a828d183..00000000
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLConfig.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package net.ME1312.SubServers.Bungee.Library.Config;
-
-import net.ME1312.SubServers.Bungee.Library.Util;
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.error.YAMLException;
-
-import java.io.*;
-import java.util.LinkedHashMap;
-
-/**
- * YAML Config Class
- */
-@SuppressWarnings("unused")
-public class YAMLConfig {
- private File file;
- private Yaml yaml;
- private YAMLSection config;
-
- /**
- * Creates/Loads a YAML Formatted Config
- *
- * @param file
- * @throws IOException
- * @throws YAMLException
- */
- @SuppressWarnings("unchecked")
- public YAMLConfig(File file) throws IOException, YAMLException {
- if (Util.isNull(file)) throw new NullPointerException();
- this.file = file;
- this.yaml = new Yaml(getDumperOptions());
- if (file.exists()) {
- InputStream stream = new FileInputStream(file);
- this.config = new YAMLSection((LinkedHashMap) yaml.loadAs(stream, LinkedHashMap.class), null, null, yaml);
- stream.close();
- } else {
- this.config = new YAMLSection(null, null, null, yaml);
- }
- }
-
- /**
- * Get Config Contents
- *
- * @return Config Contents
- */
- public YAMLSection get() {
- return config;
- }
-
- /**
- * Set Config Contents
- *
- * @param value Value
- */
- public void set(YAMLSection value) {
- if (Util.isNull(value)) throw new NullPointerException();
- config = value;
- }
-
- /**
- * Reload Config Contents
- *
- * @throws IOException
- */
- @SuppressWarnings("unchecked")
- public void reload() throws IOException {
- if (file.exists()) {
- InputStream stream = new FileInputStream(file);
- this.config = new YAMLSection((LinkedHashMap) yaml.loadAs(stream, LinkedHashMap.class), null, null, yaml);
- stream.close();
- } else {
- this.config = new YAMLSection(null, null, null, yaml);
- }
- }
-
- /**
- * Save Config Contents
- *
- * @throws IOException
- */
- public void save() throws IOException {
- if (!file.exists()) file.createNewFile();
- FileWriter writer = new FileWriter(file);
- yaml.dump(config.map, writer);
- writer.close();
- }
-
- @Override
- public boolean equals(Object object) {
- if (object instanceof YAMLConfig) {
- return get().equals(((YAMLConfig) object).get());
- } else {
- return super.equals(object);
- }
- }
-
- @Override
- public String toString() {
- return yaml.dump(config.map);
- }
-
- protected static DumperOptions getDumperOptions() {
- DumperOptions options = new DumperOptions();
- options.setAllowUnicode(false);
- options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
- options.setIndent(2);
-
- return options;
- }
-}
\ No newline at end of file
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.java
deleted file mode 100644
index df3c6a69..00000000
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.java
+++ /dev/null
@@ -1,1141 +0,0 @@
-package net.ME1312.SubServers.Bungee.Library.Config;
-
-import com.google.gson.Gson;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
-import org.msgpack.value.MapValue;
-import org.msgpack.value.Value;
-import org.msgpack.value.ValueFactory;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.error.YAMLException;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.*;
-
-/**
- * YAML Config Section Class
- */
-@SuppressWarnings({"unchecked", "unused"})
-public class YAMLSection {
- protected LinkedHashMap map;
- protected String handle = null;
- protected YAMLSection up = null;
- private Yaml yaml;
-
- /**
- * Creates an empty YAML Section
- */
- public YAMLSection() {
- this.map = new LinkedHashMap<>();
- this.yaml = new Yaml(YAMLConfig.getDumperOptions());
- }
-
- /**
- * Creates a YAML Section from an Input Stream
- *
- * @param stream Input Stream
- * @throws YAMLException
- */
- public YAMLSection(InputStream stream) throws YAMLException {
- if (Util.isNull(stream)) throw new NullPointerException();
- this.map = (LinkedHashMap) (this.yaml = new Yaml(YAMLConfig.getDumperOptions())).loadAs(stream, LinkedHashMap.class);
- }
-
- /**
- * Creates a YAML Section from a Reader
- *
- * @param reader Reader
- * @throws YAMLException
- */
- public YAMLSection(Reader reader) throws YAMLException {
- if (Util.isNull(reader)) throw new NullPointerException();
- this.map = (LinkedHashMap) (this.yaml = new Yaml(YAMLConfig.getDumperOptions())).loadAs(reader, LinkedHashMap.class);
- }
-
- /**
- * Creates a YAML Section from String
- *
- * @param str String
- * @throws YAMLException
- */
- public YAMLSection(String str) throws YAMLException {
- if (Util.isNull(str)) throw new NullPointerException();
- this.map = (LinkedHashMap) (this.yaml = new Yaml(YAMLConfig.getDumperOptions())).loadAs(str, LinkedHashMap.class);
- }
-
- /**
- * Creates a YAML Section from Map Contents
- *
- * @param map Map
- */
- public YAMLSection(Map map) {
- if (Util.isNull(map)) throw new NullPointerException();
- this.map = new LinkedHashMap<>();
- this.yaml = new Yaml(YAMLConfig.getDumperOptions());
-
- setAll(map);
- }
-
- /**
- * Creates a YAML Section from Message Pack Contents
- *
- * @param msgpack MessagePack Map
- */
- public YAMLSection(MapValue msgpack) {
- if (Util.isNull(msgpack)) throw new NullPointerException();
- this.map = new LinkedHashMap<>();
- this.yaml = new Yaml(YAMLConfig.getDumperOptions());
-
- boolean warned = false;
- Map map = msgpack.map();
- for (Value key : map.keySet()) {
- if (key.isStringValue()) {
- set(key.asStringValue().asString(), map.get(key));
- } else if (!warned) {
- new IllegalStateException("MessagePack contains non-string key(s)").printStackTrace();
- warned = true;
- }
- }
- }
-
- protected YAMLSection(Map map, YAMLSection up, String handle, Yaml yaml) {
- this.map = new LinkedHashMap();
- this.yaml = yaml;
- this.handle = handle;
- this.up = up;
-
- if (map != null) setAll(map);
- }
-
-
- /**
- * Get a copy of the original Object Map
- *
- * @return Object Map
- */
- public Map get() {
- LinkedHashMap map = new LinkedHashMap();
- map.putAll(this.map);
- return map;
- }
-
- /**
- * Get the Keys
- *
- * @return KeySet
- */
- public Set getKeys() {
- return map.keySet();
- }
-
- /**
- * Get the Values
- *
- * @return Values
- */
- public Collection getValues() {
- List values = new ArrayList();
- for (String value : map.keySet()) {
- values.add(new YAMLValue(map.get(value), this, value, yaml));
- }
- return values;
- }
-
- /**
- * Check if a Handle exists
- *
- * @param handle Handle
- * @return if that handle exists
- */
- public boolean contains(String handle) {
- return map.keySet().contains(handle);
- }
-
- private Object convert(Object value) {
- if (value instanceof Value) {
- if (((Value) value).isNilValue()) {
- value = null;
- } else if (((Value) value).isMapValue()) {
- value = new YAMLSection(((Value) value).asMapValue());
- } else if (((Value) value).isArrayValue()) {
- value = ((Value) value).asArrayValue().list();
- } else if (((Value) value).isBooleanValue()) {
- value = ((Value) value).asBooleanValue().getBoolean();
- } else if (((Value) value).isFloatValue()) {
- if (((Value) value).asFloatValue().toDouble() == (double)(float) ((Value) value).asFloatValue().toDouble()) {
- value = ((Value) value).asFloatValue().toFloat();
- } else {
- value = ((Value) value).asFloatValue().toDouble();
- }
- } else if (((Value) value).isIntegerValue()) {
- if (((Value) value).asIntegerValue().isInByteRange()) {
- value = ((Value) value).asIntegerValue().asByte();
- } else if (((Value) value).asIntegerValue().isInShortRange()) {
- value = ((Value) value).asIntegerValue().asShort();
- } else if (((Value) value).asIntegerValue().isInIntRange()) {
- value = ((Value) value).asIntegerValue().asInt();
- } else if (((Value) value).asIntegerValue().isInLongRange()) {
- value = ((Value) value).asIntegerValue().asLong();
- } else {
- value = ((Value) value).asIntegerValue().asBigInteger();
- }
- } else if (((Value) value).isStringValue()) {
- value = ((Value) value).asStringValue().asString();
- }
- }
-
- if (value == null) {
- return null;
- } else if (value instanceof Map) {
- List list = new ArrayList();
- list.addAll(((Map) value).keySet());
- for (String key : list) ((Map) value).put(key, convert(((Map) value).get(key)));
- return value;
- } else if (value instanceof YAMLConfig) {
- ((YAMLConfig) value).get().up = this;
- ((YAMLConfig) value).get().handle = handle;
- return ((YAMLConfig) value).get().map;
- } else if (value instanceof YAMLSection) {
- ((YAMLSection) value).up = this;
- ((YAMLSection) value).handle = handle;
- return ((YAMLSection) value).map;
- } else if (value instanceof YAMLValue) {
- return ((YAMLValue) value).asObject();
- } else if (value instanceof Collection) {
- List