mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-05 15:14:43 +02:00
Compare commits
14 Commits
7.5.1
...
fix/1.21.4
Author | SHA1 | Date | |
---|---|---|---|
998f7b8732 | |||
7453b2db45 | |||
a67b05c872 | |||
c44a276765 | |||
c2d9a0f778 | |||
55e9d17610 | |||
8512d1526d | |||
4b656711d8 | |||
af7caa1f66 | |||
2d736d8946 | |||
e086d7a37c | |||
52fe75c746 | |||
bdb339905a | |||
1192bf2b33 |
@ -30,8 +30,6 @@ import com.plotsquared.core.util.task.TaskTime;
|
|||||||
import com.sk89q.worldedit.math.BlockVector2;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@ -43,8 +41,6 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@ -59,8 +55,6 @@ import java.util.function.Consumer;
|
|||||||
**/
|
**/
|
||||||
public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + BukkitChunkCoordinator.class.getSimpleName());
|
|
||||||
|
|
||||||
private final List<ProgressSubscriber> progressSubscribers = new LinkedList<>();
|
private final List<ProgressSubscriber> progressSubscribers = new LinkedList<>();
|
||||||
|
|
||||||
private final Queue<BlockVector2> requestedChunks;
|
private final Queue<BlockVector2> requestedChunks;
|
||||||
@ -76,7 +70,6 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
|||||||
private final AtomicInteger expectedSize;
|
private final AtomicInteger expectedSize;
|
||||||
private final AtomicInteger loadingChunks = new AtomicInteger();
|
private final AtomicInteger loadingChunks = new AtomicInteger();
|
||||||
private final boolean forceSync;
|
private final boolean forceSync;
|
||||||
private final boolean shouldGen;
|
|
||||||
|
|
||||||
private int batchSize;
|
private int batchSize;
|
||||||
private PlotSquaredTask task;
|
private PlotSquaredTask task;
|
||||||
@ -94,8 +87,7 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
|||||||
@Assisted final @NonNull Consumer<Throwable> throwableConsumer,
|
@Assisted final @NonNull Consumer<Throwable> throwableConsumer,
|
||||||
@Assisted("unloadAfter") final boolean unloadAfter,
|
@Assisted("unloadAfter") final boolean unloadAfter,
|
||||||
@Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
@Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
||||||
@Assisted("forceSync") final boolean forceSync,
|
@Assisted("forceSync") final boolean forceSync
|
||||||
@Assisted("shouldGen") final boolean shouldGen
|
|
||||||
) {
|
) {
|
||||||
this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks);
|
this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks);
|
||||||
this.availableChunks = new LinkedBlockingQueue<>();
|
this.availableChunks = new LinkedBlockingQueue<>();
|
||||||
@ -111,7 +103,6 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
|||||||
this.bukkitWorld = Bukkit.getWorld(world.getName());
|
this.bukkitWorld = Bukkit.getWorld(world.getName());
|
||||||
this.progressSubscribers.addAll(progressSubscribers);
|
this.progressSubscribers.addAll(progressSubscribers);
|
||||||
this.forceSync = forceSync;
|
this.forceSync = forceSync;
|
||||||
this.shouldGen = shouldGen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -221,28 +212,18 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
|
|||||||
* Requests a batch of chunks to be loaded
|
* Requests a batch of chunks to be loaded
|
||||||
*/
|
*/
|
||||||
private void requestBatch() {
|
private void requestBatch() {
|
||||||
for (int i = 0; i < this.batchSize && this.requestedChunks.peek() != null; i++) {
|
BlockVector2 chunk;
|
||||||
|
for (int i = 0; i < this.batchSize && (chunk = this.requestedChunks.poll()) != null; i++) {
|
||||||
// This required PaperLib to be bumped to version 1.0.4 to mark the request as urgent
|
// This required PaperLib to be bumped to version 1.0.4 to mark the request as urgent
|
||||||
final BlockVector2 chunk = this.requestedChunks.poll();
|
|
||||||
loadingChunks.incrementAndGet();
|
loadingChunks.incrementAndGet();
|
||||||
PaperLib
|
PaperLib
|
||||||
.getChunkAtAsync(this.bukkitWorld, chunk.getX(), chunk.getZ(), shouldGen, true)
|
.getChunkAtAsync(this.bukkitWorld, chunk.getX(), chunk.getZ(), true, true)
|
||||||
.orTimeout(10L, TimeUnit.SECONDS)
|
|
||||||
.whenComplete((chunkObject, throwable) -> {
|
.whenComplete((chunkObject, throwable) -> {
|
||||||
loadingChunks.decrementAndGet();
|
loadingChunks.decrementAndGet();
|
||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
if (throwable instanceof TimeoutException) {
|
throwable.printStackTrace();
|
||||||
LOGGER.warn("Timed out awaiting chunk load {}", chunk);
|
// We want one less because this couldn't be processed
|
||||||
this.requestedChunks.offer(chunk);
|
this.expectedSize.decrementAndGet();
|
||||||
} else {
|
|
||||||
LOGGER.error("Failed to load chunk {}", chunk, throwable);
|
|
||||||
// We want one less because this couldn't be processed
|
|
||||||
this.expectedSize.decrementAndGet();
|
|
||||||
}
|
|
||||||
} else if (chunkObject == null) {
|
|
||||||
if (shouldGen) {
|
|
||||||
LOGGER.error("Null chunk returned for chunk at {}", chunk);
|
|
||||||
}
|
|
||||||
} else if (PlotSquared.get().isMainThread(Thread.currentThread())) {
|
} else if (PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||||
this.processChunk(chunkObject);
|
this.processChunk(chunkObject);
|
||||||
} else {
|
} else {
|
||||||
|
@ -238,7 +238,6 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
.unloadAfter(isUnloadAfter())
|
.unloadAfter(isUnloadAfter())
|
||||||
.withProgressSubscribers(getProgressSubscribers())
|
.withProgressSubscribers(getProgressSubscribers())
|
||||||
.forceSync(isForceSync())
|
.forceSync(isForceSync())
|
||||||
.shouldGen(isShouldGen())
|
|
||||||
.build();
|
.build();
|
||||||
return super.enqueue();
|
return super.enqueue();
|
||||||
}
|
}
|
||||||
|
@ -262,11 +262,6 @@ public class BukkitUtil extends WorldUtil {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isSmallBlock(Location location) {
|
|
||||||
return adapt(location).getBlock().getBoundingBox().getHeight() < 0.25;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NonNegative
|
@NonNegative
|
||||||
public int getHighestBlockSynchronous(final @NonNull String world, final int x, final int z) {
|
public int getHighestBlockSynchronous(final @NonNull String world, final int x, final int z) {
|
||||||
|
@ -60,9 +60,6 @@ public class Music extends SubCommand {
|
|||||||
"music_disc_creator_music_box", "music_disc_precipice"
|
"music_disc_creator_music_box", "music_disc_precipice"
|
||||||
);
|
);
|
||||||
|
|
||||||
// make sure all discs and the bedrock ("cancel") fit into the inventory
|
|
||||||
private static final int INVENTORY_ROWS = (int) Math.ceil((DISCS.size() + 1) / 9.0);
|
|
||||||
|
|
||||||
private final InventoryUtil inventoryUtil;
|
private final InventoryUtil inventoryUtil;
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
|
|
||||||
@ -97,7 +94,7 @@ public class Music extends SubCommand {
|
|||||||
PlotInventory inv = new PlotInventory(
|
PlotInventory inv = new PlotInventory(
|
||||||
this.inventoryUtil,
|
this.inventoryUtil,
|
||||||
player,
|
player,
|
||||||
INVENTORY_ROWS,
|
2,
|
||||||
TranslatableCaption.of("plotjukebox.jukebox_header").getComponent(player)
|
TranslatableCaption.of("plotjukebox.jukebox_header").getComponent(player)
|
||||||
) {
|
) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -117,8 +117,8 @@ public class Remove extends SubCommand {
|
|||||||
}
|
}
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.player_not_removed"),
|
TranslatableCaption.of("errors.invalid_player"),
|
||||||
TagResolver.resolver("player", Tag.inserting(Component.text(args[0])))
|
TagResolver.resolver("value", Tag.inserting(Component.text(args[0])))
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
|
@ -582,8 +582,6 @@ public class Settings extends Config {
|
|||||||
public static boolean PER_WORLD_VISIT = false;
|
public static boolean PER_WORLD_VISIT = false;
|
||||||
@Comment("Search merged plots for having multiple owners when using the visit command")
|
@Comment("Search merged plots for having multiple owners when using the visit command")
|
||||||
public static boolean VISIT_MERGED_OWNERS = true;
|
public static boolean VISIT_MERGED_OWNERS = true;
|
||||||
@Comment("Allows to teleport based on block size instead to spawn on the highest block at the home command")
|
|
||||||
public static boolean SIZED_BASED = true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,7 +432,6 @@ public class HybridUtils {
|
|||||||
if (!UPDATE) {
|
if (!UPDATE) {
|
||||||
Iterator<BlockVector2> iter = chunks.iterator();
|
Iterator<BlockVector2> iter = chunks.iterator();
|
||||||
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
||||||
queue.setShouldGen(false);
|
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
BlockVector2 chunk = iter.next();
|
BlockVector2 chunk = iter.next();
|
||||||
iter.remove();
|
iter.remove();
|
||||||
@ -475,7 +474,6 @@ public class HybridUtils {
|
|||||||
Iterator<BlockVector2> iterator = chunks.iterator();
|
Iterator<BlockVector2> iterator = chunks.iterator();
|
||||||
if (chunks.size() >= 32) {
|
if (chunks.size() >= 32) {
|
||||||
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
||||||
queue.setShouldGen(false);
|
|
||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
final BlockVector2 chunk = iterator.next();
|
final BlockVector2 chunk = iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -489,7 +487,6 @@ public class HybridUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
||||||
queue.setShouldGen(false);
|
|
||||||
while (!chunks.isEmpty()) {
|
while (!chunks.isEmpty()) {
|
||||||
final BlockVector2 chunk = iterator.next();
|
final BlockVector2 chunk = iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -505,6 +502,7 @@ public class HybridUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
Iterator<BlockVector2> iterator = HybridUtils.regions.iterator();
|
Iterator<BlockVector2> iterator = HybridUtils.regions.iterator();
|
||||||
BlockVector2 loc = iterator.next();
|
BlockVector2 loc = iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -512,8 +510,7 @@ public class HybridUtils {
|
|||||||
"Error! Could not update '{}/region/r.{}.{}.mca' (Corrupt chunk?)",
|
"Error! Could not update '{}/region/r.{}.{}.mca' (Corrupt chunk?)",
|
||||||
area.getWorldHash(),
|
area.getWorldHash(),
|
||||||
loc.getX(),
|
loc.getX(),
|
||||||
loc.getZ(),
|
loc.getZ()
|
||||||
e
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
TaskManager.runTaskLater(task, TaskTime.seconds(1L));
|
TaskManager.runTaskLater(task, TaskTime.seconds(1L));
|
||||||
@ -561,7 +558,7 @@ public class HybridUtils {
|
|||||||
try {
|
try {
|
||||||
plotworld.setupSchematics();
|
plotworld.setupSchematics();
|
||||||
} catch (SchematicHandler.UnsupportedFormatException e) {
|
} catch (SchematicHandler.UnsupportedFormatException e) {
|
||||||
LOGGER.error(e);
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -40,8 +40,7 @@ public interface ChunkCoordinatorFactory {
|
|||||||
final @NonNull Consumer<Throwable> throwableConsumer,
|
final @NonNull Consumer<Throwable> throwableConsumer,
|
||||||
@Assisted("unloadAfter") final boolean unloadAfter,
|
@Assisted("unloadAfter") final boolean unloadAfter,
|
||||||
final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
final @NonNull Collection<ProgressSubscriber> progressSubscribers,
|
||||||
@Assisted("forceSync") final boolean forceSync,
|
@Assisted("forceSync") final boolean forceSync
|
||||||
@Assisted("shouldGen") final boolean shouldGen
|
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1407,9 +1407,6 @@ public class Plot {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
Location location = toHomeLocation(bottom, home);
|
Location location = toHomeLocation(bottom, home);
|
||||||
if (Settings.Teleport.SIZED_BASED && this.worldUtil.isSmallBlock(location) && this.worldUtil.isSmallBlock(location.add(0,1,0))) {
|
|
||||||
return location;
|
|
||||||
}
|
|
||||||
if (!this.worldUtil.getBlockSynchronous(location).getBlockType().getMaterial().isAir()) {
|
if (!this.worldUtil.getBlockSynchronous(location).getBlockType().getMaterial().isAir()) {
|
||||||
location = location.withY(
|
location = location.withY(
|
||||||
Math.max(1 + this.worldUtil.getHighestBlockSynchronous(
|
Math.max(1 + this.worldUtil.getHighestBlockSynchronous(
|
||||||
@ -1443,21 +1440,15 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
Location bottom = this.getBottomAbs();
|
Location bottom = this.getBottomAbs();
|
||||||
Location location = toHomeLocation(bottom, home);
|
Location location = toHomeLocation(bottom, home);
|
||||||
if (Settings.Teleport.SIZED_BASED && this.worldUtil.isSmallBlock(location) && this.worldUtil.isSmallBlock(location.add(0,1,0))) {
|
this.worldUtil.getBlock(location, block -> {
|
||||||
result.accept(location);
|
if (!block.getBlockType().getMaterial().isAir()) {
|
||||||
} else {
|
this.worldUtil.getHighestBlock(this.getWorldName(), location.getX(), location.getZ(),
|
||||||
this.worldUtil.getBlock(location, block -> {
|
y -> result.accept(location.withY(Math.max(1 + y, bottom.getY())))
|
||||||
|
);
|
||||||
if (!block.getBlockType().getMaterial().isAir()) {
|
} else {
|
||||||
this.worldUtil.getHighestBlock(this.getWorldName(), location.getX(), location.getZ(),
|
result.accept(location);
|
||||||
y -> result.accept(location.withY(Math.max(1 + y, bottom.getY())))
|
}
|
||||||
);
|
});
|
||||||
} else {
|
|
||||||
result.accept(location);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,6 @@ public class ChunkCoordinatorBuilder {
|
|||||||
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;
|
private boolean forceSync = false;
|
||||||
private boolean shouldGen = true;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ChunkCoordinatorBuilder(@NonNull ChunkCoordinatorFactory chunkCoordinatorFactory) {
|
public ChunkCoordinatorBuilder(@NonNull ChunkCoordinatorFactory chunkCoordinatorFactory) {
|
||||||
@ -204,19 +203,6 @@ public class ChunkCoordinatorBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set whether chunks should be generated as part of this operation. Default is true. Disabling this may not be supported
|
|
||||||
* depending on server implementation. (i.e. setting to false may not actually disable generation as part of this operation
|
|
||||||
* - this is just a catch-all in case of future differing server implementations; the option will work on Spigot/Paper).
|
|
||||||
*
|
|
||||||
* @param shouldGen should generate new chunks or not
|
|
||||||
* @since 7.5.0
|
|
||||||
*/
|
|
||||||
public @NonNull ChunkCoordinatorBuilder shouldGen(final boolean shouldGen) {
|
|
||||||
this.shouldGen = shouldGen;
|
|
||||||
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;
|
||||||
@ -248,8 +234,7 @@ public class ChunkCoordinatorBuilder {
|
|||||||
this.throwableConsumer,
|
this.throwableConsumer,
|
||||||
this.unloadAfter,
|
this.unloadAfter,
|
||||||
this.progressSubscribers,
|
this.progressSubscribers,
|
||||||
this.forceSync,
|
this.forceSync
|
||||||
this.shouldGen
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ public class DelegateQueueCoordinator extends QueueCoordinator {
|
|||||||
|
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
this.setForceSync(parent.isForceSync());
|
this.setForceSync(parent.isForceSync());
|
||||||
this.setShouldGen(parent.isShouldGen());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ public abstract class QueueCoordinator {
|
|||||||
|
|
||||||
private final AtomicBoolean enqueued = new AtomicBoolean();
|
private final AtomicBoolean enqueued = new AtomicBoolean();
|
||||||
private boolean forceSync = false;
|
private boolean forceSync = false;
|
||||||
private boolean shouldGen = true;
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Object chunkObject;
|
private Object chunkObject;
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
||||||
@ -111,30 +110,6 @@ public abstract class QueueCoordinator {
|
|||||||
this.forceSync = forceSync;
|
this.forceSync = forceSync;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get whether chunks should be generated as part of this operation. Default is true. Disabling this may not be supported
|
|
||||||
* depending on server implementation. (i.e. setting to false may not actually disable generation as part of this operation
|
|
||||||
* - this is just a catch-all in case of future differing server implementations; the option will work on Spigot/Paper).
|
|
||||||
*
|
|
||||||
* @since 7.5.0
|
|
||||||
*/
|
|
||||||
public boolean isShouldGen() {
|
|
||||||
return shouldGen;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set whether chunks should be generated as part of this operation. Default is true. Disabling this may not be supported
|
|
||||||
* depending on server implementation. (i.e. setting to false may not actually disable generation as part of this operation
|
|
||||||
* - this is just a catch-all in case of future differing server implementations; the option will work on Spigot/Paper).
|
|
||||||
*
|
|
||||||
* @param shouldGen should generate new chunks or not
|
|
||||||
* @since 7.5.0
|
|
||||||
*/
|
|
||||||
public void setShouldGen(boolean shouldGen) {
|
|
||||||
this.shouldGen = shouldGen;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Chunk Object set to the queue
|
* Get the Chunk Object set to the queue
|
||||||
*
|
*
|
||||||
|
@ -177,13 +177,6 @@ public abstract class WorldUtil {
|
|||||||
*/
|
*/
|
||||||
public abstract void getBlock(@NonNull Location location, @NonNull Consumer<BlockState> result);
|
public abstract void getBlock(@NonNull Location location, @NonNull Consumer<BlockState> result);
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the block smaller as a slab
|
|
||||||
* @param location Block location
|
|
||||||
* @return true if it smaller as a slab
|
|
||||||
*/
|
|
||||||
public abstract boolean isSmallBlock(@NonNull Location location);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the block at a given location (synchronously)
|
* Get the block at a given location (synchronously)
|
||||||
*
|
*
|
||||||
|
@ -22,7 +22,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.intellectualsites.plotsquared"
|
group = "com.intellectualsites.plotsquared"
|
||||||
version = "7.5.1"
|
version = "7.4.2-SNAPSHOT"
|
||||||
|
|
||||||
if (!File("$rootDir/.git").exists()) {
|
if (!File("$rootDir/.git").exists()) {
|
||||||
logger.lifecycle("""
|
logger.lifecycle("""
|
||||||
@ -79,8 +79,8 @@ subprojects {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Tests
|
// Tests
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.12.0")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.11.4")
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.12.0")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.11.4")
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.withId("java") {
|
plugins.withId("java") {
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
# Platform expectations
|
# Platform expectations
|
||||||
paper = "1.20.4-R0.1-SNAPSHOT"
|
paper = "1.20.4-R0.1-SNAPSHOT"
|
||||||
guice = "7.0.0"
|
guice = "7.0.0"
|
||||||
spotbugs = "4.9.1"
|
spotbugs = "4.9.0"
|
||||||
checkerqual = "3.49.0"
|
checkerqual = "3.48.4"
|
||||||
gson = "2.10"
|
gson = "2.10"
|
||||||
guava = "31.1-jre"
|
guava = "31.1-jre"
|
||||||
snakeyaml = "2.0"
|
snakeyaml = "2.0"
|
||||||
adventure = "4.19.0"
|
adventure = "4.18.0"
|
||||||
adventure-bukkit = "4.3.4"
|
adventure-bukkit = "4.3.4"
|
||||||
log4j = "2.19.0"
|
log4j = "2.19.0"
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
worldedit = "7.2.20"
|
worldedit = "7.2.20"
|
||||||
fawe = "2.13.0"
|
fawe = "2.12.3"
|
||||||
placeholderapi = "2.11.6"
|
placeholderapi = "2.11.6"
|
||||||
luckperms = "5.4"
|
luckperms = "5.4"
|
||||||
essentialsx = "2.20.1"
|
essentialsx = "2.20.1"
|
||||||
@ -33,7 +33,7 @@ vault = "1.7.1"
|
|||||||
serverlib = "2.3.6"
|
serverlib = "2.3.6"
|
||||||
|
|
||||||
# Gradle plugins
|
# Gradle plugins
|
||||||
shadow = "8.3.6"
|
shadow = "8.3.5"
|
||||||
grgit = "4.1.1"
|
grgit = "4.1.1"
|
||||||
spotless = "7.0.2"
|
spotless = "7.0.2"
|
||||||
nexus = "2.0.0"
|
nexus = "2.0.0"
|
||||||
|
Reference in New Issue
Block a user