Skip to content

Commit

Permalink
#50 #46 Selecting Multiple Servers
Browse files Browse the repository at this point in the history
This commit includes the following major changes and additions:
-> New Command & Permission Formatting
-> RemotePlayer API
-> SubData with Blocks
  • Loading branch information
ME1312 committed Jun 12, 2020
1 parent caf8ee7 commit bb0dd55
Show file tree
Hide file tree
Showing 150 changed files with 8,005 additions and 4,399 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -42,6 +42,7 @@ crashlytics-build.properties
/Artifacts/-Icon/
/Artifacts/-Lite/
/Artifacts/*.jar
/BungeeCord/
/Javadoc/
/SubServers.Test/
/build.ant
Expand Down
Binary file added Artifacts/ServerContainer.class
Binary file not shown.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -12,7 +12,7 @@ SubServers 2 is a rewrite of SubServers, the Server Management Platform.<br>
These are some quick links for common resources of SubServers 2.

### How to Install
> [https://github.com/ME1312/SubServers-2/wiki/Install](https://github.com/ME1312/SubServers-2/wiki/Install)
> [https://github.com/ME1312/SubServers-2/wiki/Install](https://github.com/ME1312/SubServers-2/wiki/Installation)
### Snapshot Downloads
> [https://dev.me1312.net/jenkins/job/SubServers Platform](https://dev.me1312.net/jenkins/job/SubServers%20Platform)
Expand Down
8 changes: 4 additions & 4 deletions SubServers.Bungee/pom.xml
Expand Up @@ -30,20 +30,20 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>20w08c</version>
<version>20w15a</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>20w08c</version>
<version>20w15a</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.ME1312.SubData</groupId>
<artifactId>Server</artifactId>
<version>20w07d</version>
<version>20w15a</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
Expand Down Expand Up @@ -162,7 +162,7 @@
<configuration>
<windowtitle>SubServers.Bungee Javadoc</windowtitle>
<doctitle>SubServers.Bungee Javadoc</doctitle>
<show>public</show>
<show>protected</show>
<destDir>./</destDir>
<outputDirectory>${basedir}/../Javadoc/SubServers.Bungee</outputDirectory>
<reportOutputDirectory>${basedir}/../Javadoc/SubServers.Bungee</reportOutputDirectory>
Expand Down
Expand Up @@ -3,7 +3,7 @@
import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.Galaxi.Library.NamedContainer;
import net.ME1312.Galaxi.Library.Container.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
import net.ME1312.Galaxi.Library.Util;
import net.md_5.bungee.api.plugin.Cancellable;
Expand Down
Expand Up @@ -31,14 +31,14 @@ public class ExternalHost extends Host implements ClientHandler {
private HashMap<Integer, SubDataClient> subdata = new HashMap<Integer, SubDataClient>();
private HashMap<String, SubServer> servers = new HashMap<String, SubServer>();
private String name;
protected boolean available;
boolean available;
private boolean enabled;
private InetAddress address;
private SubCreator creator;
private String directory;
private LinkedList<PacketOut> queue;
private boolean clean;
protected SubProxy plugin;
SubProxy plugin;

/**
* Creates an External Host
Expand Down Expand Up @@ -93,7 +93,7 @@ public void removeSubData(DataClient client) {
for (Integer channel : Util.getBackwards(subdata, (SubDataClient) client)) setSubData(null, channel);
}

protected void queue(PacketOut... packet) {
void queue(PacketOut... packet) {
for (PacketOut p : packet) if (getSubData()[0] == null || !available) {
queue.add(p);
} else {
Expand Down Expand Up @@ -167,7 +167,7 @@ public SubServer getSubServer(String name) {
@Override
public SubServer addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) throws InvalidServerException {
if (plugin.api.getServers().keySet().contains(name.toLowerCase())) throw new InvalidServerException("A Server already exists with this name!");
ExternalSubServer server = new ExternalSubServer(this, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted);
ExternalSubServer server = ExternalSubServer.construct(this, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted);
SubAddServerEvent event = new SubAddServerEvent(player, this, server);
plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
Expand All @@ -184,18 +184,18 @@ public SubServer addSubServer(UUID player, String name, boolean enabled, int por
@Override
public boolean removeSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer server = servers.get(name.toLowerCase());

SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, server);
plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
if (getSubServer(server).isRunning()) {
getSubServer(server).stop();
getSubServer(server).waitFor();
if (server.isRunning()) {
server.stop();
server.waitFor();
}
queue(new PacketExRemoveServer(server, data -> {
queue(new PacketExRemoveServer(name.toLowerCase(), data -> {
if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) {
servers.remove(server.toLowerCase());
servers.remove(name.toLowerCase());
}
}));
return true;
Expand All @@ -205,17 +205,17 @@ public boolean removeSubServer(UUID player, String name) throws InterruptedExcep
@Override
public boolean forceRemoveSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer server = servers.get(name.toLowerCase());

SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, server);
plugin.getPluginManager().callEvent(event);
if (getSubServer(server).isRunning()) {
getSubServer(server).stop();
getSubServer(server).waitFor();
if (server.isRunning()) {
server.stop();
server.waitFor();
}
queue(new PacketExRemoveServer(server, data -> {
queue(new PacketExRemoveServer(name.toLowerCase(), data -> {
if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) {
servers.remove(server.toLowerCase());
servers.remove(name.toLowerCase());
}
}));
return true;
Expand All @@ -224,14 +224,15 @@ public boolean forceRemoveSubServer(UUID player, String name) throws Interrupted
@Override
public boolean recycleSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer s = servers.get(name.toLowerCase());
String server = s.getName();

SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, s);
plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
if (getSubServer(server).isRunning()) {
getSubServer(server).stop();
getSubServer(server).waitFor();
if (s.isRunning()) {
s.stop();
s.waitFor();
}

Logger.get("SubServers").info("Saving...");
Expand Down Expand Up @@ -263,12 +264,14 @@ public boolean recycleSubServer(UUID player, String name) throws InterruptedExce
@Override
public boolean forceRecycleSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer s = servers.get(name.toLowerCase());
String server = s.getName();

SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, s);
plugin.getPluginManager().callEvent(event);
if (getSubServer(server).isRunning()) {
getSubServer(server).terminate();
if (s.isRunning()) {
s.stop();
s.waitFor();
}

Logger.get("SubServers").info("Saving...");
Expand All @@ -287,7 +290,6 @@ public boolean forceRecycleSubServer(UUID player, String name) throws Interrupte
Logger.get("SubServers").info("Moving Files...");
queue(new PacketExDeleteServer(server, info, true, data -> {
if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) {
for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group);
servers.remove(server.toLowerCase());
Logger.get("SubServers").info("Deleted SubServer: " + server);
} else {
Expand All @@ -300,14 +302,15 @@ public boolean forceRecycleSubServer(UUID player, String name) throws Interrupte
@Override
public boolean deleteSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer s = servers.get(name.toLowerCase());
String server = s.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();
if (s.isRunning()) {
s.stop();
s.waitFor();
}

Logger.get("SubServers").info("Saving...");
Expand Down Expand Up @@ -339,12 +342,14 @@ public boolean deleteSubServer(UUID player, String name) throws InterruptedExcep
@Override
public boolean forceDeleteSubServer(UUID player, String name) throws InterruptedException {
if (Util.isNull(name)) throw new NullPointerException();
String server = servers.get(name.toLowerCase()).getName();
SubServer s = servers.get(name.toLowerCase());
String server = s.getName();

SubRemoveServerEvent event = new SubRemoveServerEvent(player, this, getSubServer(server));
plugin.getPluginManager().callEvent(event);
if (getSubServer(server).isRunning()) {
getSubServer(server).terminate();
if (s.isRunning()) {
s.stop();
s.waitFor();
}

Logger.get("SubServers").info("Saving...");
Expand All @@ -363,7 +368,6 @@ public boolean forceDeleteSubServer(UUID player, String name) throws Interrupted
Logger.get("SubServers").info("Removing Files...");
queue(new PacketExDeleteServer(server, info, false, data -> {
if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) {
for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group);
servers.remove(server.toLowerCase());
Logger.get("SubServers").info("Deleted SubServer: " + server);
} else {
Expand Down
Expand Up @@ -4,6 +4,8 @@
import net.ME1312.Galaxi.Library.*;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
import net.ME1312.Galaxi.Library.Container.Container;
import net.ME1312.Galaxi.Library.Container.NamedContainer;
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Event.SubCreatedEvent;
Expand Down Expand Up @@ -103,7 +105,7 @@ public boolean create(UUID player, String name, ServerTemplate template, Version
if (!event.isCancelled()) {
Container<String> address = new Container<>("$address$");
ReturnCallback<Object, Object> conversion = obj -> convert(obj, new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$host$", host.getName()), new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString():""),
new NamedContainer<>("$address$", address.get()), new NamedContainer<>("$port$", Integer.toString(fport)));

logger.start();
Expand Down Expand Up @@ -212,7 +214,7 @@ public boolean update(UUID player, SubServer server, Version version, Callback<B

String name = server.getName();
String prefix = name + File.separator + "Updater";
Util.isException(() -> Util.reflect(SubServerContainer.class.getDeclaredField("updating"), server, true));
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, true));
ExternalSubLogger logger = new ExternalSubLogger(this, prefix, log, null);
thread.put(name.toLowerCase(), new NamedContainer<>(server.getAddress().getPort(), logger));

Expand All @@ -221,7 +223,7 @@ public boolean update(UUID player, SubServer server, Version version, Callback<B
if (!event.isCancelled()) {
logger.start();
host.queue(new PacketExCreateServer(server, version, logger.getExternalAddress(), data -> {
Util.isException(() -> Util.reflect(SubServerContainer.class.getDeclaredField("updating"), server, false));
Util.isException(() -> Util.reflect(SubServerImpl.class.getDeclaredField("updating"), server, false));
if (data.getInt(0x0001) == 0) {
Logger.get(prefix).info("Saving...");
} else {
Expand Down
Expand Up @@ -2,7 +2,7 @@

import net.ME1312.SubServers.Bungee.Host.SubLogFilter;
import net.ME1312.SubServers.Bungee.Host.SubLogger;
import net.ME1312.Galaxi.Library.Container;
import net.ME1312.Galaxi.Library.Container.Container;
import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketInExLogMessage;
Expand All @@ -27,11 +27,11 @@
*/
public class ExternalSubLogger extends SubLogger {
private Object handle;
protected UUID id = null;
protected String name;
protected Container<Boolean> log;
UUID id = null;
String name;
Container<Boolean> log;
private List<SubLogFilter> filters = new CopyOnWriteArrayList<>();
protected File file;
File file;
private PrintWriter writer = null;
private boolean started = false;

Expand All @@ -43,7 +43,7 @@ public class ExternalSubLogger extends SubLogger {
* @param log Console Logging Status
* @param file File to log to (or null for disabled)
*/
protected ExternalSubLogger(Object user, String name, Container<Boolean> log, File file) {
ExternalSubLogger(Object user, String name, Container<Boolean> log, File file) {
this.handle = user;
this.name = name;
this.log = log;
Expand Down

0 comments on commit bb0dd55

Please sign in to comment.