From 9dd89c47ccd61bc219788389a058a71f8e64a7c6 Mon Sep 17 00:00:00 2001 From: Catnies Date: Wed, 19 Nov 2025 02:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E9=94=AE=E8=B5=B7?= =?UTF-8?q?=E9=A3=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + bukkit/paper-loader/build.gradle.kts | 59 ++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/.gitignore b/.gitignore index b914f987b..60e1aa00d 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ build/ !/libs/*.jar !/gradle/wrapper/*.jar .vscode/settings.json +/runPaper/ \ No newline at end of file diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index 38fe9e163..6ba4cdb54 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -1,8 +1,12 @@ import net.minecrell.pluginyml.paper.PaperPluginDescription +import xyz.jpenilla.runpaper.task.RunServer +import xyz.jpenilla.runtask.pluginsapi.DownloadPluginsSpec +import java.net.URI plugins { id("com.gradleup.shadow") version "9.2.2" id("de.eldoria.plugin-yml.paper") version "0.7.1" + id("xyz.jpenilla.run-paper") version "2.3.1" } repositories { @@ -170,3 +174,58 @@ tasks { relocate("io.netty.handler.codec.http2", "net.momirealms.craftengine.libraries.netty.handler.codec.http2") } } + +/** + * Register Run Dev Server Tasks + */ +listOf( + "1.21.10", + "1.21.8", + "1.21.5", + "1.21.4", + "1.21.2", + "1.21.1", + "1.20.6", + "1.20.4", + "1.20.2", + "1.20.1", +).forEach { + registerPaperTask(it) +} + +fun registerPaperTask( + version: String, + dirName: String = version, + javaVersion : Int = 21, + serverJar: File? = null, + downloadPlugins: Action? = null +) { + listOf(version, "${version}-with-viaversion").forEach { taskName -> + tasks.register(taskName, RunServer::class) { + group = "run dev server" + minecraftVersion(version) + serverJar?.let { serverJar(it) } + pluginJars.from(tasks.shadowJar.flatMap { it.archiveFile }) + runDirectory = rootProject.layout.projectDirectory.dir("runPaper/${dirName}") + javaLauncher = javaToolchains.launcherFor { + vendor = JvmVendorSpec.JETBRAINS + languageVersion = JavaLanguageVersion.of(javaVersion) + } + systemProperties["com.mojang.eula.agree"] = true + jvmArgs("-Ddisable.watchdog=true") + jvmArgs("-Xlog:redefine+class*=info") + jvmArgs("-XX:+AllowEnhancedClassRedefinition") + downloadPlugins?.let { downloadPlugins(it) } + downloadPlugins { + url("https://ci.viaversion.com/job/ViaVersion/lastBuild/artifact/build/libs/${getJenkinsArtifactFileName("https://ci.viaversion.com/job/ViaVersion/lastSuccessfulBuild/api/json?tree=artifacts[*]")}") + url("https://ci.viaversion.com/view/ViaBackwards/job/ViaBackwards/662/artifact/build/libs/${getJenkinsArtifactFileName("https://ci.viaversion.com/job/ViaBackwards/lastSuccessfulBuild/api/json?tree=artifacts[*]")}") + } + } + } +} + +fun getJenkinsArtifactFileName(url: String): String { + val response = URI.create(url).toURL().readText() + val regex = """"fileName":"([^"]+)"""".toRegex() + return regex.find(response)?.groupValues?.get(1) ?: throw Exception("fileName not found") +} \ No newline at end of file