Merge branch 'v6' into v7

This commit is contained in:
Alexander Brandes 2022-06-10 01:14:09 +02:00
commit 764c94c9cc
No known key found for this signature in database
GPG Key ID: 158F5701A6AAD00C
9 changed files with 77 additions and 120 deletions

View File

@ -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 {
@ -97,7 +97,7 @@ tasks.named<ShadowJar>("shadowJar") {
tasks {
withType<Javadoc> {
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())

View File

@ -575,6 +575,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:
@ -774,62 +778,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();

View File

@ -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.

View File

@ -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 {

View File

@ -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;
}

View File

@ -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;

View File

@ -42,6 +42,10 @@ public abstract class ChunkManager {
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> forceChunks = new ConcurrentHashMap<>();
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> addChunks = new ConcurrentHashMap<>();
/**
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
*/
@Deprecated(forRemoval = true, since = "TODO")
public static void setChunkInPlotArea(
RunnableVal<ScopedQueueCoordinator> force,
RunnableVal<ScopedQueueCoordinator> 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<ScopedQueueCoordinator> 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<ScopedQueueCoordinator> addChunk = forceChunks.get(loc);
if (addChunk != null) {

View File

@ -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,9 +64,12 @@ subprojects {
plugin<EclipsePlugin>()
plugin<IdeaPlugin>()
}
dependencies {
implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.2"))
}
}
val javadocDir = rootDir.resolve("docs").resolve("javadoc").resolve(project.name)
allprojects {
dependencies {
// Tests
@ -172,11 +175,6 @@ allprojects {
}
tasks {
named<Delete>("clean") {
doFirst {
javadocDir.deleteRecursively()
}
}
compileJava {
options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000"))
@ -187,16 +185,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 +209,3 @@ nexusPublishing {
}
}
}
tasks {
val aggregatedJavadocs = create<Javadoc>("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<Javadoc>().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)
}
}

View File

@ -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.2-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.10.1"
@ -17,8 +11,6 @@ adventure-platform-bukkit = "4.1.0"
# Plugins
worldedit = "7.2.10"
fawe = "2.2.0"
vault = "1.7.1"
placeholderapi = "2.11.1"
luckperms = "5.4"
essentialsx = "2.19.4"
@ -29,11 +21,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
@ -47,12 +35,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" }
@ -65,9 +48,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" }
@ -78,13 +58,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" }