98 lines
2.7 KiB
Kotlin
98 lines
2.7 KiB
Kotlin
plugins {
|
|
id("java-library")
|
|
id("xyz.jpenilla.run-paper") version "3.0.2"
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven("https://repo.papermc.io/repository/maven-public/")
|
|
maven("https://repo.dmulloy2.net/repository/public/")
|
|
}
|
|
|
|
val proguardConfig by configurations.creating
|
|
|
|
dependencies {
|
|
compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT")
|
|
compileOnly("com.comphenix.protocol:ProtocolLib:5.3.0")
|
|
proguardConfig("com.guardsquare:proguard-base:7.4.2")
|
|
}
|
|
|
|
java {
|
|
toolchain.languageVersion = JavaLanguageVersion.of(21)
|
|
}
|
|
|
|
tasks.withType<JavaCompile> {
|
|
options.encoding = "UTF-8"
|
|
}
|
|
|
|
val obfuscateTask = tasks.register<JavaExec>("obfuscate") {
|
|
description = "Obfuscate the plugin jar using ProGuard"
|
|
mainClass.set("proguard.ProGuard")
|
|
classpath = proguardConfig
|
|
|
|
val jarFile = tasks.named<Jar>("jar").get().archiveFile.get().asFile
|
|
// Write to separate dir — avoids conflicts with jar task output on Windows
|
|
val obfJar = layout.buildDirectory.file("obfuscated/${project.name}-${version}.jar").get().asFile
|
|
|
|
args(
|
|
"-injars", jarFile.path,
|
|
"-outjars", obfJar.path,
|
|
"-dontwarn",
|
|
"-ignorewarnings",
|
|
|
|
"-keep", "class dev.loki.mdbd",
|
|
"-keep", "class dev.loki.mdbdBootstrap",
|
|
"-keep", "class dev.loki.mdbdLoader",
|
|
"-keep", "class dev.loki.command.** { *; }",
|
|
"-keep", "class dev.loki.listener.** { *; }",
|
|
"-keepnames", "class dev.loki.**",
|
|
|
|
"-dontoptimize",
|
|
"-allowaccessmodification",
|
|
"-repackageclasses", "mdbd",
|
|
"-keepattributes", "Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,EnclosingMethod"
|
|
)
|
|
|
|
outputs.file(obfJar)
|
|
dependsOn(tasks.named("jar"))
|
|
}
|
|
|
|
// Save original jar as -orig, then replace with obfuscated
|
|
val jarName = "${project.name}-${version}"
|
|
|
|
tasks.register("saveOriginalJar") {
|
|
val jarSrc = layout.buildDirectory.file("libs/$jarName.jar")
|
|
val jarDst = layout.buildDirectory.file("libs/$jarName-orig.jar")
|
|
dependsOn(tasks.named("jar"))
|
|
inputs.file(jarSrc)
|
|
outputs.file(jarDst)
|
|
doLast {
|
|
jarSrc.get().asFile.copyTo(jarDst.get().asFile, overwrite = true)
|
|
}
|
|
}
|
|
|
|
tasks.register<Copy>("replaceWithObfuscated") {
|
|
dependsOn(obfuscateTask, "saveOriginalJar")
|
|
from(layout.buildDirectory.dir("obfuscated"))
|
|
include("$jarName.jar")
|
|
into(layout.buildDirectory.dir("libs"))
|
|
outputs.upToDateWhen { false }
|
|
}
|
|
|
|
tasks {
|
|
runServer {
|
|
minecraftVersion("1.21.1")
|
|
jvmArgs("-Xms2G", "-Xmx2G")
|
|
}
|
|
|
|
processResources {
|
|
val props = mapOf("version" to version)
|
|
filesMatching("*.yml") {
|
|
expand(props)
|
|
}
|
|
}
|
|
|
|
named("build") {
|
|
dependsOn("replaceWithObfuscated")
|
|
}
|
|
}
|