mirror of
https://github.com/GayPizzaSpecifications/foundation.git
synced 2025-09-17 08:51:31 +00:00
Gradle: runPaperServer should read Main-Class from manifest.
This commit is contained in:
@ -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")!!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user