mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
231 lines
9.7 KiB
Plaintext
231 lines
9.7 KiB
Plaintext
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 {
|
|
maven("https://jitpack.io/")
|
|
maven("https://repo.papermc.io/repository/maven-public/")
|
|
maven("https://repo.momirealms.net/releases/")
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
// Platform
|
|
compileOnly("io.papermc.paper:paper-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT")
|
|
|
|
implementation(project(":core"))
|
|
implementation(project(":bukkit"))
|
|
implementation(project(":bukkit:legacy"))
|
|
implementation(project(":bukkit:compatibility"))
|
|
implementation(project(":bukkit:compatibility:legacy"))
|
|
implementation(project(":common-files"))
|
|
|
|
// concurrentutil
|
|
implementation(files("${rootProject.rootDir}/libs/concurrentutil-${rootProject.properties["concurrent_util_version"]}.jar"))
|
|
|
|
implementation("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}")
|
|
implementation("net.momirealms:antigrieflib:${rootProject.properties["anti_grief_version"]}")
|
|
implementation("net.momirealms:craft-engine-nms-helper-mojmap:${rootProject.properties["nms_helper_version"]}")
|
|
}
|
|
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_21
|
|
targetCompatibility = JavaVersion.VERSION_21
|
|
toolchain {
|
|
languageVersion = JavaLanguageVersion.of(21)
|
|
}
|
|
}
|
|
|
|
tasks.withType<JavaCompile> {
|
|
options.encoding = "UTF-8"
|
|
options.release.set(21)
|
|
dependsOn(tasks.clean)
|
|
}
|
|
|
|
paper {
|
|
load = net.minecrell.pluginyml.bukkit.BukkitPluginDescription.PluginLoadOrder.STARTUP
|
|
main = "net.momirealms.craftengine.bukkit.plugin.PaperCraftEnginePlugin"
|
|
bootstrapper = "net.momirealms.craftengine.bukkit.plugin.PaperCraftEngineBootstrap"
|
|
version = rootProject.properties["project_version"] as String
|
|
name = "CraftEngine"
|
|
apiVersion = "1.20"
|
|
authors = listOf("XiaoMoMi")
|
|
contributors = listOf("https://github.com/Xiao-MoMi/craft-engine/graphs/contributors")
|
|
foliaSupported = true
|
|
serverDependencies {
|
|
// WorldEdit
|
|
register("WorldEdit") {
|
|
required = false
|
|
load = PaperPluginDescription.RelativeLoadOrder.BEFORE
|
|
}
|
|
register("FastAsyncWorldEdit") {
|
|
required = false
|
|
load = PaperPluginDescription.RelativeLoadOrder.BEFORE
|
|
joinClasspath = false
|
|
}
|
|
|
|
register("PlaceholderAPI") { required = false }
|
|
register("Skript") { required = false }
|
|
register("LuckPerms") { required = false }
|
|
register("ViaVersion") { required = false }
|
|
register("QuickShop-Hikari") { required = false }
|
|
|
|
// AdvancedSlimePaper
|
|
register("SlimeWorldPlugin") { required = false }
|
|
register("SlimeWorldManager") { required = false }
|
|
register("ASPaperPlugin") { required = false }
|
|
|
|
// external tag
|
|
register("CustomNameplates") { required = false }
|
|
|
|
// external models
|
|
register("ModelEngine") { required = false }
|
|
register("BetterModel") { required = false }
|
|
|
|
// external items
|
|
register("NeigeItems") { required = false }
|
|
register("MMOItems") { required = false }
|
|
register("MythicMobs") { required = false }
|
|
register("CustomFishing") { required = false }
|
|
register("Zaphkiel") { required = false }
|
|
register("HeadDatabase") { required = false }
|
|
register("SX-Item") { required = false }
|
|
register("Slimefun") { required = false }
|
|
register("Nexo") { required = false }
|
|
|
|
// leveler
|
|
register("AuraSkills") { required = false }
|
|
register("AureliumSkills") { required = false }
|
|
register("McMMO") { required = false }
|
|
register("MMOCore") { required = false }
|
|
register("Jobs") { required = false }
|
|
register("EcoSkills") { required = false }
|
|
register("EcoJobs") { required = false }
|
|
|
|
// anti grief lib
|
|
register("Dominion") { required = false }
|
|
register("WorldGuard") { required = false }
|
|
register("Kingdoms") { required = false }
|
|
register("Lands") { required = false }
|
|
register("IridiumSkyblock") { required = false }
|
|
register("CrashClaim") { required = false }
|
|
register("GriefDefender") { required = false }
|
|
register("HuskClaims") { required = false }
|
|
register("BentoBox") { required = false }
|
|
register("HuskTowns") { required = false }
|
|
register("PlotSquared") { required = false }
|
|
register("Residence") { required = false }
|
|
register("SuperiorSkyblock2") { required = false }
|
|
register("Towny") { required = false }
|
|
register("FabledSkyBlock") { required = false }
|
|
register("GriefPrevention") { required = false }
|
|
register("RedProtect") { required = false }
|
|
register("Landlord") { required = false }
|
|
register("uSkyBlock") { required = false }
|
|
register("XClaim") { required = false }
|
|
register("UltimateClaims") { required = false }
|
|
register("UltimateClans") { required = false }
|
|
register("PreciousStones") { required = false }
|
|
register("hClaims") { required = false }
|
|
register("Factions") { required = false }
|
|
register("NoBuildPlus") { required = false }
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
implementation(tasks.shadowJar)
|
|
}
|
|
|
|
tasks {
|
|
shadowJar {
|
|
manifest {
|
|
attributes["paperweight-mappings-namespace"] = "mojang"
|
|
}
|
|
archiveFileName = "${rootProject.name}-paper-plugin-${rootProject.properties["project_version"]}.jar"
|
|
destinationDirectory.set(file("$rootDir/target"))
|
|
relocate("net.kyori", "net.momirealms.craftengine.libraries")
|
|
relocate("net.momirealms.sparrow.nbt", "net.momirealms.craftengine.libraries.nbt")
|
|
relocate("net.momirealms.antigrieflib", "net.momirealms.craftengine.libraries.antigrieflib")
|
|
relocate("org.incendo", "net.momirealms.craftengine.libraries")
|
|
relocate("dev.dejvokep", "net.momirealms.craftengine.libraries")
|
|
relocate("org.bstats", "net.momirealms.craftengine.libraries.bstats")
|
|
relocate("com.github.benmanes.caffeine", "net.momirealms.craftengine.libraries.caffeine")
|
|
relocate("com.ezylang.evalex", "net.momirealms.craftengine.libraries.evalex")
|
|
relocate("net.bytebuddy", "net.momirealms.craftengine.libraries.bytebuddy")
|
|
relocate("org.yaml.snakeyaml", "net.momirealms.craftengine.libraries.snakeyaml")
|
|
relocate("org.ahocorasick", "net.momirealms.craftengine.libraries.ahocorasick")
|
|
relocate("net.jpountz", "net.momirealms.craftengine.libraries.jpountz")
|
|
relocate("software.amazon.awssdk", "net.momirealms.craftengine.libraries.awssdk")
|
|
relocate("software.amazon.eventstream", "net.momirealms.craftengine.libraries.eventstream")
|
|
relocate("com.google.common.jimfs", "net.momirealms.craftengine.libraries.jimfs")
|
|
relocate("org.apache.commons", "net.momirealms.craftengine.libraries.commons")
|
|
relocate("io.leangen.geantyref", "net.momirealms.craftengine.libraries.geantyref")
|
|
relocate("ca.spottedleaf.concurrentutil", "net.momirealms.craftengine.libraries.concurrentutil")
|
|
relocate("io.netty.handler.codec.http", "net.momirealms.craftengine.libraries.netty.handler.codec.http")
|
|
relocate("io.netty.handler.codec.rtsp", "net.momirealms.craftengine.libraries.netty.handler.codec.rtsp")
|
|
relocate("io.netty.handler.codec.spdy", "net.momirealms.craftengine.libraries.netty.handler.codec.spdy")
|
|
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<DownloadPluginsSpec>? = 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")
|
|
} |