summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2024-06-12 04:04:25 +0200
committerKrakenied <46192742+Krakenied@users.noreply.github.com>2024-08-28 11:37:11 +0200
commitde2b72083c83a9af9da33f89600aeb20a7225ce3 (patch)
tree334a0dce43bc58a88bbfd870de7ba777af772b19
parent22d882e5ba4e2bb2b26660d19fd0c660959a712f (diff)
Rewrite Gradle files to use DSL which is actually supported by IDEs
Change the downgrader to a modern supported one
-rw-r--r--.github/workflows/build.yml24
-rw-r--r--build.gradle75
-rw-r--r--build.gradle.kts143
-rw-r--r--bukkit/build.gradle167
-rw-r--r--bukkit/build.gradle.kts186
-rw-r--r--common/build.gradle11
-rw-r--r--common/build.gradle.kts7
-rw-r--r--settings.gradle12
-rw-r--r--settings.gradle.kts17
9 files changed, 371 insertions, 271 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0cda7c2d..5f299d28 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,18 +24,30 @@ jobs:
**/*.gradle*
**/gradle-wrapper.properties
- name: Build with Gradle
- run: ./gradlew allJar --no-daemon --stacktrace
+ run: ./gradlew --no-daemon --stacktrace
- name: "Upload the Java ${{ matrix.java-version }} plugin JAR"
uses: actions/upload-artifact@v4
with:
- name: "Quests-JDK${{ matrix.java-version }}"
+ name: "! Quests-JDK${{ matrix.java-version }}"
path: |
build/libs/*.jar
- !build/libs/*+java8.jar
+ !build/libs/*-downgraded-*.jar
if-no-files-found: error
- - name: Upload the Java 8 plugin JAR
+ - name: Upload the downgraded Java 8 plugin JAR
uses: actions/upload-artifact@v4
with:
- name: Quests-JDK8 (use at your own risk)
- path: build/libs/*+java8.jar
+ name: Quests-JDK1.8 (use at your own risk)
+ path: build/libs/*-downgraded-8.jar
+ if-no-files-found: error
+ - name: Upload the downgraded Java 16 plugin JAR
+ uses: actions/upload-artifact@v4
+ with:
+ name: Quests-JDK16 (use at your own risk)
+ path: build/libs/*-downgraded-16.jar
+ if-no-files-found: error
+ - name: Upload the downgraded Java 17 plugin JAR
+ uses: actions/upload-artifact@v4
+ with:
+ name: Quests-JDK17 (use at your own risk)
+ path: build/libs/*-downgraded-17.jar
if-no-files-found: error
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 3224ed45..00000000
--- a/build.gradle
+++ /dev/null
@@ -1,75 +0,0 @@
-import net.raphimc.javadowngrader.gradle.task.DowngradeJarTask
-
-plugins {
- id 'java'
- id 'io.github.goooler.shadow' version '8.1.7'
- id 'net.raphimc.java-downgrader' version '1.1.2'
- id 'maven-publish'
-}
-
-defaultTasks 'allJar'
-
-allprojects {
- apply plugin: 'java'
-
- group = 'com.leonardobishop'
- version = '3.15'
-
- sourceCompatibility = 21
- targetCompatibility = 21
-}
-
-task allJar( type: Jar, dependsOn: subprojects.tasks['build'] ) {
- if (project.findProperty('gitversion') == null || project.findProperty('gitversion') == 'true') {
- ext.gitCommitHash = 'git rev-parse --verify --short HEAD'.execute().text.trim()
- project.version = "${project.version}-${gitCommitHash}"
- subprojects.each {
- it.version = "${it.version}-${gitCommitHash}"
- }
- }
-
- subprojects.each { subproject ->
- from subproject.configurations.archives.allArtifacts.files.collect {
- zipTree(it)
- }
- }
- archiveBaseName = 'Quests'
-}
-
-tasks.register("java8Jar", DowngradeJarTask) {
- input = tasks.jar.archiveFile.get().asFile
- outputSuffix = "+java8"
- compileClassPath = sourceSets.main.compileClasspath
-}.get().dependsOn("allJar")
-allJar.finalizedBy("java8Jar")
-
-artifacts {
- archives allJar
-}
-
-publishing {
- publications {
- maven(MavenPublication) {
- groupId = 'com.leonardobishop'
- artifactId = 'quests'
- version = project.version
-
- artifact allJar
- pom.withXml {
- asNode().dependencies.dependency.each { dep ->
- dep.parent().remove(dep)
- }
- }
- }
- }
-
- repositories {
- maven {
- credentials {
- username = project.findProperty('mavenUser') ?: System.getenv('MAVEN_USER')
- password = project.findProperty('mavenPassword') ?: System.getenv('MAVEN_PASSWORD')
- }
- url = "https://repo.leonardobishop.com/releases/"
- }
- }
-}
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 00000000..d9166750
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,143 @@
+import xyz.wagyourtail.jvmdg.gradle.task.DowngradeJar
+import java.io.ByteArrayOutputStream
+
+plugins {
+ java
+ `maven-publish`
+ id("xyz.wagyourtail.jvmdowngrader")
+}
+
+allprojects {
+ apply(plugin = "java")
+
+ group = "com.leonardobishop"
+ version = "3.15"
+
+ java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(21)
+ }
+ }
+}
+
+subprojects {
+ tasks.withType<JavaCompile> {
+ options.encoding = Charsets.UTF_8.name()
+ options.release = 21
+ }
+
+ tasks.withType<Javadoc> {
+ options.encoding = Charsets.UTF_8.name()
+ }
+
+ tasks.withType<ProcessResources> {
+ filteringCharset = Charsets.UTF_8.name()
+ }
+}
+
+defaultTasks = mutableListOf("clean", "allJar")
+
+tasks.register<Jar>("allJar") {
+ subprojects {
+ dependsOn.add(tasks.build)
+ }
+
+ if (project.findProperty("gitversion") == null || project.findProperty("gitversion") == "true") {
+ val gitCommitHash = gitCommitHash()
+
+ allprojects {
+ version = "${version}-${gitCommitHash}"
+ }
+ }
+
+ subprojects {
+ configurations.archives {
+ allArtifacts.files.forEach {
+ from(zipTree(it))
+ }
+ }
+ }
+
+ archiveBaseName = "Quests"
+}
+
+fun gitCommitHash(): String {
+ val outputStream = ByteArrayOutputStream()
+
+ project.exec {
+ commandLine = "git rev-parse --verify --short HEAD".split(" ")
+ standardOutput = outputStream
+ }
+
+ val gitCommitHashBytes = outputStream.toByteArray()
+ return String(gitCommitHashBytes).trim()
+}
+
+val javaVersions = listOf(
+ // from 1.12 to 1.16.5
+ JavaVersion.VERSION_1_8,
+
+ // from 1.17 to 1.17.1
+ JavaVersion.VERSION_16,
+
+ // from 1.18 to 1.20.4
+ JavaVersion.VERSION_17
+)
+
+for (javaVersion in javaVersions) {
+ val allJarTask = tasks.getByName<Jar>("allJar")
+
+ // we use this hacky solution to improve display and sort order in IntelliJ Gradle tab
+ val majorVersion = javaVersion.ordinal + 1
+ val majorVersionFormatted = String.format("%02d", majorVersion)
+ val taskName = "downgrade${majorVersionFormatted}AllJar"
+
+ tasks.register<DowngradeJar>(taskName) {
+ inputFile = allJarTask.archiveFile
+ downgradeTo = javaVersion
+ quiet = true
+
+ archiveBaseName = "Quests"
+ archiveClassifier = "downgraded-${majorVersion}"
+ }
+
+ defaultTasks.add(taskName)
+}
+
+artifacts {
+ val allJarTask = tasks.named("allJar")
+ archives(allJarTask)
+}
+
+publishing {
+ publications {
+ create<MavenPublication>("maven") {
+ groupId = "com.leonardobishop"
+ artifactId = "quests"
+ version = project.version.toString()
+
+ val allJarTask = tasks.named("allJar")
+ artifact(allJarTask)
+
+ pom {
+ dependencies {
+ clear()
+ }
+ }
+ }
+ }
+
+ repositories {
+ maven("https://repo.leonardobishop.com/releases/") {
+ credentials {
+ username = findPropertyString("mavenUser") ?: System.getenv("MAVEN_USER")
+ password = findPropertyString("mavenPassword") ?: System.getenv("MAVEN_PASSWORD")
+ }
+ }
+ }
+}
+
+fun findPropertyString(propertyName: String): String? {
+ val propertyValue = project.findProperty(propertyName)
+ return if (propertyValue is String) propertyValue else null
+}
diff --git a/bukkit/build.gradle b/bukkit/build.gradle
deleted file mode 100644
index a972e5f6..00000000
--- a/bukkit/build.gradle
+++ /dev/null
@@ -1,167 +0,0 @@
-plugins {
- id 'java'
- id 'io.github.goooler.shadow'
-}
-
-processResources {
- duplicatesStrategy = duplicatesStrategy.INCLUDE
- from(sourceSets.main.resources.srcDirs) {
- include 'plugin.yml'
- expand('version': project.version)
- }
-}
-
-repositories {
- // Folia, Paper
- maven { url = 'https://repo.papermc.io/repository/maven-public/' }
- // Paper (adventure-bom snapshots)
- maven { url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
- // ASkyBlock, BentoBox, bStats, Citizens
- maven { url = 'https://repo.codemc.org/repository/maven-public/' }
- // AuthLib
- maven { url = 'https://libraries.minecraft.net/' }
- // CoreProtect
- maven { url = 'https://maven.playpro.com/' }
- // EcoBosses, EcoMobs
- maven { url = 'https://repo.auxilor.io/repository/maven-public/' }
- // EssentialsX
- maven { url = 'https://repo.essentialsx.net/releases/' }
- // MMOItems, MythicLib
- maven { url = 'https://nexus.phoenixdevt.fr/repository/maven-public/' }
- // MythicMobs 4, MythicMobs 5
- maven { url = 'https://mvn.lumine.io/repository/maven-public/' }
- // NuVotifier
- maven { url = 'https://repo.leonardobishop.com/releases/' }
- // Oraxen
- maven { url = 'https://repo.oraxen.com/releases' }
- // PlaceholderAPI
- maven { url = 'https://repo.extendedclip.com/content/repositories/dev/' }
- // CustomFishing, ItemsAdder, SCore, ShopGUIPlus, Slimefun4
- maven { url = 'https://jitpack.io/' }
- // PlayerPoints
- maven { url = 'https://repo.rosewooddev.io/repository/public/' }
- // SuperiorSkyblock2
- maven { url = 'https://repo.bg-software.com/repository/api/' }
- // uSkyBlock TODO fix whenever repo is up
- //maven { url = 'https://raw.githubusercontent.com/uskyblock/uskyblock-repo/master/' }
- // VotingPlugin
- maven { url = 'https://nexus.bencodez.com/repository/maven-public/' }
- // WildStacker
- maven { url = 'https://repo.bg-software.com/repository/api/' }
- // ZNPCsPlus
- maven { url = 'https://repo.pyr.lol/snapshots' }
-
- // bungeecord-chat, HikariCP, hppc, JetBrains Annotations, slf4j
- mavenCentral()
-}
-
-dependencies {
- compileOnly project(':common')
- // Paper
- compileOnly("io.papermc.paper:paper-api:1.20.5-R0.1-SNAPSHOT") {
- // exclude libraries not available in 1.8
- exclude(group: 'it.unimi.dsi', module: 'fastutil')
- exclude(group: 'org.apache.maven', module: 'maven-resolver-provider')
- exclude(group: 'net.md-5', module: 'bungeecord-chat')
- }
- // Folia
- compileOnly('dev.folia:folia-api:1.20.4-R0.1-SNAPSHOT') {
- // exclude libraries not available in 1.8
- exclude(group: 'it.unimi.dsi', module: 'fastutil')
- exclude(group: 'org.apache.maven', module: 'maven-resolver-provider')
- exclude(group: 'net.md-5', module: 'bungeecord-chat')
- }
- // ASkyBlock
- compileOnly('com.wasteofplastic:askyblock:3.0.9.4') { transitive = false }
- // AuthLib
- compileOnly('com.mojang:authlib:1.5.21') { transitive = false }
- // BentoBox
- compileOnly('world.bentobox:bentobox:1.22.0-SNAPSHOT') { transitive = false }
- // Citizens
- compileOnly('net.citizensnpcs:citizensapi:2.0.30-SNAPSHOT') { transitive = false }
- // CoreProtect
- compileOnly 'net.coreprotect:coreprotect:21.2'
- // CustomFishing
- compileOnly 'com.github.Xiao-MoMi:Custom-Fishing:2.1.2'
- // EcoBosses, EcoMobs
- compileOnly 'com.willfp:EcoBosses:9.14.0'
- compileOnly 'com.willfp:EcoMobs:10.0.0-b1'
- compileOnly 'com.willfp:eco:6.65.1'
- compileOnly 'com.willfp:libreforge:4.21.1'
- // EssentialsX
- compileOnly('net.essentialsx:EssentialsX:2.19.7') { transitive = false }
- // IridiumSkyblock TODO fix whenever repo is up
- //compileOnly 'com.github.Iridium-Development:IridiumSkyblock:master-SNAPSHOT'
- // ItemsAdder
- compileOnly 'com.github.LoneDev6:API-ItemsAdder:3.5.0b'
- // JetBrains Annotations
- compileOnly 'org.jetbrains:annotations:24.1.0'
- // MMOItems
- compileOnly 'net.Indyuce:MMOItems-API:6.9.2-SNAPSHOT'
- // MythicLib
- compileOnly 'io.lumine:MythicLib-dist:1.6-SNAPSHOT'
- // MythicMobs 4
- compileOnly 'io.lumine.xikage:MythicMobs:4.12.0'
- // MythicMobs 5
- compileOnly 'io.lumine:Mythic-Dist:5.2.0'
- // NuVotifier
- compileOnly 'com.vexsoftware:NuVotifier:2.7.3'
- // Oraxen
- compileOnly('io.th0rgal:oraxen:1.175.0') { transitive = false }
- // PlaceholderAPI
- compileOnly 'me.clip:placeholderapi:2.11.3-DEV-160'
- // PlayerPoints
- compileOnly('org.black_ixx:playerpoints:3.2.5')
- // SCore
- compileOnly 'com.github.Ssomar-Developement:SCore:3.4.7'
- // ShopGUIPlus
- compileOnly('com.github.brcdev-minecraft:shopgui-api:3.0.0') { transitive = false }
- // Slimefun4
- compileOnly 'com.github.Slimefun:Slimefun4:RC-37'
- // SuperiorSkyblock2
- compileOnly 'com.bgsoftware:SuperiorSkyblockAPI:2022.9'
- // uSkyBlock TODO fix whenever repo is up
- //compileOnly('ovh.uskyblock:uSkyBlock-API:2.8.9') { transitive = false }
- // VotingPlugin
- compileOnly('com.bencodez:votingplugin:6.15') { transitive = false }
- // WildStacker
- compileOnly 'com.bgsoftware:WildStackerAPI:2023.3'
- // ZNPCsPlus
- compileOnly 'lol.pyr:znpcsplus-api:2.0.0-SNAPSHOT'
-
- // IridiumSkyblock, PyroFishingPro, uSkyBlock
- compileOnly fileTree(dir: 'libs', includes: ['*.jar'])
-
- // bStats
- implementation 'org.bstats:bstats-bukkit-lite:1.8'
- // HikariCP
- implementation 'com.zaxxer:HikariCP:5.0.1'
- // slf4j
- implementation 'org.slf4j:slf4j-nop:1.7.36'
- // hppc
- implementation 'com.carrotsearch:hppc:0.9.1'
- // bungeecord-chat
- implementation('net.md-5:bungeecord-chat:1.20-R0.2') { transitive = false }
-}
-
-tasks.build {
- dependsOn(tasks.shadowJar)
-}
-
-shadowJar {
- exclude('mojang-translations/*')
-
- relocate 'org.bstats', 'com.leonardobishop.quests.libs.bstats'
- relocate 'com.zaxxer.hikari', 'com.leonardobishop.quests.libs.hikari'
- relocate 'org.slf4j', 'com.leonardobishop.quests.libs.slf4j'
- relocate 'com.carrotsearch.hppc', 'com.leonardobishop.quests.libs.hppc'
- relocate 'net.md_5.bungee', 'com.leonardobishop.quests.libs.bungee'
-
- minimize {
- exclude(dependency('org.bstats:.*:.*'))
- exclude(dependency('com.zaxxer:.*:.*'))
- exclude(dependency('org.slf4j:.*:.*'))
- }
-
- archiveClassifier.set('')
-}
diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts
new file mode 100644
index 00000000..916c938f
--- /dev/null
+++ b/bukkit/build.gradle.kts
@@ -0,0 +1,186 @@
+plugins {
+ id("io.github.goooler.shadow")
+}
+
+tasks.build {
+ dependsOn.add(tasks.shadowJar)
+}
+
+tasks.withType<ProcessResources> {
+ filesMatching("plugin.yml") {
+ expand(mapOf("version" to project.version))
+ }
+}
+
+repositories {
+ // Folia, Paper
+ maven("https://repo.papermc.io/repository/maven-public/")
+ // Paper (adventure-bom snapshots)
+ maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
+ // ASkyBlock, BentoBox, bStats, Citizens
+ maven("https://repo.codemc.org/repository/maven-public/")
+ // AuthLib
+ maven("https://libraries.minecraft.net/")
+ // CoreProtect
+ maven("https://maven.playpro.com/")
+ // EcoBosses, EcoMobs
+ maven("https://repo.auxilor.io/repository/maven-public/")
+ // EssentialsX
+ maven("https://repo.essentialsx.net/releases/")
+ // MMOItems, MythicLib
+ maven("https://nexus.phoenixdevt.fr/repository/maven-public/")
+ // MythicMobs 4, MythicMobs 5
+ maven("https://mvn.lumine.io/repository/maven-public/")
+ // NuVotifier
+ maven("https://repo.leonardobishop.com/releases/")
+ // Oraxen
+ maven("https://repo.oraxen.com/releases")
+ // PlaceholderAPI
+ maven("https://repo.extendedclip.com/content/repositories/dev/")
+ // CustomFishing, ItemsAdder, SCore, ShopGUIPlus, Slimefun4
+ maven("https://jitpack.io/")
+ // PlayerPoints
+ maven("https://repo.rosewooddev.io/repository/public/")
+ // SuperiorSkyblock2
+ maven("https://repo.bg-software.com/repository/api/")
+ // uSkyBlock TODO fix whenever repo is up
+ //maven("https://raw.githubusercontent.com/uskyblock/uskyblock-repo/master/")
+ // VotingPlugin
+ maven("https://nexus.bencodez.com/repository/maven-public/")
+ // WildStacker
+ maven("https://repo.bg-software.com/repository/api/")
+ // ZNPCsPlus
+ maven("https://repo.pyr.lol/snapshots")
+
+ // bungeecord-chat, HikariCP, hppc, JetBrains Annotations, slf4j
+ mavenCentral()
+}
+
+dependencies {
+ // Quests common module
+ compileOnlyProject(":common")
+
+ // Paper
+ compileOnlyServer("io.papermc.paper:paper-api:1.20.6-R0.1-SNAPSHOT")
+ // Folia
+ compileOnlyServer("dev.folia:folia-api:1.20.4-R0.1-SNAPSHOT")
+
+ // ASkyBlock
+ compileOnlyPlugin("com.wasteofplastic:askyblock:3.0.9.4")
+ // AuthLib
+ compileOnlyPlugin("com.mojang:authlib:1.5.21")
+ // BentoBox
+ compileOnlyPlugin("world.bentobox:bentobox:1.22.0-SNAPSHOT")
+ // Citizens
+ compileOnlyPlugin("net.citizensnpcs:citizensapi:2.0.30-SNAPSHOT")
+ // CoreProtect
+ compileOnlyPlugin("net.coreprotect:coreprotect:21.2")
+ // CustomFishing
+ compileOnlyPlugin("com.github.Xiao-MoMi:Custom-Fishing:2.1.2")
+ // EcoBosses, EcoMobs
+ compileOnlyPlugin("com.willfp:EcoBosses:9.14.0")
+ compileOnlyPlugin("com.willfp:EcoMobs:10.0.0-b1")
+ compileOnlyPlugin("com.willfp:eco:6.65.1")
+ compileOnlyPlugin("com.willfp:libreforge:4.21.1")
+ // EssentialsX
+ compileOnlyPlugin("net.essentialsx:EssentialsX:2.19.7")
+ // IridiumSkyblock TODO fix whenever repo is up
+ //compileOnlyPlugin("com.github.Iridium-Development:IridiumSkyblock:master-SNAPSHOT")
+ // ItemsAdder
+ compileOnlyPlugin("com.github.LoneDev6:API-ItemsAdder:3.5.0b")
+ // JetBrains Annotations
+ compileOnlyPlugin("org.jetbrains:annotations:24.1.0")
+ // MMOItems
+ compileOnlyPlugin("net.Indyuce:MMOItems-API:6.9.2-SNAPSHOT")
+ // MythicLib
+ compileOnlyPlugin("io.lumine:MythicLib-dist:1.6-SNAPSHOT")
+ // MythicMobs 4
+ compileOnlyPlugin("io.lumine.xikage:MythicMobs:4.12.0")
+ // MythicMobs 5
+ compileOnlyPlugin("io.lumine:Mythic-Dist:5.2.0")
+ // NuVotifier
+ compileOnlyPlugin("com.vexsoftware:NuVotifier:2.7.3")
+ // Oraxen
+ compileOnlyPlugin("io.th0rgal:oraxen:1.175.0")
+ // PlaceholderAPI
+ compileOnlyPlugin("me.clip:placeholderapi:2.11.3-DEV-160")
+ // PlayerPoints
+ compileOnlyPlugin("org.black_ixx:playerpoints:3.2.5")
+ // SCore
+ compileOnlyPlugin("com.github.Ssomar-Developement:SCore:3.4.7")
+ // ShopGUIPlus
+ compileOnlyPlugin("com.github.brcdev-minecraft:shopgui-api:3.0.0")
+ // Slimefun4
+ compileOnlyPlugin("com.github.Slimefun:Slimefun4:RC-37")
+ // SuperiorSkyblock2
+ compileOnlyPlugin("com.bgsoftware:SuperiorSkyblockAPI:2022.9")
+ // uSkyBlock TODO fix whenever repo is up
+ //compileOnlyPlugin("ovh.uskyblock:uSkyBlock-API:2.8.9")
+ // VotingPlugin
+ compileOnlyPlugin("com.bencodez:votingplugin:6.15")
+ // WildStacker
+ compileOnlyPlugin("com.bgsoftware:WildStackerAPI:2023.3")
+ // ZNPCsPlus
+ compileOnlyPlugin("lol.pyr:znpcsplus-api:2.0.0-SNAPSHOT")
+
+ // IridiumSkyblock, PyroFishingPro, uSkyBlock
+ compileOnlyLibs("libs", listOf("*.jar"))
+
+ // bStats
+ implementation("org.bstats:bstats-bukkit-lite:1.8")
+ // HikariCP
+ implementation("com.zaxxer:HikariCP:5.0.1")
+ // slf4j
+ implementation("org.slf4j:slf4j-nop:1.7.36")
+ // hppc
+ implementation("com.carrotsearch:hppc:0.9.1")
+ // bungeecord-chat
+ implementation("net.md-5:bungeecord-chat:1.20-R0.2") { isTransitive = false }
+}
+
+tasks.shadowJar {
+ exclude("mojang-translations/*")
+
+ relocate("org.bstats", "com.leonardobishop.quests.libs.bstats")
+ relocate("com.zaxxer.hikari", "com.leonardobishop.quests.libs.hikari")
+ relocate("org.slf4j", "com.leonardobishop.quests.libs.slf4j")
+ relocate("com.carrotsearch.hppc", "com.leonardobishop.quests.libs.hppc")
+ relocate("net.md_5.bungee", "com.leonardobishop.quests.libs.bungee")
+
+ minimize {
+ exclude(dependency("org.bstats:.*:.*"))
+ exclude(dependency("com.zaxxer:.*:.*"))
+ exclude(dependency("org.slf4j:.*:.*"))
+ }
+
+ archiveClassifier.set(null as String?)
+}
+
+// Moved it here for readability reasons
+fun DependencyHandler.compileOnlyProject(s: String): Dependency? {
+ return compileOnly(project(s))
+}
+
+// We want to exclude some libraries not available in 1.8 from server dependencies
+fun DependencyHandler.compileOnlyServer(s: String): Dependency {
+ return compileOnly(s) {
+ exclude(group = "it.unimi.dsi", module = "fastutil")
+ exclude(group = "org.apache.maven", module = "maven-resolver-provider")
+ exclude(group = "net.md-5", module = "bungeecord-chat")
+ }
+}
+
+// We don't want compile-only plugin dependencies to be transitive by default
+fun DependencyHandler.compileOnlyPlugin(s: String): Dependency {
+ return compileOnly(s) {
+ isTransitive = false
+ }
+}
+
+// Another method made just for readability reasons
+fun DependencyHandler.compileOnlyLibs(dir: String, include: List<String>): Dependency? {
+ return compileOnly(fileTree(mapOf(
+ "dir" to dir,
+ "include" to include
+ )))
+}
diff --git a/common/build.gradle b/common/build.gradle
deleted file mode 100644
index 6e783da8..00000000
--- a/common/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-plugins {
- id 'java'
-}
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- compileOnly 'org.jetbrains:annotations:16.0.2'
-}
diff --git a/common/build.gradle.kts b/common/build.gradle.kts
new file mode 100644
index 00000000..79231e9b
--- /dev/null
+++ b/common/build.gradle.kts
@@ -0,0 +1,7 @@
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compileOnly("org.jetbrains:annotations:16.0.2")
+}
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index b2d792fc..00000000
--- a/settings.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-pluginManagement {
- repositories {
- // io.github.goooler.shadow
- maven { url = 'https://plugins.gradle.org/m2/' }
- // net.raphimc.java-downgrader
- maven { url = 'https://maven.lenni0451.net/releases' }
- }
-}
-
-rootProject.name = 'Quests'
-include 'common'
-include 'bukkit'
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 00000000..87c44507
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,17 @@
+pluginManagement {
+ repositories {
+ // io.github.goooler.shadow
+ maven("https://plugins.gradle.org/m2/")
+ // xyz.wagyourtail.jvmdowngrader
+ maven("https://maven.wagyourtail.xyz/releases")
+ }
+
+ plugins {
+ id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
+ id("io.github.goooler.shadow") version "8.1.7"
+ id("xyz.wagyourtail.jvmdowngrader") version "0.7.1"
+ }
+}
+
+rootProject.name = "quests"
+include("common", "bukkit")