mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-14 19:34:43 +02:00
Compare commits
7 Commits
6.8.1
...
fix/v6/set
Author | SHA1 | Date | |
---|---|---|---|
95470c81b3 | |||
763f7681a7 | |||
a46037b1f1 | |||
0a32268784 | |||
ae3b8c06f6 | |||
713c4ad0d2 | |||
48386c0828 |
@ -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())
|
||||||
|
@ -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();
|
||||||
|
@ -92,9 +92,9 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
|||||||
@Assisted final @NonNull Collection<BlockVector2> requestedChunks,
|
@Assisted final @NonNull Collection<BlockVector2> requestedChunks,
|
||||||
@Assisted final @NonNull Runnable whenDone,
|
@Assisted final @NonNull Runnable whenDone,
|
||||||
@Assisted final @NonNull Consumer<Throwable> throwableConsumer,
|
@Assisted final @NonNull Consumer<Throwable> throwableConsumer,
|
||||||
@Assisted final boolean unloadAfter,
|
@Assisted("unloadAfter") final boolean unloadAfter,
|
||||||
@Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
@Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
||||||
@Assisted final boolean forceSync
|
@Assisted("forceSync") final boolean forceSync
|
||||||
) {
|
) {
|
||||||
this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks);
|
this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks);
|
||||||
this.availableChunks = new LinkedBlockingQueue<>();
|
this.availableChunks = new LinkedBlockingQueue<>();
|
||||||
|
@ -235,6 +235,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
.withConsumer(consumer)
|
.withConsumer(consumer)
|
||||||
.unloadAfter(isUnloadAfter())
|
.unloadAfter(isUnloadAfter())
|
||||||
.withProgressSubscribers(getProgressSubscribers())
|
.withProgressSubscribers(getProgressSubscribers())
|
||||||
|
.forceSync(isForceSync())
|
||||||
.build();
|
.build();
|
||||||
return super.enqueue();
|
return super.enqueue();
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.plotsquared.core.inject.factory;
|
package com.plotsquared.core.inject.factory;
|
||||||
|
|
||||||
|
import com.google.inject.assistedinject.Assisted;
|
||||||
import com.plotsquared.core.queue.ChunkCoordinator;
|
import com.plotsquared.core.queue.ChunkCoordinator;
|
||||||
import com.plotsquared.core.queue.subscriber.ProgressSubscriber;
|
import com.plotsquared.core.queue.subscriber.ProgressSubscriber;
|
||||||
import com.sk89q.worldedit.math.BlockVector2;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
@ -44,8 +45,9 @@ public interface ChunkCoordinatorFactory {
|
|||||||
final @NonNull Collection<BlockVector2> requestedChunks,
|
final @NonNull Collection<BlockVector2> requestedChunks,
|
||||||
final @NonNull Runnable whenDone,
|
final @NonNull Runnable whenDone,
|
||||||
final @NonNull Consumer<Throwable> throwableConsumer,
|
final @NonNull Consumer<Throwable> throwableConsumer,
|
||||||
final boolean unloadAfter,
|
@Assisted("unloadAfter") final boolean unloadAfter,
|
||||||
final @NonNull Collection<ProgressSubscriber> progressSubscribers
|
final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
||||||
|
@Assisted("forceSync") final boolean forceSync
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ public class ChunkCoordinatorBuilder {
|
|||||||
private long maxIterationTime = Settings.QUEUE.MAX_ITERATION_TIME; // A little over 1 tick;
|
private long maxIterationTime = Settings.QUEUE.MAX_ITERATION_TIME; // A little over 1 tick;
|
||||||
private int initialBatchSize = Settings.QUEUE.INITIAL_BATCH_SIZE;
|
private int initialBatchSize = Settings.QUEUE.INITIAL_BATCH_SIZE;
|
||||||
private boolean unloadAfter = true;
|
private boolean unloadAfter = true;
|
||||||
|
private boolean forceSync = false;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ChunkCoordinatorBuilder(@NonNull ChunkCoordinatorFactory chunkCoordinatorFactory) {
|
public ChunkCoordinatorBuilder(@NonNull ChunkCoordinatorFactory chunkCoordinatorFactory) {
|
||||||
@ -197,6 +198,18 @@ public class ChunkCoordinatorBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether the chunks coordinator should be forced to be synchronous. This is not necessarily synchronous to the server,
|
||||||
|
* and simply effectively makes {@link ChunkCoordinator#start()} ()} a blocking operation.
|
||||||
|
*
|
||||||
|
* @param forceSync force sync or not
|
||||||
|
* @since TODO
|
||||||
|
*/
|
||||||
|
public @NonNull ChunkCoordinatorBuilder forceSync(final boolean forceSync) {
|
||||||
|
this.forceSync = forceSync;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public @NonNull ChunkCoordinatorBuilder withProgressSubscriber(ProgressSubscriber progressSubscriber) {
|
public @NonNull ChunkCoordinatorBuilder withProgressSubscriber(ProgressSubscriber progressSubscriber) {
|
||||||
this.progressSubscribers.add(progressSubscriber);
|
this.progressSubscribers.add(progressSubscriber);
|
||||||
return this;
|
return this;
|
||||||
@ -227,7 +240,8 @@ public class ChunkCoordinatorBuilder {
|
|||||||
this.whenDone,
|
this.whenDone,
|
||||||
this.throwableConsumer,
|
this.throwableConsumer,
|
||||||
this.unloadAfter,
|
this.unloadAfter,
|
||||||
this.progressSubscribers
|
this.progressSubscribers,
|
||||||
|
this.forceSync
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,14 +40,12 @@ import com.sk89q.worldedit.world.World;
|
|||||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public abstract class QueueCoordinator {
|
public abstract class QueueCoordinator {
|
||||||
@ -117,7 +115,8 @@ public abstract class QueueCoordinator {
|
|||||||
public abstract void setModified(long modified);
|
public abstract void setModified(long modified);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the queue should be forced to be synchronous when enqueued.
|
* Returns true if the queue should be forced to be synchronous when enqueued. This is not necessarily synchronous to the
|
||||||
|
* server, and simply effectively makes {@link QueueCoordinator#enqueue()} a blocking operation.
|
||||||
*
|
*
|
||||||
* @return is force sync
|
* @return is force sync
|
||||||
*/
|
*/
|
||||||
@ -126,7 +125,8 @@ public abstract class QueueCoordinator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set whether the queue should be forced to be synchronous
|
* Set whether the queue should be forced to be synchronous. This is not necessarily synchronous to the server, and simply
|
||||||
|
* effectively makes {@link QueueCoordinator#enqueue()} a blocking operation.
|
||||||
*
|
*
|
||||||
* @param forceSync force sync or not
|
* @param forceSync force sync or not
|
||||||
*/
|
*/
|
||||||
|
@ -18,7 +18,7 @@ plugins {
|
|||||||
idea
|
idea
|
||||||
}
|
}
|
||||||
|
|
||||||
version = "6.8.1"
|
version = "6.8.2-SNAPSHOT"
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
group = "com.plotsquared"
|
group = "com.plotsquared"
|
||||||
@ -66,7 +66,6 @@ subprojects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val javadocDir = rootDir.resolve("docs").resolve("javadoc").resolve(project.name)
|
|
||||||
allprojects {
|
allprojects {
|
||||||
dependencies {
|
dependencies {
|
||||||
// Tests
|
// Tests
|
||||||
@ -172,11 +171,6 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
named<Delete>("clean") {
|
|
||||||
doFirst {
|
|
||||||
javadocDir.deleteRecursively()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileJava {
|
compileJava {
|
||||||
options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000"))
|
options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000"))
|
||||||
@ -187,16 +181,6 @@ allprojects {
|
|||||||
options.encoding = "UTF-8"
|
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 {
|
shadowJar {
|
||||||
this.archiveClassifier.set(null as String?)
|
this.archiveClassifier.set(null as String?)
|
||||||
this.archiveFileName.set("${project.name}-${project.version}.${this.archiveExtension.getOrElse("jar")}")
|
this.archiveFileName.set("${project.name}-${project.version}.${this.archiveExtension.getOrElse("jar")}")
|
||||||
@ -221,37 +205,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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user