From 50543ddd4e6ef50de6d5b906df4e8c5d8a530fff Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 09:56:41 +0200 Subject: [PATCH 01/13] Improve Server starter 'steamwar.devserver.gradle' See build.gradle.kts of BauSystem --- BauSystem/build.gradle.kts | 21 +++++ buildSrc/src/steamwar.devserver.gradle | 111 +++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 buildSrc/src/steamwar.devserver.gradle diff --git a/BauSystem/build.gradle.kts b/BauSystem/build.gradle.kts index 712238c8..423a8e98 100644 --- a/BauSystem/build.gradle.kts +++ b/BauSystem/build.gradle.kts @@ -1,3 +1,5 @@ +import DevServer + /* * This file is a part of the SteamWar software. * @@ -20,6 +22,7 @@ plugins { `java-library` alias(libs.plugins.shadow) + steamwar.devserver } tasks.build { @@ -34,3 +37,21 @@ dependencies { implementation(project(":BauSystem:BauSystem_20")) implementation(project(":BauSystem:BauSystem_21")) } + +tasks.register("DevBau20") { + group = "run" + description = "Run a 1.20 Dev Bau" + dependsOn(":SpigotCore:shadowJar") + dependsOn(":BauSystem:shadowJar") + worldName = "245" + template = "Bau20" +} + +tasks.register("DevBau21") { + group = "run" + description = "Run a 1.21 Dev Bau" + dependsOn(":SpigotCore:shadowJar") + dependsOn(":BauSystem:shadowJar") + worldName = "245" + template = "Bau21" +} diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle new file mode 100644 index 00000000..22993d27 --- /dev/null +++ b/buildSrc/src/steamwar.devserver.gradle @@ -0,0 +1,111 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import org.gradle.api.DefaultTask +import org.gradle.api.GradleException +import org.gradle.api.Project +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.bundling.AbstractArchiveTask + +plugins { +} + +class DevServer extends DefaultTask { + + @Input + worldName = "" + + @Input + template = "" + + DevServer() { + super() + doLast { + uploadDependencies() + startDevServer() + } + finalizedBy(new Finalizer()) + } + + @Internal + def BufferedWriter processInput; + + class Finalizer extends DefaultTask { + + Finalizer() { + super() + doLast { + if (processInput != null) { + processInput.write("stop\n") + processInput.flush() + } + } + } + } + + void uploadDependencies() { + this.dependsOn.forEach { + Project resolved; + if (it instanceof Project) { + resolved = (Project) it; + } else if (it instanceof String) { + resolved = project.findProject(it.substring(0, it.lastIndexOf(':'))) + } else { + throw new GradleException("Illegal argument for uploading dependencies") + } + + def archive = ((AbstractArchiveTask) resolved.tasks.findByName("shadowJar")).archiveFile.get().asFile + println("Uploading $archive to ~/plugins/${template}") + new ProcessBuilder("scp", archive.absolutePath, "sw:~/plugins/$template/${archive.name.replace("-all", "")}").start().waitFor() + println("Uploaded $archive to ~/plugins/${template}") + } + } + + void startDevServer() { + println("Starting $template with world $worldName and plugins in ~/plugins/${template}") + + def process = new ProcessBuilder("ssh", "sw", "-T", "dev.py -w $worldName -p plugins/$template $template").start(); + def running = true; + def processOutput = new BufferedReader(new InputStreamReader(process.inputStream)) + new Thread({ + while (running) { + if (processOutput.ready()) { + println(processOutput.readLine()) + } + } + }).start() + + processInput = new BufferedWriter(new OutputStreamWriter(process.outputStream)) + def input = new BufferedReader(new InputStreamReader(System.in)) + new Thread({ + while (running) { + def text = input.readLine() + if (text == null) break + processInput.write(text) + processInput.newLine() + processInput.flush() + } + }).start() + + process.waitFor() + processInput = null + running = false + } +} \ No newline at end of file From e393aad25ff0edba0305ea87636a1b0add6f238b Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 10:07:50 +0200 Subject: [PATCH 02/13] Add all parameters that dev.py has --- buildSrc/src/steamwar.devserver.gradle | 43 ++++++++++++++++++-------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 22993d27..35bfcab1 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -16,24 +16,33 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ - -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.Project -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.bundling.AbstractArchiveTask - plugins { } class DevServer extends DefaultTask { @Input - worldName = "" + @Optional + String worldName = null @Input - template = "" + String template = null + + @Input + @Optional + Integer port = null + + @Input + @Optional + Boolean profile = false + + @Input + @Optional + Boolean forceUpgrade = false + + @Input + @Optional + String jar = null DevServer() { super() @@ -45,7 +54,7 @@ class DevServer extends DefaultTask { } @Internal - def BufferedWriter processInput; + BufferedWriter processInput; class Finalizer extends DefaultTask { @@ -79,9 +88,17 @@ class DevServer extends DefaultTask { } void startDevServer() { - println("Starting $template with world $worldName and plugins in ~/plugins/${template}") + def devPy = new StringBuilder().append("dev.py") + if (port != null) devPy.append(" --port $port") + if (worldName != null) devPy.append(" -w $worldName") + devPy.append(" -p plugins/$template") + if (profile) devPy.append(" --profile") + if (forceUpgrade) devPy.append(" --forceUpgrade") + if (jar != null) devPy.append(" --jar $jar") + println("Starting $template with command ${devPy.toString()}") + devPy.append(" $template") - def process = new ProcessBuilder("ssh", "sw", "-T", "dev.py -w $worldName -p plugins/$template $template").start(); + def process = new ProcessBuilder("ssh", "sw", "-T", devPy.toString()).start(); def running = true; def processOutput = new BufferedReader(new InputStreamReader(process.inputStream)) new Thread({ From 32703c6659e024954ca1c87281702698df664d21 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 10:40:50 +0200 Subject: [PATCH 03/13] Enable Velocity, prio Setup needed for that --- VelocityCore/build.gradle.kts | 10 +++++++- buildSrc/src/steamwar.devserver.gradle | 34 +++++++++++++++----------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/VelocityCore/build.gradle.kts b/VelocityCore/build.gradle.kts index 844e9f21..90d43d36 100644 --- a/VelocityCore/build.gradle.kts +++ b/VelocityCore/build.gradle.kts @@ -66,4 +66,12 @@ dependencies { implementation(libs.apolloprotos) implementation(libs.nbt) -} \ No newline at end of file +} + +tasks.register("DevVelocity") { + group = "run" + description = "Run a Dev Velocity" + dependsOn(":VelocityCore:shadowJar") + dependsOn(":VelocityCore:Persistent:jar") + template = "Velocity" +} diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 35bfcab1..eb1dec46 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -71,16 +71,16 @@ class DevServer extends DefaultTask { void uploadDependencies() { this.dependsOn.forEach { - Project resolved; - if (it instanceof Project) { - resolved = (Project) it; - } else if (it instanceof String) { + Project resolved + AbstractArchiveTask archiveTask + if (it instanceof String) { resolved = project.findProject(it.substring(0, it.lastIndexOf(':'))) + archiveTask = (AbstractArchiveTask) resolved.tasks.findByName(it.substring(it.lastIndexOf(':') + 1)) } else { throw new GradleException("Illegal argument for uploading dependencies") } - def archive = ((AbstractArchiveTask) resolved.tasks.findByName("shadowJar")).archiveFile.get().asFile + def archive = archiveTask.archiveFile.get().asFile println("Uploading $archive to ~/plugins/${template}") new ProcessBuilder("scp", archive.absolutePath, "sw:~/plugins/$template/${archive.name.replace("-all", "")}").start().waitFor() println("Uploaded $archive to ~/plugins/${template}") @@ -88,15 +88,21 @@ class DevServer extends DefaultTask { } void startDevServer() { - def devPy = new StringBuilder().append("dev.py") - if (port != null) devPy.append(" --port $port") - if (worldName != null) devPy.append(" -w $worldName") - devPy.append(" -p plugins/$template") - if (profile) devPy.append(" --profile") - if (forceUpgrade) devPy.append(" --forceUpgrade") - if (jar != null) devPy.append(" --jar $jar") - println("Starting $template with command ${devPy.toString()}") - devPy.append(" $template") + def devPy = new StringBuilder() + if (template.endsWith("Velocity")) { + devPy.append("cd DevVelocity") + devPy.append("; java -jar Velocity.jar --port 25566") + } else { + devPy.append("dev.py") + if (port != null) devPy.append(" --port $port") + if (worldName != null) devPy.append(" -w $worldName") + devPy.append(" -p plugins/$template") + if (profile) devPy.append(" --profile") + if (forceUpgrade) devPy.append(" --forceUpgrade") + if (jar != null) devPy.append(" --jar $jar") + println("Starting $template with command ${devPy.toString()}") + devPy.append(" $template") + } def process = new ProcessBuilder("ssh", "sw", "-T", devPy.toString()).start(); def running = true; From 9001e83321575f3b5fa186bc3e8079e66350563e Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 15:24:12 +0200 Subject: [PATCH 04/13] Add steamwar.properties 'worldName' and 'host' Remove some options --- BauSystem/build.gradle.kts | 5 ---- buildSrc/src/steamwar.devserver.gradle | 39 +++++++++++++++++--------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/BauSystem/build.gradle.kts b/BauSystem/build.gradle.kts index 423a8e98..fd9dca11 100644 --- a/BauSystem/build.gradle.kts +++ b/BauSystem/build.gradle.kts @@ -1,5 +1,3 @@ -import DevServer - /* * This file is a part of the SteamWar software. * @@ -22,7 +20,6 @@ import DevServer plugins { `java-library` alias(libs.plugins.shadow) - steamwar.devserver } tasks.build { @@ -43,7 +40,6 @@ tasks.register("DevBau20") { description = "Run a 1.20 Dev Bau" dependsOn(":SpigotCore:shadowJar") dependsOn(":BauSystem:shadowJar") - worldName = "245" template = "Bau20" } @@ -52,6 +48,5 @@ tasks.register("DevBau21") { description = "Run a 1.21 Dev Bau" dependsOn(":SpigotCore:shadowJar") dependsOn(":BauSystem:shadowJar") - worldName = "245" template = "Bau21" } diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index eb1dec46..734bc88d 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -32,20 +32,30 @@ class DevServer extends DefaultTask { @Optional Integer port = null - @Input - @Optional - Boolean profile = false - - @Input - @Optional - Boolean forceUpgrade = false - @Input @Optional String jar = null DevServer() { super() + doFirst { + List projects = [] + projects.add(project) + while (projects.first.parent != null) { + projects.add(0, projects.first.parent) + } + + def properties = new Properties() + projects.forEach { + def file = new File(it.projectDir, "steamwar.properties") + if (file.exists()) { + properties.load(new FileInputStream(file)) + } + } + + if (worldName == null) worldName = properties.get("worldName") + host = properties.get("host") + } doLast { uploadDependencies() startDevServer() @@ -54,7 +64,10 @@ class DevServer extends DefaultTask { } @Internal - BufferedWriter processInput; + BufferedWriter processInput + + @Internal + String host class Finalizer extends DefaultTask { @@ -82,14 +95,14 @@ class DevServer extends DefaultTask { def archive = archiveTask.archiveFile.get().asFile println("Uploading $archive to ~/plugins/${template}") - new ProcessBuilder("scp", archive.absolutePath, "sw:~/plugins/$template/${archive.name.replace("-all", "")}").start().waitFor() + new ProcessBuilder("scp", archive.absolutePath, "$host:~/plugins/$template/${archive.name.replace("-all", "")}").start().waitFor() println("Uploaded $archive to ~/plugins/${template}") } } void startDevServer() { def devPy = new StringBuilder() - if (template.endsWith("Velocity")) { + if (template.endsWith("Velocity")) { // TODO Add this to the dev.py! devPy.append("cd DevVelocity") devPy.append("; java -jar Velocity.jar --port 25566") } else { @@ -97,14 +110,12 @@ class DevServer extends DefaultTask { if (port != null) devPy.append(" --port $port") if (worldName != null) devPy.append(" -w $worldName") devPy.append(" -p plugins/$template") - if (profile) devPy.append(" --profile") - if (forceUpgrade) devPy.append(" --forceUpgrade") if (jar != null) devPy.append(" --jar $jar") println("Starting $template with command ${devPy.toString()}") devPy.append(" $template") } - def process = new ProcessBuilder("ssh", "sw", "-T", devPy.toString()).start(); + def process = new ProcessBuilder("ssh", host, "-T", devPy.toString()).start(); def running = true; def processOutput = new BufferedReader(new InputStreamReader(process.inputStream)) new Thread({ From 335649fa873dd02d385a888be473e466efb03691 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 20:36:16 +0200 Subject: [PATCH 05/13] Fix steamwar.devserver.gradle --- VelocityCore/build.gradle.kts | 2 +- buildSrc/src/steamwar.devserver.gradle | 37 +++++++++++++------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/VelocityCore/build.gradle.kts b/VelocityCore/build.gradle.kts index 90d43d36..f81416a3 100644 --- a/VelocityCore/build.gradle.kts +++ b/VelocityCore/build.gradle.kts @@ -73,5 +73,5 @@ tasks.register("DevVelocity") { description = "Run a Dev Velocity" dependsOn(":VelocityCore:shadowJar") dependsOn(":VelocityCore:Persistent:jar") - template = "Velocity" + template = "DevVelocity" } diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 734bc88d..d38f465a 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -55,6 +55,13 @@ class DevServer extends DefaultTask { if (worldName == null) worldName = properties.get("worldName") host = properties.get("host") + + if (worldName == null) { + throw new GradleException("Please supply the 'worldName' in a 'steamwar.properties' files either in this project dir or any parent project!") + } + if (host == null) { + throw new GradleException("Please supply the 'host' in a 'steamwar.properties' files either in this project dir or any parent project!") + } } doLast { uploadDependencies() @@ -75,7 +82,7 @@ class DevServer extends DefaultTask { super() doLast { if (processInput != null) { - processInput.write("stop\n") + processInput.write(template.endsWith("Velocity") ? "end\n" : "stop\n") processInput.flush() } } @@ -94,28 +101,22 @@ class DevServer extends DefaultTask { } def archive = archiveTask.archiveFile.get().asFile - println("Uploading $archive to ~/plugins/${template}") - new ProcessBuilder("scp", archive.absolutePath, "$host:~/plugins/$template/${archive.name.replace("-all", "")}").start().waitFor() - println("Uploaded $archive to ~/plugins/${template}") + println("Uploading $archive to ~/$template/plugins") + new ProcessBuilder("scp", archive.absolutePath, "$host:~/$template/plugins/${archive.name.replace("-all", "")}").start().waitFor() + println("Uploaded $archive to ~/$template/plugins") } } void startDevServer() { - def devPy = new StringBuilder() - if (template.endsWith("Velocity")) { // TODO Add this to the dev.py! - devPy.append("cd DevVelocity") - devPy.append("; java -jar Velocity.jar --port 25566") - } else { - devPy.append("dev.py") - if (port != null) devPy.append(" --port $port") - if (worldName != null) devPy.append(" -w $worldName") - devPy.append(" -p plugins/$template") - if (jar != null) devPy.append(" --jar $jar") - println("Starting $template with command ${devPy.toString()}") - devPy.append(" $template") - } + def devPy = new StringBuilder().append("./dev.py") + if (port != null) devPy.append(" --port $port") + if (worldName != null) devPy.append(" -w $template/$worldName") + devPy.append(" -p $template/plugins") + if (jar != null) devPy.append(" --jar $jar") + println("Starting $template with command ${devPy.toString()}") + devPy.append(" $template") - def process = new ProcessBuilder("ssh", host, "-T", devPy.toString()).start(); + def process = new ProcessBuilder("ssh", host, "-T", devPy.toString()).start() def running = true; def processOutput = new BufferedReader(new InputStreamReader(process.inputStream)) new Thread({ From 5669725f9bb7e1d328ed53b9eb5ee6b11aa7d73e Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 17 Apr 2025 20:54:32 +0200 Subject: [PATCH 06/13] Fix dev.py path --- buildSrc/src/steamwar.devserver.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index d38f465a..847fe64f 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -36,6 +36,8 @@ class DevServer extends DefaultTask { @Optional String jar = null + // Add Configs for FightServer! + DevServer() { super() doFirst { @@ -108,7 +110,7 @@ class DevServer extends DefaultTask { } void startDevServer() { - def devPy = new StringBuilder().append("./dev.py") + def devPy = new StringBuilder().append("dev.py") if (port != null) devPy.append(" --port $port") if (worldName != null) devPy.append(" -w $template/$worldName") devPy.append(" -p $template/plugins") From 4edfd32ff50599f83a8680925257a071d9b09ed5 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 07:53:46 +0200 Subject: [PATCH 07/13] Add a check if the template exists in the user.home directory --- buildSrc/src/steamwar.devserver.gradle | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 847fe64f..410b8c9c 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -66,6 +66,7 @@ class DevServer extends DefaultTask { } } doLast { + checkHasTemplate() uploadDependencies() startDevServer() } @@ -91,6 +92,14 @@ class DevServer extends DefaultTask { } } + void checkHasTemplate() { + def process = new ProcessBuilder("ssh", host, "-T", "ls $template").start() + process.waitFor() + if (new BufferedReader(new InputStreamReader(process.inputStream)).lines().count() < 4) { + throw new GradleException("Used template is not in your user.home directory of the given host $host") + } + } + void uploadDependencies() { this.dependsOn.forEach { Project resolved @@ -104,6 +113,7 @@ class DevServer extends DefaultTask { def archive = archiveTask.archiveFile.get().asFile println("Uploading $archive to ~/$template/plugins") + new ProcessBuilder("ssh", host, "-T", "rm $template/plugins/${archive.name.replace("-all", "")}").start().waitFor() new ProcessBuilder("scp", archive.absolutePath, "$host:~/$template/plugins/${archive.name.replace("-all", "")}").start().waitFor() println("Uploaded $archive to ~/$template/plugins") } From 76e00b07db1b8f2a1edcd83eff65120c132be0e9 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 08:00:55 +0200 Subject: [PATCH 08/13] Add plugins option to DevServer Task --- buildSrc/src/steamwar.devserver.gradle | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 410b8c9c..339193cd 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -28,6 +28,10 @@ class DevServer extends DefaultTask { @Input String template = null + @Input + @Optional + String plugins = null + @Input @Optional Integer port = null @@ -101,6 +105,8 @@ class DevServer extends DefaultTask { } void uploadDependencies() { + def base = plugins == null ? "$template/plugins" : plugins + println("Uploading to ~/$base") this.dependsOn.forEach { Project resolved AbstractArchiveTask archiveTask @@ -112,10 +118,10 @@ class DevServer extends DefaultTask { } def archive = archiveTask.archiveFile.get().asFile - println("Uploading $archive to ~/$template/plugins") - new ProcessBuilder("ssh", host, "-T", "rm $template/plugins/${archive.name.replace("-all", "")}").start().waitFor() - new ProcessBuilder("scp", archive.absolutePath, "$host:~/$template/plugins/${archive.name.replace("-all", "")}").start().waitFor() - println("Uploaded $archive to ~/$template/plugins") + println("Uploading $archive") + new ProcessBuilder("ssh", host, "-T", "rm $base/${archive.name.replace("-all", "")}").start().waitFor() + new ProcessBuilder("scp", archive.absolutePath, "$host:~/$base/${archive.name.replace("-all", "")}").start().waitFor() + println("Uploaded $archive") } } @@ -123,7 +129,7 @@ class DevServer extends DefaultTask { def devPy = new StringBuilder().append("dev.py") if (port != null) devPy.append(" --port $port") if (worldName != null) devPy.append(" -w $template/$worldName") - devPy.append(" -p $template/plugins") + if (plugins != null) devPy.append(" -p $plugins") if (jar != null) devPy.append(" --jar $jar") println("Starting $template with command ${devPy.toString()}") devPy.append(" $template") From 86ff619548de30c97e430b911e433d066146f155 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 08:20:59 +0200 Subject: [PATCH 09/13] Add FightServer to configure those --- buildSrc/src/steamwar.devserver.gradle | 65 +++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 339193cd..f40eefb1 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -40,7 +40,9 @@ class DevServer extends DefaultTask { @Optional String jar = null - // Add Configs for FightServer! + @Input + @Optional + Map dParams = {} DevServer() { super() @@ -131,6 +133,9 @@ class DevServer extends DefaultTask { if (worldName != null) devPy.append(" -w $template/$worldName") if (plugins != null) devPy.append(" -p $plugins") if (jar != null) devPy.append(" --jar $jar") + for (Map.Entry dParam : dParams.entrySet()) { + devPy.append("-D${dParam.key}=${dParam.value}") + } println("Starting $template with command ${devPy.toString()}") devPy.append(" $template") @@ -161,4 +166,62 @@ class DevServer extends DefaultTask { processInput = null running = false } +} + +class FightServer extends DevServer { + + @Input + @Optional + int checkSchemID = 0 + + @Input + @Optional + int prepareSchemID = 0 + + @Input + @Optional + int replay = 0 + + @Input + @Optional + String config = null + + @Input + @Optional + // Property: fightID + int eventKampfID = 0 + + @Input + @Optional + UUID blueLeader = null + + @Input + @Optional + UUID redLeader = null + + FightServer() { + super() + doFirst { + { + int count = 0 + if (checkSchemID != 0) count++ + if (prepareSchemID != 0) count++ + if (replay != 0) count++ + if (eventKampfID != 0) count++ + if (count > 1) { + throw new GradleException("You can only set one of 'checkSchemID', 'prepareSchemID', 'replay' and 'eventKampfID'") + } + if (checkSchemID != 0) dParams.put("checkSchemID", "$checkSchemID") + if (prepareSchemID != 0) dParams.put("prepareSchemID", "$prepareSchemID") + if (replay != 0) dParams.put("replay", "$replay") + if (eventKampfID != 0) dParams.put("fightID", "$eventKampfID") + } + if (blueLeader != null && redLeader == null || blueLeader == null && redLeader != null) { + logger.log(LogLevel.WARN, "Please provide both a blue and a red leader. If this is intended ignore this message!") + } + if (blueLeader != null) dParams.put("blueLeader", blueLeader.toString()) + if (redLeader != null) dParams.put("redLeader", redLeader.toString()) + if (config != null) dParams.put("config", config) + } + } } \ No newline at end of file From 059dd314d18284730add43a56613b5ec8b430863 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 10:07:23 +0200 Subject: [PATCH 10/13] Fix building of DevServer --- buildSrc/src/steamwar.devserver.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index f40eefb1..feeadce2 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -42,7 +42,7 @@ class DevServer extends DefaultTask { @Input @Optional - Map dParams = {} + Map dParams = new HashMap<>() DevServer() { super() From 925901e40e2093fc97a32cd5444746596c25d031 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 14:15:39 +0200 Subject: [PATCH 11/13] Fix steamwar.devserver.gradle --- buildSrc/src/steamwar.devserver.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index feeadce2..664ee95e 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -64,9 +64,6 @@ class DevServer extends DefaultTask { if (worldName == null) worldName = properties.get("worldName") host = properties.get("host") - if (worldName == null) { - throw new GradleException("Please supply the 'worldName' in a 'steamwar.properties' files either in this project dir or any parent project!") - } if (host == null) { throw new GradleException("Please supply the 'host' in a 'steamwar.properties' files either in this project dir or any parent project!") } From 83c20729fa980488e3d0709087ed06da5a322cea Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 18 Apr 2025 14:52:27 +0200 Subject: [PATCH 12/13] Fix RAM usage on multiple usages --- buildSrc/src/steamwar.devserver.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 664ee95e..72f14168 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -82,11 +82,15 @@ class DevServer extends DefaultTask { @Internal String host + @Internal + Boolean running = true + class Finalizer extends DefaultTask { Finalizer() { super() doLast { + running = false if (processInput != null) { processInput.write(template.endsWith("Velocity") ? "end\n" : "stop\n") processInput.flush() @@ -137,7 +141,6 @@ class DevServer extends DefaultTask { devPy.append(" $template") def process = new ProcessBuilder("ssh", host, "-T", devPy.toString()).start() - def running = true; def processOutput = new BufferedReader(new InputStreamReader(process.inputStream)) new Thread({ while (running) { From 3df84a7dadab125eb19a1df9fe4d7c926fec28b3 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sun, 20 Apr 2025 20:40:19 +0200 Subject: [PATCH 13/13] Update from PR --- buildSrc/src/steamwar.devserver.gradle | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 72f14168..1879bf87 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -202,23 +202,10 @@ class FightServer extends DevServer { FightServer() { super() doFirst { - { - int count = 0 - if (checkSchemID != 0) count++ - if (prepareSchemID != 0) count++ - if (replay != 0) count++ - if (eventKampfID != 0) count++ - if (count > 1) { - throw new GradleException("You can only set one of 'checkSchemID', 'prepareSchemID', 'replay' and 'eventKampfID'") - } - if (checkSchemID != 0) dParams.put("checkSchemID", "$checkSchemID") - if (prepareSchemID != 0) dParams.put("prepareSchemID", "$prepareSchemID") - if (replay != 0) dParams.put("replay", "$replay") - if (eventKampfID != 0) dParams.put("fightID", "$eventKampfID") - } - if (blueLeader != null && redLeader == null || blueLeader == null && redLeader != null) { - logger.log(LogLevel.WARN, "Please provide both a blue and a red leader. If this is intended ignore this message!") - } + if (checkSchemID != 0) dParams.put("checkSchemID", "$checkSchemID") + if (prepareSchemID != 0) dParams.put("prepareSchemID", "$prepareSchemID") + if (replay != 0) dParams.put("replay", "$replay") + if (eventKampfID != 0) dParams.put("fightID", "$eventKampfID") if (blueLeader != null) dParams.put("blueLeader", blueLeader.toString()) if (redLeader != null) dParams.put("redLeader", redLeader.toString()) if (config != null) dParams.put("config", config)