Gradle: runPaperServer should read Main-Class from manifest.

This commit is contained in:
Kenneth Endfinger
2022-01-15 16:15:11 -05:00
parent ef13c2371c
commit 93d1888537
2 changed files with 12 additions and 3 deletions

View File

@ -3,6 +3,8 @@ package cloud.kubelet.foundation.gradle
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.getByType
import java.io.File
import java.util.jar.JarFile
open class RunPaperServer : DefaultTask() { open class RunPaperServer : DefaultTask() {
init { init {
@ -15,11 +17,17 @@ open class RunPaperServer : DefaultTask() {
val minecraftServerDirectory = project.file(foundation.minecraftServerPath.get()) val minecraftServerDirectory = project.file(foundation.minecraftServerPath.get())
val paperJarFile = minecraftServerDirectory.resolve("paper.jar") val paperJarFile = minecraftServerDirectory.resolve("paper.jar")
val mainClassName = readMainClass(paperJarFile)
project.javaexec { project.javaexec {
classpath(paperJarFile.absolutePath) classpath(paperJarFile.absolutePath)
workingDir(minecraftServerDirectory) workingDir(minecraftServerDirectory)
args("nogui") args("nogui")
mainClass.set("io.papermc.paperclip.Main") mainClass.set(mainClassName)
} }
} }
private fun readMainClass(file: File): String = JarFile(file).use { jar ->
jar.manifest.mainAttributes.getValue("Main-Class")!!
}
} }

View File

@ -5,7 +5,8 @@ import org.quartz.JobExecutionContext
class SchedulerRunner : Job { class SchedulerRunner : Job {
override fun execute(context: JobExecutionContext) { override fun execute(context: JobExecutionContext) {
val f = context.jobDetail.jobDataMap["function"] as () -> Unit @Suppress("UNCHECKED_CAST")
f() val function = context.jobDetail.jobDataMap["function"] as () -> Unit
function()
} }
} }