2016-12-05 04:21:04 +01:00
|
|
|
package net.ME1312.SubServers.Proxy.Host.Internal;
|
|
|
|
|
2016-12-15 22:04:39 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.Event.SubAddServerEvent;
|
2016-12-05 04:21:04 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.Host.Executable;
|
2016-12-15 22:04:39 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.Library.Exception.InvalidServerException;
|
2016-12-05 04:21:04 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.Host.Host;
|
|
|
|
import net.ME1312.SubServers.Proxy.Host.SubCreator;
|
|
|
|
import net.ME1312.SubServers.Proxy.Host.SubServer;
|
2016-12-15 22:04:39 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.Library.NamedContainer;
|
2016-12-05 04:21:04 +01:00
|
|
|
import net.ME1312.SubServers.Proxy.SubPlugin;
|
|
|
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.TreeMap;
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
public class InternalHost extends Host {
|
|
|
|
private HashMap<String, SubServer> servers = new HashMap<String, SubServer>();
|
|
|
|
|
|
|
|
private String name;
|
|
|
|
private boolean enabled;
|
|
|
|
private InetAddress address;
|
|
|
|
private InternalSubCreator creator;
|
2016-12-15 22:04:39 +01:00
|
|
|
private String directory;
|
2016-12-05 04:21:04 +01:00
|
|
|
SubPlugin plugin;
|
|
|
|
|
2016-12-15 22:04:39 +01:00
|
|
|
public InternalHost(SubPlugin plugin, String name, Boolean enabled, InetAddress address, String directory, String gitBash) {
|
|
|
|
super(plugin, name, enabled, address, directory, gitBash);
|
2016-12-05 04:21:04 +01:00
|
|
|
this.plugin = plugin;
|
|
|
|
this.name = name;
|
|
|
|
this.enabled = enabled;
|
|
|
|
this.address = address;
|
2016-12-15 22:04:39 +01:00
|
|
|
this.creator = new InternalSubCreator(this, gitBash);
|
2016-12-05 04:21:04 +01:00
|
|
|
this.directory = directory;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isEnabled() {
|
|
|
|
return enabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void setEnabled(boolean value) {
|
|
|
|
this.enabled = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public InetAddress getAddress() {
|
|
|
|
return address;
|
|
|
|
}
|
|
|
|
|
2016-12-15 22:04:39 +01:00
|
|
|
@Override
|
|
|
|
public String getDirectory() {
|
|
|
|
return directory;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isEditable() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2016-12-05 04:21:04 +01:00
|
|
|
@Override
|
|
|
|
public String getName() {
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public int start(UUID player, String... servers) {
|
|
|
|
int i = 0;
|
2016-12-05 04:21:04 +01:00
|
|
|
for (String server : servers) {
|
2016-12-19 01:38:02 +01:00
|
|
|
if (this.servers.get(server.toLowerCase()).start(player)) i++;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
2016-12-19 01:38:02 +01:00
|
|
|
return i;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public int stop(UUID player, String... servers) {
|
|
|
|
int i = 0;
|
2016-12-05 04:21:04 +01:00
|
|
|
for (String server : servers) {
|
2016-12-19 01:38:02 +01:00
|
|
|
if (this.servers.get(server.toLowerCase()).stop(player)) i++;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
2016-12-19 01:38:02 +01:00
|
|
|
return i;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public int terminate(UUID player, String... servers) {
|
|
|
|
int i = 0;
|
2016-12-05 04:21:04 +01:00
|
|
|
for (String server : servers) {
|
2016-12-19 01:38:02 +01:00
|
|
|
if (this.servers.get(server.toLowerCase()).terminate(player)) i++;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
2016-12-19 01:38:02 +01:00
|
|
|
return i;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public int command(UUID player, String command, String... servers) {
|
|
|
|
int i = 0;
|
2016-12-05 04:21:04 +01:00
|
|
|
for (String server : servers) {
|
2016-12-19 01:38:02 +01:00
|
|
|
if (this.servers.get(server.toLowerCase()).command(player, command)) i++;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
2016-12-19 01:38:02 +01:00
|
|
|
return i;
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
|
|
|
|
2016-12-15 22:04:39 +01:00
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public boolean edit(NamedContainer<String, ?>... changes) {
|
2016-12-15 22:04:39 +01:00
|
|
|
for (NamedContainer<String, ?> change : changes) {
|
|
|
|
switch (change.name().toLowerCase()) {
|
|
|
|
// TODO SubEditor
|
|
|
|
}
|
|
|
|
}
|
2016-12-19 01:38:02 +01:00
|
|
|
return true;
|
2016-12-15 22:04:39 +01:00
|
|
|
}
|
|
|
|
|
2016-12-05 04:21:04 +01:00
|
|
|
@Override
|
|
|
|
public SubCreator getCreator() {
|
|
|
|
return creator;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Map<String, ? extends SubServer> getSubServers() {
|
|
|
|
return new TreeMap<String, SubServer>(servers);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public SubServer getSubServer(String name) {
|
|
|
|
return servers.get(name.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-12-19 01:38:02 +01:00
|
|
|
public SubServer addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, Executable executable, String stopcmd, boolean start, boolean restart, boolean hidden, boolean restricted, boolean temporary) throws InvalidServerException {
|
2016-12-15 22:04:39 +01:00
|
|
|
if (plugin.api.getServers().keySet().contains(name.toLowerCase())) throw new InvalidServerException("A Server already exists with this name!");
|
2016-12-19 01:38:02 +01:00
|
|
|
SubServer server = new InternalSubServer(this, name, enabled, port, motd, log, directory, executable, stopcmd, start, restart, hidden, restricted, temporary);
|
2016-12-15 22:04:39 +01:00
|
|
|
SubAddServerEvent event = new SubAddServerEvent(player, this, server);
|
|
|
|
plugin.getPluginManager().callEvent(event);
|
|
|
|
if (!event.isCancelled()) {
|
|
|
|
servers.put(name.toLowerCase(), server);
|
|
|
|
return server;
|
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
2016-12-05 04:21:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void removeSubServer(String name) throws InterruptedException {
|
|
|
|
if (getSubServer(name).isRunning()) {
|
|
|
|
getSubServer(name).stop();
|
|
|
|
getSubServer(name).waitFor();
|
|
|
|
}
|
|
|
|
servers.remove(name.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void forceRemoveSubServer(String name) {
|
|
|
|
if (getSubServer(name).isRunning()) {
|
|
|
|
getSubServer(name).terminate();
|
|
|
|
}
|
|
|
|
servers.remove(name.toLowerCase());
|
|
|
|
}
|
|
|
|
}
|