From 713c4ad0d24079c30c4268b9db8fbc3d5c679e9e Mon Sep 17 00:00:00 2001 From: Alexander Brandes Date: Fri, 3 Jun 2022 23:13:41 +0200 Subject: [PATCH 1/6] Remove aggregation of cross module javadocs (#3646) chore: Don't aggregate javadocs anymore --- build.gradle.kts | 50 ------------------------------------------------ 1 file changed, 50 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index cb8297164..282eaabd5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -66,7 +66,6 @@ subprojects { } } -val javadocDir = rootDir.resolve("docs").resolve("javadoc").resolve(project.name) allprojects { dependencies { // Tests @@ -172,11 +171,6 @@ allprojects { } tasks { - named("clean") { - doFirst { - javadocDir.deleteRecursively() - } - } compileJava { options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000")) @@ -187,16 +181,6 @@ allprojects { options.encoding = "UTF-8" } - javadoc { - val opt = options as StandardJavadocDocletOptions - opt.addStringOption("Xdoclint:none", "-quiet") - opt.tags( - "apiNote:a:API Note:", - "implSpec:a:Implementation Requirements:", - "implNote:a:Implementation Note:" - ) - } - shadowJar { this.archiveClassifier.set(null as String?) this.archiveFileName.set("${project.name}-${project.version}.${this.archiveExtension.getOrElse("jar")}") @@ -221,37 +205,3 @@ nexusPublishing { } } } - -tasks { - val aggregatedJavadocs = create("aggregatedJavadocs") { - title = "${project.name} ${project.version} API" - setDestinationDir(javadocDir) - options.destinationDirectory = javadocDir - - doFirst { - javadocDir.deleteRecursively() - } - }.also { - it.group = "Documentation" - it.description = "Generate javadocs from all child projects as if it was a single project" - } - - subprojects.forEach { subProject -> - subProject.afterEvaluate { - subProject.tasks.withType().forEach { task -> - aggregatedJavadocs.source += task.source - aggregatedJavadocs.classpath += task.classpath - aggregatedJavadocs.excludes += task.excludes - aggregatedJavadocs.includes += task.includes - - val rootOptions = aggregatedJavadocs.options as StandardJavadocDocletOptions - val subOptions = task.options as StandardJavadocDocletOptions - rootOptions.links(*subOptions.links.orEmpty().minus(rootOptions.links.orEmpty().toSet()).toTypedArray()) - } - } - } - - build { - dependsOn(aggregatedJavadocs) - } -} From ae3b8c06f60890f8cd8d13851f3ec4aca26d1bf8 Mon Sep 17 00:00:00 2001 From: Alexander Brandes Date: Sun, 5 Jun 2022 20:50:49 +0200 Subject: [PATCH 2/6] chore: Address Paper javadoc warnings (#3648) --- Bukkit/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bukkit/build.gradle.kts b/Bukkit/build.gradle.kts index a6d056093..9d94c436f 100644 --- a/Bukkit/build.gradle.kts +++ b/Bukkit/build.gradle.kts @@ -97,7 +97,7 @@ tasks.named("shadowJar") { tasks { withType { val opt = options as StandardJavadocDocletOptions - opt.links("https://papermc.io/javadocs/paper/1.18/") + opt.links("https://jd.papermc.io/paper/1.18/") opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString()) opt.links("https://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/") opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString()) From 0a32268784a76cdbe44d0a091c019168d988296b Mon Sep 17 00:00:00 2001 From: Bernhard Date: Sun, 5 Jun 2022 20:51:07 +0200 Subject: [PATCH 3/6] Prevent blocks moving/generating below and above build height (#3641) * fix: cancel BlockFormEvent outside of build limit * refactor: rename variables for easier readability * fix: cancel liquid flow outside build limit * refactor: implement to/from context --- .../bukkit/listener/BlockEventListener.java | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java index 1e71e642c..bbd8673fb 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -551,6 +551,10 @@ public class BlockEventListener implements Listener { if (plot == null) { return; } + if (location.getY() >= area.getMaxBuildHeight() || location.getY() < area.getMinBuildHeight()) { + event.setCancelled(true); + return; + } switch (event.getNewState().getType()) { case SNOW: case SNOW_BLOCK: @@ -750,62 +754,66 @@ public class BlockEventListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onChange(BlockFromToEvent event) { - Block from = event.getBlock(); + Block fromBlock = event.getBlock(); // Check liquid flow flag inside of origin plot too - final Location fLocation = BukkitUtil.adapt(from.getLocation()); - final PlotArea fromArea = fLocation.getPlotArea(); + final Location fromLocation = BukkitUtil.adapt(fromBlock.getLocation()); + final PlotArea fromArea = fromLocation.getPlotArea(); if (fromArea != null) { - final Plot plot = fromArea.getOwnedPlot(fLocation); - if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event + final Plot fromPlot = fromArea.getOwnedPlot(fromLocation); + if (fromPlot != null && fromPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event .getBlock() .isLiquid()) { - plot.debug("Liquid could not flow because liquid-flow = disabled"); + fromPlot.debug("Liquid could not flow because liquid-flow = disabled"); event.setCancelled(true); return; } } - Block to = event.getToBlock(); - Location tLocation = BukkitUtil.adapt(to.getLocation()); - PlotArea area = tLocation.getPlotArea(); - if (area == null) { - if (from.getType() == Material.DRAGON_EGG && fromArea != null) { + Block toBlock = event.getToBlock(); + Location toLocation = BukkitUtil.adapt(toBlock.getLocation()); + PlotArea toArea = toLocation.getPlotArea(); + if (toArea == null) { + if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) { event.setCancelled(true); } return; } - Plot plot = area.getOwnedPlot(tLocation); + if (toLocation.getY() >= toArea.getMaxBuildHeight() || toLocation.getY() < toArea.getMinBuildHeight()) { + event.setCancelled(true); + return; + } + Plot toPlot = toArea.getOwnedPlot(toLocation); - if (from.getType() == Material.DRAGON_EGG && fromArea != null) { - final Plot fromPlot = fromArea.getOwnedPlot(fLocation); + if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) { + final Plot fromPlot = fromArea.getOwnedPlot(fromLocation); - if (fromPlot != null || plot != null) { - if ((fromPlot == null || !fromPlot.equals(plot)) && (plot == null || !plot.equals(fromPlot))) { + if (fromPlot != null || toPlot != null) { + if ((fromPlot == null || !fromPlot.equals(toPlot)) && (toPlot == null || !toPlot.equals(fromPlot))) { event.setCancelled(true); return; } } } - if (plot != null) { - if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) { + if (toPlot != null) { + if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(toPlot, toArea.getOwnedPlot(fromLocation))) { event.setCancelled(true); return; } - if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) { + if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) { return; } - if (plot.getFlag(DisablePhysicsFlag.class)) { - plot.debug(event.getBlock().getType() + " could not update because disable-physics = true"); + if (toPlot.getFlag(DisablePhysicsFlag.class)) { + toPlot.debug(event.getBlock().getType() + " could not update because disable-physics = true"); event.setCancelled(true); return; } - if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { - plot.debug("Liquid could not flow because liquid-flow = disabled"); + if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { + toPlot.debug("Liquid could not flow because liquid-flow = disabled"); event.setCancelled(true); } - } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(null, area.getOwnedPlot(fLocation))) { + } else if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(null, toArea.getOwnedPlot(fromLocation))) { event.setCancelled(true); } else if (event.getBlock().isLiquid()) { final org.bukkit.Location location = event.getBlock().getLocation(); From 9ffa935c0c2f16124199ad7306111996909751ea Mon Sep 17 00:00:00 2001 From: Alexander Brandes Date: Thu, 9 Jun 2022 12:57:37 +0200 Subject: [PATCH 4/6] build: Switch to bill of materials (#3653) * build: Switch to managed dependencies * build: Move bom to root build script * build: Update bom * Update build.gradle.kts * fix: Use the correct bom version --- Bukkit/build.gradle.kts | 16 ++++++++-------- Core/build.gradle.kts | 20 ++++++++++---------- build.gradle.kts | 6 +++++- gradle/libs.versions.toml | 25 ------------------------- 4 files changed, 23 insertions(+), 44 deletions(-) diff --git a/Bukkit/build.gradle.kts b/Bukkit/build.gradle.kts index 9d94c436f..535bb4d4b 100644 --- a/Bukkit/build.gradle.kts +++ b/Bukkit/build.gradle.kts @@ -21,20 +21,20 @@ dependencies { api(projects.plotSquaredCore) // Metrics - implementation(libs.bstats) + implementation("org.bstats:bstats-bukkit") // Paper compileOnly(libs.paper) - implementation(libs.paperlib) + implementation("io.papermc:paperlib") // Plugins compileOnly(libs.worldeditBukkit) { exclude(group = "org.bukkit") exclude(group = "org.spigotmc") } - compileOnly(libs.fastasyncworldeditBukkit) { isTransitive = false } - testImplementation(libs.fastasyncworldeditBukkit) { isTransitive = false } - compileOnly(libs.vault) { + compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false } + testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false } + compileOnly("com.github.MilkBowl:VaultAPI") { exclude(group = "org.bukkit") } compileOnly(libs.placeholderapi) @@ -44,15 +44,15 @@ dependencies { // Other libraries implementation(libs.squirrelid) { isTransitive = false } - implementation(libs.serverlib) + implementation("dev.notmyfault.serverlib:ServerLib") // Our libraries implementation(libs.arkitektonika) implementation(libs.http4j) - implementation(libs.paster) + implementation("com.intellectualsites.paster:Paster") // Adventure - implementation(libs.adventurePlatformBukkit) + implementation("net.kyori:adventure-platform-bukkit") } tasks.processResources { diff --git a/Core/build.gradle.kts b/Core/build.gradle.kts index 9bf697e9d..6fb73795e 100644 --- a/Core/build.gradle.kts +++ b/Core/build.gradle.kts @@ -2,18 +2,18 @@ import java.time.format.DateTimeFormatter dependencies { // Expected everywhere. - compileOnlyApi(libs.checkerqual) + compileOnlyApi("org.checkerframework:checker-qual") // Minecraft expectations - compileOnlyApi(libs.gson) - compileOnly(libs.guava) + compileOnlyApi("com.google.code.gson:gson") + compileOnly("com.google.guava:guava") // Platform expectations - compileOnlyApi(libs.snakeyaml) + compileOnlyApi("org.yaml:snakeyaml") // Adventure - api(libs.adventure) - api(libs.minimessage) + api("net.kyori:adventure-api") + api("net.kyori:adventure-text-minimessage") // Guice api(libs.guice) { @@ -31,18 +31,18 @@ dependencies { exclude(group = "dummypermscompat") } testImplementation(libs.worldeditCore) - compileOnly(libs.fastasyncworldeditCore) { isTransitive = false } - testImplementation(libs.fastasyncworldeditCore) { isTransitive = false } + compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false } + testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false } // Logging - compileOnlyApi(libs.log4j) + compileOnlyApi("org.apache.logging.log4j:log4j-api") // Other libraries api(libs.prtree) api(libs.aopalliance) api(libs.cloudServices) api(libs.arkitektonika) - api(libs.paster) + api("com.intellectualsites.paster:Paster") } tasks.processResources { diff --git a/build.gradle.kts b/build.gradle.kts index 282eaabd5..e2dd9ec20 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,7 +34,7 @@ allprojects { maven { name = "Sonatype OSS (S01)" - url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots") + url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") } maven { @@ -64,6 +64,10 @@ subprojects { plugin() plugin() } + + dependencies { + implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.2")) + } } allprojects { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8c095ba58..5f17f2fd1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,9 @@ [versions] -# Minecraft expectations -gson = "2.8.8" # Version set by Minecraft -log4j-api = "2.17.1" # Version set by Minecraft -guava = "31.0.1-jre" # Version set by Minecraft - # Platform expectations paper = "1.18.1-R0.1-SNAPSHOT" checker-qual = "3.22.0" guice = "5.1.0" spotbugs = "4.7.0" -snakeyaml = "1.30" # Version set by Bukkit # Adventure & MiniMessage adventure-api = "4.9.3" @@ -18,8 +12,6 @@ adventure-platform-bukkit = "4.0.1" # Plugins worldedit = "7.2.10" -fawe = "2.2.0" -vault = "1.7.1" placeholderapi = "2.11.1" luckperms = "5.4" essentialsx = "2.19.4" @@ -30,11 +22,7 @@ prtree = "2.0.0" aopalliance = "1.0" cloud-services = "1.6.2" arkitektonika = "2.1.1" -paster = "1.1.4" -bstats = "3.0.0" -paperlib = "1.0.7" squirrelid = "0.3.1" -serverlib = "2.3.1" http4j = "1.3" # Gradle plugins @@ -48,12 +36,7 @@ nexus = "1.1.0" paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" } -# Minecraft expectations -gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } -log4j = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j-api" } - # Platform expectations -snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" } guice = { group = "com.google.inject", name = "guice", version.ref = "guice" } guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" } spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" } @@ -66,9 +49,6 @@ adventurePlatformBukkit = { group = "net.kyori", name = "adventure-platform-bukk # Plugins worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" } worldeditBukkit = { group = "com.sk89q.worldedit", name = "worldedit-bukkit", version.ref = "worldedit" } -fastasyncworldeditBukkit = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Bukkit", version.ref = "fawe" } -fastasyncworldeditCore = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Core", version.ref = "fawe" } -vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" } placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" } luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" } essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" } @@ -79,13 +59,8 @@ aopalliance = { group = "aopalliance", name = "aopalliance", version.ref = "aopa cloudServices = { group = "cloud.commandframework", name = "cloud-services", version.ref = "cloud-services" } mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" } squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" } -serverlib = { group = "dev.notmyfault.serverlib", name = "ServerLib", version.ref = "serverlib" } -bstats = { group = "org.bstats", name = "bstats-bukkit", version.ref = "bstats" } -paperlib = { group = "io.papermc", name = "paperlib", version.ref = "paperlib" } arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" } http4j = { group = "com.intellectualsites.http", name = "HTTP4J", version.ref = "http4j" } -paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" } -guava = { group = "com.google.guava", name = "guava", version.ref = "guava" } [plugins] shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } From 4bb480a238e36fcbf22a8ac05fa946825b998060 Mon Sep 17 00:00:00 2001 From: Alexander Brandes Date: Thu, 9 Jun 2022 12:58:31 +0200 Subject: [PATCH 5/6] chore: Update Code of conduct email (#3661) --- CODE_OF_CONDUCT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 111c65a9d..e40107c03 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at contact@alexander-soderberg.com. All +reported by contacting the project team at contact@intellectualsites.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. From a79c474957edfe034eb285896c9936a6166b5ee7 Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Thu, 9 Jun 2022 13:49:58 +0100 Subject: [PATCH 6/6] Deprecate methods for removal that will be removed/had their signatures changed in v7 --- .../core/generator/IndependentPlotGenerator.java | 6 ++++++ .../com/plotsquared/core/queue/QueueCoordinator.java | 2 ++ .../java/com/plotsquared/core/util/ChunkManager.java | 12 ++++++++++++ 3 files changed, 20 insertions(+) diff --git a/Core/src/main/java/com/plotsquared/core/generator/IndependentPlotGenerator.java b/Core/src/main/java/com/plotsquared/core/generator/IndependentPlotGenerator.java index 94ca5f587..ea207177d 100644 --- a/Core/src/main/java/com/plotsquared/core/generator/IndependentPlotGenerator.java +++ b/Core/src/main/java/com/plotsquared/core/generator/IndependentPlotGenerator.java @@ -53,9 +53,15 @@ public abstract class IndependentPlotGenerator { * * @param result queue * @param settings PlotArea (settings) + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. */ + @Deprecated(forRemoval = true, since = "TODO") public abstract void generateChunk(ScopedQueueCoordinator result, PlotArea settings); + /** + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. + */ + @Deprecated(forRemoval = true, since = "TODO") public boolean populateChunk(ScopedQueueCoordinator result, PlotArea setting) { return false; } diff --git a/Core/src/main/java/com/plotsquared/core/queue/QueueCoordinator.java b/Core/src/main/java/com/plotsquared/core/queue/QueueCoordinator.java index 7622bb05d..a53158d1e 100644 --- a/Core/src/main/java/com/plotsquared/core/queue/QueueCoordinator.java +++ b/Core/src/main/java/com/plotsquared/core/queue/QueueCoordinator.java @@ -93,7 +93,9 @@ public abstract class QueueCoordinator { * @param z chunk z coordinate * @return a new {@link ScopedQueueCoordinator} * @since 6.6.0 + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. */ + @Deprecated(forRemoval = true, since = "TODO") public ScopedQueueCoordinator getForChunk(int x, int z, int minY, int maxY) { int bx = x << 4; int bz = z << 4; diff --git a/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java b/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java index cda456bbc..1d16922a7 100644 --- a/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java +++ b/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java @@ -42,6 +42,10 @@ public abstract class ChunkManager { private static final Map> forceChunks = new ConcurrentHashMap<>(); private static final Map> addChunks = new ConcurrentHashMap<>(); + /** + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. + */ + @Deprecated(forRemoval = true, since = "TODO") public static void setChunkInPlotArea( RunnableVal force, RunnableVal add, @@ -79,6 +83,10 @@ public abstract class ChunkManager { } } + /** + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. + */ + @Deprecated(forRemoval = true, since = "TODO") public static boolean preProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) { final RunnableVal forceChunk = forceChunks.get(loc); if (forceChunk != null) { @@ -89,6 +97,10 @@ public abstract class ChunkManager { return false; } + /** + * @deprecated {@link ScopedQueueCoordinator} will be renamed in v7. + */ + @Deprecated(forRemoval = true, since = "TODO") public static boolean postProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) { final RunnableVal addChunk = forceChunks.get(loc); if (addChunk != null) {