From a5e84dcfea384edf061cc83b699d13b68435908e Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Sun, 1 Aug 2021 19:28:51 +0200 Subject: [PATCH] Switch to version catalogs - Closes #1204 - Switch to security advisory - Move fawe-tests to fawe packages --- .github/ISSUE_TEMPLATE/config.yml | 3 - SECURITY.md | 3 + buildSrc/src/main/kotlin/CommonConfig.kt | 8 +- buildSrc/src/main/kotlin/LibsConfig.kt | 1 + buildSrc/src/main/kotlin/PlatformConfig.kt | 17 ++- buildSrc/src/main/kotlin/Versions.kt | 22 --- gradle/libs.versions.toml | 129 ++++++++++++++++++ settings.gradle.kts | 3 + worldedit-bukkit/build.gradle.kts | 86 ++++++------ .../util/MinecraftVersionTest.java | 2 +- worldedit-cli/build.gradle.kts | 26 ++-- worldedit-core/build.gradle.kts | 82 ++++++----- worldedit-libs/bukkit/build.gradle.kts | 2 +- worldedit-libs/core/ap/build.gradle.kts | 4 +- worldedit-libs/core/build.gradle.kts | 22 +-- 15 files changed, 276 insertions(+), 134 deletions(-) create mode 100644 SECURITY.md delete mode 100644 buildSrc/src/main/kotlin/Versions.kt create mode 100644 gradle/libs.versions.toml rename worldedit-bukkit/src/test/java/com/{sk89q => fastasyncworldedit}/util/MinecraftVersionTest.java (98%) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 73260d35f..4dbfd5dca 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,5 @@ blank_issues_enabled: false contact_links: - - name: Reporting Security Vulnerabilities - url: https://forms.gle/btgdRn9yhGtzEiGW8 - about: Use this form to report security vulnerabilities. Do not use the public issue tracker. - name: IntellectualSites Discord url: https://discord.gg/intellectualsites about: Our support Discord, please ask questions and seek support here. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..5fdc208e0 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,3 @@ +If you discover a security vulnerability in FastAsyncWorldEdit, please submit it through the [Security Vulnerability Form](https://forms.gle/btgdRn9yhGtzEiGW8). + +Thanks for helping make FastAsyncWorldEdit safe for everyone. diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index 48f996a50..d746fcefa 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -1,9 +1,7 @@ import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginExtension import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.jvm.toolchain.JvmVendorSpec import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.repositories import org.gradle.kotlin.dsl.the @@ -56,15 +54,15 @@ fun Project.applyCommonConfiguration() { continue } add(conf.name, "com.google.guava:guava") { - version { require(Versions.GUAVA) } + version { require("21.0") } because("Mojang provides Guava") } add(conf.name, "com.google.code.gson:gson") { - version { require(Versions.GSON) } + version { require("2.8.0") } because("Mojang provides Gson") } add(conf.name, "it.unimi.dsi:fastutil") { - version { require(Versions.FAST_UTIL) } + version { require("8.2.1") } because("Mojang provides FastUtil") } } diff --git a/buildSrc/src/main/kotlin/LibsConfig.kt b/buildSrc/src/main/kotlin/LibsConfig.kt index 9330884cf..d8ba77c59 100644 --- a/buildSrc/src/main/kotlin/LibsConfig.kt +++ b/buildSrc/src/main/kotlin/LibsConfig.kt @@ -51,6 +51,7 @@ fun Project.applyLibrariesConfiguration() { exclude(dependency("com.google.code.gson:gson")) exclude(dependency("org.checkerframework:checker-qual")) exclude(dependency("org.apache.logging.log4j:log4j-api")) + exclude(dependency("com.google.code.findbugs:jsr305")) } relocations.forEach { (from, to) -> diff --git a/buildSrc/src/main/kotlin/PlatformConfig.kt b/buildSrc/src/main/kotlin/PlatformConfig.kt index 674ae04bf..8ba0c9d75 100644 --- a/buildSrc/src/main/kotlin/PlatformConfig.kt +++ b/buildSrc/src/main/kotlin/PlatformConfig.kt @@ -1,6 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.JavaVersion import org.gradle.api.Project +import org.gradle.api.attributes.java.TargetJvmVersion import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.JavaCompile @@ -44,18 +45,22 @@ fun Project.applyPlatformAndCoreConfiguration() { options.compilerArgs.add("-parameters") } + configurations.all { + attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 16) + } tasks.withType().configureEach { useJUnitPlatform() } dependencies { - "testImplementation"("org.junit.jupiter:junit-jupiter-api:${Versions.JUNIT}") - "testImplementation"("org.junit.jupiter:junit-jupiter-params:${Versions.JUNIT}") - "testImplementation"("org.mockito:mockito-core:${Versions.MOCKITO}") - "testImplementation"("org.mockito:mockito-junit-jupiter:${Versions.MOCKITO}") - "testImplementation"("net.bytebuddy:byte-buddy:1.11.0") - "testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:${Versions.JUNIT}") + "compileOnly"("com.google.code.findbugs:jsr305:3.0.2") + "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.7.2") + "testImplementation"("org.junit.jupiter:junit-jupiter-params:5.7.2") + "testImplementation"("org.mockito:mockito-core:3.11.2") + "testImplementation"("org.mockito:mockito-junit-jupiter:3.11.2") + "testImplementation"("net.bytebuddy:byte-buddy:1.11.9") + "testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:3.11.2") } // Java 8 turns on doclint which we fail diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt deleted file mode 100644 index 3e37c8867..000000000 --- a/buildSrc/src/main/kotlin/Versions.kt +++ /dev/null @@ -1,22 +0,0 @@ -import org.gradle.api.Project - -object Versions { - const val TEXT = "3.0.4" - const val TEXT_EXTRAS = "3.0.6" - const val PISTON = "0.5.7" - const val AUTO_VALUE = "1.7.4" - const val JUNIT = "5.7.0" - const val MOCKITO = "3.9.0" - const val FAST_UTIL = "8.2.1" - const val GUAVA = "21.0" - const val GSON = "2.8.0" -} - -// Properties that need a project reference to resolve: -class ProjectVersions(project: Project) { - val loom = project.rootProject.property("loom.version") - val mixin = project.rootProject.property("mixin.version") -} - -val Project.versions - get() = ProjectVersions(this) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..5dfde398c --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,129 @@ +[versions] +# Minecraft expectations +fastutil = "8.2.1" +log4j = "2.14.1" +guava = "21.0" +gson = "2.8.0" + +# Platform expectations +paper = "1.17.1-R0.1-SNAPSHOT" + +# Plugins +vault = "1.7" +dummypermscompat = "1.10" +worldguard-bukkit = "7.0.5" +mapmanager = "1.8.0-SNAPSHOT" +griefprevention = "16.17.1" +griefdefender = "920a610" +mcore = "7.0.1" +residence = "4.5._13.1" +towny = "0.97.0.19" +protocollib = "4.7.0" +plotsquaredV6 = "6.0.8-SNAPSHOT" +plotsquaredV4 = "4.514" +redprotect = "1.9.6" + +# Third party +flow-math = "1.0.3" +paperlib = "1.0.6" +bstats = "2.2.1" +serverlib = "2.2.1" +paster = "1.0.1-SNAPSHOT" +sparsebitset = "1.2" +parallelgzip = "1.0.5" +adventure = "4.8.1" +truezip = "6.8.4" +auto-value = "1.7.4" +findbugs = "3.0.2" +rhino-runtime = "1.7.13" +zstd-jni = "1.5.0-4" +antlr4 = "4.9.1" +json-simple = "1.1.1" +paranamer = "2.8" +jlibnoise = "1.0.0" +jchronic = "0.2.4a" +lz4-java = "1.8.0" +lz4-stream = "1.0.0" +## Internal +minimessage-text = "4.1.0-SNAPSHOT" +adapter-text = "3.0.6" +text = "3.0.4" +piston = "0.5.7" + +# Tests +mockito = "3.11.2" +checker-qual = "3.16.0" + +[libraries] +# Minecraft expectations +fastutil = { group = "it.unimi.dsi", name = "fastutil", version.ref = "fastutil" } +log4j = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j" } +log4jBom = { group = "org.apache.logging.log4j", name = "log4j-bom", version.ref = "log4j" } +guava = { group = "com.google.guava", name = "guava", version.ref = "guava" } +gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } + +#Platform expectations +paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } +spigot = { group = "org.spigotmc", name = "spigot", version.ref = "paper" } + +# Plugins +vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" } +dummypermscompat = { group = "com.sk89q", name = "dummypermscompat", version.ref = "dummypermscompat" } +worldguard = { group = "com.sk89q.worldguard", name = "worldguard-bukkit", version.ref = "worldguard-bukkit" } +mapmanager = { group = "com.github.InventivetalentDev", name = "MapManager", version.ref = "mapmanager" } +griefprevention = { group = "com.github.TechFortress", name = "GriefPrevention", version.ref = "griefprevention" } +griefdefender = { group = "com.github.bloodmc", name = "GriefDefenderApi", version.ref = "griefdefender" } +mcore = { group = "com.massivecraft", name = "mcore", version.ref = "mcore" } +residence = { group = "com.bekvon.bukkit.residence", name = "Residence", version.ref = "residence" } +towny = { group = "com.github.TownyAdvanced", name = "Towny", version.ref = "towny" } +protocollib = { group = "com.comphenix.protocol", name = "ProtocolLib", version.ref = "protocollib" } +plotsquaredV6Bukkit = { group = "com.plotsquared", name = "PlotSquared-Bukkit", version.ref = "plotsquaredV6" } +plotsquaredV6Core = { group = "com.plotsquared", name = "PlotSquared-Core", version.ref = "plotsquaredV6" } +plotsquaredV4 = { group = "com.github.intellectualsites.plotsquared", name = "PlotSquared-API", version.ref = "plotsquaredV4" } +redprotect = { group = "net.fabiozumbi12", name = "redprotect", version.ref = "redprotect" } + +# Third Party +flowmath = { group = "com.flowpowered", name = "flow-math", version.ref = "flow-math" } +paperlib = { group = "io.papermc", name = "paperlib", version.ref = "paperlib" } +bstatsBukkit = { group = "org.bstats", name = "bstats-bukkit", version.ref = "bstats" } +bstatsBase = { group = "org.bstats", name = "bstats-base", version.ref = "bstats" } +serverlib = { group = "org.incendo.serverlib", name = "ServerLib", version.ref = "serverlib" } +paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" } +sparsebitset = { group = "com.zaxxer", name = "SparseBitSet", version.ref = "sparsebitset" } +parallelgzip = { group = "org.anarres", name = "parallelgzip", version.ref = "parallelgzip" } +adventure = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" } +adventureNbt = { group = "net.kyori", name = "adventure-nbt", version.ref = "adventure" } +truezip = { group = "de.schlichtherle", name = "truezip", version.ref = "truezip" } +autoValueAnnotations = { group = "com.google.auto.value", name = "auto-value-annotations", version.ref = "auto-value" } +autoValue = { group = "com.google.auto.value", name = "auto-value", version.ref = "auto-value" } +findbugs = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "findbugs" } +rhino = { group = "org.mozilla", name = "rhino-runtime", version.ref = "rhino-runtime" } +zstd = { group = "com.github.luben", name = "zstd-jni", version.ref = "zstd-jni" } +antlr4 = { group = "org.antlr", name = "antlr4", version.ref = "antlr4" } +antlr4Runtime = { group = "org.antlr", name = "antlr4-runtime", version.ref = "antlr4" } +jsonSimple = { group = "com.googlecode.json-simple", name = "json-simple", version.ref = "json-simple" } +paranamer = { group = "com.thoughtworks.paranamer", name = "paranamer", version.ref = "paranamer" } +jlibnoise = { group = "com.sk89q.lib", name = "jlibnoise", version.ref = "jlibnoise" } +jchronic = { group = "com.sk89q", name = "jchronic", version.ref = "jchronic" } +lz4Java = { group = "org.lz4", name = "lz4-java", version.ref = "lz4-java" } +lz4JavaStream = { group = "net.jpountz", name = "lz4-java-stream", version.ref = "lz4-stream" } + +# Internal +## Text +adventureTextAdapter = { group = "net.kyori", name = "text-adapter-bukkit", version.ref = "adapter-text" } +adventureMiniMessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "minimessage-text" } +adventureTextApi = { group = "net.kyori", name = "text-api", version.ref = "text" } +adventureTextSerializerGson = { group = "net.kyori", name = "text-serializer-gson", version.ref = "text" } +adventureTextSerializerLegacy = { group = "net.kyori", name = "text-serializer-legacy", version.ref = "text" } +adventureTextSerializerPlain = { group = "net.kyori", name = "text-serializer-plain", version.ref = "text" } +## Piston +piston = { group = "org.enginehub.piston", name = "core", version.ref = "piston" } +pistonImpl = { group = "org.enginehub.piston", name = "default-impl", version.ref = "piston" } +pistonAnnotations = { group = "org.enginehub.piston.core-ap", name = "annotations", version.ref = "piston" } +pistonProcessor = { group = "org.enginehub.piston.core-ap", name = "processor", version.ref = "piston" } +pistonRuntime = { group = "org.enginehub.piston.core-ap", name = "runtime", version.ref = "piston" } + +# Tests +mockito = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } +checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" } +log4jCore = { group = "org.apache.logging.log4j", name = "log4j-core", version.ref = "log4j" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 3d6d30469..785a423dd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,3 +18,6 @@ dependencyResolutionManagement { } } } + +enableFeaturePreview("VERSION_CATALOGS") +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 3039cc9dc..3ffdf58b1 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -30,10 +30,6 @@ repositories { name = "ProtocolLib" url = uri("https://repo.dmulloy2.net/nexus/repository/public/") } - maven { - name = "Inventivetalent" - url = uri("https://repo.inventivetalent.org/content/groups/public/") - } maven { name = "OSS Sonatype Snapshots" url = uri("https://oss.sonatype.org/content/repositories/snapshots/") @@ -52,57 +48,71 @@ configurations.all { } dependencies { - compileOnly("com.github.MilkBowl:VaultAPI:1.7") { isTransitive = false } - api(project(":worldedit-core")) - api(project(":worldedit-libs:bukkit")) + // Modules + api(projects.worldeditCore) + api(projects.worldeditLibs.bukkit) implementation(":worldedit-adapters:") - implementation("it.unimi.dsi:fastutil") - api("com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT") { + + // Minecraft expectations + implementation(libs.fastutil) + + // Platform expectations + api(libs.paper) { exclude("junit", "junit") isTransitive = false exclude(group = "org.slf4j", module = "slf4j-api") } - implementation(platform("org.apache.logging.log4j:log4j-bom:2.14.1") { + compileOnly(libs.spigot) { + because("Remove if #1208 has been addressed") + } + + // Logging + implementation(libs.log4j) + implementation(libs.log4jBom) { because("Spigot provides Log4J (sort of, not in API, implicitly part of server)") - }) - implementation("org.apache.logging.log4j:log4j-api") - compileOnly("org.spigotmc:spigot:1.17-R0.1-SNAPSHOT") - implementation("io.papermc:paperlib:1.0.6") - compileOnly("com.sk89q:dummypermscompat:1.10") { + } + + // Plugins + compileOnly(libs.vault) { isTransitive = false } + compileOnly(libs.dummypermscompat) { exclude("com.github.MilkBowl", "VaultAPI") } - testImplementation("org.mockito:mockito-core:3.11.2") - compileOnly("com.sk89q.worldguard:worldguard-bukkit:7.0.5") { + compileOnly(libs.worldguard) { exclude("com.sk89q.worldedit", "worldedit-bukkit") exclude("com.sk89q.worldedit", "worldedit-core") exclude("com.sk89q.worldedit.worldedit-libs", "bukkit") exclude("com.sk89q.worldedit.worldedit-libs", "core") } - compileOnly("net.kyori:adventure-api:4.8.1") - testImplementation("net.kyori:adventure-api:4.8.1") - testImplementation("org.checkerframework:checker-qual:3.16.0") - testImplementation("org.spigotmc:spigot-api:1.17-R0.1-SNAPSHOT") { isTransitive = true } - api("com.intellectualsites.paster:Paster:1.0.1-SNAPSHOT") - api("org.lz4:lz4-java:1.8.0") - api("net.jpountz:lz4-java-stream:1.0.0") { isTransitive = false } - api("com.zaxxer:SparseBitSet:1.2") { isTransitive = false } - api("org.anarres:parallelgzip:1.0.5") { isTransitive = false } + implementation(libs.mapmanager) { isTransitive = false } + implementation(libs.griefprevention) { isTransitive = false } + implementation(libs.griefdefender) { isTransitive = false } + implementation(libs.mcore) { isTransitive = false } + implementation(libs.residence) { isTransitive = false } + compileOnly(libs.towny) { isTransitive = false } + implementation(libs.protocollib) { isTransitive = false } + api(libs.plotsquaredV6Bukkit) { isTransitive = false } + // Third party - implementation("org.bstats:bstats-bukkit:2.2.1") - implementation("org.bstats:bstats-base:2.2.1") - compileOnlyApi("org.inventivetalent:mapmanager:1.7.10-SNAPSHOT") { isTransitive = false } - implementation("com.github.TechFortress:GriefPrevention:16.17.1") { isTransitive = false } - implementation("com.github.bloodmc:GriefDefenderApi:920a610") { isTransitive = false } - implementation("com.flowpowered:flow-math:1.0.3") { + implementation(libs.flowmath) { because("This dependency is needed by GriefDefender but not exposed transitively.") isTransitive = false } - implementation("com.massivecraft:mcore:7.0.1") { isTransitive = false } - implementation("com.bekvon.bukkit.residence:Residence:4.5._13.1") { isTransitive = false } - compileOnly("com.github.TownyAdvanced:Towny:0.97.0.17") { isTransitive = false } - implementation("com.comphenix.protocol:ProtocolLib:4.7.0") { isTransitive = false } - implementation("org.incendo.serverlib:ServerLib:2.2.1") - api("com.plotsquared:PlotSquared-Bukkit:6.0.6-SNAPSHOT") { isTransitive = false } + implementation(libs.paperlib) + implementation(libs.bstatsBukkit) + implementation(libs.bstatsBase) + implementation(libs.serverlib) + api(libs.paster) + api(libs.lz4Java) + api(libs.lz4JavaStream) { isTransitive = false } + api(libs.sparsebitset) { isTransitive = false } + api(libs.parallelgzip) { isTransitive = false } + compileOnly(libs.adventure) + + // Tests + testImplementation(libs.mockito) + testImplementation(libs.adventure) + testImplementation(libs.checkerqual) + testImplementation(libs.paper) { isTransitive = true } } tasks.named("processResources") { diff --git a/worldedit-bukkit/src/test/java/com/sk89q/util/MinecraftVersionTest.java b/worldedit-bukkit/src/test/java/com/fastasyncworldedit/util/MinecraftVersionTest.java similarity index 98% rename from worldedit-bukkit/src/test/java/com/sk89q/util/MinecraftVersionTest.java rename to worldedit-bukkit/src/test/java/com/fastasyncworldedit/util/MinecraftVersionTest.java index ee97cc27e..561d2be37 100644 --- a/worldedit-bukkit/src/test/java/com/sk89q/util/MinecraftVersionTest.java +++ b/worldedit-bukkit/src/test/java/com/fastasyncworldedit/util/MinecraftVersionTest.java @@ -1,4 +1,4 @@ -package com.sk89q.util; +package com.fastasyncworldedit.util; import com.fastasyncworldedit.bukkit.util.MinecraftVersion; import org.junit.jupiter.api.Test; diff --git a/worldedit-cli/build.gradle.kts b/worldedit-cli/build.gradle.kts index 34bd9a350..baa92f990 100644 --- a/worldedit-cli/build.gradle.kts +++ b/worldedit-cli/build.gradle.kts @@ -13,18 +13,24 @@ applyShadowConfiguration() addJarManifest(WorldEditKind.Standalone("com.sk89q.worldedit.cli.CLIWorldEdit")) dependencies { - compileOnly(project(":worldedit-libs:core:ap")) - annotationProcessor(project(":worldedit-libs:core:ap")) - annotationProcessor("com.google.guava:guava:${Versions.GUAVA}") - api(project(":worldedit-core")) - implementation(platform("org.apache.logging.log4j:log4j-bom:2.14.1") { + // Modules + api(projects.worldeditCore) + compileOnly(projects.worldeditLibs.core.ap) + annotationProcessor(projects.worldeditLibs.core.ap) + + // Minecraft expectations + annotationProcessor(libs.guava) + implementation(libs.guava) + implementation(libs.gson) + + // Logging + implementation(libs.log4jBom) { because("We control Log4J on this platform") - }) - implementation("org.apache.logging.log4j:log4j-api") - implementation("org.apache.logging.log4j:log4j-core") + } + implementation(libs.log4j) + implementation(libs.log4jCore + ) implementation("commons-cli:commons-cli:1.4") - implementation("com.google.guava:guava") - implementation("com.google.code.gson:gson") } tasks.named("shadowJar") { diff --git a/worldedit-core/build.gradle.kts b/worldedit-core/build.gradle.kts index b4e209bd5..354b1c694 100644 --- a/worldedit-core/build.gradle.kts +++ b/worldedit-core/build.gradle.kts @@ -12,47 +12,59 @@ applyPlatformAndCoreConfiguration() dependencies { constraints { implementation( "org.yaml:snakeyaml") { - version { strictly("1.27") } + version { strictly("1.28") } because("Bukkit provides SnakeYaml") } } - api(project(":worldedit-libs:core")) - implementation("de.schlichtherle:truezip:6.8.4") - implementation("org.mozilla:rhino-runtime:1.7.13") - implementation("org.yaml:snakeyaml") - implementation("com.google.guava:guava") - implementation("com.google.code.findbugs:jsr305:3.0.2") - implementation("com.google.code.gson:gson") - implementation("org.apache.logging.log4j:log4j-api:2.8.1") { - because("Mojang provides Log4J 2.8.1") - } - implementation("it.unimi.dsi:fastutil") - compileOnly("net.kyori:adventure-nbt:4.8.1") - testImplementation("net.kyori:adventure-nbt:4.7.0") + // Modules + api(projects.worldeditLibs.core) + compileOnly(projects.worldeditLibs.core.ap) + annotationProcessor(projects.worldeditLibs.core.ap) + + // Minecraft expectations + implementation(libs.fastutil) + implementation(libs.guava) + implementation(libs.gson) + + // Platform expectations + implementation("org.yaml:snakeyaml") + + // Logging + implementation(libs.log4j) { + because("Mojang provides Log4J 2.14.1") + } + + // Plugins + compileOnly(libs.redprotect) + api(libs.plotsquaredV4) { isTransitive = false } + api(libs.plotsquaredV6Core) { isTransitive = false } - val antlrVersion = "4.9.1" - antlr("org.antlr:antlr4:$antlrVersion") - implementation("org.antlr:antlr4-runtime:$antlrVersion") - implementation("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false } - compileOnly(project(":worldedit-libs:core:ap")) - annotationProcessor(project(":worldedit-libs:core:ap")) // ensure this is on the classpath for the AP - annotationProcessor("com.google.guava:guava:21.0") - compileOnly("com.google.auto.value:auto-value-annotations:${Versions.AUTO_VALUE}") - annotationProcessor("com.google.auto.value:auto-value:${Versions.AUTO_VALUE}") - testRuntimeOnly("org.apache.logging.log4j:log4j-core:2.8.1") - implementation("com.github.luben:zstd-jni:1.5.0-4") - compileOnly("net.fabiozumbi12:redprotect:1.9.6") - api("com.github.intellectualsites.plotsquared:PlotSquared-API:4.514") { isTransitive = false } - api("com.plotsquared:PlotSquared-Core:6.0.6-SNAPSHOT") { isTransitive = false } - compileOnlyApi("net.kyori:adventure-api:4.8.0") - compileOnlyApi("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") - api("com.intellectualsites.paster:Paster:1.0.1-SNAPSHOT") - compileOnly("net.jpountz:lz4-java-stream:1.0.0") { isTransitive = false } - compileOnly("org.lz4:lz4-java:1.8.0") - compileOnly("com.zaxxer:SparseBitSet:1.2") - compileOnly("org.anarres:parallelgzip:1.0.5") + annotationProcessor(libs.guava) + compileOnly(libs.autoValueAnnotations) + annotationProcessor(libs.autoValue) + + // Third party + implementation(libs.truezip) + implementation(libs.findbugs) + implementation(libs.rhino) + compileOnly(libs.adventure) + compileOnlyApi(libs.adventureNbt) + compileOnlyApi(libs.adventureMiniMessage) + implementation(libs.zstd) + api(libs.paster) + compileOnly(libs.lz4Java) { isTransitive = false } + compileOnly(libs.lz4JavaStream) + compileOnly(libs.sparsebitset) + compileOnly(libs.parallelgzip) + antlr(libs.antlr4) + implementation(libs.antlr4Runtime) + implementation(libs.jsonSimple) { isTransitive = false } + + // Tests + testRuntimeOnly(libs.log4jCore) + testImplementation(libs.adventureNbt) } tasks.named("test") { diff --git a/worldedit-libs/bukkit/build.gradle.kts b/worldedit-libs/bukkit/build.gradle.kts index a9d1c255e..8df532924 100644 --- a/worldedit-libs/bukkit/build.gradle.kts +++ b/worldedit-libs/bukkit/build.gradle.kts @@ -9,5 +9,5 @@ repositories { } dependencies { - "shade"("net.kyori:text-adapter-bukkit:${Versions.TEXT_EXTRAS}") + "shade"(libs.adventureTextAdapter) } diff --git a/worldedit-libs/core/ap/build.gradle.kts b/worldedit-libs/core/ap/build.gradle.kts index 44374359b..d147de6be 100644 --- a/worldedit-libs/core/ap/build.gradle.kts +++ b/worldedit-libs/core/ap/build.gradle.kts @@ -1,6 +1,6 @@ applyLibrariesConfiguration() dependencies { - "shade"("org.enginehub.piston.core-ap:annotations:${Versions.PISTON}") - "shade"("org.enginehub.piston.core-ap:processor:${Versions.PISTON}") + "shade"(libs.pistonAnnotations) + "shade"(libs.pistonProcessor) } diff --git a/worldedit-libs/core/build.gradle.kts b/worldedit-libs/core/build.gradle.kts index 4bdfa8235..73022bc99 100644 --- a/worldedit-libs/core/build.gradle.kts +++ b/worldedit-libs/core/build.gradle.kts @@ -1,17 +1,17 @@ applyLibrariesConfiguration() dependencies { - "shade"("net.kyori:text-api:3.0.4") - "shade"("net.kyori:text-serializer-gson:3.0.4") - "shade"("net.kyori:text-serializer-legacy:3.0.4") - "shade"("net.kyori:text-serializer-plain:3.0.4") - "shade"("com.sk89q:jchronic:0.2.4a") { + "shade"(libs.adventureTextApi) + "shade"(libs.adventureTextSerializerGson) + "shade"(libs.adventureTextSerializerLegacy) + "shade"(libs.adventureTextSerializerPlain) + "shade"(libs.jchronic) { exclude(group = "junit", module = "junit") } - "shade"("com.thoughtworks.paranamer:paranamer:2.8") - "shade"("com.sk89q.lib:jlibnoise:1.0.0") - "shade"("org.enginehub.piston:core:${Versions.PISTON}") - "shade"("org.enginehub.piston.core-ap:runtime:${Versions.PISTON}") - "shade"("org.enginehub.piston:default-impl:${Versions.PISTON}") - "shade"("net.kyori:adventure-nbt:4.8.1") + "shade"(libs.paranamer) + "shade"(libs.jlibnoise) + "shade"(libs.piston) + "shade"(libs.pistonRuntime) + "shade"(libs.pistonImpl) + "shade"(libs.adventureNbt) }