mirror of
https://github.com/ME1312/SubServers-2.git
synced 2024-06-23 21:25:06 +02:00
116 lines
3.4 KiB
Java
116 lines
3.4 KiB
Java
package net.ME1312.SubServers.Host.Network.Packet;
|
|
|
|
import net.ME1312.Galaxi.Library.Config.YAMLSection;
|
|
import net.ME1312.Galaxi.Library.Version.Version;
|
|
import net.ME1312.SubServers.Host.Executable.SubServer;
|
|
import net.ME1312.SubServers.Host.Network.PacketIn;
|
|
import net.ME1312.SubServers.Host.Network.PacketOut;
|
|
import net.ME1312.SubServers.Host.ExHost;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* Update Server Packet
|
|
*/
|
|
public class PacketExUpdateServer implements PacketIn, PacketOut {
|
|
private ExHost host;
|
|
private SubServer server;
|
|
private UpdateType type;
|
|
private Object[] args;
|
|
|
|
public enum UpdateType {
|
|
// Status
|
|
LAUNCH_EXCEPTION(1),
|
|
STOPPED(2, Integer.class, Boolean.class);
|
|
|
|
|
|
private short value;
|
|
private Class<?>[] args;
|
|
UpdateType(int value, Class<?>... args) {
|
|
this.value = (short) value;
|
|
this.args = args;
|
|
}
|
|
|
|
public Class<?>[] getArguments() {
|
|
return args;
|
|
}
|
|
|
|
public short getValue() {
|
|
return value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* New PacketExUpdateServer (In)
|
|
* @param host SubPlugin
|
|
*/
|
|
public PacketExUpdateServer(ExHost host) {
|
|
this.host = host;
|
|
}
|
|
|
|
/**
|
|
* New PacketExUpdateServer (Out)
|
|
*
|
|
* @param type Update Type
|
|
* @param arguments Arguments
|
|
*/
|
|
public PacketExUpdateServer(SubServer server, UpdateType type, Object... arguments) {
|
|
if (arguments.length != type.getArguments().length) throw new IllegalArgumentException("Not enough arguments for type: " + type.toString());
|
|
int i = 0;
|
|
while (i < arguments.length) {
|
|
if (!type.getArguments()[i].isInstance(arguments[i])) throw new IllegalArgumentException("Argument " + (i+1) + " is not " + type.getArguments()[i].getCanonicalName());
|
|
i++;
|
|
}
|
|
this.server = server;
|
|
this.type = type;
|
|
this.args = arguments;
|
|
}
|
|
|
|
@Override
|
|
public YAMLSection generate() {
|
|
YAMLSection data = new YAMLSection();
|
|
data.set("server", server.getName());
|
|
data.set("type", type.getValue());
|
|
data.set("args", Arrays.asList(args));
|
|
return data;
|
|
}
|
|
|
|
@Override
|
|
public void execute(YAMLSection data) {
|
|
try {
|
|
SubServer server = host.servers.get(data.getString("server").toLowerCase());
|
|
switch (data.getInt("type")) {
|
|
case 0:
|
|
server.setEnabled(data.getList("args").get(0).asBoolean());
|
|
break;
|
|
case 1:
|
|
server.start(UUID.fromString(data.getList("args").get(0).asRawString()));
|
|
break;
|
|
case 2:
|
|
server.command(data.getList("args").get(0).asRawString());
|
|
break;
|
|
case 3:
|
|
server.stop();
|
|
break;
|
|
case 4:
|
|
server.terminate();
|
|
break;
|
|
case 5:
|
|
server.setLogging(data.getList("args").get(0).asBoolean());
|
|
break;
|
|
case 6:
|
|
server.setStopCommand(data.getList("args").get(0).asRawString());
|
|
break;
|
|
}
|
|
} catch (Exception e) {
|
|
host.log.error.println(e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Version getVersion() {
|
|
return new Version("2.11.0a");
|
|
}
|
|
}
|