146 lines
4.3 KiB
Kotlin
146 lines
4.3 KiB
Kotlin
plugins {
|
|
id("java")
|
|
id("io.papermc.paperweight.userdev") version "2.0.0-beta.14"
|
|
id("xyz.jpenilla.run-paper") version "2.3.1"
|
|
}
|
|
|
|
fun getProperty(key: String): String {
|
|
return project.property(key) as String
|
|
}
|
|
|
|
group = "com.bhomes"
|
|
version = getProperty("projectVersion")
|
|
|
|
val localServerDir = "local-server"
|
|
val projectVersion = getProperty("projectVersion")
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
gradlePluginPortal()
|
|
maven {
|
|
name = "papermc"
|
|
url = uri("https://repo.papermc.io/repository/maven-public/")
|
|
}
|
|
}
|
|
|
|
// Uncomment if the project should support Spigot on Minecraft >=1.20.5
|
|
// paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.REOBF_PRODUCTION
|
|
|
|
dependencies {
|
|
// compileOnly("io.papermc.paper:paper-api:${getProperty("paperApiVersion")}") // Included with paperweight-userdev
|
|
paperweight.paperDevBundle(getProperty("paperApiVersion"))
|
|
|
|
// SQLite Database
|
|
implementation("org.xerial:sqlite-jdbc:3.45.0.0")
|
|
|
|
// LuckPerms API
|
|
compileOnly("net.luckperms:api:5.4")
|
|
|
|
testImplementation(platform("org.junit:junit-bom:5.10.0"))
|
|
testImplementation("org.junit.jupiter:junit-jupiter")
|
|
}
|
|
|
|
tasks {
|
|
|
|
/********** Versioning **********/
|
|
|
|
fun incrementVersion(type: String) {
|
|
val (major, minor, patch) = projectVersion.split(".").map { it.toInt() }
|
|
val newVersion = when (type) {
|
|
"major" -> "${major + 1}.0.0"
|
|
"minor" -> "$major.${minor + 1}.0"
|
|
"patch" -> "$major.$minor.${patch + 1}"
|
|
else -> throw GradleException("Invalid version type")
|
|
}
|
|
file("gradle.properties").apply {
|
|
writeText(readText().replace(Regex("projectVersion=.*"), "projectVersion=$newVersion"))
|
|
}
|
|
}
|
|
|
|
register("incrementMajorVersion") {
|
|
group = "2- versioning"
|
|
doLast {
|
|
incrementVersion("major")
|
|
}
|
|
}
|
|
|
|
register("incrementMinorVersion") {
|
|
group = "2- versioning"
|
|
doLast {
|
|
incrementVersion("minor")
|
|
}
|
|
}
|
|
|
|
register("incrementPatchVersion") {
|
|
group = "2- versioning"
|
|
doLast {
|
|
incrementVersion("patch")
|
|
}
|
|
}
|
|
|
|
/********** Build plugin and run a local server **********/
|
|
|
|
register("buildPluginAndRunServer") {
|
|
group = "1- local server"
|
|
description = "Build the plugin's JAR file and run a Paper test server that includes it"
|
|
|
|
dependsOn("jar") // Build plugin JAR
|
|
|
|
doFirst { // Copy plugin JAR
|
|
val jarFile = file("build/libs/${project.name}-${version}.jar")
|
|
val pluginsDir = file("${localServerDir}/plugins").apply { mkdirs() }
|
|
|
|
if (jarFile.exists())
|
|
jarFile.copyTo(file("${pluginsDir}/${jarFile.name}"), overwrite = true)
|
|
else
|
|
throw GradleException("File ${jarFile.name} not found.")
|
|
}
|
|
finalizedBy("runDevBundleServer") // Run a local Paper server
|
|
}
|
|
|
|
/**
|
|
* run-paper from https://github.com/jpenilla/run-task
|
|
* "runServer" when using Spigot mappings
|
|
* "runDevBundleServer" when using Mojang mappings (paperweight-userdev)
|
|
*/
|
|
runDevBundleServer {
|
|
group = "1- local server"
|
|
runDirectory.set(file(localServerDir))
|
|
// minecraftVersion("1.21.4") // Automatically set by paperweight-userdev
|
|
|
|
jvmArgs(
|
|
"-Dcom.mojang.eula.agree=true",
|
|
"-Dserver.port=25565"
|
|
)
|
|
|
|
doFirst {
|
|
val serverPropertiesFile = file("${localServerDir}/server.properties")
|
|
val bukkitYmlFile = file("${localServerDir}/bukkit.yml")
|
|
|
|
listOf(serverPropertiesFile, bukkitYmlFile).forEach {
|
|
file -> file.parentFile.mkdirs()
|
|
}
|
|
|
|
serverPropertiesFile.writeText("""
|
|
allow-nether=false
|
|
""".trimIndent())
|
|
|
|
bukkitYmlFile.writeText("""
|
|
settings:
|
|
allow-end: false
|
|
""".trimIndent())
|
|
}
|
|
}
|
|
|
|
named("runServer") { // Should not be used as paperweight-userdev has been implemented
|
|
throw GradleException("Please use the 'runDevBundleServer' task instead.")
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
}
|
|
}
|
|
|
|
java {
|
|
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|