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 3fcc5c18..16169c20 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java @@ -19,6 +19,10 @@ public class Executable { * @return */ public static String[] parse(String gitbash, String exec) { + if (exec.startsWith("java ")) { + exec = '\"' + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java" + '\"' + exec.substring(4); + } + String[] cmd; if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { if (gitbash != null && (exec.toLowerCase().startsWith("bash ") || exec.toLowerCase().startsWith("sh "))) 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 21648d38..6e31cf0e 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 @@ -203,14 +203,15 @@ public class ExternalHost extends Host implements ClientHandler { } @Override - public boolean forceRemoveSubServer(UUID player, String name) { + public boolean forceRemoveSubServer(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(); + getSubServer(server).stop(); + getSubServer(server).waitFor(); } queue(new PacketExRemoveServer(server, data -> { if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) { 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 06a8f2eb..5fa57cb3 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 @@ -131,13 +131,14 @@ public class InternalHost extends Host { } @Override - public boolean forceRemoveSubServer(UUID player, String name) { + public boolean forceRemoveSubServer(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(); + getSubServer(server).stop(); + getSubServer(server).waitFor(); } if (UPnP.isUPnPAvailable() && UPnP.isMappedTCP(getSubServer(server).getAddress().getPort())) UPnP.closePortTCP(getSubServer(server).getAddress().getPort()); 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 feb5abe5..eed8603f 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 @@ -111,6 +111,7 @@ public class InternalSubCreator extends SubCreator { try { Logger.get(prefix).info("Loading Template: " + template.getDisplayName()); Util.copyDirectory(template.getDirectory(), dir); + var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"); var.put("mode", (update == null)?"CREATE":"UPDATE"); var.put("name", name); var.put("host", host.getName()); 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 900106a6..07b19d87 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 @@ -144,9 +144,11 @@ public class InternalSubLogger extends SubLogger { @Override public void stop() { - if (out != null) out.interrupt(); - if (err != null) err.interrupt(); - destroy(); + try { + if (out != null) out.interrupt(); + if (err != null) err.interrupt(); + destroy(); + } catch (NullPointerException e) {} } @Override 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 fa22d8b8..6769d140 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 @@ -122,6 +122,7 @@ public class InternalSubServer extends SubServerContainer { started = false; try { ProcessBuilder pb = new ProcessBuilder().command(Executable.parse(host.getCreator().getBashDirectory(), executable)).directory(directory); + pb.environment().put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"); pb.environment().put("name", getName()); pb.environment().put("host", host.getName()); pb.environment().put("address", host.getAddress().getHostAddress()); diff --git a/SubServers.Creator/src/Forge/build.sh b/SubServers.Creator/src/Forge/build.sh index ade4d2b7..ef18dfec 100644 --- a/SubServers.Creator/src/Forge/build.sh +++ b/SubServers.Creator/src/Forge/build.sh @@ -7,6 +7,10 @@ if [[ -z "$mcf_version" ]] || [[ -z "$sp_version" ]] rm -Rf "$0" exit 1 fi +if [[ -z "$java" ]] + then + export java="java" +fi function __DL() { if [[ -x "$(command -v wget)" ]]; then wget -O "$1" "$2"; return $? @@ -18,7 +22,7 @@ echo Downloading the Minecraft Forge Installer... __DL "forge-$mcf_version-installer.jar" "http://files.minecraftforge.net/maven/net/minecraftforge/forge/$mcf_version/forge-$mcf_version-installer.jar"; __RETURN=$? if [[ $__RETURN -eq 0 ]]; then echo Installing Minecraft Forge... - java -jar "forge-$mcf_version-installer.jar" --installServer; __RETURN=$? + "$java" -jar "forge-$mcf_version-installer.jar" --installServer; __RETURN=$? if [[ $__RETURN -eq 0 ]]; then echo Cleaning Up... if [[ -f "Forge.jar" ]]; then diff --git a/SubServers.Creator/src/Spigot/build.sh b/SubServers.Creator/src/Spigot/build.sh index 087c0128..d9866ca8 100644 --- a/SubServers.Creator/src/Spigot/build.sh +++ b/SubServers.Creator/src/Spigot/build.sh @@ -7,6 +7,10 @@ if [[ -z "$version" ]] rm -Rf "$0" exit 1 fi +if [[ -z "$java" ]] + then + export java="java" +fi function __DL() { if [[ -x "$(command -v wget)" ]]; then wget -O "$1" "$2"; return $? @@ -29,7 +33,7 @@ if [[ -z "$cache" ]] || [[ ! -f "$cache/Spigot-$version.jar" ]] || [[ "$mode" == export HOME="$cache" fi export MAVEN_OPTS="-Xms2G" - java -Xms2G -jar ../Buildtools.jar --rev "$version"; __RETURN=$? + "$java" -Xms2G -jar ../Buildtools.jar --rev "$version"; __RETURN=$? if [[ ! -z "$cache" ]] && [[ ! -z "$__HOME" ]] && [[ "$cache" == "$HOME" ]]; then export HOME="$__HOME" fi diff --git a/SubServers.Creator/src/Vanilla/build.sh b/SubServers.Creator/src/Vanilla/build.sh index 10b9eb99..c0dfe54e 100644 --- a/SubServers.Creator/src/Vanilla/build.sh +++ b/SubServers.Creator/src/Vanilla/build.sh @@ -7,6 +7,10 @@ if [[ -z "$version" ]] rm -Rf "$0" exit 1 fi +if [[ -z "$java" ]] + then + export java="java" +fi function __DL() { if [[ -x "$(command -v wget)" ]]; then wget -O "$1" "$2"; return $? @@ -24,7 +28,7 @@ if [[ -z "$cache" ]] || [[ ! -f "$cache/Vanilla-$version.jar" ]]; then if [[ $__RETURN -eq 0 ]]; then cd VanillaCord echo Launching VanillaCord - java -jar VanillaCord.jar "$version"; __RETURN=$?; + "$java" -jar VanillaCord.jar "$version"; __RETURN=$?; if [[ $__RETURN -eq 0 ]]; then echo Copying Finished Jar... cd ../ diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java index e5f2fe1e..78ec9fae 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java @@ -20,6 +20,10 @@ public class Executable { * @return */ public static String[] parse(String gitbash, String exec) { + if (exec.startsWith("java ")) { + exec = '\"' + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java" + '\"' + exec.substring(4); + } + String[] cmd; if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { if (gitbash != null && (exec.toLowerCase().startsWith("bash ") || exec.toLowerCase().startsWith("sh "))) diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java index 843a94fd..11bcd2f2 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java @@ -260,6 +260,7 @@ public class SubCreatorImpl { log.logger.info.println("Loading Template: " + template.getDisplayName()); ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketOutExLogMessage(address, "Loading Template: " + template.getDisplayName())); Util.copyDirectory(template.getDirectory(), dir); + var.put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"); var.put("mode", (update == null)?"CREATE":"UPDATE"); var.put("name", name); if (SubAPI.getInstance().getSubDataNetwork()[0] != null) var.put("host", SubAPI.getInstance().getName()); diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java index 9c8aac04..14ce4c3d 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java @@ -178,9 +178,11 @@ public class SubLoggerImpl { * Stop Logger */ public void stop() { - if (out != null) out.interrupt(); - if (err != null) err.interrupt(); - destroy(); + try { + if (out != null) out.interrupt(); + if (err != null) err.interrupt(); + destroy(); + } catch (NullPointerException e) {} } private void destroy() { diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubServerImpl.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubServerImpl.java index e64567b5..0d3dd053 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubServerImpl.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubServerImpl.java @@ -109,6 +109,7 @@ public class SubServerImpl { allowrestart = true; try { ProcessBuilder pb = new ProcessBuilder().command(Executable.parse(host.host.getRawString("Git-Bash"), executable)).directory(directory); + pb.environment().put("java", System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"); pb.environment().put("name", getName()); if (SubAPI.getInstance().getSubDataNetwork()[0] != null) pb.environment().put("host", SubAPI.getInstance().getName()); pb.environment().put("address", host.config.get().getMap("Settings").getRawString("Server-Bind"));