bhomes/build.gradle.kts

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))
}