From c83339ce4293204d6ea7b40359ac2643d8c40fc4 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 12 Jun 2018 23:50:36 +0200 Subject: [PATCH] Made things configurable --- .idea/compiler.xml | 16 ++++ .idea/libraries/Maven__jline_jline_2_12.xml | 13 ++++ .idea/misc.xml | 11 +++ .idea/vcs.xml | 6 ++ pom.xml | 19 +++++ src/buttondevteam/serverrunner/Config.java | 18 +++++ .../serverrunner/ServerRunner.java | 75 +++++++------------ 7 files changed, 112 insertions(+), 46 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Maven__jline_jline_2_12.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/buttondevteam/serverrunner/Config.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..0382f1c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jline_jline_2_12.xml b/.idea/libraries/Maven__jline_jline_2_12.xml new file mode 100644 index 0000000..eaff5ff --- /dev/null +++ b/.idea/libraries/Maven__jline_jline_2_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9896aeb --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index af32a4f..16c2771 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.1.0 @@ -28,6 +29,18 @@ + + maven-shade-plugin + 3.1.1 + + + package + + shade + + + + @@ -36,5 +49,11 @@ jline 2.12 + + + org.yaml + snakeyaml + 1.21 + \ No newline at end of file diff --git a/src/buttondevteam/serverrunner/Config.java b/src/buttondevteam/serverrunner/Config.java new file mode 100644 index 0000000..29ca5e3 --- /dev/null +++ b/src/buttondevteam/serverrunner/Config.java @@ -0,0 +1,18 @@ +package buttondevteam.serverrunner; + +public class Config { + public String serverVersion; + public String serverParams; + public int restartAt; + + public Config(String serverVersion, String serverParams, int restartAt) { + this.serverVersion = serverVersion; + this.serverParams = serverParams; + this.restartAt = restartAt; + } + public Config() { + this.serverVersion = "1.12.2"; + this.serverParams = "-Djline.terminal=jline.UnixTerminal -Xms4G -Xmx6G"; + this.restartAt = 12; + } +} diff --git a/src/buttondevteam/serverrunner/ServerRunner.java b/src/buttondevteam/serverrunner/ServerRunner.java index 4bf4118..a3ba2cc 100644 --- a/src/buttondevteam/serverrunner/ServerRunner.java +++ b/src/buttondevteam/serverrunner/ServerRunner.java @@ -1,29 +1,24 @@ package buttondevteam.serverrunner; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.nio.charset.StandardCharsets; -import java.util.Calendar; -import java.util.TimeZone; -import java.util.regex.Pattern; - import jline.console.ConsoleReader; import jline.console.CursorBuffer; +import org.yaml.snakeyaml.Yaml; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.Calendar; +import java.util.Collections; +import java.util.TimeZone; +import java.util.regex.Pattern; public class ServerRunner { - private static final int RESTART_HOUR = 12; - private static final int RESTART_MESSAGE_COUNT = 60; private static final int interval = 24; // hours - private static volatile String server_version; // SET VERSION IN RUN.SH - private static volatile boolean stop = false; - private static volatile int restartcounter = RESTART_MESSAGE_COUNT; + private static int restartcounter = RESTART_MESSAGE_COUNT; private static volatile Process serverprocess; private static volatile PrintWriter serveroutput; private static volatile Thread rt; @@ -32,37 +27,24 @@ public class ServerRunner { private static volatile boolean customrestartfailed = false; - public static void main(String[] args) throws IOException, InterruptedException { - String minmem; - String maxmem; - if (args.length == 3) { - if ((!args[0].contains("G") && !args[0].contains("M")) - || (!args[1].contains("G") && !args[0].contains("M"))) { - System.out.println("Error: Invalid arguments."); - System.out.println("Usage: java -jar ServerRunner.jar "); - System.out.println("Example: java -jar ServerRunner.jar 1G 2G"); - return; - } - minmem = args[0]; - maxmem = args[1]; - server_version = args[2]; - } else { - System.out.println("Error: Wrong number of arguments."); - System.out.println("Usage: java -jar ServerRunner.jar "); - System.out.println("Example: java -jar ServerRunner.jar 1G 2G 1.9.2"); + public static void main(String[] args) throws IOException { + Yaml yaml = new Yaml(); + File f=new File("plugins/ServerRunner/config.yml"); + f.getParentFile().mkdirs(); + final Config config; + if(!f.exists()) + Files.write(f.toPath(), Collections.singleton(yaml.dump(config = new Config()))); + else + config=yaml.load(new FileInputStream(f)); + if (!new File("spigot-" + config.serverVersion + ".jar").exists()) { + System.out.println("The server JAR for " + config.serverVersion + " cannot be found!"); return; } - if (!new File("spigot-" + server_version + ".jar").exists()) { - System.out.println("The server JAR for " + server_version + " cannot be found!"); - return; - } - final String fminmem = minmem; - final String fmaxmem = maxmem; reader = new ConsoleReader(); reader.setPrompt("Runner>"); runnerout = new PrintWriter(reader.getOutput()); writeToScreen("Starting server..."); - serverprocess = startServer(minmem, maxmem); + serverprocess = startServer(config); serveroutput = new PrintWriter(serverprocess.getOutputStream()); rt = Thread.currentThread(); final Thread it = new Thread() { @@ -100,20 +82,22 @@ public class ServerRunner { writeToScreen("A server is already running!"); } if (Pattern.matches( - "[\\d\\d:\\d\\d:\\d\\d INFO]: Unknown command. Type \"/help\" for help.\\s+", line)) + "\\[\\d\\d:\\d\\d:\\d\\d INFO]: Unknown command. Type \"/help\" for help.\\s+", line)) customrestartfailed = true; } else if (!stop) { try { serverinput.close(); } catch (Exception e) { + e.printStackTrace(); } try { serveroutput.close(); } catch (Exception e) { + e.printStackTrace(); } writeToScreen("Server stopped! Restarting..."); - serverprocess = startServer(fminmem, fmaxmem); + serverprocess = startServer(config); serverinput = new BufferedReader(new InputStreamReader(serverprocess.getInputStream())); serveroutput = new PrintWriter(serverprocess.getOutputStream()); restartcounter = RESTART_MESSAGE_COUNT; @@ -131,7 +115,7 @@ public class ServerRunner { ot.setName("OutputThread"); ot.start(); Thread.currentThread().setName("RestarterThread"); - long starttime = syncStart(RESTART_HOUR); + long starttime = syncStart(config.restartAt); System.out.println("Restart scheduled in " + starttime / 3600000f); boolean firstrun = true; while (!stop) { @@ -175,9 +159,8 @@ public class ServerRunner { writeToScreen("Stopped " + Thread.currentThread().getName()); } - private static Process startServer(String minmem, String maxmem) throws IOException { - return Runtime.getRuntime().exec(new String[] { "java", "-Djline.terminal=jline.UnixTerminal", "-Xms" + minmem, - "-Xmx" + maxmem, "-XX:MaxPermSize=128M", "-jar", "spigot-" + server_version + ".jar" }); + private static Process startServer(Config config) throws IOException { + return Runtime.getRuntime().exec(("java "+config.serverParams+" -jar spigot-" + config.serverVersion + ".jar").split(" ")); } private static void sendMessage(PrintWriter output, String color, String text) {