diff --git a/Main.java b/Main.java deleted file mode 100644 index 5f67c5a..0000000 --- a/Main.java +++ /dev/null @@ -1,99 +0,0 @@ -import java.lang.Runtime; -import java.util.ArrayList; -import java.net.URL; -import java.util.Scanner; -import java.io.InputStream; -import java.io.IOException; -import java.nio.file.StandardCopyOption; -import java.nio.file.*; -import java.net.MalformedURLException; -public class Main { - public static ArrayList servers = new ArrayList(); - public static ArrayList serverTypes = new ArrayList(); - - final String BASEURL = "https://knarcraft.net/Api/Download/bungeeminecraftserverlauncher/jars"; //The url we download jar files from. - final String BUKKITURL = BASEURL + "/Bukkit/"; - final String MCPCURL = BASEURL + "/MCPC+/"; - final String SPIGOT = BASEURL + "/Spigot/"; - - public static void main(String[] args) { - addServerTypes(); - } - - /** - * Adds all the valid server types and versions. - */ - public static void addServerTypes() { - //This could be changed to read from a list which is downloaded to the user's computer. - serverTypes.add(new ServerType("Vanilla", new String[]{"Latest", "1.12", "1.11.2", "1.10.2", "1.9.4", "1.8.9", "1.7.10", "1.6.4", "1.5.2", "1.4.7", "1.3.2", "1.2.5"})); - serverTypes.add(new ServerType("Snapshot", new String[]{"Latest"})); - serverTypes.add(new ServerType("SpongeVanilla", new String[]{"1.11.2", "1.10.2", "1.8.9"})); - serverTypes.add(new ServerType("Spigot", new String[]{"1.12", "1.11.2", "1.10.2", "1.9.4", "1.9", "1.8.8", "1.7.10", "1.6.4", "1.5.2", "1.4.7"})); - serverTypes.add(new ServerType("MCPCplus", new String[]{"1.6.4", "1.6.2", "1.5.2", "1.4.7"})); - serverTypes.add(new ServerType("Craftbukkit", new String[]{"1.12", "1.11.2", "1.10.2", "1.9.4", "1.8.8", "1.7.10", "1.6.4", "1.5.2", "1.4.6", "1.3.2", "1.2.5", "1.1", "1.0"})); - serverTypes.add(new ServerType("Custom", new String[]{""})); - } - - /** - * Runs all enabled servers with their settings. - */ - public static void startServers() { - //This should update the server status to running. The output should display in a custom commandline interface. - for (Server server : servers) { - if (server.isEnabled()) { - String path = server.getPath(); - String type = server.getType(); - String ram = server.maxRam(); - Runtime rt = Runtime.getRuntime(); - try { - Process pr = rt.exec("java -Xmx" + ram + " -Xms512M -jar " + "\"" + path + "\\" + type + "\" nogui"); - long pid = pr.pid(); - server.updatePid(pid); - System.out.println("Success"); - } catch (IOException e) { - System.out.println(e); - } - } - } - } - - /** - * Reads the first line of a file from a website. - * This is used to find the newest version of the software. - * - * @param path The full url of the file to read. - * @return True if successfull. False otherwise. - */ - public static boolean readFile(String path) { - //We might need to change this to look for specific lines in the file to find vanilla and snapshot versions. - //The version should probably be returned. Empty or null on failiure. - try { - URL url = new URL(path); - Scanner s = new Scanner(url.openStream()); - System.out.println(s.next()); - return true; - } catch (IOException e) { - System.out.println(e); - return false; - } - } - - /** - * Downloads a file from a website. - * - * @param path The full url of the file to download. - * @param outfile The file to save to. - * @return True if successful. False otherwise. - */ - public static boolean downloadFile(String path, Path outfile) { - try { - URL url = new URL("https://knarcraft.net/Api/View/Jawns/Jawns%20instructions.txt"); - InputStream in = url.openStream(); - Files.copy(in, outfile, StandardCopyOption.REPLACE_EXISTING); - return true; - } catch (IOException e) { - System.out.println(e); - return false; - } - } -} \ No newline at end of file diff --git a/src/serverlauncher/Main.java b/src/serverlauncher/Main.java new file mode 100644 index 0000000..5b06498 --- /dev/null +++ b/src/serverlauncher/Main.java @@ -0,0 +1,61 @@ +import serverlauncher.server.Server; +import serverlauncher.server.ServerType; + +import java.io.FileNotFoundException; +import java.lang.Runtime; +import java.util.ArrayList; +import java.io.IOException; +//Java 9 required. +public class Main { + private static ArrayList servers = new ArrayList<>(); + private static ArrayList serverTypes = new ArrayList<>(); + + public static void main(String[] args) { + addServerTypes(); + } + + // TODO: Add gui + + /** + * Adds all the valid server types and versions. + */ + private static void addServerTypes() { + //This could be changed to read from a list which is downloaded to the user's computer. + serverTypes.add(new ServerType("Vanilla", new String[]{"Latest", "1.12", "1.11.2", "1.10.2", "1.9.4", "1.8.9", "1.7.10", "1.6.4", "1.5.2", "1.4.7", "1.3.2", "1.2.5"})); + serverTypes.add(new ServerType("Snapshot", new String[]{"Latest"})); + serverTypes.add(new ServerType("SpongeVanilla", new String[]{"1.11.2", "1.10.2", "1.8.9"})); + serverTypes.add(new ServerType("Spigot", new String[]{"1.12", "1.11.2", "1.10.2", "1.9.4", "1.9", "1.8.8", "1.7.10", "1.6.4", "1.5.2", "1.4.7"})); + serverTypes.add(new ServerType("MCPCplus", new String[]{"1.6.4", "1.6.2", "1.5.2", "1.4.7"})); + serverTypes.add(new ServerType("Craftbukkit", new String[]{"1.12", "1.11.2", "1.10.2", "1.9.4", "1.8.8", "1.7.10", "1.6.4", "1.5.2", "1.4.6", "1.3.2", "1.2.5", "1.1", "1.0"})); + serverTypes.add(new ServerType("Custom", new String[]{""})); + } + + /** + * Runs all enabled servers with their settings. + */ + public static void startServers() { + //This should update the server status to running. The output should display in a custom commandline interface. + for (Server server : servers) { + if (server.isEnabled()) { + String path = server.getPath(); + String type = server.getType(); + try { + server.downloadJar(); + } catch (FileNotFoundException e) { + System.out.println("File was not found."); + return; + } + String ram = server.maxRam(); + Runtime rt = Runtime.getRuntime(); + try { + Process pr = rt.exec("java -Xmx" + ram + " -Xms512M -jar " + "\"" + path + "\\" + type + "\" nogui"); + long pid = pr.pid(); + server.updatePid(pid); + System.out.println("Success"); + } catch (IOException e) { + System.out.println("Error"); + } + } + } + } +} \ No newline at end of file