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
No known key found for this signature in database
GPG Key ID: C4E68E5647420E10
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.tasks.TaskAction
import org.gradle.kotlin.dsl.getByType
import java.io.File
import java.util.jar.JarFile
open class RunPaperServer : DefaultTask() {
init {
@ -15,11 +17,17 @@ open class RunPaperServer : DefaultTask() {
val minecraftServerDirectory = project.file(foundation.minecraftServerPath.get())
val paperJarFile = minecraftServerDirectory.resolve("paper.jar")
val mainClassName = readMainClass(paperJarFile)
project.javaexec {
classpath(paperJarFile.absolutePath)
workingDir(minecraftServerDirectory)
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 {
override fun execute(context: JobExecutionContext) {
val f = context.jobDetail.jobDataMap["function"] as () -> Unit
f()
@Suppress("UNCHECKED_CAST")
val function = context.jobDetail.jobDataMap["function"] as () -> Unit
function()
}
}