Compare commits

..

8 Commits

Author SHA1 Message Date
00f089bcb7 fix: Use the correct bom version 2022-06-07 00:31:20 +02:00
7257775dad Update build.gradle.kts 2022-06-07 00:17:34 +02:00
5c418edcef build: Update bom 2022-06-06 19:45:12 +02:00
63b3d9df7d build: Move bom to root build script 2022-06-06 13:46:38 +02:00
dd48069756 build: Switch to managed dependencies 2022-06-06 12:46:22 +02:00
0a32268784 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
2022-06-05 20:51:07 +02:00
ae3b8c06f6 chore: Address Paper javadoc warnings (#3648) 2022-06-05 20:50:49 +02:00
713c4ad0d2 Remove aggregation of cross module javadocs (#3646)
chore: Don't aggregate javadocs anymore
2022-06-03 23:13:41 +02:00
5 changed files with 56 additions and 69 deletions

View File

@ -21,20 +21,20 @@ dependencies {
api(projects.plotSquaredCore) api(projects.plotSquaredCore)
// Metrics // Metrics
implementation(libs.bstats) implementation("org.bstats:bstats-bukkit")
// Paper // Paper
compileOnly(libs.paper) compileOnly(libs.paper)
implementation(libs.paperlib) implementation("io.papermc:paperlib")
// Plugins // Plugins
compileOnly(libs.worldeditBukkit) { compileOnly(libs.worldeditBukkit) {
exclude(group = "org.bukkit") exclude(group = "org.bukkit")
exclude(group = "org.spigotmc") exclude(group = "org.spigotmc")
} }
compileOnly(libs.fastasyncworldeditBukkit) { isTransitive = false } compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
testImplementation(libs.fastasyncworldeditBukkit) { isTransitive = false } testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
compileOnly(libs.vault) { compileOnly("com.github.MilkBowl:VaultAPI") {
exclude(group = "org.bukkit") exclude(group = "org.bukkit")
} }
compileOnly(libs.placeholderapi) compileOnly(libs.placeholderapi)
@ -44,15 +44,15 @@ dependencies {
// Other libraries // Other libraries
implementation(libs.squirrelid) { isTransitive = false } implementation(libs.squirrelid) { isTransitive = false }
implementation(libs.serverlib) implementation("dev.notmyfault.serverlib:ServerLib")
// Our libraries // Our libraries
implementation(libs.arkitektonika) implementation(libs.arkitektonika)
implementation(libs.http4j) implementation(libs.http4j)
implementation(libs.paster) implementation("com.intellectualsites.paster:Paster")
// Adventure // Adventure
implementation(libs.adventurePlatformBukkit) implementation("net.kyori:adventure-platform-bukkit")
} }
tasks.processResources { tasks.processResources {
@ -97,7 +97,7 @@ tasks.named<ShadowJar>("shadowJar") {
tasks { tasks {
withType<Javadoc> { withType<Javadoc> {
val opt = options as StandardJavadocDocletOptions 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://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://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/")
opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString()) opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString())

View File

@ -551,6 +551,10 @@ public class BlockEventListener implements Listener {
if (plot == null) { if (plot == null) {
return; return;
} }
if (location.getY() >= area.getMaxBuildHeight() || location.getY() < area.getMinBuildHeight()) {
event.setCancelled(true);
return;
}
switch (event.getNewState().getType()) { switch (event.getNewState().getType()) {
case SNOW: case SNOW:
case SNOW_BLOCK: case SNOW_BLOCK:
@ -750,62 +754,66 @@ public class BlockEventListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onChange(BlockFromToEvent event) { public void onChange(BlockFromToEvent event) {
Block from = event.getBlock(); Block fromBlock = event.getBlock();
// Check liquid flow flag inside of origin plot too // Check liquid flow flag inside of origin plot too
final Location fLocation = BukkitUtil.adapt(from.getLocation()); final Location fromLocation = BukkitUtil.adapt(fromBlock.getLocation());
final PlotArea fromArea = fLocation.getPlotArea(); final PlotArea fromArea = fromLocation.getPlotArea();
if (fromArea != null) { if (fromArea != null) {
final Plot plot = fromArea.getOwnedPlot(fLocation); final Plot fromPlot = fromArea.getOwnedPlot(fromLocation);
if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event if (fromPlot != null && fromPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event
.getBlock() .getBlock()
.isLiquid()) { .isLiquid()) {
plot.debug("Liquid could not flow because liquid-flow = disabled"); fromPlot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
Block to = event.getToBlock(); Block toBlock = event.getToBlock();
Location tLocation = BukkitUtil.adapt(to.getLocation()); Location toLocation = BukkitUtil.adapt(toBlock.getLocation());
PlotArea area = tLocation.getPlotArea(); PlotArea toArea = toLocation.getPlotArea();
if (area == null) { if (toArea == null) {
if (from.getType() == Material.DRAGON_EGG && fromArea != null) { if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) {
event.setCancelled(true); event.setCancelled(true);
} }
return; 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) { if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) {
final Plot fromPlot = fromArea.getOwnedPlot(fLocation); final Plot fromPlot = fromArea.getOwnedPlot(fromLocation);
if (fromPlot != null || plot != null) { if (fromPlot != null || toPlot != null) {
if ((fromPlot == null || !fromPlot.equals(plot)) && (plot == null || !plot.equals(fromPlot))) { if ((fromPlot == null || !fromPlot.equals(toPlot)) && (toPlot == null || !toPlot.equals(fromPlot))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
} }
if (plot != null) { if (toPlot != null) {
if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) { if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(toPlot, toArea.getOwnedPlot(fromLocation))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) { if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) {
return; return;
} }
if (plot.getFlag(DisablePhysicsFlag.class)) { if (toPlot.getFlag(DisablePhysicsFlag.class)) {
plot.debug(event.getBlock().getType() + " could not update because disable-physics = true"); toPlot.debug(event.getBlock().getType() + " could not update because disable-physics = true");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) {
plot.debug("Liquid could not flow because liquid-flow = disabled"); toPlot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); 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); event.setCancelled(true);
} else if (event.getBlock().isLiquid()) { } else if (event.getBlock().isLiquid()) {
final org.bukkit.Location location = event.getBlock().getLocation(); final org.bukkit.Location location = event.getBlock().getLocation();

View File

@ -2,18 +2,18 @@ import java.time.format.DateTimeFormatter
dependencies { dependencies {
// Expected everywhere. // Expected everywhere.
compileOnlyApi(libs.checkerqual) compileOnlyApi("org.checkerframework:checker-qual")
// Minecraft expectations // Minecraft expectations
compileOnlyApi(libs.gson) compileOnlyApi("com.google.code.gson:gson")
compileOnly(libs.guava) compileOnly("com.google.guava:guava")
// Platform expectations // Platform expectations
compileOnlyApi(libs.snakeyaml) compileOnlyApi("org.yaml:snakeyaml")
// Adventure // Adventure
api(libs.adventure) api("net.kyori:adventure-api")
api(libs.minimessage) api("net.kyori:adventure-text-minimessage")
// Guice // Guice
api(libs.guice) { api(libs.guice) {
@ -31,18 +31,18 @@ dependencies {
exclude(group = "dummypermscompat") exclude(group = "dummypermscompat")
} }
testImplementation(libs.worldeditCore) testImplementation(libs.worldeditCore)
compileOnly(libs.fastasyncworldeditCore) { isTransitive = false } compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
testImplementation(libs.fastasyncworldeditCore) { isTransitive = false } testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
// Logging // Logging
compileOnlyApi(libs.log4j) compileOnlyApi("org.apache.logging.log4j:log4j-api")
// Other libraries // Other libraries
api(libs.prtree) api(libs.prtree)
api(libs.aopalliance) api(libs.aopalliance)
api(libs.cloudServices) api(libs.cloudServices)
api(libs.arkitektonika) api(libs.arkitektonika)
api(libs.paster) api("com.intellectualsites.paster:Paster")
} }
tasks.processResources { tasks.processResources {

View File

@ -34,7 +34,7 @@ allprojects {
maven { maven {
name = "Sonatype OSS (S01)" 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 { maven {
@ -64,6 +64,10 @@ subprojects {
plugin<EclipsePlugin>() plugin<EclipsePlugin>()
plugin<IdeaPlugin>() plugin<IdeaPlugin>()
} }
dependencies {
implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.2"))
}
} }
allprojects { allprojects {

View File

@ -1,15 +1,9 @@
[versions] [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 # Platform expectations
paper = "1.18.1-R0.1-SNAPSHOT" paper = "1.18.1-R0.1-SNAPSHOT"
checker-qual = "3.22.0" checker-qual = "3.22.0"
guice = "5.1.0" guice = "5.1.0"
spotbugs = "4.7.0" spotbugs = "4.7.0"
snakeyaml = "1.30" # Version set by Bukkit
# Adventure & MiniMessage # Adventure & MiniMessage
adventure-api = "4.9.3" adventure-api = "4.9.3"
@ -18,8 +12,6 @@ adventure-platform-bukkit = "4.0.1"
# Plugins # Plugins
worldedit = "7.2.10" worldedit = "7.2.10"
fawe = "2.2.0"
vault = "1.7.1"
placeholderapi = "2.11.1" placeholderapi = "2.11.1"
luckperms = "5.4" luckperms = "5.4"
essentialsx = "2.19.4" essentialsx = "2.19.4"
@ -30,11 +22,7 @@ prtree = "2.0.0"
aopalliance = "1.0" aopalliance = "1.0"
cloud-services = "1.6.2" cloud-services = "1.6.2"
arkitektonika = "2.1.1" arkitektonika = "2.1.1"
paster = "1.1.4"
bstats = "3.0.0"
paperlib = "1.0.7"
squirrelid = "0.3.1" squirrelid = "0.3.1"
serverlib = "2.3.1"
http4j = "1.3" http4j = "1.3"
# Gradle plugins # Gradle plugins
@ -48,12 +36,7 @@ nexus = "1.1.0"
paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" }
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" } 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 # Platform expectations
snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" }
guice = { group = "com.google.inject", name = "guice", version.ref = "guice" } guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", 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" } spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" }
@ -66,9 +49,6 @@ adventurePlatformBukkit = { group = "net.kyori", name = "adventure-platform-bukk
# Plugins # Plugins
worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" } worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" }
worldeditBukkit = { group = "com.sk89q.worldedit", name = "worldedit-bukkit", 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" } placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" } luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" }
essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" } 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" } cloudServices = { group = "cloud.commandframework", name = "cloud-services", version.ref = "cloud-services" }
mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" } mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" }
squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" } 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" } arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" }
http4j = { group = "com.intellectualsites.http", name = "HTTP4J", version.ref = "http4j" } 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] [plugins]
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }