diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java
index c61e97e0f..e8cb8d533 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java
@@ -57,7 +57,7 @@ final class BlockStatePopulator extends BlockPopulator {
@Nonnull final Chunk source) {
if (this.queue == null) {
this.queue = PlotSquared.platform().getGlobalBlockQueue()
- .getNewQueue(world.getName(), false);
+ .getNewQueue(world.getName());
}
final PlotArea area = this.plotAreaManager.getPlotArea(world.getName(), null);
if (area == null) {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java
index 04f6083b4..ff4d73f8f 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java
@@ -46,6 +46,15 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
+/**
+ * Utility that allows for the loading and coordination of chunk actions
+ *
+ * The coordinator takes in collection of chunk coordinates, loads them
+ * and allows the caller to specify a sink for the loaded chunks. The
+ * coordinator will prevent the chunks from being unloaded until the sink
+ * has fully consumed the chunk
+ *
+ **/
public final class BukkitChunkCoordinator extends ChunkCoordinator {
private final List progressSubscribers = new LinkedList<>();
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java
index 103bf21fc..ed2898c65 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java
@@ -78,9 +78,9 @@ public class BukkitChunkManager extends ChunkManager {
BukkitWorld bukkitWorld2 = new BukkitWorld(world2);
QueueCoordinator queue1 =
- PlotSquared.platform().getGlobalBlockQueue().getNewQueue(bukkitWorld1, false);
+ PlotSquared.platform().getGlobalBlockQueue().getNewQueue(bukkitWorld1);
QueueCoordinator queue2 =
- PlotSquared.platform().getGlobalBlockQueue().getNewQueue(bukkitWorld2, false);
+ PlotSquared.platform().getGlobalBlockQueue().getNewQueue(bukkitWorld2);
for (int x = Math.max(r1.getMinimumPoint().getX(), sx);
x <= Math.min(r1.getMaximumPoint().getX(), sx + 15); x++) {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java
index 2b3f72764..7aa8af878 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java
@@ -220,7 +220,7 @@ public class BukkitRegionManager extends RegionManager {
assert oldWorld.equals(newWorld);
final ContentMap map = new ContentMap();
final QueueCoordinator queue =
- PlotSquared.platform().getGlobalBlockQueue().getNewQueue(newWorld, false);
+ PlotSquared.platform().getGlobalBlockQueue().getNewQueue(newWorld);
chunkCoordinatorBuilderFactory.create(chunkCoordinatorFactory).inWorld(newWorld)
.withRegion(pos1, pos2).withThrowableConsumer(Throwable::printStackTrace)
.withRegion(pos1, pos2).withInitialBatchSize(4).withMaxIterationTime(45)
@@ -279,7 +279,7 @@ public class BukkitRegionManager extends RegionManager {
}
final QueueCoordinator queue =
- PlotSquared.platform().getGlobalBlockQueue().getNewQueue(world, false);
+ PlotSquared.platform().getGlobalBlockQueue().getNewQueue(world);
chunkCoordinatorBuilderFactory.create(chunkCoordinatorFactory).inWorld(world)
.withRegion(pos1, pos2).withThrowableConsumer(Throwable::printStackTrace)
.withRegion(pos1, pos2).withInitialBatchSize(4).withMaxIterationTime(45)
@@ -457,7 +457,7 @@ public class BukkitRegionManager extends RegionManager {
Location pos2 = Location.at(world, region.getMaximumPoint().getX() + extendBiome,
region.getMaximumPoint().getY(), region.getMaximumPoint().getZ() + extendBiome);
final QueueCoordinator queue = PlotSquared.platform().getGlobalBlockQueue()
- .getNewQueue(worldUtil.getWeWorld(world), false);
+ .getNewQueue(worldUtil.getWeWorld(world));
final int minX = pos1.getX();
final int minZ = pos1.getZ();
diff --git a/Core/src/main/java/com/plotsquared/core/command/Set.java b/Core/src/main/java/com/plotsquared/core/command/Set.java
index 743433ad2..ec3600e1b 100644
--- a/Core/src/main/java/com/plotsquared/core/command/Set.java
+++ b/Core/src/main/java/com/plotsquared/core/command/Set.java
@@ -35,6 +35,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotManager;
import com.plotsquared.core.queue.GlobalBlockQueue;
+import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.MainUtil;
import com.plotsquared.core.util.PatternUtil;
import com.plotsquared.core.util.Permissions;
@@ -157,11 +158,13 @@ public class Set extends SubCommand {
BackupManager.backup(player, plot, () -> {
plot.addRunning();
+ QueueCoordinator queue = plotArea.getQueue();
for (Plot current : plot.getConnectedPlots()) {
- current.setComponent(component, pattern);
+ current.setComponent(component, pattern, queue);
}
+ queue.setCompleteTask(plot::removeRunning);
+ queue.enqueue();
MainUtil.sendMessage(player, Captions.GENERATING_COMPONENT);
- blockQueue.addEmptyTask(plot::removeRunning);
});
return true;
}
diff --git a/Core/src/main/java/com/plotsquared/core/command/Trim.java b/Core/src/main/java/com/plotsquared/core/command/Trim.java
index b40d6f03d..1852e10e4 100644
--- a/Core/src/main/java/com/plotsquared/core/command/Trim.java
+++ b/Core/src/main/java/com/plotsquared/core/command/Trim.java
@@ -190,7 +190,7 @@ public class Trim extends SubCommand {
}
}
}
- final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world), false);
+ final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world));
TaskManager.getPlatformImplementation().objectTask(chunks, new RunnableVal() {
@Override public void run(BlockVector2 value) {
queue.regenChunk(value.getX(), value.getZ());
diff --git a/Core/src/main/java/com/plotsquared/core/components/ComponentPresetManager.java b/Core/src/main/java/com/plotsquared/core/components/ComponentPresetManager.java
index d856944e0..9c620c148 100644
--- a/Core/src/main/java/com/plotsquared/core/components/ComponentPresetManager.java
+++ b/Core/src/main/java/com/plotsquared/core/components/ComponentPresetManager.java
@@ -37,6 +37,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotInventory;
import com.plotsquared.core.plot.PlotItemStack;
+import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.EconHandler;
import com.plotsquared.core.util.InventoryUtil;
import com.plotsquared.core.util.MainUtil;
@@ -44,11 +45,11 @@ import com.plotsquared.core.util.PatternUtil;
import com.plotsquared.core.util.Permissions;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.world.item.ItemTypes;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -61,18 +62,20 @@ import java.util.stream.Collectors;
public class ComponentPresetManager {
- private static final Logger logger = LoggerFactory.getLogger("P2/" + ComponentPresetManager.class.getSimpleName());
+ private static final Logger logger =
+ LoggerFactory.getLogger("P2/" + ComponentPresetManager.class.getSimpleName());
private final List presets;
private final String guiName;
private final EconHandler econHandler;
private final InventoryUtil inventoryUtil;
- @Inject public ComponentPresetManager(@Nullable final EconHandler econHandler, @Nonnull final
- InventoryUtil inventoryUtil) {
+ @Inject public ComponentPresetManager(@Nullable final EconHandler econHandler,
+ @Nonnull final InventoryUtil inventoryUtil) {
this.econHandler = econHandler;
this.inventoryUtil = inventoryUtil;
- final File file = new File(Objects.requireNonNull(PlotSquared.platform()).getDirectory(), "components.yml");
+ final File file = new File(Objects.requireNonNull(PlotSquared.platform()).getDirectory(),
+ "components.yml");
if (!file.exists()) {
boolean created = false;
try {
@@ -103,13 +106,14 @@ public class ComponentPresetManager {
this.guiName = yamlConfiguration.getString("title", "&6Plot Components");
if (yamlConfiguration.contains("presets")) {
- this.presets = yamlConfiguration.getMapList("presets").stream().map(o -> (Map) o)
- .map(ComponentPreset::deserialize).collect(Collectors.toList());
+ this.presets =
+ yamlConfiguration.getMapList("presets").stream().map(o -> (Map) o)
+ .map(ComponentPreset::deserialize).collect(Collectors.toList());
} else {
- final List defaultPreset =
- Collections.singletonList(new ComponentPreset(ClassicPlotManagerComponent.FLOOR,
- "##wool", 0, "", "&6D&ai&cs&ec&bo &2F&3l&do&9o&4r",
- Arrays.asList("&6Spice up your plot floor"), ItemTypes.YELLOW_WOOL));
+ final List defaultPreset = Collections.singletonList(
+ new ComponentPreset(ClassicPlotManagerComponent.FLOOR, "##wool", 0, "",
+ "&6D&ai&cs&ec&bo &2F&3l&do&9o&4r", Arrays.asList("&6Spice up your plot floor"),
+ ItemTypes.YELLOW_WOOL));
yamlConfiguration.set("presets", defaultPreset.stream().map(ComponentPreset::serialize)
.collect(Collectors.toList()));
try {
@@ -139,7 +143,8 @@ public class ComponentPresetManager {
} else if (!plot.hasOwner()) {
Captions.PLOT_UNOWNED.send(player);
return null;
- } else if (!plot.isOwner(player.getUUID()) && !plot.getTrusted().contains(player.getUUID())) {
+ } else if (!plot.isOwner(player.getUUID()) && !plot.getTrusted()
+ .contains(player.getUUID())) {
Captions.NO_PLOT_PERMS.send(player);
return null;
}
@@ -153,71 +158,78 @@ public class ComponentPresetManager {
allowedPresets.add(componentPreset);
}
final int size = (int) Math.ceil((double) allowedPresets.size() / 9.0D);
- final PlotInventory plotInventory = new PlotInventory(this.inventoryUtil, player, size, this.guiName) {
- @Override public boolean onClick(final int index) {
- if (!player.getCurrentPlot().equals(plot)) {
- return false;
- }
-
- if (index < 0 || index >= allowedPresets.size()) {
- return false;
- }
-
- final ComponentPreset componentPreset = allowedPresets.get(index);
- if (componentPreset == null) {
- return false;
- }
-
- if (plot.getRunning() > 0) {
- Captions.WAIT_FOR_TIMER.send(player);
- return false;
- }
-
- final Pattern pattern = PatternUtil.parse(null, componentPreset.getPattern(), false);
- if (pattern == null) {
- Captions.PRESET_INVALID.send(player);
- return false;
- }
-
- if (componentPreset.getCost() > 0.0D && econHandler != null && plot.getArea().useEconomy()) {
- if (econHandler.getMoney(player) < componentPreset.getCost()) {
- Captions.PRESET_CANNOT_AFFORD.send(player);
+ final PlotInventory plotInventory =
+ new PlotInventory(this.inventoryUtil, player, size, this.guiName) {
+ @Override public boolean onClick(final int index) {
+ if (!player.getCurrentPlot().equals(plot)) {
return false;
- } else {
- econHandler.withdrawMoney(player, componentPreset.getCost());
- Captions.REMOVED_BALANCE.send(player, componentPreset.getCost() + "");
}
- }
- BackupManager.backup(player, plot, () -> {
- plot.addRunning();
- for (Plot current : plot.getConnectedPlots()) {
- current.setComponent(componentPreset.getComponent().name(), pattern);
+ if (index < 0 || index >= allowedPresets.size()) {
+ return false;
}
- MainUtil.sendMessage(player, Captions.GENERATING_COMPONENT);
- PlotSquared.platform().getGlobalBlockQueue().addEmptyTask(plot::removeRunning);
- });
- return false;
- }
- };
+
+ final ComponentPreset componentPreset = allowedPresets.get(index);
+ if (componentPreset == null) {
+ return false;
+ }
+
+ if (plot.getRunning() > 0) {
+ Captions.WAIT_FOR_TIMER.send(player);
+ return false;
+ }
+
+ final Pattern pattern =
+ PatternUtil.parse(null, componentPreset.getPattern(), false);
+ if (pattern == null) {
+ Captions.PRESET_INVALID.send(player);
+ return false;
+ }
+
+ if (componentPreset.getCost() > 0.0D && econHandler != null && plot.getArea()
+ .useEconomy()) {
+ if (econHandler.getMoney(player) < componentPreset.getCost()) {
+ Captions.PRESET_CANNOT_AFFORD.send(player);
+ return false;
+ } else {
+ econHandler.withdrawMoney(player, componentPreset.getCost());
+ Captions.REMOVED_BALANCE.send(player, componentPreset.getCost() + "");
+ }
+ }
+
+ BackupManager.backup(player, plot, () -> {
+ plot.addRunning();
+ QueueCoordinator queue = plot.getArea().getQueue();
+ for (Plot current : plot.getConnectedPlots()) {
+ current.setComponent(componentPreset.getComponent().name(), pattern,
+ queue);
+ }
+ queue.setCompleteTask(plot::removeRunning);
+ queue.enqueue();
+ MainUtil.sendMessage(player, Captions.GENERATING_COMPONENT);
+ });
+ return false;
+ }
+ };
for (int i = 0; i < allowedPresets.size(); i++) {
final ComponentPreset preset = allowedPresets.get(i);
final List lore = new ArrayList<>();
- if (preset.getCost() > 0 && this.econHandler != null && plot.getArea().useEconomy()){
- lore.add(Captions.PRESET_LORE_COST.getTranslated().replace("%cost%",
- String.format("%.2f", preset.getCost())));
+ if (preset.getCost() > 0 && this.econHandler != null && plot.getArea().useEconomy()) {
+ lore.add(Captions.PRESET_LORE_COST.getTranslated()
+ .replace("%cost%", String.format("%.2f", preset.getCost())));
}
- lore.add(Captions.PRESET_LORE_COMPONENT.getTranslated().replace("%component%",
- preset.getComponent().name().toLowerCase()));
+ lore.add(Captions.PRESET_LORE_COMPONENT.getTranslated()
+ .replace("%component%", preset.getComponent().name().toLowerCase()));
lore.removeIf(String::isEmpty);
if (!lore.isEmpty()) {
lore.add("&6");
}
lore.addAll(preset.getDescription());
- plotInventory.setItem(i, new PlotItemStack(preset.getIcon().getId().replace("minecraft:", ""),
- 1, preset.getDisplayName(), lore.toArray(new String[0])));
+ plotInventory.setItem(i,
+ new PlotItemStack(preset.getIcon().getId().replace("minecraft:", ""), 1,
+ preset.getDisplayName(), lore.toArray(new String[0])));
}
return plotInventory;
diff --git a/Core/src/main/java/com/plotsquared/core/generator/AugmentedUtils.java b/Core/src/main/java/com/plotsquared/core/generator/AugmentedUtils.java
index 16ded7334..1a06a412d 100644
--- a/Core/src/main/java/com/plotsquared/core/generator/AugmentedUtils.java
+++ b/Core/src/main/java/com/plotsquared/core/generator/AugmentedUtils.java
@@ -87,7 +87,7 @@ public class AugmentedUtils {
IndependentPlotGenerator generator = area.getGenerator();
// Mask
if (queue == null) {
- queue = PlotSquared.platform().getGlobalBlockQueue().getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(world), false);
+ queue = PlotSquared.platform().getGlobalBlockQueue().getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(world));
queue.setChunkObject(chunkObject);
}
QueueCoordinator primaryMask;
diff --git a/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotManager.java b/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotManager.java
index c6dfe69e3..c1de3c0c5 100644
--- a/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotManager.java
+++ b/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotManager.java
@@ -40,8 +40,9 @@ import com.plotsquared.core.util.task.TaskManager;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.world.block.BlockTypes;
-import javax.annotation.Nonnull;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;
@@ -54,98 +55,107 @@ public class ClassicPlotManager extends SquarePlotManager {
private final RegionManager regionManager;
public ClassicPlotManager(@Nonnull final ClassicPlotWorld classicPlotWorld,
- @Nonnull final RegionManager regionManager) {
+ @Nonnull final RegionManager regionManager) {
super(classicPlotWorld, regionManager);
this.classicPlotWorld = classicPlotWorld;
this.regionManager = regionManager;
}
- @Override public boolean setComponent(PlotId plotId, String component, Pattern blocks) {
+ @Override public boolean setComponent(PlotId plotId, String component, Pattern blocks,
+ @Nullable QueueCoordinator queue) {
final Optional componentOptional =
ClassicPlotManagerComponent.fromString(component);
if (componentOptional.isPresent()) {
switch (componentOptional.get()) {
case FLOOR:
- return setFloor(plotId, blocks);
+ return setFloor(plotId, blocks, queue);
case WALL:
- return setWallFilling(plotId, blocks);
+ return setWallFilling(plotId, blocks, queue);
case AIR:
- return setAir(plotId, blocks);
+ return setAir(plotId, blocks, queue);
case MAIN:
- return setMain(plotId, blocks);
+ return setMain(plotId, blocks, queue);
case MIDDLE:
- return setMiddle(plotId, blocks);
+ return setMiddle(plotId, blocks, queue);
case OUTLINE:
- return setOutline(plotId, blocks);
+ return setOutline(plotId, blocks, queue);
case BORDER:
- return setWall(plotId, blocks);
+ return setWall(plotId, blocks, queue);
case ALL:
- return setAll(plotId, blocks);
+ return setAll(plotId, blocks, queue);
}
}
return false;
}
- @Override public boolean unClaimPlot(Plot plot, Runnable whenDone) {
- setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING.toPattern());
+ @Override public boolean unClaimPlot(Plot plot, @Nullable Runnable whenDone,
+ @Nullable QueueCoordinator queue) {
+ setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING.toPattern(), queue);
if (!classicPlotWorld.WALL_BLOCK.isAir() || !classicPlotWorld.WALL_BLOCK
.equals(classicPlotWorld.CLAIMED_WALL_BLOCK)) {
- setWall(plot.getId(), classicPlotWorld.WALL_BLOCK.toPattern());
+ setWall(plot.getId(), classicPlotWorld.WALL_BLOCK.toPattern(), queue);
}
TaskManager.runTask(whenDone);
return true;
}
- public boolean setFloor(PlotId plotId, Pattern blocks) {
+ public boolean setFloor(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
Plot plot = classicPlotWorld.getPlotAbs(plotId);
- if (plot.isBasePlot()) {
+ if (plot != null && plot.isBasePlot()) {
return this.regionManager.setCuboids(classicPlotWorld, plot.getRegions(), blocks,
- classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.PLOT_HEIGHT);
+ classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.PLOT_HEIGHT, queue);
}
return false;
}
- public boolean setAll(PlotId plotId, Pattern blocks) {
+ public boolean setAll(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
Plot plot = classicPlotWorld.getPlotAbs(plotId);
- if (plot.isBasePlot()) {
- return this.regionManager.setCuboids(classicPlotWorld, plot.getRegions(), blocks, 1, getWorldHeight());
+ if (plot != null && plot.isBasePlot()) {
+ return this.regionManager
+ .setCuboids(classicPlotWorld, plot.getRegions(), blocks, 1, getWorldHeight(),
+ queue);
}
return false;
}
- public boolean setAir(PlotId plotId, Pattern blocks) {
+ public boolean setAir(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
Plot plot = classicPlotWorld.getPlotAbs(plotId);
- if (plot.isBasePlot()) {
+ if (plot != null && plot.isBasePlot()) {
return this.regionManager.setCuboids(classicPlotWorld, plot.getRegions(), blocks,
- classicPlotWorld.PLOT_HEIGHT + 1, getWorldHeight());
+ classicPlotWorld.PLOT_HEIGHT + 1, getWorldHeight(), queue);
}
return false;
}
- public boolean setMain(PlotId plotId, Pattern blocks) {
+ public boolean setMain(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
Plot plot = classicPlotWorld.getPlotAbs(plotId);
- if (plot.isBasePlot()) {
+ if (plot == null || plot.isBasePlot()) {
return this.regionManager.setCuboids(classicPlotWorld, plot.getRegions(), blocks, 1,
- classicPlotWorld.PLOT_HEIGHT - 1);
+ classicPlotWorld.PLOT_HEIGHT - 1, queue);
}
return false;
}
- public boolean setMiddle(PlotId plotId, Pattern blocks) {
+ public boolean setMiddle(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
Plot plot = classicPlotWorld.getPlotAbs(plotId);
- if (!plot.isBasePlot()) {
+ if (plot == null || !plot.isBasePlot()) {
return false;
}
Location[] corners = plot.getCorners();
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
int x = MathMan.average(corners[0].getX(), corners[1].getX());
int z = MathMan.average(corners[0].getZ(), corners[1].getZ());
queue.setBlock(x, classicPlotWorld.PLOT_HEIGHT, z, blocks);
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
- public boolean setOutline(PlotId plotId, Pattern blocks) {
+ public boolean setOutline(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
if (classicPlotWorld.ROAD_WIDTH == 0) {
return false;
}
@@ -156,9 +166,18 @@ public class ClassicPlotManager extends SquarePlotManager {
return true;
}
Plot plot = classicPlotWorld.getPlotAbs(plotId);
+ if (plot == null) {
+ return false;
+ }
Location bottom = plot.getBottomAbs();
Location top = plot.getExtendedTopAbs();
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
int maxY = classicPlotWorld.getPlotManager().getWorldHeight();
if (!plot.getMerged(Direction.NORTH)) {
int z = bottom.getZ();
@@ -195,19 +214,19 @@ public class ClassicPlotManager extends SquarePlotManager {
}
if (plot.isBasePlot()) {
for (CuboidRegion region : plot.getRegions()) {
- Location pos1 =
- Location.at(classicPlotWorld.getWorldName(), region.getMinimumPoint().getX(),
- maxY, region.getMinimumPoint().getZ());
- Location pos2 =
- Location.at(classicPlotWorld.getWorldName(), region.getMaximumPoint().getX(),
- maxY, region.getMaximumPoint().getZ());
+ Location pos1 = Location
+ .at(classicPlotWorld.getWorldName(), region.getMinimumPoint().getX(), maxY,
+ region.getMinimumPoint().getZ());
+ Location pos2 = Location
+ .at(classicPlotWorld.getWorldName(), region.getMaximumPoint().getX(), maxY,
+ region.getMaximumPoint().getZ());
queue.setCuboid(pos1, pos2, blocks);
}
}
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
- public boolean setWallFilling(PlotId plotId, Pattern blocks) {
+ public boolean setWallFilling(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
if (classicPlotWorld.ROAD_WIDTH == 0) {
return false;
}
@@ -218,11 +237,20 @@ public class ClassicPlotManager extends SquarePlotManager {
return true;
}
Plot plot = classicPlotWorld.getPlotAbs(plotId);
+ if (plot == null) {
+ return false;
+ }
Location bot = plot.getExtendedBottomAbs()
.subtract(plot.getMerged(Direction.WEST) ? 0 : 1, 0,
plot.getMerged(Direction.NORTH) ? 0 : 1);
Location top = plot.getExtendedTopAbs().add(1, 0, 1);
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
if (!plot.getMerged(Direction.NORTH)) {
int z = bot.getZ();
for (int x = bot.getX(); x < top.getX(); x++) {
@@ -257,10 +285,10 @@ public class ClassicPlotManager extends SquarePlotManager {
}
}
}
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
- public boolean setWall(PlotId plotId, Pattern blocks) {
+ public boolean setWall(PlotId plotId, Pattern blocks, @Nullable QueueCoordinator queue) {
if (classicPlotWorld.ROAD_WIDTH == 0) {
return false;
}
@@ -271,11 +299,20 @@ public class ClassicPlotManager extends SquarePlotManager {
return true;
}
Plot plot = classicPlotWorld.getPlotAbs(plotId);
+ if (plot == null) {
+ return false;
+ }
Location bot = plot.getExtendedBottomAbs()
.subtract(plot.getMerged(Direction.WEST) ? 0 : 1, 0,
plot.getMerged(Direction.NORTH) ? 0 : 1);
Location top = plot.getExtendedTopAbs().add(1, 0, 1);
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ enqueue = true;
+ queue = classicPlotWorld.getQueue();
+ }
+
int y = classicPlotWorld.WALL_HEIGHT + 1;
if (!plot.getMerged(Direction.NORTH)) {
int z = bot.getZ();
@@ -303,23 +340,29 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setBlock(x, y, z, blocks);
}
}
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
/**
* PLOT MERGING.
*/
- @Override public boolean createRoadEast(Plot plot) {
+ @Override public boolean createRoadEast(Plot plot, @Nullable QueueCoordinator queue) {
Location pos1 = getPlotBottomLocAbs(plot.getId());
Location pos2 = getPlotTopLocAbs(plot.getId());
int sx = pos2.getX() + 1;
int ex = sx + classicPlotWorld.ROAD_WIDTH - 1;
int sz = pos1.getZ() - 2;
int ez = pos2.getZ() + 2;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
int maxY = getWorldHeight();
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx,
- Math.min(classicPlotWorld.WALL_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz + 1),
+ Math.min(classicPlotWorld.WALL_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz + 1),
Location.at(classicPlotWorld.getWorldName(), ex, maxY, ez - 1),
BlockTypes.AIR.getDefaultState());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx, 0, sz + 1),
@@ -328,37 +371,43 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx, 1, sz + 1),
Location.at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.WALL_HEIGHT, ez - 1),
classicPlotWorld.WALL_FILLING.toPattern());
- queue.setCuboid(
- Location.at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.WALL_HEIGHT + 1,
- sz + 1),
- Location.at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.WALL_HEIGHT + 1,
- ez - 1), classicPlotWorld.WALL_BLOCK.toPattern());
+ queue.setCuboid(Location
+ .at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.WALL_HEIGHT + 1, sz + 1),
+ Location
+ .at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.WALL_HEIGHT + 1, ez - 1),
+ classicPlotWorld.WALL_BLOCK.toPattern());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), ex, 1, sz + 1),
Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.WALL_HEIGHT, ez - 1),
classicPlotWorld.WALL_FILLING.toPattern());
- queue.setCuboid(
- Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.WALL_HEIGHT + 1,
- sz + 1),
- Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.WALL_HEIGHT + 1,
- ez - 1), classicPlotWorld.WALL_BLOCK.toPattern());
- queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT,
- ez - 1), classicPlotWorld.ROAD_BLOCK.toPattern());
- return queue.enqueue();
+ queue.setCuboid(Location
+ .at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.WALL_HEIGHT + 1, sz + 1),
+ Location
+ .at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.WALL_HEIGHT + 1, ez - 1),
+ classicPlotWorld.WALL_BLOCK.toPattern());
+ queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1), Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1),
+ classicPlotWorld.ROAD_BLOCK.toPattern());
+ return !enqueue || queue.enqueue();
}
- @Override public boolean createRoadSouth(Plot plot) {
+ @Override public boolean createRoadSouth(Plot plot, @Nullable QueueCoordinator queue) {
Location pos1 = getPlotBottomLocAbs(plot.getId());
Location pos2 = getPlotTopLocAbs(plot.getId());
int sz = pos2.getZ() + 1;
int ez = sz + classicPlotWorld.ROAD_WIDTH - 1;
int sx = pos1.getX() - 2;
int ex = pos2.getX() + 2;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1,
- Math.min(classicPlotWorld.WALL_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz),
- Location.at(classicPlotWorld.getWorldName(), ex - 1,
- classicPlotWorld.getPlotManager().getWorldHeight(), ez),
+ Math.min(classicPlotWorld.WALL_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz), Location
+ .at(classicPlotWorld.getWorldName(), ex - 1,
+ classicPlotWorld.getPlotManager().getWorldHeight(), ez),
BlockTypes.AIR.getDefaultState());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 0, sz),
Location.at(classicPlotWorld.getWorldName(), ex - 1, 0, ez),
@@ -366,104 +415,128 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz),
Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT, sz),
classicPlotWorld.WALL_FILLING.toPattern());
- queue.setCuboid(
- Location.at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.WALL_HEIGHT + 1,
- sz),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT + 1,
- sz), classicPlotWorld.WALL_BLOCK.toPattern());
+ queue.setCuboid(Location
+ .at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.WALL_HEIGHT + 1, sz),
+ Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT + 1, sz),
+ classicPlotWorld.WALL_BLOCK.toPattern());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, ez),
Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT, ez),
classicPlotWorld.WALL_FILLING.toPattern());
- queue.setCuboid(
- Location.at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.WALL_HEIGHT + 1,
- ez),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT + 1,
- ez), classicPlotWorld.WALL_BLOCK.toPattern());
- queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT,
- ez - 1), classicPlotWorld.ROAD_BLOCK.toPattern());
- return queue.enqueue();
+ queue.setCuboid(Location
+ .at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.WALL_HEIGHT + 1, ez),
+ Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.WALL_HEIGHT + 1, ez),
+ classicPlotWorld.WALL_BLOCK.toPattern());
+ queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1), Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1),
+ classicPlotWorld.ROAD_BLOCK.toPattern());
+ return !enqueue || queue.enqueue();
}
- @Override public boolean createRoadSouthEast(Plot plot) {
+ @Override public boolean createRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue) {
Location pos2 = getPlotTopLocAbs(plot.getId());
int sx = pos2.getX() + 1;
int ex = sx + classicPlotWorld.ROAD_WIDTH - 1;
int sz = pos2.getZ() + 1;
int ez = sz + classicPlotWorld.ROAD_WIDTH - 1;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
- queue.setCuboid(
- Location.at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.ROAD_HEIGHT + 1,
- sz + 1), Location.at(classicPlotWorld.getWorldName(), ex - 1,
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
+ queue.setCuboid(Location
+ .at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.ROAD_HEIGHT + 1, sz + 1),
+ Location.at(classicPlotWorld.getWorldName(), ex - 1,
classicPlotWorld.getPlotManager().getWorldHeight(), ez - 1),
BlockTypes.AIR.getDefaultState());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 0, sz + 1),
Location.at(classicPlotWorld.getWorldName(), ex - 1, 0, ez - 1),
BlockUtil.get((short) 7, (byte) 0));
- queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT,
- ez - 1), classicPlotWorld.ROAD_BLOCK.toPattern());
- return queue.enqueue();
+ queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz + 1), Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1),
+ classicPlotWorld.ROAD_BLOCK.toPattern());
+ return !enqueue || queue.enqueue();
}
- @Override public boolean removeRoadEast(Plot plot) {
+ @Override public boolean removeRoadEast(Plot plot, @Nullable QueueCoordinator queue) {
Location pos1 = getPlotBottomLocAbs(plot.getId());
Location pos2 = getPlotTopLocAbs(plot.getId());
int sx = pos2.getX() + 1;
int ex = sx + classicPlotWorld.ROAD_WIDTH - 1;
int sz = pos1.getZ() - 1;
int ez = pos2.getZ() + 1;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx,
- Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz),
- Location.at(classicPlotWorld.getWorldName(), ex,
- classicPlotWorld.getPlotManager().getWorldHeight(), ez),
+ Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz), Location
+ .at(classicPlotWorld.getWorldName(), ex,
+ classicPlotWorld.getPlotManager().getWorldHeight(), ez),
BlockTypes.AIR.getDefaultState());
- queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx, 1, sz + 1),
- Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.PLOT_HEIGHT - 1,
- ez - 1), classicPlotWorld.MAIN_BLOCK.toPattern());
+ queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx, 1, sz + 1), Location
+ .at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.PLOT_HEIGHT - 1, ez - 1),
+ classicPlotWorld.MAIN_BLOCK.toPattern());
queue.setCuboid(
Location.at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.PLOT_HEIGHT, sz + 1),
Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.PLOT_HEIGHT, ez - 1),
classicPlotWorld.TOP_BLOCK.toPattern());
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
- @Override public boolean removeRoadSouth(Plot plot) {
+ @Override public boolean removeRoadSouth(Plot plot, @Nullable QueueCoordinator queue) {
Location pos1 = getPlotBottomLocAbs(plot.getId());
Location pos2 = getPlotTopLocAbs(plot.getId());
int sz = pos2.getZ() + 1;
int ez = sz + classicPlotWorld.ROAD_WIDTH - 1;
int sx = pos1.getX() - 1;
int ex = pos2.getX() + 1;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx,
- Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz),
- Location.at(classicPlotWorld.getWorldName(), ex,
- classicPlotWorld.getPlotManager().getWorldHeight(), ez),
+ Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz), Location
+ .at(classicPlotWorld.getWorldName(), ex,
+ classicPlotWorld.getPlotManager().getWorldHeight(), ez),
BlockTypes.AIR.getDefaultState());
- queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz),
- Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.PLOT_HEIGHT - 1,
- ez), classicPlotWorld.MAIN_BLOCK.toPattern());
+ queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx + 1, 1, sz), Location
+ .at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.PLOT_HEIGHT - 1, ez),
+ classicPlotWorld.MAIN_BLOCK.toPattern());
queue.setCuboid(
Location.at(classicPlotWorld.getWorldName(), sx + 1, classicPlotWorld.PLOT_HEIGHT, sz),
Location.at(classicPlotWorld.getWorldName(), ex - 1, classicPlotWorld.PLOT_HEIGHT, ez),
classicPlotWorld.TOP_BLOCK.toPattern());
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
- @Override public boolean removeRoadSouthEast(Plot plot) {
+ @Override public boolean removeRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue) {
Location location = getPlotTopLocAbs(plot.getId());
int sx = location.getX() + 1;
int ex = sx + classicPlotWorld.ROAD_WIDTH - 1;
int sz = location.getZ() + 1;
int ez = sz + classicPlotWorld.ROAD_WIDTH - 1;
- QueueCoordinator queue = classicPlotWorld.getQueue(false);
+
+ boolean enqueue = false;
+ if (queue == null) {
+ queue = classicPlotWorld.getQueue();
+ enqueue = true;
+ }
+
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx,
- Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz),
- Location.at(classicPlotWorld.getWorldName(), ex,
- classicPlotWorld.getPlotManager().getWorldHeight(), ez),
- BlockTypes.AIR.getDefaultState());
+ Math.min(classicPlotWorld.PLOT_HEIGHT, classicPlotWorld.ROAD_HEIGHT) + 1, sz), Location
+ .at(classicPlotWorld.getWorldName(), ex,
+ classicPlotWorld.getPlotManager().getWorldHeight(), ez),
+ BlockTypes.AIR.getDefaultState());
queue.setCuboid(Location.at(classicPlotWorld.getWorldName(), sx, 1, sz),
Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.PLOT_HEIGHT - 1, ez),
classicPlotWorld.MAIN_BLOCK.toPattern());
@@ -471,7 +544,7 @@ public class ClassicPlotManager extends SquarePlotManager {
Location.at(classicPlotWorld.getWorldName(), sx, classicPlotWorld.PLOT_HEIGHT, sz),
Location.at(classicPlotWorld.getWorldName(), ex, classicPlotWorld.PLOT_HEIGHT, ez),
classicPlotWorld.TOP_BLOCK.toPattern());
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
/**
@@ -479,44 +552,48 @@ public class ClassicPlotManager extends SquarePlotManager {
*
* @return false if part of the merge failed, otherwise true if successful.
*/
- @Override public boolean finishPlotMerge(List plotIds) {
+ @Override public boolean finishPlotMerge(List plotIds,
+ @Nullable QueueCoordinator queue) {
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
if (!claim.isAir() || !claim.equals(classicPlotWorld.WALL_BLOCK)) {
for (PlotId plotId : plotIds) {
- setWall(plotId, claim.toPattern());
+ setWall(plotId, claim.toPattern(), queue);
}
}
if (Settings.General.MERGE_REPLACE_WALL) {
final BlockBucket wallBlock = classicPlotWorld.WALL_FILLING;
for (PlotId id : plotIds) {
- setWallFilling(id, wallBlock.toPattern());
+ setWallFilling(id, wallBlock.toPattern(), queue);
}
}
return true;
}
- @Override public boolean finishPlotUnlink(List plotIds) {
+ @Override
+ public boolean finishPlotUnlink(List plotIds, @Nullable QueueCoordinator queue) {
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
if (!claim.isAir() || !claim.equals(classicPlotWorld.WALL_BLOCK)) {
for (PlotId id : plotIds) {
- setWall(id, claim.toPattern());
+ setWall(id, claim.toPattern(), queue);
}
}
return true; // return false if unlink has been denied
}
- @Override public boolean startPlotMerge(List plotIds) {
+ @Override
+ public boolean startPlotMerge(List plotIds, @Nullable QueueCoordinator queue) {
return true;
}
- @Override public boolean startPlotUnlink(List plotIds) {
+ @Override
+ public boolean startPlotUnlink(List plotIds, @Nullable QueueCoordinator queue) {
return true;
}
- @Override public boolean claimPlot(Plot plot) {
+ @Override public boolean claimPlot(Plot plot, @Nullable QueueCoordinator queue) {
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
if (!claim.isAir() || !claim.equals(classicPlotWorld.WALL_BLOCK)) {
- return setWall(plot.getId(), claim.toPattern());
+ return setWall(plot.getId(), claim.toPattern(), queue);
}
return true;
}
@@ -534,8 +611,9 @@ public class ClassicPlotManager extends SquarePlotManager {
@Override public Location getSignLoc(Plot plot) {
plot = plot.getBasePlot(false);
final Location bot = plot.getBottomAbs();
- return Location.at(classicPlotWorld.getWorldName(), bot.getX() - 1,
- classicPlotWorld.ROAD_HEIGHT + 1, bot.getZ() - 2);
+ return Location
+ .at(classicPlotWorld.getWorldName(), bot.getX() - 1, classicPlotWorld.ROAD_HEIGHT + 1,
+ bot.getZ() - 2);
}
}
diff --git a/Core/src/main/java/com/plotsquared/core/generator/HybridPlotManager.java b/Core/src/main/java/com/plotsquared/core/generator/HybridPlotManager.java
index 93351b314..5a847643a 100644
--- a/Core/src/main/java/com/plotsquared/core/generator/HybridPlotManager.java
+++ b/Core/src/main/java/com/plotsquared/core/generator/HybridPlotManager.java
@@ -115,7 +115,7 @@ public class HybridPlotManager extends ClassicPlotManager {
if (!hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
return true;
}
- QueueCoordinator queue = hybridPlotWorld.getQueue(false);
+ QueueCoordinator queue = hybridPlotWorld.getQueue();
createSchemAbs(queue, pos1, pos2, true);
queue.enqueue();
return true;
@@ -178,7 +178,7 @@ public class HybridPlotManager extends ClassicPlotManager {
if (!hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
return true;
}
- QueueCoordinator queue = hybridPlotWorld.getQueue(false);
+ QueueCoordinator queue = hybridPlotWorld.getQueue();
createSchemAbs(queue, pos1, pos2, true);
queue.enqueue();
return true;
@@ -190,7 +190,7 @@ public class HybridPlotManager extends ClassicPlotManager {
PlotId id2 = new PlotId(id.x + 1, id.y + 1);
Location pos1 = getPlotTopLocAbs(id).add(1, 0, 1).withY(0);
Location pos2 = getPlotBottomLocAbs(id2).withY(Math.min(getWorldHeight(), 255));
- QueueCoordinator queue = hybridPlotWorld.getQueue(false);
+ QueueCoordinator queue = hybridPlotWorld.getQueue();
createSchemAbs(queue, pos1, pos2, true);
if (hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
createSchemAbs(queue, pos1, pos2, true);
@@ -232,7 +232,7 @@ public class HybridPlotManager extends ClassicPlotManager {
}
final BiomeType biome = hybridPlotWorld.getPlotBiome();
- final QueueCoordinator queue = hybridPlotWorld.getQueue(false);
+ final QueueCoordinator queue = hybridPlotWorld.getQueue();
ChunkManager.chunkTask(pos1, pos2, new RunnableVal() {
@Override public void run(int[] value) {
// If the chunk isn't near the edge and it isn't an augmented world we can just regen the whole chunk
diff --git a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java
index ba2576395..cd9e718b7 100644
--- a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java
+++ b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java
@@ -128,7 +128,7 @@ public class HybridUtils {
*
*/
TaskManager.runTaskAsync(() -> {
- final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world), false);
+ final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world));
final BlockVector3 bot = region.getMinimumPoint();
final BlockVector3 top = region.getMaximumPoint();
@@ -520,7 +520,7 @@ public class HybridUtils {
public boolean setupRoadSchematic(Plot plot) {
final String world = plot.getWorldName();
- final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world), false);
+ final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world));
Location bot = plot.getBottomAbs().subtract(1, 0, 1);
Location top = plot.getTopAbs();
final HybridPlotWorld plotworld = (HybridPlotWorld) plot.getArea();
@@ -607,7 +607,7 @@ public class HybridUtils {
z -= plotWorld.ROAD_OFFSET_Z;
final int finalX = x;
final int finalZ = z;
- QueueCoordinator queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()), false);
+ QueueCoordinator queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()));
if (id1 == null || id2 == null || id1 != id2) {
this.chunkManager.loadChunk(area.getWorldName(), chunk, false).thenRun(() -> {
if (id1 != null) {
diff --git a/Core/src/main/java/com/plotsquared/core/generator/SquarePlotManager.java b/Core/src/main/java/com/plotsquared/core/generator/SquarePlotManager.java
index 27e093f1b..d71a47c41 100644
--- a/Core/src/main/java/com/plotsquared/core/generator/SquarePlotManager.java
+++ b/Core/src/main/java/com/plotsquared/core/generator/SquarePlotManager.java
@@ -30,13 +30,15 @@ import com.plotsquared.core.location.Location;
import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotId;
+import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.MainUtil;
import com.plotsquared.core.util.RegionManager;
import com.sk89q.worldedit.regions.CuboidRegion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.annotation.Nonnull;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import java.util.Iterator;
import java.util.Set;
@@ -45,18 +47,21 @@ import java.util.Set;
*/
public abstract class SquarePlotManager extends GridPlotManager {
- private static final Logger logger = LoggerFactory.getLogger("P2/" + SquarePlotManager.class.getSimpleName());
+ private static final Logger logger =
+ LoggerFactory.getLogger("P2/" + SquarePlotManager.class.getSimpleName());
private final SquarePlotWorld squarePlotWorld;
private final RegionManager regionManager;
- public SquarePlotManager(@Nonnull final SquarePlotWorld squarePlotWorld, @Nonnull final RegionManager regionManager) {
+ public SquarePlotManager(@Nonnull final SquarePlotWorld squarePlotWorld,
+ @Nonnull final RegionManager regionManager) {
super(squarePlotWorld);
this.squarePlotWorld = squarePlotWorld;
this.regionManager = regionManager;
}
- @Override public boolean clearPlot(final Plot plot, final Runnable whenDone) {
+ @Override public boolean clearPlot(final Plot plot, final Runnable whenDone,
+ @Nullable QueueCoordinator queue) {
final Set regions = plot.getRegions();
Runnable run = new Runnable() {
@Override public void run() {
@@ -230,8 +235,8 @@ public abstract class SquarePlotManager extends GridPlotManager {
return plot.getMerged(Direction.NORTHWEST) ? id : null;
}
} catch (Exception ignored) {
- logger.error( "Invalid plot / road width in settings.yml for world: {}", squarePlotWorld
- .getWorldName());
+ logger.error("Invalid plot / road width in settings.yml for world: {}",
+ squarePlotWorld.getWorldName());
}
return null;
}
@@ -248,6 +253,7 @@ public abstract class SquarePlotManager extends GridPlotManager {
int z = (squarePlotWorld.ROAD_OFFSET_Z + (pz * (squarePlotWorld.ROAD_WIDTH
+ squarePlotWorld.PLOT_WIDTH))) - squarePlotWorld.PLOT_WIDTH - (int) Math
.floor(squarePlotWorld.ROAD_WIDTH / 2);
- return Location.at(squarePlotWorld.getWorldName(), x, squarePlotWorld.getMinBuildHeight(), z);
+ return Location
+ .at(squarePlotWorld.getWorldName(), x, squarePlotWorld.getMinBuildHeight(), z);
}
}
diff --git a/Core/src/main/java/com/plotsquared/core/plot/Plot.java b/Core/src/main/java/com/plotsquared/core/plot/Plot.java
index 22b57da4d..175d1b6be 100644
--- a/Core/src/main/java/com/plotsquared/core/plot/Plot.java
+++ b/Core/src/main/java/com/plotsquared/core/plot/Plot.java
@@ -1033,26 +1033,28 @@ public class Plot {
ids.add(current.getId());
}
this.clearRatings();
+ QueueCoordinator queue = null;
if (createSign) {
this.removeSign();
+ queue = getArea().getQueue();
}
PlotManager manager = this.area.getPlotManager();
if (createRoad) {
- manager.startPlotUnlink(ids);
+ manager.startPlotUnlink(ids, queue);
}
if (this.area.getTerrain() != PlotAreaTerrainType.ALL && createRoad) {
for (Plot current : plots) {
if (current.getMerged(Direction.EAST)) {
- manager.createRoadEast(current);
+ manager.createRoadEast(current, queue);
if (current.getMerged(Direction.SOUTH)) {
- manager.createRoadSouth(current);
+ manager.createRoadSouth(current, queue);
if (current.getMerged(Direction.SOUTHEAST)) {
- manager.createRoadSouthEast(current);
+ manager.createRoadSouthEast(current, queue);
}
}
}
if (current.getMerged(Direction.SOUTH)) {
- manager.createRoadSouth(current);
+ manager.createRoadSouth(current, queue);
}
}
}
@@ -1061,14 +1063,14 @@ public class Plot {
current.setMerged(merged);
}
if (createSign) {
- TaskManager.runTaskAsync(() -> {
+ queue.setCompleteTask(() -> TaskManager.runTaskAsync(() -> {
for (Plot current : plots) {
current.setSign(MainUtil.getName(current.getOwnerAbs()));
}
- });
+ }));
}
if (createRoad) {
- manager.finishPlotUnlink(ids);
+ manager.finishPlotUnlink(ids, queue);
}
return true;
}
@@ -1686,7 +1688,7 @@ public class Plot {
*/
public void refreshChunks() {
QueueCoordinator queue = this.blockQueue
- .getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(getWorldName()), false);
+ .getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(getWorldName()));
HashSet chunks = new HashSet<>();
for (CuboidRegion region : Plot.this.getRegions()) {
for (int x = region.getMinimumPoint().getX() >> 4;
@@ -1710,8 +1712,7 @@ public class Plot {
return;
}
Location location = manager.getSignLoc(this);
- QueueCoordinator queue =
- this.blockQueue.getNewQueue(worldUtil.getWeWorld(getWorldName()), false);
+ QueueCoordinator queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(getWorldName()));
queue.setBlock(location.getX(), location.getY(), location.getZ(),
BlockTypes.AIR.getDefaultState());
queue.enqueue();
@@ -1852,12 +1853,13 @@ public class Plot {
* Sets components such as border, wall, floor.
* (components are generator specific)
*/
- @Deprecated public boolean setComponent(String component, String blocks) {
+ @Deprecated public boolean setComponent(String component, String blocks,
+ QueueCoordinator queue) {
BlockBucket parsed = ConfigurationUtil.BLOCK_BUCKET.parseString(blocks);
if (parsed != null && parsed.isEmpty()) {
return false;
}
- return this.setComponent(component, parsed.toPattern());
+ return this.setComponent(component, parsed.toPattern(), queue);
}
/**
@@ -3052,12 +3054,13 @@ public class Plot {
* @param blocks Pattern to use the generation
* @return True if the component was set successfully
*/
- public boolean setComponent(String component, Pattern blocks) {
+ public boolean setComponent(String component, Pattern blocks,
+ @Nullable QueueCoordinator queue) {
PlotComponentSetEvent event =
this.eventDispatcher.callComponentSet(this, component, blocks);
component = event.getComponent();
blocks = event.getPattern();
- return this.getManager().setComponent(this.getId(), component, blocks);
+ return this.getManager().setComponent(this.getId(), component, blocks, queue);
}
public int getDistanceFromOrigin() {
diff --git a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java
index ab49691ca..1c2b8c7a1 100644
--- a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java
+++ b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java
@@ -172,8 +172,8 @@ public abstract class PlotArea {
@Nonnull protected abstract PlotManager createManager();
- public QueueCoordinator getQueue(final boolean autoQueue) {
- return this.globalBlockQueue.getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(worldName), autoQueue);
+ public QueueCoordinator getQueue() {
+ return this.globalBlockQueue.getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(worldName));
}
/**
diff --git a/Core/src/main/java/com/plotsquared/core/plot/PlotManager.java b/Core/src/main/java/com/plotsquared/core/plot/PlotManager.java
index 236eeee0f..b42c66e19 100644
--- a/Core/src/main/java/com/plotsquared/core/plot/PlotManager.java
+++ b/Core/src/main/java/com/plotsquared/core/plot/PlotManager.java
@@ -28,9 +28,11 @@ package com.plotsquared.core.plot;
import com.plotsquared.core.command.Template;
import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.location.Location;
+import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.FileBytes;
import com.sk89q.worldedit.function.pattern.Pattern;
+import javax.annotation.Nullable;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
@@ -61,11 +63,27 @@ public abstract class PlotManager {
/*
* Plot clearing (return false if you do not support some method)
*/
- public abstract boolean clearPlot(Plot plot, Runnable whenDone);
+ public boolean clearPlot(Plot plot, Runnable whenDone) {
+ return clearPlot(plot, whenDone, null);
+ }
- public abstract boolean claimPlot(Plot plot);
+ public boolean claimPlot(Plot plot) {
+ return claimPlot(plot, null);
- public abstract boolean unClaimPlot(Plot plot, Runnable whenDone);
+ }
+
+ public boolean unClaimPlot(Plot plot, Runnable whenDone) {
+ return unClaimPlot(plot, whenDone, null);
+
+ }
+
+ public abstract boolean clearPlot(Plot plot, Runnable whenDone,
+ @Nullable QueueCoordinator queue);
+
+ public abstract boolean claimPlot(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean unClaimPlot(Plot plot, Runnable whenDone,
+ @Nullable QueueCoordinator queue);
/**
* Retrieves the location of where a sign should be for a plot.
@@ -81,31 +99,77 @@ public abstract class PlotManager {
*/
public abstract String[] getPlotComponents(PlotId plotId);
- public abstract boolean setComponent(PlotId plotId, String component, Pattern blocks);
+ public boolean setComponent(PlotId plotId, String component, Pattern blocks) {
+ return setComponent(plotId, component, blocks, null);
+ }
+
+ public abstract boolean setComponent(PlotId plotId, String component, Pattern blocks,
+ @Nullable QueueCoordinator queue);
/*
* PLOT MERGING (return false if your generator does not support plot
* merging).
*/
- public abstract boolean createRoadEast(Plot plot);
+ public boolean createRoadEast(Plot plot) {
+ return createRoadEast(plot, null);
+ }
- public abstract boolean createRoadSouth(Plot plot);
+ public boolean createRoadSouth(Plot plot) {
+ return createRoadSouth(plot, null);
+ }
- public abstract boolean createRoadSouthEast(Plot plot);
+ public boolean createRoadSouthEast(Plot plot) {
+ return createRoadSouthEast(plot, null);
+ }
- public abstract boolean removeRoadEast(Plot plot);
+ public boolean removeRoadEast(Plot plot) {
+ return removeRoadEast(plot, null);
+ }
- public abstract boolean removeRoadSouth(Plot plot);
+ public boolean removeRoadSouth(Plot plot) {
+ return removeRoadSouth(plot, null);
+ }
- public abstract boolean removeRoadSouthEast(Plot plot);
+ public boolean removeRoadSouthEast(Plot plot) {
+ return removeRoadSouthEast(plot, null);
+ }
- public abstract boolean startPlotMerge(List plotIds);
+ public boolean startPlotMerge(List plotIds) {
+ return startPlotMerge(plotIds, null);
+ }
- public abstract boolean startPlotUnlink(List plotIds);
+ public boolean startPlotUnlink(List plotIds) {
+ return startPlotUnlink(plotIds, null);
+ }
- public abstract boolean finishPlotMerge(List plotIds);
+ public boolean finishPlotMerge(List plotIds) {
+ return finishPlotMerge(plotIds, null);
+ }
- public abstract boolean finishPlotUnlink(List plotIds);
+ public boolean finishPlotUnlink(List plotIds) {
+ return finishPlotUnlink(plotIds, null);
+ }
+
+ public abstract boolean createRoadEast(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean createRoadSouth(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean createRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean removeRoadEast(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean removeRoadSouth(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean removeRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue);
+
+ public abstract boolean startPlotMerge(List plotIds, @Nullable QueueCoordinator queue);
+
+ public abstract boolean startPlotUnlink(List plotIds, @Nullable QueueCoordinator queue);
+
+ public abstract boolean finishPlotMerge(List plotIds, @Nullable QueueCoordinator queue);
+
+ public abstract boolean finishPlotUnlink(List plotIds,
+ @Nullable QueueCoordinator queue);
public void exportTemplate() throws IOException {
HashSet files = new HashSet<>(Collections.singletonList(
@@ -124,12 +188,16 @@ public abstract class PlotManager {
* @return true if the wall blocks were successfully set
*/
public boolean regenerateAllPlotWalls() {
+ return regenerateAllPlotWalls(null);
+ }
+
+ public boolean regenerateAllPlotWalls(@Nullable QueueCoordinator queue) {
boolean success = true;
for (Plot plot : plotArea.getPlots()) {
if (plot.hasOwner()) {
- success &= claimPlot(plot);
+ success &= claimPlot(plot, queue);
} else {
- success &= unClaimPlot(plot, null);
+ success &= unClaimPlot(plot, null, queue);
}
}
return success;
diff --git a/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotManager.java b/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotManager.java
index a386022a3..bb36e3219 100644
--- a/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotManager.java
+++ b/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotManager.java
@@ -31,11 +31,13 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotId;
import com.plotsquared.core.plot.PlotManager;
+import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.MainUtil;
import com.plotsquared.core.util.task.TaskManager;
import com.sk89q.worldedit.function.pattern.Pattern;
-import javax.annotation.Nonnull;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import java.io.File;
import java.util.List;
@@ -61,9 +63,11 @@ public class SinglePlotManager extends PlotManager {
return Location.at(plotId.toCommaSeparatedString(), 30000000, 0, 30000000);
}
- @Override public boolean clearPlot(Plot plot, final Runnable whenDone) {
+ @Override
+ public boolean clearPlot(Plot plot, final Runnable whenDone, @Nullable QueueCoordinator queue) {
PlotSquared.platform().getSetupUtils().unload(plot.getWorldName(), false);
- final File worldFolder = new File(PlotSquared.platform().getWorldContainer(), plot.getWorldName());
+ final File worldFolder =
+ new File(PlotSquared.platform().getWorldContainer(), plot.getWorldName());
TaskManager.getPlatformImplementation().taskAsync(() -> {
MainUtil.deleteDirectory(worldFolder);
if (whenDone != null) {
@@ -73,12 +77,13 @@ public class SinglePlotManager extends PlotManager {
return true;
}
- @Override public boolean claimPlot(Plot plot) {
+ @Override public boolean claimPlot(Plot plot, @Nullable QueueCoordinator queue) {
// TODO
return true;
}
- @Override public boolean unClaimPlot(Plot plot, Runnable whenDone) {
+ @Override
+ public boolean unClaimPlot(Plot plot, Runnable whenDone, @Nullable QueueCoordinator queue) {
if (whenDone != null) {
whenDone.run();
}
@@ -93,51 +98,56 @@ public class SinglePlotManager extends PlotManager {
return new String[0];
}
- @Override public boolean setComponent(PlotId plotId, String component, Pattern blocks) {
+ @Override public boolean setComponent(PlotId plotId, String component, Pattern blocks,
+ @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean createRoadEast(Plot plot) {
+ @Override public boolean createRoadEast(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean createRoadSouth(Plot plot) {
+ @Override public boolean createRoadSouth(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean createRoadSouthEast(Plot plot) {
+ @Override public boolean createRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean removeRoadEast(Plot plot) {
+ @Override public boolean removeRoadEast(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean removeRoadSouth(Plot plot) {
+ @Override public boolean removeRoadSouth(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean removeRoadSouthEast(Plot plot) {
+ @Override public boolean removeRoadSouthEast(Plot plot, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean startPlotMerge(List plotIds) {
+ @Override
+ public boolean startPlotMerge(List plotIds, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean startPlotUnlink(List plotIds) {
+ @Override
+ public boolean startPlotUnlink(List plotIds, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean finishPlotMerge(List plotIds) {
+ @Override
+ public boolean finishPlotMerge(List plotIds, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean finishPlotUnlink(List plotIds) {
+ @Override
+ public boolean finishPlotUnlink(List plotIds, @Nullable QueueCoordinator queue) {
return false;
}
- @Override public boolean regenerateAllPlotWalls() {
+ @Override public boolean regenerateAllPlotWalls(@Nullable QueueCoordinator queue) {
return false;
}
}
diff --git a/Core/src/main/java/com/plotsquared/core/queue/GlobalBlockQueue.java b/Core/src/main/java/com/plotsquared/core/queue/GlobalBlockQueue.java
index 0e2775b6d..cd18fd0f0 100644
--- a/Core/src/main/java/com/plotsquared/core/queue/GlobalBlockQueue.java
+++ b/Core/src/main/java/com/plotsquared/core/queue/GlobalBlockQueue.java
@@ -42,13 +42,10 @@ public class GlobalBlockQueue {
this.activeQueues = new ConcurrentLinkedDeque<>();
}
- public QueueCoordinator getNewQueue(World world, boolean autoQueue) {
+ public QueueCoordinator getNewQueue(World world) {
QueueCoordinator queue = provider.getNewQueue(world);
// Auto-inject into the queue
PlotSquared.platform().getInjector().injectMembers(queue);
- if (autoQueue) {
- queue.enqueue();
- }
return queue;
}
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 0a7bc6ccd..2d5b2371e 100644
--- a/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java
+++ b/Core/src/main/java/com/plotsquared/core/util/ChunkManager.java
@@ -51,7 +51,7 @@ public abstract class ChunkManager {
public static void setChunkInPlotArea(RunnableVal force,
RunnableVal add, String world, BlockVector2 loc) {
QueueCoordinator queue =
- PlotSquared.platform().getGlobalBlockQueue().getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(world), false);
+ PlotSquared.platform().getGlobalBlockQueue().getNewQueue(PlotSquared.platform().getWorldUtil().getWeWorld(world));
if (PlotSquared.get().getPlotAreaManager().isAugmented(world) && PlotSquared.get()
.isNonStandardGeneration(world, loc)) {
int blockX = loc.getX() << 4;
diff --git a/Core/src/main/java/com/plotsquared/core/util/RegionManager.java b/Core/src/main/java/com/plotsquared/core/util/RegionManager.java
index e94548d0e..228b62a51 100644
--- a/Core/src/main/java/com/plotsquared/core/util/RegionManager.java
+++ b/Core/src/main/java/com/plotsquared/core/util/RegionManager.java
@@ -31,7 +31,6 @@ import com.plotsquared.core.location.Location;
import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotManager;
-import com.plotsquared.core.queue.ChunkCoordinatorBuilder;
import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.TaskManager;
@@ -44,6 +43,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import java.io.File;
import java.util.Collection;
import java.util.HashSet;
@@ -169,7 +169,17 @@ public abstract class RegionManager {
public boolean setCuboids(final PlotArea area, final Set regions,
final Pattern blocks, int minY, int maxY) {
- QueueCoordinator queue = area.getQueue(false);
+ return setCuboids(area, regions, blocks, minY, maxY, null);
+ }
+
+
+ public boolean setCuboids(final PlotArea area, final Set regions,
+ final Pattern blocks, int minY, int maxY, @Nullable QueueCoordinator queue) {
+ boolean enqueue = false;
+ if(queue == null) {
+ queue = area.getQueue();
+ enqueue = true;
+ }
for (CuboidRegion region : regions) {
Location pos1 = Location.at(area.getWorldName(), region.getMinimumPoint().getX(), minY,
region.getMinimumPoint().getZ());
@@ -177,7 +187,7 @@ public abstract class RegionManager {
region.getMaximumPoint().getZ());
queue.setCuboid(pos1, pos2, blocks);
}
- return queue.enqueue();
+ return !enqueue || queue.enqueue();
}
/**
diff --git a/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java b/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java
index 59da4a707..684a6f345 100644
--- a/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java
+++ b/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java
@@ -194,7 +194,7 @@ public abstract class SchematicHandler {
return;
}
try {
- final QueueCoordinator queue = plot.getArea().getQueue(false);
+ final QueueCoordinator queue = plot.getArea().getQueue();
BlockVector3 dimension = schematic.getClipboard().getDimensions();
final int WIDTH = dimension.getX();
final int LENGTH = dimension.getZ();