From 91a0fabde995c9cdd5323e6f6c76358171902f40 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 12 Apr 2021 10:49:52 +0200 Subject: [PATCH] Fix weird stopping behaviour --- build.gradle | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index f00f568..39a610d 100644 --- a/build.gradle +++ b/build.gradle @@ -93,13 +93,14 @@ task finalizeProject { build.finalizedBy(finalizeProject) if (project.hasProperty("hostname")) { + def server = "Dev1.15" + // def server = "Developer" + task uploadProject { description 'Upload this project' group "Steamwar" doLast { - def server = "Dev1.15" - // def server = "Developer" await(shell("scp ${libs}/${jarName} ${hostname}:~/${server}/plugins")) if (!answer("Start ${server} server?")) { return @@ -107,6 +108,15 @@ if (project.hasProperty("hostname")) { serverStart(server) } } + + task startDevServer { + description 'Start the DevServer' + group "Steamwar" + + doLast { + serverStart(server) + } + } } def await(Process proc) { @@ -127,12 +137,32 @@ def shell(String command) { def serverStart(String serverName) { def proc = shell("ssh -t ${hostname} \"./mc ${serverName}\"") - Thread outputThread = proc.consumeProcessOutputStream(System.out) + Thread outputThread = new Thread({ + Reader reader = proc.getInputStream().newReader(); + Writer writer = System.out.newWriter(); + try { + while (proc.alive) { + String s = reader.readLine() + if (s == null) { + return + } + if (s.contains("SteamWar? Unbekannter Befehl.")) { + continue + } + writer.write(s + "\n") + writer.flush() + } + } catch (IOException e) { + // Ignored + } + }) outputThread.setName("${serverName} - OutputThread") + outputThread.start() + Writer writer Thread inputThread = new Thread({ Reader reader = System.in.newReader() - Writer writer = proc.getOutputStream().newWriter() + writer = proc.getOutputStream().newWriter() try { while (proc.alive) { String s = reader.readLine() @@ -150,11 +180,14 @@ def serverStart(String serverName) { if (!proc.alive) { return } - Writer writer = proc.getOutputStream().newWriter() + writer = proc.getOutputStream().newWriter() writer.write("stop\n") writer.flush() - proc.getInputStream().close() + while (proc.alive) { + Thread.sleep(10) + } + proc.closeStreams() outputThread.interrupt() inputThread.interrupt() }