mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 22:24:43 +02:00
Compare commits
1 Commits
fix/v6/nul
...
sponge
Author | SHA1 | Date | |
---|---|---|---|
c6e7df919a |
2
.github/workflows/release-drafter.yml
vendored
2
.github/workflows/release-drafter.yml
vendored
@ -13,6 +13,6 @@ jobs:
|
|||||||
update_release_draft:
|
update_release_draft:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: release-drafter/release-drafter@v5.17.6
|
- uses: release-drafter/release-drafter@v5.17.5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
jdkVersion = "17"
|
|
||||||
build = "gradle clean build -x test"
|
|
||||||
tools = ["findsecbugs", "ErrorProne", "Semgrep", "Detekt", "Infer"]
|
|
||||||
ignoreRules = ["CatchAndPrintStackTrace", "ReferenceEquality", "FallThrough", "FutureReturnValueIgnored", "MixedMutabilityReturnType", "EmptyCatch", "MissingCasesInEnumSwitch", "OperatorPrecedence", "StaticAssignmentInConstructor", "ReferenceEquality", "EqualsHashCode", "EqualsGetClass", "TypeParameterUnusedInFormals", "StringSplitter", "InlineMeSuggester", "NULL_DEREFERENCE"]
|
|
@ -218,7 +218,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
private PlatformWorldManager<World> worldManager;
|
private PlatformWorldManager<World> worldManager;
|
||||||
private Locale serverLocale;
|
private Locale serverLocale;
|
||||||
|
|
||||||
@SuppressWarnings("StringSplitter")
|
|
||||||
@Override
|
@Override
|
||||||
public int @NonNull [] serverVersion() {
|
public int @NonNull [] serverVersion() {
|
||||||
if (this.version == null) {
|
if (this.version == null) {
|
||||||
@ -324,6 +323,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
// Comments
|
// Comments
|
||||||
CommentManager.registerDefaultInboxes();
|
CommentManager.registerDefaultInboxes();
|
||||||
|
|
||||||
|
plotSquared.startExpiryTasks();
|
||||||
|
|
||||||
// Do stuff that was previously done in PlotSquared
|
// Do stuff that was previously done in PlotSquared
|
||||||
// Kill entities
|
// Kill entities
|
||||||
if (Settings.Enabled_Components.KILL_ROAD_MOBS || Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
|
if (Settings.Enabled_Components.KILL_ROAD_MOBS || Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
|
||||||
@ -420,8 +421,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
}, TaskTime.ticks(1L));
|
}, TaskTime.ticks(1L));
|
||||||
}
|
}
|
||||||
|
|
||||||
plotSquared.startExpiryTasks();
|
|
||||||
|
|
||||||
// Once the server has loaded force updating all generators known to P2
|
// Once the server has loaded force updating all generators known to P2
|
||||||
TaskManager.runTaskLater(() -> PlotSquared.platform().setupUtils().updateGenerators(true), TaskTime.ticks(1L));
|
TaskManager.runTaskLater(() -> PlotSquared.platform().setupUtils().updateGenerators(true), TaskTime.ticks(1L));
|
||||||
|
|
||||||
@ -971,6 +970,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
}
|
}
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
entity.remove();
|
entity.remove();
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -982,6 +982,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
}
|
}
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
entity.remove();
|
entity.remove();
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1222,7 +1223,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NonNull
|
@NonNull
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("ALL")
|
||||||
public PlayerManager<? extends PlotPlayer<Player>, ? extends Player> playerManager() {
|
public PlayerManager<? extends PlotPlayer<Player>, ? extends Player> playerManager() {
|
||||||
return (PlayerManager<BukkitPlayer, Player>) injector().getInstance(PlayerManager.class);
|
return (PlayerManager<BukkitPlayer, Player>) injector().getInstance(PlayerManager.class);
|
||||||
}
|
}
|
||||||
|
@ -461,7 +461,6 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
|||||||
this.tamed.tamed = tamed.isTamed();
|
this.tamed.tamed = tamed.isTamed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // Paper deprecation
|
|
||||||
@Override
|
@Override
|
||||||
public Entity spawn(World world, int xOffset, int zOffset) {
|
public Entity spawn(World world, int xOffset, int zOffset) {
|
||||||
Location location = new Location(world, this.getX() + xOffset, this.getY(), this.z + zOffset);
|
Location location = new Location(world, this.getX() + xOffset, this.getY(), this.z + zOffset);
|
||||||
|
@ -36,7 +36,6 @@ import org.bukkit.World;
|
|||||||
|
|
||||||
public class WorldManagerModule extends AbstractModule {
|
public class WorldManagerModule extends AbstractModule {
|
||||||
|
|
||||||
@SuppressWarnings("removal") // Internal use only
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
PlatformWorldManager<World> provideWorldManager() {
|
PlatformWorldManager<World> provideWorldManager() {
|
||||||
|
@ -166,7 +166,7 @@ public class BlockEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
if (Settings.Redstone.DISABLE_OFFLINE) {
|
if (Settings.Redstone.DISABLE_OFFLINE) {
|
||||||
boolean disable = false;
|
boolean disable = false;
|
||||||
if (!DBFunc.SERVER.equals(plot.getOwner())) {
|
if (!plot.getOwner().equals(DBFunc.SERVER)) {
|
||||||
if (plot.isMerged()) {
|
if (plot.isMerged()) {
|
||||||
disable = true;
|
disable = true;
|
||||||
for (UUID owner : plot.getOwners()) {
|
for (UUID owner : plot.getOwners()) {
|
||||||
|
@ -60,7 +60,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class EntitySpawnListener implements Listener {
|
public class EntitySpawnListener implements Listener {
|
||||||
|
|
||||||
private static final String KEY = "P2";
|
private final static String KEY = "P2";
|
||||||
private static boolean ignoreTP = false;
|
private static boolean ignoreTP = false;
|
||||||
private static boolean hasPlotArea = false;
|
private static boolean hasPlotArea = false;
|
||||||
private static String areaName = null;
|
private static String areaName = null;
|
||||||
|
@ -36,6 +36,7 @@ import com.plotsquared.core.plot.world.PlotAreaManager;
|
|||||||
import net.kyori.adventure.text.minimessage.Template;
|
import net.kyori.adventure.text.minimessage.Template;
|
||||||
import org.bukkit.block.Banner;
|
import org.bukkit.block.Banner;
|
||||||
import org.bukkit.block.Beacon;
|
import org.bukkit.block.Beacon;
|
||||||
|
import org.bukkit.block.Bed;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.CommandBlock;
|
import org.bukkit.block.CommandBlock;
|
||||||
import org.bukkit.block.Comparator;
|
import org.bukkit.block.Comparator;
|
||||||
@ -50,7 +51,6 @@ import org.bukkit.block.Jukebox;
|
|||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
import org.bukkit.block.Skull;
|
import org.bukkit.block.Skull;
|
||||||
import org.bukkit.block.Structure;
|
import org.bukkit.block.Structure;
|
||||||
import org.bukkit.block.data.type.Bed;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
@ -154,6 +154,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@ -223,7 +224,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("StringSplitter")
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
||||||
public void playerCommand(PlayerCommandPreprocessEvent event) {
|
public void playerCommand(PlayerCommandPreprocessEvent event) {
|
||||||
String msg = event.getMessage().toLowerCase().replaceAll("/", "").trim();
|
String msg = event.getMessage().toLowerCase().replaceAll("/", "").trim();
|
||||||
@ -379,7 +379,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
this.eventDispatcher.doRespawnTask(pp);
|
this.eventDispatcher.doRespawnTask(pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // We explicitly want #getHomeSynchronous here
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onTeleport(PlayerTeleportEvent event) {
|
public void onTeleport(PlayerTeleportEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
@ -1064,13 +1063,9 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PlayerBlockEventType eventType;
|
PlayerBlockEventType eventType = null;
|
||||||
BlockType blocktype1;
|
BlockType blocktype1;
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
if (block == null) {
|
|
||||||
// We do not care in this case, the player is likely interacting with air ("nothing").
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Location location = BukkitUtil.adapt(block.getLocation());
|
Location location = BukkitUtil.adapt(block.getLocation());
|
||||||
Action action = event.getAction();
|
Action action = event.getAction();
|
||||||
switch (action) {
|
switch (action) {
|
||||||
@ -1672,7 +1667,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // #getLocate is needed for Spigot compatibility
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onLocaleChange(final PlayerLocaleChangeEvent event) {
|
public void onLocaleChange(final PlayerLocaleChangeEvent event) {
|
||||||
// The event is fired before the player is deemed online upon login
|
// The event is fired before the player is deemed online upon login
|
||||||
|
@ -43,6 +43,7 @@ import java.lang.reflect.Method;
|
|||||||
|
|
||||||
import static com.plotsquared.core.util.ReflectionUtils.getRefClass;
|
import static com.plotsquared.core.util.ReflectionUtils.getRefClass;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
public class SingleWorldListener implements Listener {
|
public class SingleWorldListener implements Listener {
|
||||||
|
|
||||||
private final Method methodGetHandleChunk;
|
private final Method methodGetHandleChunk;
|
||||||
|
@ -38,7 +38,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
|||||||
* @deprecated Deprecated and scheduled for removal without replacement
|
* @deprecated Deprecated and scheduled for removal without replacement
|
||||||
* in favor of the build in setup wizard.
|
* in favor of the build in setup wizard.
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
@Singleton
|
@Singleton
|
||||||
public class MultiverseWorldManager extends BukkitWorldManager {
|
public class MultiverseWorldManager extends BukkitWorldManager {
|
||||||
|
|
||||||
|
@ -162,7 +162,6 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("StringSplitter")
|
|
||||||
@Override
|
@Override
|
||||||
@NonNegative
|
@NonNegative
|
||||||
public int hasPermissionRange(
|
public int hasPermissionRange(
|
||||||
@ -320,7 +319,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
if (id == ItemTypes.AIR) {
|
if (id == ItemTypes.AIR) {
|
||||||
// Let's just stop all the discs because why not?
|
// Let's just stop all the discs because why not?
|
||||||
for (final Sound sound : Arrays.stream(Sound.values())
|
for (final Sound sound : Arrays.stream(Sound.values())
|
||||||
.filter(sound -> sound.name().contains("DISC")).toList()) {
|
.filter(sound -> sound.name().contains("DISC")).collect(Collectors.toList())) {
|
||||||
player.stopSound(sound);
|
player.stopSound(sound);
|
||||||
}
|
}
|
||||||
// this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, Material.AIR);
|
// this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, Material.AIR);
|
||||||
@ -332,7 +331,6 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // Needed for Spigot compatibility
|
|
||||||
@Override
|
@Override
|
||||||
public void kick(final String message) {
|
public void kick(final String message) {
|
||||||
this.player.kickPlayer(message);
|
this.player.kickPlayer(message);
|
||||||
|
@ -51,6 +51,7 @@ 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 org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Container;
|
import org.bukkit.block.Container;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
@ -198,7 +199,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (localChunk.getTiles().size() > 0) {
|
if (localChunk.getTiles().size() > 0) {
|
||||||
localChunk.getTiles().forEach((blockVector3, tag) -> {
|
localChunk.getTiles().forEach(((blockVector3, tag) -> {
|
||||||
try {
|
try {
|
||||||
BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag);
|
BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag);
|
||||||
getWorld().setBlock(blockVector3, block, noSideEffectSet);
|
getWorld().setBlock(blockVector3, block, noSideEffectSet);
|
||||||
@ -206,7 +207,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
StateWrapper sw = new StateWrapper(tag);
|
StateWrapper sw = new StateWrapper(tag);
|
||||||
sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ());
|
sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ());
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
if (localChunk.getEntities().size() > 0) {
|
if (localChunk.getEntities().size() > 0) {
|
||||||
localChunk.getEntities().forEach((location, entity) -> getWorld().createEntity(location, entity));
|
localChunk.getEntities().forEach((location, entity) -> getWorld().createEntity(location, entity));
|
||||||
@ -237,7 +238,6 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
/**
|
/**
|
||||||
* Set a block to the world. First tries WNA but defaults to normal block setting methods if that fails
|
* Set a block to the world. First tries WNA but defaults to normal block setting methods if that fails
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
|
||||||
private void setWorldBlock(int x, int y, int z, @NonNull BaseBlock block, @NonNull BlockVector2 blockVector2, boolean edge) {
|
private void setWorldBlock(int x, int y, int z, @NonNull BaseBlock block, @NonNull BlockVector2 blockVector2, boolean edge) {
|
||||||
try {
|
try {
|
||||||
BlockVector3 loc = BlockVector3.at(x, y, z);
|
BlockVector3 loc = BlockVector3.at(x, y, z);
|
||||||
@ -266,7 +266,9 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
|
|||||||
} catch (WorldEditException ignored) {
|
} catch (WorldEditException ignored) {
|
||||||
// Fallback to not so nice method
|
// Fallback to not so nice method
|
||||||
BlockData blockData = BukkitAdapter.adapt(block);
|
BlockData blockData = BukkitAdapter.adapt(block);
|
||||||
Block existing = getBukkitWorld().getBlockAt(x, y, z);
|
Chunk chunk = getBukkitWorld().getChunkAt(blockVector2.getX(), blockVector2.getZ());
|
||||||
|
|
||||||
|
Block existing = chunk.getBlock(x, y, z);
|
||||||
final BlockState existingBaseBlock = BukkitAdapter.adapt(existing.getBlockData());
|
final BlockState existingBaseBlock = BukkitAdapter.adapt(existing.getBlockData());
|
||||||
if (BukkitBlockUtil.get(existing).equals(existingBaseBlock) && existing.getBlockData().matches(blockData)) {
|
if (BukkitBlockUtil.get(existing).equals(existingBaseBlock) && existing.getBlockData().matches(blockData)) {
|
||||||
return;
|
return;
|
||||||
|
@ -166,7 +166,6 @@ public class StateWrapper {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
|
|
||||||
public boolean restoreTag(String worldName, int x, int y, int z) {
|
public boolean restoreTag(String worldName, int x, int y, int z) {
|
||||||
if (this.tag == null) {
|
if (this.tag == null) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -77,7 +77,6 @@ public class BukkitInventoryUtil extends InventoryUtil {
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // Paper deprecation
|
|
||||||
@Override
|
@Override
|
||||||
public void open(PlotInventory inv) {
|
public void open(PlotInventory inv) {
|
||||||
BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
|
BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
|
||||||
@ -114,7 +113,6 @@ public class BukkitInventoryUtil extends InventoryUtil {
|
|||||||
bp.player.updateInventory();
|
bp.player.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // Paper deprecation
|
|
||||||
public PlotItemStack getItem(ItemStack item) {
|
public PlotItemStack getItem(ItemStack item) {
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
return null;
|
return null;
|
||||||
@ -147,7 +145,6 @@ public class BukkitInventoryUtil extends InventoryUtil {
|
|||||||
.toArray(PlotItemStack[]::new);
|
.toArray(PlotItemStack[]::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // #getTitle is needed for Spigot compatibility
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isOpen(PlotInventory plotInventory) {
|
public boolean isOpen(PlotInventory plotInventory) {
|
||||||
if (!plotInventory.isOpen()) {
|
if (!plotInventory.isOpen()) {
|
||||||
|
@ -61,7 +61,6 @@ public class UpdateUtility implements Listener {
|
|||||||
internalVersion = PlotSquared.get().getVersion();
|
internalVersion = PlotSquared.get().getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"deprecation", "DefaultCharset"}) // Suppress Json deprecation, we can't use features from gson 2.8.1 and newer yet
|
|
||||||
public void updateChecker() {
|
public void updateChecker() {
|
||||||
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
|
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
|
||||||
try {
|
try {
|
||||||
@ -69,7 +68,7 @@ public class UpdateUtility implements Listener {
|
|||||||
"https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
|
"https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
|
||||||
.openConnection();
|
.openConnection();
|
||||||
connection.setRequestMethod("GET");
|
connection.setRequestMethod("GET");
|
||||||
JsonObject result = new JsonParser()
|
JsonObject result = (new JsonParser())
|
||||||
.parse(new JsonReader(new InputStreamReader(connection.getInputStream())))
|
.parse(new JsonReader(new InputStreamReader(connection.getInputStream())))
|
||||||
.getAsJsonObject();
|
.getAsJsonObject();
|
||||||
spigotVersion = result.get("current_version").getAsString();
|
spigotVersion = result.get("current_version").getAsString();
|
||||||
@ -92,7 +91,7 @@ public class UpdateUtility implements Listener {
|
|||||||
notify = false;
|
notify = false;
|
||||||
LOGGER.info("Congratulations! You are running the latest PlotSquared version");
|
LOGGER.info("Congratulations! You are running the latest PlotSquared version");
|
||||||
}
|
}
|
||||||
}, 0L, (long) Settings.UpdateChecker.POLL_RATE * 60 * 20);
|
}, 0L, Settings.UpdateChecker.POLL_RATE * 60 * 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelTask() {
|
private void cancelTask() {
|
||||||
|
@ -75,7 +75,6 @@ public class FaweSchematicHandler extends SchematicHandler {
|
|||||||
return delegate.save(tag, path);
|
return delegate.save(tag, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("removal") // Just the override
|
|
||||||
@Override
|
@Override
|
||||||
public void upload(final CompoundTag tag, final UUID uuid, final String file, final RunnableVal<URL> whenDone) {
|
public void upload(final CompoundTag tag, final UUID uuid, final String file, final RunnableVal<URL> whenDone) {
|
||||||
delegate.upload(tag, uuid, file, whenDone);
|
delegate.upload(tag, uuid, file, whenDone);
|
||||||
|
@ -274,7 +274,6 @@ public interface PlotPlatform<P> extends LocaleHolder {
|
|||||||
* Get the {@link PlotAreaManager} implementation.
|
* Get the {@link PlotAreaManager} implementation.
|
||||||
*
|
*
|
||||||
* @return the PlotAreaManager
|
* @return the PlotAreaManager
|
||||||
* @since 6.1.4
|
|
||||||
*/
|
*/
|
||||||
@NonNull PlotAreaManager plotAreaManager();
|
@NonNull PlotAreaManager plotAreaManager();
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ public class PlotSquared {
|
|||||||
*
|
*
|
||||||
* @param version First version
|
* @param version First version
|
||||||
* @param version2 Second version
|
* @param version2 Second version
|
||||||
* @return {@code true} if `version` is >= `version2`
|
* @return true if `version` is >= `version2`
|
||||||
*/
|
*/
|
||||||
public boolean checkVersion(
|
public boolean checkVersion(
|
||||||
final int[] version,
|
final int[] version,
|
||||||
@ -338,13 +338,10 @@ public class PlotSquared {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a global reference to a plot world.
|
* Add a global reference to a plot world.
|
||||||
* <p>
|
|
||||||
* You can remove the reference by calling {@link #removePlotArea(PlotArea)}
|
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param plotArea the {@link PlotArea} to add.
|
* @param plotArea the {@link PlotArea} to add.
|
||||||
|
* @see #removePlotArea(PlotArea) To remove the reference
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void addPlotArea(final @NonNull PlotArea plotArea) {
|
public void addPlotArea(final @NonNull PlotArea plotArea) {
|
||||||
HashMap<PlotId, Plot> plots;
|
HashMap<PlotId, Plot> plots;
|
||||||
if (plots_tmp == null || (plots = plots_tmp.remove(plotArea.toString())) == null) {
|
if (plots_tmp == null || (plots = plots_tmp.remove(plotArea.toString())) == null) {
|
||||||
@ -559,7 +556,6 @@ public class PlotSquared {
|
|||||||
*
|
*
|
||||||
* @param input an array of plots to sort
|
* @param input an array of plots to sort
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private void sortPlotsByHash(final @NonNull Plot @NonNull [] input) {
|
private void sortPlotsByHash(final @NonNull Plot @NonNull [] input) {
|
||||||
List<Plot>[] bucket = new ArrayList[32];
|
List<Plot>[] bucket = new ArrayList[32];
|
||||||
Arrays.fill(bucket, new ArrayList<>());
|
Arrays.fill(bucket, new ArrayList<>());
|
||||||
@ -700,12 +696,20 @@ public class PlotSquared {
|
|||||||
ArrayList<Plot> toReturn = new ArrayList<>(plots.size());
|
ArrayList<Plot> toReturn = new ArrayList<>(plots.size());
|
||||||
for (PlotArea area : areas) {
|
for (PlotArea area : areas) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case CREATION_DATE -> toReturn.addAll(sortPlotsByTemp(map.get(area)));
|
case CREATION_DATE:
|
||||||
case CREATION_DATE_TIMESTAMP -> toReturn.addAll(sortPlotsByTimestamp(map.get(area)));
|
toReturn.addAll(sortPlotsByTemp(map.get(area)));
|
||||||
case DISTANCE_FROM_ORIGIN -> toReturn.addAll(sortPlotsByHash(map.get(area)));
|
break;
|
||||||
case LAST_MODIFIED -> toReturn.addAll(sortPlotsByModified(map.get(area)));
|
case CREATION_DATE_TIMESTAMP:
|
||||||
default -> {
|
toReturn.addAll(sortPlotsByTimestamp(map.get(area)));
|
||||||
}
|
break;
|
||||||
|
case DISTANCE_FROM_ORIGIN:
|
||||||
|
toReturn.addAll(sortPlotsByHash(map.get(area)));
|
||||||
|
break;
|
||||||
|
case LAST_MODIFIED:
|
||||||
|
toReturn.addAll(sortPlotsByModified(map.get(area)));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return toReturn;
|
return toReturn;
|
||||||
@ -735,7 +739,7 @@ public class PlotSquared {
|
|||||||
*
|
*
|
||||||
* @param plot the plot to remove
|
* @param plot the plot to remove
|
||||||
* @param callEvent If to call an event about the plot being removed
|
* @param callEvent If to call an event about the plot being removed
|
||||||
* @return {@code true} if plot existed | {@code false} if it didn't
|
* @return true if plot existed | false if it didn't
|
||||||
*/
|
*/
|
||||||
public boolean removePlot(
|
public boolean removePlot(
|
||||||
final @NonNull Plot plot,
|
final @NonNull Plot plot,
|
||||||
@ -1478,7 +1482,7 @@ public class PlotSquared {
|
|||||||
*
|
*
|
||||||
* @param world World name
|
* @param world World name
|
||||||
* @param chunkCoordinates Chunk coordinates
|
* @param chunkCoordinates Chunk coordinates
|
||||||
* @return {@code true} if the chunk uses non-standard generation, {@code false} if not
|
* @return True if the chunk uses non-standard generation, false if not
|
||||||
*/
|
*/
|
||||||
public boolean isNonStandardGeneration(
|
public boolean isNonStandardGeneration(
|
||||||
final @NonNull String world,
|
final @NonNull String world,
|
||||||
@ -1523,12 +1527,10 @@ public class PlotSquared {
|
|||||||
/**
|
/**
|
||||||
* Get the caption map belonging to a namespace. If none exists, a dummy
|
* Get the caption map belonging to a namespace. If none exists, a dummy
|
||||||
* caption map will be returned.
|
* caption map will be returned.
|
||||||
* <p>
|
|
||||||
* You can register a caption map by calling {@link #registerCaptionMap(String, CaptionMap)}
|
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param namespace Namespace
|
* @param namespace Namespace
|
||||||
* @return Map instance
|
* @return Map instance
|
||||||
|
* @see #registerCaptionMap(String, CaptionMap) To register a caption map
|
||||||
*/
|
*/
|
||||||
public @NonNull CaptionMap getCaptionMap(final @NonNull String namespace) {
|
public @NonNull CaptionMap getCaptionMap(final @NonNull String namespace) {
|
||||||
return this.captionMaps.computeIfAbsent(
|
return this.captionMaps.computeIfAbsent(
|
||||||
@ -1538,7 +1540,7 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a caption map. The namespace needs to be equal to the namespace used for
|
* Register a caption map. The namespace needs be equal to the namespace used for
|
||||||
* the {@link TranslatableCaption}s inside the map.
|
* the {@link TranslatableCaption}s inside the map.
|
||||||
*
|
*
|
||||||
* @param namespace Namespace
|
* @param namespace Namespace
|
||||||
|
@ -122,7 +122,7 @@ public final class PlotVersion {
|
|||||||
* Compare a given version string with the one cached here.
|
* Compare a given version string with the one cached here.
|
||||||
*
|
*
|
||||||
* @param versionString the version to compare
|
* @param versionString the version to compare
|
||||||
* @return {@code true} if the given version is a "later" version
|
* @return true if the given version is a "later" version
|
||||||
*/
|
*/
|
||||||
public boolean isLaterVersion(final @NonNull String versionString) {
|
public boolean isLaterVersion(final @NonNull String versionString) {
|
||||||
int dash = versionString.indexOf('-');
|
int dash = versionString.indexOf('-');
|
||||||
@ -144,7 +144,7 @@ public final class PlotVersion {
|
|||||||
* Compare a given version with the one cached here.
|
* Compare a given version with the one cached here.
|
||||||
*
|
*
|
||||||
* @param verArray the version to compare
|
* @param verArray the version to compare
|
||||||
* @return {@code true} if the given version is a "later" version
|
* @return true if the given version is a "later" version
|
||||||
*/
|
*/
|
||||||
public boolean isLaterVersion(int[] verArray) {
|
public boolean isLaterVersion(int[] verArray) {
|
||||||
if (verArray[0] > version[0]) {
|
if (verArray[0] > version[0]) {
|
||||||
|
@ -88,7 +88,7 @@ public interface BackupManager {
|
|||||||
* Returns true if (potentially) destructive actions should cause
|
* Returns true if (potentially) destructive actions should cause
|
||||||
* PlotSquared to create automatic plot backups
|
* PlotSquared to create automatic plot backups
|
||||||
*
|
*
|
||||||
* @return {@code true} if automatic backups are enabled
|
* @return True if automatic backups are enabled
|
||||||
*/
|
*/
|
||||||
boolean shouldAutomaticallyBackup();
|
boolean shouldAutomaticallyBackup();
|
||||||
|
|
||||||
|
@ -29,8 +29,7 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
public class ArrayUtil {
|
public class ArrayUtil {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
public static final <T> T[] concatAll(T[] first, T[]... rest) {
|
||||||
public static <T> T[] concatAll(T[] first, T[]... rest) {
|
|
||||||
int totalLength = first.length;
|
int totalLength = first.length;
|
||||||
for (T[] array : rest) {
|
for (T[] array : rest) {
|
||||||
totalLength += array.length;
|
totalLength += array.length;
|
||||||
|
@ -35,7 +35,6 @@ public class FlatRandomCollection<T> extends RandomCollection<T> {
|
|||||||
|
|
||||||
private final T[] values;
|
private final T[] values;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public FlatRandomCollection(Map<T, Double> weights, Random random) {
|
public FlatRandomCollection(Map<T, Double> weights, Random random) {
|
||||||
super(weights, random);
|
super(weights, random);
|
||||||
int max = 0;
|
int max = 0;
|
||||||
|
@ -241,7 +241,6 @@ public class QuadMap<T> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void recalculateSkip() {
|
public void recalculateSkip() {
|
||||||
QuadMap<T> map = null;
|
QuadMap<T> map = null;
|
||||||
for (QuadMap<T> current : new QuadMap[]{this.one, this.two, this.three, this.four}) {
|
for (QuadMap<T> current : new QuadMap[]{this.one, this.two, this.three, this.four}) {
|
||||||
|
@ -34,7 +34,7 @@ import net.kyori.adventure.text.minimessage.Template;
|
|||||||
* @deprecated In favor of "/plot toggle chat" and
|
* @deprecated In favor of "/plot toggle chat" and
|
||||||
* scheduled for removal within the next major release.
|
* scheduled for removal within the next major release.
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
@CommandDeclaration(command = "chat",
|
@CommandDeclaration(command = "chat",
|
||||||
usage = "/plot chat",
|
usage = "/plot chat",
|
||||||
permission = "plots.chat",
|
permission = "plots.chat",
|
||||||
|
@ -58,7 +58,6 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
public class Clear extends Command {
|
public class Clear extends Command {
|
||||||
|
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
private final GlobalBlockQueue blockQueue;
|
private final GlobalBlockQueue blockQueue;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
@ -288,7 +288,7 @@ public abstract class Command {
|
|||||||
* @param args Arguments
|
* @param args Arguments
|
||||||
* @param confirm Instance, Success, Failure
|
* @param confirm Instance, Success, Failure
|
||||||
* @param whenDone task to run when done
|
* @param whenDone task to run when done
|
||||||
* @return CompletableFuture {@code true} if the command executed fully, {@code false} in
|
* @return CompletableFuture true if the command executed fully, false in
|
||||||
* any other case
|
* any other case
|
||||||
*/
|
*/
|
||||||
public CompletableFuture<Boolean> execute(
|
public CompletableFuture<Boolean> execute(
|
||||||
@ -375,6 +375,7 @@ public abstract class Command {
|
|||||||
boolean failed = args.length < reqArgs.length;
|
boolean failed = args.length < reqArgs.length;
|
||||||
String[] baseSplit = getCommandString().split(" ");
|
String[] baseSplit = getCommandString().split(" ");
|
||||||
String[] fullSplit = getUsage().split(" ");
|
String[] fullSplit = getUsage().split(" ");
|
||||||
|
String base = getCommandString();
|
||||||
if (fullSplit.length - baseSplit.length < reqArgs.length) {
|
if (fullSplit.length - baseSplit.length < reqArgs.length) {
|
||||||
String[] tmp = new String[baseSplit.length + reqArgs.length];
|
String[] tmp = new String[baseSplit.length + reqArgs.length];
|
||||||
System.arraycopy(fullSplit, 0, tmp, 0, fullSplit.length);
|
System.arraycopy(fullSplit, 0, tmp, 0, fullSplit.length);
|
||||||
|
@ -69,7 +69,6 @@ public class Condense extends SubCommand {
|
|||||||
this.worldUtil = worldUtil;
|
this.worldUtil = worldUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(final PlotPlayer<?> player, String[] args) {
|
public boolean onCommand(final PlotPlayer<?> player, String[] args) {
|
||||||
if (args.length != 2 && args.length != 3) {
|
if (args.length != 2 && args.length != 3) {
|
||||||
|
@ -255,7 +255,7 @@ public class DatabaseCommand extends SubCommand {
|
|||||||
player.sendMessage(TranslatableCaption.of("database.failed_to_save_plots"));
|
player.sendMessage(TranslatableCaption.of("database.failed_to_save_plots"));
|
||||||
player.sendMessage(TranslatableCaption.of("errors.stacktrace_begin"));
|
player.sendMessage(TranslatableCaption.of("errors.stacktrace_begin"));
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
player.sendMessage(TranslatableCaption.of("errors.stacktrace_end"));
|
player.sendMessage(TranslatableCaption.of(("errors.stacktrace_end")));
|
||||||
player.sendMessage(TranslatableCaption.of("database.invalid_args"));
|
player.sendMessage(TranslatableCaption.of("database.invalid_args"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -94,12 +94,12 @@ public class Download extends SubCommand {
|
|||||||
player.sendMessage(TranslatableCaption.of("info.plot_unowned"));
|
player.sendMessage(TranslatableCaption.of("info.plot_unowned"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((Settings.Done.REQUIRED_FOR_DOWNLOAD && !DoneFlag.isDone(plot)) && !Permissions
|
if ((Settings.Done.REQUIRED_FOR_DOWNLOAD && (!DoneFlag.isDone(plot))) && !Permissions
|
||||||
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DOWNLOAD)) {
|
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DOWNLOAD)) {
|
||||||
player.sendMessage(TranslatableCaption.of("done.done_not_done"));
|
player.sendMessage(TranslatableCaption.of("done.done_not_done"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!plot.isOwner(player.getUUID()) && !Permissions
|
if ((!plot.isOwner(player.getUUID())) && !Permissions
|
||||||
.hasPermission(player, Permission.PERMISSION_ADMIN.toString())) {
|
.hasPermission(player, Permission.PERMISSION_ADMIN.toString())) {
|
||||||
player.sendMessage(TranslatableCaption.of("permission.no_plot_perms"));
|
player.sendMessage(TranslatableCaption.of("permission.no_plot_perms"));
|
||||||
return false;
|
return false;
|
||||||
|
@ -165,7 +165,7 @@ public final class FlagCommand extends Command {
|
|||||||
/**
|
/**
|
||||||
* Checks if the player is allowed to modify the flags at their current location
|
* Checks if the player is allowed to modify the flags at their current location
|
||||||
*
|
*
|
||||||
* @return {@code true} if the player is allowed to modify the flags at their current location
|
* @return true if the player is allowed to modify the flags at their current location
|
||||||
*/
|
*/
|
||||||
private static boolean checkRequirements(final @NonNull PlotPlayer<?> player) {
|
private static boolean checkRequirements(final @NonNull PlotPlayer<?> player) {
|
||||||
final Location location = player.getLocation();
|
final Location location = player.getLocation();
|
||||||
@ -367,7 +367,6 @@ public final class FlagCommand extends Command {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
||||||
@CommandDeclaration(command = "add",
|
@CommandDeclaration(command = "add",
|
||||||
aliases = {"a", "add"},
|
aliases = {"a", "add"},
|
||||||
usage = "/plot flag add <flag> <value>",
|
usage = "/plot flag add <flag> <value>",
|
||||||
@ -436,7 +435,6 @@ public final class FlagCommand extends Command {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
||||||
@CommandDeclaration(command = "remove",
|
@CommandDeclaration(command = "remove",
|
||||||
aliases = {"r", "remove", "delete"},
|
aliases = {"r", "remove", "delete"},
|
||||||
usage = "/plot flag remove <flag> [values]",
|
usage = "/plot flag remove <flag> [values]",
|
||||||
|
@ -112,7 +112,7 @@ public class Like extends SubCommand {
|
|||||||
});
|
});
|
||||||
for (final Plot plot : plots) {
|
for (final Plot plot : plots) {
|
||||||
if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(plot)) && plot
|
if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(plot)) && plot
|
||||||
.isBasePlot() && !plot.getLikes().containsKey(uuid)) {
|
.isBasePlot() && (!plot.getLikes().containsKey(uuid))) {
|
||||||
plot.teleportPlayer(player, TeleportCause.COMMAND_LIKE, result -> {
|
plot.teleportPlayer(player, TeleportCause.COMMAND_LIKE, result -> {
|
||||||
});
|
});
|
||||||
player.sendMessage(TranslatableCaption.of("tutorial.rate_this"));
|
player.sendMessage(TranslatableCaption.of("tutorial.rate_this"));
|
||||||
|
@ -104,7 +104,7 @@ public class Rate extends SubCommand {
|
|||||||
UUID uuid = player.getUUID();
|
UUID uuid = player.getUUID();
|
||||||
for (Plot p : plots) {
|
for (Plot p : plots) {
|
||||||
if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(p)) && p
|
if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(p)) && p
|
||||||
.isBasePlot() && !p.getRatings().containsKey(uuid) && !p
|
.isBasePlot() && (!p.getRatings().containsKey(uuid)) && !p
|
||||||
.isAdded(uuid)) {
|
.isAdded(uuid)) {
|
||||||
p.teleportPlayer(player, TeleportCause.COMMAND_RATE, result -> {
|
p.teleportPlayer(player, TeleportCause.COMMAND_RATE, result -> {
|
||||||
});
|
});
|
||||||
|
@ -88,6 +88,7 @@ public class RegenAllRoads extends SubCommand {
|
|||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
String name = args[0];
|
||||||
PlotManager manager = area.getPlotManager();
|
PlotManager manager = area.getPlotManager();
|
||||||
if (!(manager instanceof HybridPlotManager)) {
|
if (!(manager instanceof HybridPlotManager)) {
|
||||||
player.sendMessage(TranslatableCaption.of("errors.invalid_plot_world"));
|
player.sendMessage(TranslatableCaption.of("errors.invalid_plot_world"));
|
||||||
|
@ -50,7 +50,7 @@ import java.util.UUID;
|
|||||||
* @deprecated In favor of "/plot download" (Arkitektonika) and scheduled
|
* @deprecated In favor of "/plot download" (Arkitektonika) and scheduled
|
||||||
* for removal within the next major release.
|
* for removal within the next major release.
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.9")
|
@Deprecated(forRemoval = true)
|
||||||
@CommandDeclaration(command = "save",
|
@CommandDeclaration(command = "save",
|
||||||
category = CommandCategory.SCHEMATIC,
|
category = CommandCategory.SCHEMATIC,
|
||||||
requiredType = RequiredType.NONE,
|
requiredType = RequiredType.NONE,
|
||||||
|
@ -181,6 +181,8 @@ public class SchematicCmd extends SubCommand {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
case "saveall", "exportall" -> {
|
case "saveall", "exportall" -> {
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
final Plot plot = loc.getPlotAbs();
|
||||||
if (!(player instanceof ConsolePlayer)) {
|
if (!(player instanceof ConsolePlayer)) {
|
||||||
player.sendMessage(TranslatableCaption.of("console.not_console"));
|
player.sendMessage(TranslatableCaption.of("console.not_console"));
|
||||||
return false;
|
return false;
|
||||||
|
@ -100,7 +100,7 @@ public class Set extends SubCommand {
|
|||||||
|
|
||||||
if (Settings.Enabled_Components.CHUNK_PROCESSOR) {
|
if (Settings.Enabled_Components.CHUNK_PROCESSOR) {
|
||||||
forbiddenTypes.addAll(worldUtil.getTileEntityTypes().stream().map(
|
forbiddenTypes.addAll(worldUtil.getTileEntityTypes().stream().map(
|
||||||
BlockType::getName).toList());
|
BlockType::getName).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_ALLOW_UNSAFE) &&
|
if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_ALLOW_UNSAFE) &&
|
||||||
|
@ -361,4 +361,30 @@ public class Visit extends Command {
|
|||||||
return completions;
|
return completions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void completeNumbers(final List<Command> commands, final String arg, final int start) {
|
||||||
|
for (int i = 0; i < 100; i++) {
|
||||||
|
final String command = Integer.toString(start + 1);
|
||||||
|
if (!command.toLowerCase().startsWith(arg.toLowerCase())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
commands.add(new Command(this, false, command, "",
|
||||||
|
RequiredType.NONE, CommandCategory.TELEPORT
|
||||||
|
) {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void completeAreas(final List<Command> commands, final String arg) {
|
||||||
|
for (final PlotArea area : this.plotAreaManager.getAllPlotAreas()) {
|
||||||
|
final String areaName = area.getWorldName() + ";" + area.getId();
|
||||||
|
if (!areaName.toLowerCase().startsWith(arg.toLowerCase())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
commands.add(new Command(this, false, area.getWorldName() + ";" + area.getId(), "",
|
||||||
|
RequiredType.NONE, CommandCategory.TELEPORT
|
||||||
|
) {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,6 @@ public class ComponentPreset implements ConfigurationSerializable {
|
|||||||
this.icon = icon;
|
this.icon = icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static ComponentPreset deserialize(final @NonNull Map<String, Object> map) {
|
public static ComponentPreset deserialize(final @NonNull Map<String, Object> map) {
|
||||||
final ClassicPlotManagerComponent classicPlotManagerComponent = ClassicPlotManagerComponent
|
final ClassicPlotManagerComponent classicPlotManagerComponent = ClassicPlotManagerComponent
|
||||||
.fromString(map.getOrDefault("component", "").toString()).orElseThrow(() ->
|
.fromString(map.getOrDefault("component", "").toString()).orElseThrow(() ->
|
||||||
|
@ -75,7 +75,6 @@ public class ComponentPresetManager {
|
|||||||
private final InventoryUtil inventoryUtil;
|
private final InventoryUtil inventoryUtil;
|
||||||
private File componentsFile;
|
private File componentsFile;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Inject
|
@Inject
|
||||||
public ComponentPresetManager(final @NonNull EconHandler econHandler, final @NonNull InventoryUtil inventoryUtil) throws
|
public ComponentPresetManager(final @NonNull EconHandler econHandler, final @NonNull InventoryUtil inventoryUtil) throws
|
||||||
IOException {
|
IOException {
|
||||||
|
@ -58,7 +58,6 @@ public class Config {
|
|||||||
* @param <T> value type
|
* @param <T> value type
|
||||||
* @return value
|
* @return value
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static <T> T get(String key, Class<?> root) {
|
public static <T> T get(String key, Class<?> root) {
|
||||||
String[] split = key.split("\\.");
|
String[] split = key.split("\\.");
|
||||||
Object instance = getInstance(split, root);
|
Object instance = getInstance(split, root);
|
||||||
@ -184,7 +183,6 @@ public class Config {
|
|||||||
return value != null ? value.toString() : "null";
|
return value != null ? value.toString() : "null";
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
||||||
private static void save(PrintWriter writer, Class<?> clazz, Object instance, int indent) {
|
private static void save(PrintWriter writer, Class<?> clazz, Object instance, int indent) {
|
||||||
try {
|
try {
|
||||||
String lineSeparator = System.lineSeparator();
|
String lineSeparator = System.lineSeparator();
|
||||||
@ -260,6 +258,21 @@ public class Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the field for a specific config node.
|
||||||
|
*
|
||||||
|
* @param split the node (split by period)
|
||||||
|
* @param root
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static Field getField(String[] split, Class<?> root) {
|
||||||
|
Object instance = getInstance(split, root);
|
||||||
|
if (instance == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return getField(split, instance);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the field for a specific config node and instance<br>
|
* Get the field for a specific config node and instance<br>
|
||||||
* Note: As expiry can have multiple blocks there will be multiple instances
|
* Note: As expiry can have multiple blocks there will be multiple instances
|
||||||
@ -292,7 +305,6 @@ public class Config {
|
|||||||
* @param root
|
* @param root
|
||||||
* @return The instance or null
|
* @return The instance or null
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
||||||
private static Object getInstance(String[] split, Class<?> root) {
|
private static Object getInstance(String[] split, Class<?> root) {
|
||||||
try {
|
try {
|
||||||
Class<?> clazz = root == null ? MethodHandles.lookup().lookupClass() : root;
|
Class<?> clazz = root == null ? MethodHandles.lookup().lookupClass() : root;
|
||||||
|
@ -73,7 +73,7 @@ public interface ConfigurationSection {
|
|||||||
* has been specified, this will return true.
|
* has been specified, this will return true.
|
||||||
*
|
*
|
||||||
* @param path Path to check for existence.
|
* @param path Path to check for existence.
|
||||||
* @return {@code true} if this section contains the requested path, either via
|
* @return True if this section contains the requested path, either via
|
||||||
* default or being set.
|
* default or being set.
|
||||||
* @throws IllegalArgumentException Thrown when path is {@code null}.
|
* @throws IllegalArgumentException Thrown when path is {@code null}.
|
||||||
*/
|
*/
|
||||||
@ -87,7 +87,7 @@ public interface ConfigurationSection {
|
|||||||
* has been specified, this will still return false.
|
* has been specified, this will still return false.
|
||||||
*
|
*
|
||||||
* @param path Path to check for existence.
|
* @param path Path to check for existence.
|
||||||
* @return {@code true} if this section contains the requested path, regardless of
|
* @return True if this section contains the requested path, regardless of
|
||||||
* having a default.
|
* having a default.
|
||||||
* @throws IllegalArgumentException Thrown when path is {@code null}.
|
* @throws IllegalArgumentException Thrown when path is {@code null}.
|
||||||
*/
|
*/
|
||||||
|
@ -196,8 +196,6 @@ public class Settings extends Config {
|
|||||||
public boolean CONFIRMATION = true;
|
public boolean CONFIRMATION = true;
|
||||||
public int DAYS = 90;
|
public int DAYS = 90;
|
||||||
public int SKIP_ACCOUNT_AGE_DAYS = -1;
|
public int SKIP_ACCOUNT_AGE_DAYS = -1;
|
||||||
@Comment("True, if a plot should be deleted if the plot owner is unknown to the server")
|
|
||||||
public boolean DELETE_IF_OWNER_IS_UNKNOWN = false;
|
|
||||||
public List<String> WORLDS = new ArrayList<>(Collections.singletonList("*"));
|
public List<String> WORLDS = new ArrayList<>(Collections.singletonList("*"));
|
||||||
|
|
||||||
|
|
||||||
@ -438,7 +436,7 @@ public class Settings extends Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
@Comment("Schematic interface related settings")
|
@Comment("Schematic interface related settings")
|
||||||
public static class Web {
|
public static class Web {
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public interface CaptionMap {
|
|||||||
* Check if the map supports a given locale
|
* Check if the map supports a given locale
|
||||||
*
|
*
|
||||||
* @param locale Locale
|
* @param locale Locale
|
||||||
* @return {@code true} if the map supports the locale
|
* @return True if the map supports the locale
|
||||||
*/
|
*/
|
||||||
boolean supportsLocale(final @NonNull Locale locale);
|
boolean supportsLocale(final @NonNull Locale locale);
|
||||||
|
|
||||||
|
@ -103,7 +103,6 @@ public class CaptionUtility {
|
|||||||
* @param miniMessageString the message from which the specified click events should be removed from.
|
* @param miniMessageString the message from which the specified click events should be removed from.
|
||||||
* @return the string without the click events that are configured to be removed.
|
* @return the string without the click events that are configured to be removed.
|
||||||
* @see Settings.Chat#CLICK_EVENT_ACTIONS_TO_REMOVE
|
* @see Settings.Chat#CLICK_EVENT_ACTIONS_TO_REMOVE
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public static String stripClickEvents(final @NonNull String miniMessageString) {
|
public static String stripClickEvents(final @NonNull String miniMessageString) {
|
||||||
// parse, transform and serialize again
|
// parse, transform and serialize again
|
||||||
@ -123,7 +122,6 @@ public class CaptionUtility {
|
|||||||
* @return the string without the click events that are configured to be removed.
|
* @return the string without the click events that are configured to be removed.
|
||||||
* @see Settings.Chat#CLICK_EVENT_ACTIONS_TO_REMOVE
|
* @see Settings.Chat#CLICK_EVENT_ACTIONS_TO_REMOVE
|
||||||
* @see #stripClickEvents(String)
|
* @see #stripClickEvents(String)
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public static String stripClickEvents(
|
public static String stripClickEvents(
|
||||||
final @NonNull PlotFlag<?, ?> flag,
|
final @NonNull PlotFlag<?, ?> flag,
|
||||||
|
@ -99,7 +99,7 @@ public interface ChatFormatter {
|
|||||||
* Whether or not the output should escape
|
* Whether or not the output should escape
|
||||||
* any formatting keys
|
* any formatting keys
|
||||||
*
|
*
|
||||||
* @return {@code true} if raw output is to be used
|
* @return True if raw output is to be used
|
||||||
*/
|
*/
|
||||||
public boolean isRawOutput() {
|
public boolean isRawOutput() {
|
||||||
return this.rawOutput;
|
return this.rawOutput;
|
||||||
|
@ -39,7 +39,6 @@ public interface ComponentTransform {
|
|||||||
*
|
*
|
||||||
* @param transform the transform to apply.
|
* @param transform the transform to apply.
|
||||||
* @return a new transform which is applied on all child components and the component itself.
|
* @return a new transform which is applied on all child components and the component itself.
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
static ComponentTransform nested(ComponentTransform transform) {
|
static ComponentTransform nested(ComponentTransform transform) {
|
||||||
return new NestedComponentTransform(transform);
|
return new NestedComponentTransform(transform);
|
||||||
@ -52,7 +51,6 @@ public interface ComponentTransform {
|
|||||||
*
|
*
|
||||||
* @param actionsToRemove the actions used to filter which click events should be removed.
|
* @param actionsToRemove the actions used to filter which click events should be removed.
|
||||||
* @return a new transform that removes click events from a component.
|
* @return a new transform that removes click events from a component.
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
static ComponentTransform stripClicks(ClickEvent.Action... actionsToRemove) {
|
static ComponentTransform stripClicks(ClickEvent.Action... actionsToRemove) {
|
||||||
return new ClickStripTransform(Set.of(actionsToRemove));
|
return new ClickStripTransform(Set.of(actionsToRemove));
|
||||||
@ -63,7 +61,6 @@ public interface ComponentTransform {
|
|||||||
*
|
*
|
||||||
* @param original the component to transform.
|
* @param original the component to transform.
|
||||||
* @return the transformed component.
|
* @return the transformed component.
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
@NonNull Component transform(@NonNull Component original);
|
@NonNull Component transform(@NonNull Component original);
|
||||||
|
|
||||||
|
@ -36,12 +36,10 @@ import java.util.Locale;
|
|||||||
public interface LocaleHolder {
|
public interface LocaleHolder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the console locale holder.
|
* Get the console locale holder
|
||||||
* <p>
|
|
||||||
* You can use {@link ConsolePlayer#getConsole()} for direct access to the {@link ConsolePlayer}
|
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @return Console locale holder
|
* @return Console locale holder
|
||||||
|
* @see ConsolePlayer#getConsole() for direct access to the {@link ConsolePlayer}
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
static LocaleHolder console() {
|
static LocaleHolder console() {
|
||||||
|
@ -371,7 +371,7 @@ public interface AbstractDB {
|
|||||||
/**
|
/**
|
||||||
* Don't use this method unless you want to ruin someone's server.
|
* Don't use this method unless you want to ruin someone's server.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the tables were deleted, {@code false} when an error is encountered
|
* @return true if the tables were deleted, false when an error is encountered
|
||||||
*/
|
*/
|
||||||
boolean deleteTables();
|
boolean deleteTables();
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public abstract class Database {
|
|||||||
/**
|
/**
|
||||||
* Checks if a connection is open with the database.
|
* Checks if a connection is open with the database.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the connection is open
|
* @return true if the connection is open
|
||||||
* @throws SQLException if the connection cannot be checked
|
* @throws SQLException if the connection cannot be checked
|
||||||
*/
|
*/
|
||||||
public abstract boolean checkConnection() throws SQLException;
|
public abstract boolean checkConnection() throws SQLException;
|
||||||
@ -67,7 +67,7 @@ public abstract class Database {
|
|||||||
/**
|
/**
|
||||||
* Closes the connection with the database.
|
* Closes the connection with the database.
|
||||||
*
|
*
|
||||||
* @return {@code true} if successful
|
* @return true if successful
|
||||||
* @throws SQLException if the connection cannot be closed
|
* @throws SQLException if the connection cannot be closed
|
||||||
*/
|
*/
|
||||||
public abstract boolean closeConnection() throws SQLException;
|
public abstract boolean closeConnection() throws SQLException;
|
||||||
|
@ -101,9 +101,7 @@ public class SQLManager implements AbstractDB {
|
|||||||
private final String prefix;
|
private final String prefix;
|
||||||
private final Database database;
|
private final Database database;
|
||||||
private final boolean mySQL;
|
private final boolean mySQL;
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
private final PlotListener plotListener;
|
private final PlotListener plotListener;
|
||||||
private final YamlConfiguration worldConfiguration;
|
private final YamlConfiguration worldConfiguration;
|
||||||
/**
|
/**
|
||||||
@ -410,6 +408,7 @@ public class SQLManager implements AbstractDB {
|
|||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
try {
|
try {
|
||||||
Entry<Plot, Queue<UniqueStatement>> entry = iterator.next();
|
Entry<Plot, Queue<UniqueStatement>> entry = iterator.next();
|
||||||
|
Plot plot = entry.getKey();
|
||||||
Queue<UniqueStatement> tasks = entry.getValue();
|
Queue<UniqueStatement> tasks = entry.getValue();
|
||||||
if (tasks.isEmpty()) {
|
if (tasks.isEmpty()) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -2296,6 +2295,8 @@ public class SQLManager implements AbstractDB {
|
|||||||
int size = uniqueIdsList.size();
|
int size = uniqueIdsList.size();
|
||||||
int packet = 990;
|
int packet = 990;
|
||||||
int amount = size / packet;
|
int amount = size / packet;
|
||||||
|
int count = 0;
|
||||||
|
int last = -1;
|
||||||
for (int j = 0; j <= amount; j++) {
|
for (int j = 0; j <= amount; j++) {
|
||||||
List<Integer> subList =
|
List<Integer> subList =
|
||||||
uniqueIdsList.subList(j * packet, Math.min(size, (j + 1) * packet));
|
uniqueIdsList.subList(j * packet, Math.min(size, (j + 1) * packet));
|
||||||
@ -3199,7 +3200,6 @@ public class SQLManager implements AbstractDB {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "unused"})
|
|
||||||
@Override
|
@Override
|
||||||
public void validateAllPlots(Set<Plot> toValidate) {
|
public void validateAllPlots(Set<Plot> toValidate) {
|
||||||
if (!isValid()) {
|
if (!isValid()) {
|
||||||
@ -3455,7 +3455,15 @@ public class SQLManager implements AbstractDB {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private record UUIDPair(int id, UUID uuid) {
|
private static class UUIDPair {
|
||||||
|
|
||||||
|
public final int id;
|
||||||
|
public final UUID uuid;
|
||||||
|
|
||||||
|
public UUIDPair(int id, UUID uuid) {
|
||||||
|
this.id = id;
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
/**
|
/**
|
||||||
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#getSizeX()}
|
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#getSizeX()}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public int getSize_x() {
|
public int getSize_x() {
|
||||||
return getSizeX();
|
return getSizeX();
|
||||||
}
|
}
|
||||||
@ -123,7 +123,7 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
/**
|
/**
|
||||||
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#setSizeX(int)} )}
|
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#setSizeX(int)} )}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public void setSize_x(int sizeX) {
|
public void setSize_x(int sizeX) {
|
||||||
setSizeX(sizeX);
|
setSizeX(sizeX);
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
/**
|
/**
|
||||||
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#getSizeZ()}
|
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#getSizeZ()}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public int getSize_z() {
|
public int getSize_z() {
|
||||||
return getSizeZ();
|
return getSizeZ();
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
/**
|
/**
|
||||||
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#setSizeZ(int)} )}
|
* @deprecated for removal. Use {@link PlayerAutoPlotEvent#setSizeZ(int)} )}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public void setSize_z(int sizeZ) {
|
public void setSize_z(int sizeZ) {
|
||||||
setSizeZ(sizeZ);
|
setSizeZ(sizeZ);
|
||||||
}
|
}
|
||||||
@ -148,7 +148,6 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
* Get the x size of the auto-area
|
* Get the x size of the auto-area
|
||||||
*
|
*
|
||||||
* @return x size
|
* @return x size
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public int getSizeX() {
|
public int getSizeX() {
|
||||||
return this.sizeX;
|
return this.sizeX;
|
||||||
@ -158,7 +157,6 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
* Set the x size of the auto-area
|
* Set the x size of the auto-area
|
||||||
*
|
*
|
||||||
* @param sizeX x size
|
* @param sizeX x size
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public void setSizeX(int sizeX) {
|
public void setSizeX(int sizeX) {
|
||||||
this.sizeX = sizeX;
|
this.sizeX = sizeX;
|
||||||
@ -168,7 +166,6 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
* Get the z size of the auto-area
|
* Get the z size of the auto-area
|
||||||
*
|
*
|
||||||
* @return z size
|
* @return z size
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public int getSizeZ() {
|
public int getSizeZ() {
|
||||||
return this.sizeZ;
|
return this.sizeZ;
|
||||||
@ -178,7 +175,6 @@ public class PlayerAutoPlotEvent extends PlotEvent implements CancellablePlotEve
|
|||||||
* Set the z size of the auto-area
|
* Set the z size of the auto-area
|
||||||
*
|
*
|
||||||
* @param sizeZ z size
|
* @param sizeZ z size
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public void setSizeZ(int sizeZ) {
|
public void setSizeZ(int sizeZ) {
|
||||||
this.sizeZ = sizeZ;
|
this.sizeZ = sizeZ;
|
||||||
|
@ -40,6 +40,8 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class PlayerAutoPlotsChosenEvent extends PlotPlayerEvent {
|
public class PlayerAutoPlotsChosenEvent extends PlotPlayerEvent {
|
||||||
|
|
||||||
|
private Result eventResult;
|
||||||
|
|
||||||
private List<Plot> plots;
|
private List<Plot> plots;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,7 +49,6 @@ public class PlayerAutoPlotsChosenEvent extends PlotPlayerEvent {
|
|||||||
*
|
*
|
||||||
* @param player Player that executed the auto
|
* @param player Player that executed the auto
|
||||||
* @param plots Plots that have been chosen to be set to the player
|
* @param plots Plots that have been chosen to be set to the player
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public PlayerAutoPlotsChosenEvent(PlotPlayer<?> player, List<Plot> plots) {
|
public PlayerAutoPlotsChosenEvent(PlotPlayer<?> player, List<Plot> plots) {
|
||||||
super(player, plots.size() > 0 ? plots.get(0) : null);
|
super(player, plots.size() > 0 ? plots.get(0) : null);
|
||||||
@ -68,7 +69,6 @@ public class PlayerAutoPlotsChosenEvent extends PlotPlayerEvent {
|
|||||||
* Get the immutable list of plots selected to be claimed by the player. May be of length 0.
|
* Get the immutable list of plots selected to be claimed by the player. May be of length 0.
|
||||||
*
|
*
|
||||||
* @return immutable list.
|
* @return immutable list.
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public @NonNull List<Plot> getPlots() {
|
public @NonNull List<Plot> getPlots() {
|
||||||
return plots;
|
return plots;
|
||||||
@ -78,7 +78,6 @@ public class PlayerAutoPlotsChosenEvent extends PlotPlayerEvent {
|
|||||||
* Set the plots to be claimed by the player.
|
* Set the plots to be claimed by the player.
|
||||||
*
|
*
|
||||||
* @param plots list of plots.
|
* @param plots list of plots.
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public void setPlots(final @NonNull List<Plot> plots) {
|
public void setPlots(final @NonNull List<Plot> plots) {
|
||||||
this.plots = List.copyOf(plots);
|
this.plots = List.copyOf(plots);
|
||||||
|
@ -42,7 +42,7 @@ public class PlayerPlotDeniedEvent extends PlotEvent {
|
|||||||
* @param initiator Player that initiated the event
|
* @param initiator Player that initiated the event
|
||||||
* @param plot Plot in which the event occurred
|
* @param plot Plot in which the event occurred
|
||||||
* @param player Player that was denied/un-denied
|
* @param player Player that was denied/un-denied
|
||||||
* @param added {@code true} of add to deny list, {@code false} if removed
|
* @param added true of add to deny list, false if removed
|
||||||
*/
|
*/
|
||||||
public PlayerPlotDeniedEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
public PlayerPlotDeniedEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
||||||
super(plot);
|
super(plot);
|
||||||
|
@ -45,7 +45,7 @@ public class PlayerPlotHelperEvent extends PlotEvent {
|
|||||||
* @param initiator Player that initiated the event
|
* @param initiator Player that initiated the event
|
||||||
* @param plot Plot in which the event occurred
|
* @param plot Plot in which the event occurred
|
||||||
* @param player Player that was added/removed from the helper list
|
* @param player Player that was added/removed from the helper list
|
||||||
* @param added {@code true} if the player was added, {@code false} if the player was removed
|
* @param added true of the player was added, false if the player was removed
|
||||||
*/
|
*/
|
||||||
public PlayerPlotHelperEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
public PlayerPlotHelperEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
||||||
super(plot);
|
super(plot);
|
||||||
|
@ -42,7 +42,7 @@ public class PlayerPlotTrustedEvent extends PlotEvent {
|
|||||||
* @param initiator Player that initiated the event
|
* @param initiator Player that initiated the event
|
||||||
* @param plot Plot in which the event occurred
|
* @param plot Plot in which the event occurred
|
||||||
* @param player Player that was added/removed from the trusted list
|
* @param player Player that was added/removed from the trusted list
|
||||||
* @param added {@code true} if the player was added, {@code false} if the player was removed
|
* @param added true of the player was added, false if the player was removed
|
||||||
*/
|
*/
|
||||||
public PlayerPlotTrustedEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
public PlayerPlotTrustedEvent(PlotPlayer<?> initiator, Plot plot, UUID player, boolean added) {
|
||||||
super(plot);
|
super(plot);
|
||||||
|
@ -42,7 +42,7 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
|
|||||||
* @deprecated use {@link PlayerTeleportToPlotEvent#PlayerTeleportToPlotEvent(PlotPlayer, Location, Plot, TeleportCause)}.
|
* @deprecated use {@link PlayerTeleportToPlotEvent#PlayerTeleportToPlotEvent(PlotPlayer, Location, Plot, TeleportCause)}.
|
||||||
* You should not be creating events in the first place.
|
* You should not be creating events in the first place.
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public PlayerTeleportToPlotEvent(PlotPlayer<?> player, Location from, Plot plot) {
|
public PlayerTeleportToPlotEvent(PlotPlayer<?> player, Location from, Plot plot) {
|
||||||
this(player, from, plot, TeleportCause.UNKNOWN);
|
this(player, from, plot, TeleportCause.UNKNOWN);
|
||||||
}
|
}
|
||||||
@ -54,7 +54,6 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
|
|||||||
* @param from Start location
|
* @param from Start location
|
||||||
* @param plot Plot to which the player was teleported
|
* @param plot Plot to which the player was teleported
|
||||||
* @param cause Why the teleport is being completed
|
* @param cause Why the teleport is being completed
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public PlayerTeleportToPlotEvent(PlotPlayer<?> player, Location from, Plot plot, TeleportCause cause) {
|
public PlayerTeleportToPlotEvent(PlotPlayer<?> player, Location from, Plot plot, TeleportCause cause) {
|
||||||
super(player, plot);
|
super(player, plot);
|
||||||
@ -66,7 +65,6 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
|
|||||||
* Get the teleport cause
|
* Get the teleport cause
|
||||||
*
|
*
|
||||||
* @return TeleportCause
|
* @return TeleportCause
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public TeleportCause getCause() {
|
public TeleportCause getCause() {
|
||||||
return cause;
|
return cause;
|
||||||
|
@ -39,7 +39,6 @@ public class PlotClaimedNotifyEvent extends PlotEvent {
|
|||||||
*
|
*
|
||||||
* @param plot Plot that was claimed
|
* @param plot Plot that was claimed
|
||||||
* @param auto If the plot was claimed using /plot auto
|
* @param auto If the plot was claimed using /plot auto
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public PlotClaimedNotifyEvent(Plot plot, boolean auto) {
|
public PlotClaimedNotifyEvent(Plot plot, boolean auto) {
|
||||||
super(plot);
|
super(plot);
|
||||||
@ -50,9 +49,7 @@ public class PlotClaimedNotifyEvent extends PlotEvent {
|
|||||||
* If the plot was claimed using /plot auto
|
* If the plot was claimed using /plot auto
|
||||||
*
|
*
|
||||||
* @return if claimed with auto
|
* @return if claimed with auto
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public boolean wasAuto() {
|
public boolean wasAuto() {
|
||||||
return auto;
|
return auto;
|
||||||
}
|
}
|
||||||
|
@ -57,16 +57,12 @@ public enum TeleportCause {
|
|||||||
PLUGIN,
|
PLUGIN,
|
||||||
UNKNOWN;
|
UNKNOWN;
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
|
||||||
public static final class CauseSets {
|
public static final class CauseSets {
|
||||||
|
|
||||||
public static final Set<TeleportCause> COMMAND = Sets.immutableEnumSet(EnumSet.range(
|
public static final Set<TeleportCause> COMMAND = Sets.immutableEnumSet(EnumSet.range(
|
||||||
TeleportCause.COMMAND,
|
TeleportCause.COMMAND,
|
||||||
TeleportCause.COMMAND_VISIT
|
TeleportCause.COMMAND_VISIT
|
||||||
));
|
));
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public static final Set<TeleportCause> PLUGIN = Sets.immutableEnumSet(EnumSet.range(
|
public static final Set<TeleportCause> PLUGIN = Sets.immutableEnumSet(EnumSet.range(
|
||||||
TeleportCause.DEATH,
|
TeleportCause.DEATH,
|
||||||
TeleportCause.PLUGIN
|
TeleportCause.PLUGIN
|
||||||
|
@ -97,8 +97,8 @@ public class HybridGen extends IndependentPlotGenerator {
|
|||||||
}
|
}
|
||||||
// Coords
|
// Coords
|
||||||
Location min = result.getMin();
|
Location min = result.getMin();
|
||||||
int bx = min.getX() - hybridPlotWorld.ROAD_OFFSET_X;
|
int bx = (min.getX()) - hybridPlotWorld.ROAD_OFFSET_X;
|
||||||
int bz = min.getZ() - hybridPlotWorld.ROAD_OFFSET_Z;
|
int bz = (min.getZ()) - hybridPlotWorld.ROAD_OFFSET_Z;
|
||||||
// The relative X-coordinate (within the plot) of the minimum X coordinate
|
// The relative X-coordinate (within the plot) of the minimum X coordinate
|
||||||
// contained in the scoped queue
|
// contained in the scoped queue
|
||||||
short relativeOffsetX;
|
short relativeOffsetX;
|
||||||
|
@ -148,22 +148,12 @@ public class HybridUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChunkQueueCoordinator chunk = new ChunkQueueCoordinator(worldUtil.getWeWorld(world), bot, top, false);
|
ChunkQueueCoordinator chunk = new ChunkQueueCoordinator(bot, top, false);
|
||||||
hpw.getGenerator().generateChunk(chunk, hpw);
|
hpw.getGenerator().generateChunk(chunk, hpw);
|
||||||
|
|
||||||
final BlockState airBlock = BlockTypes.AIR.getDefaultState();
|
|
||||||
final BlockState[][][] oldBlocks = chunk.getBlocks();
|
final BlockState[][][] oldBlocks = chunk.getBlocks();
|
||||||
final BlockState[][][] newBlocks = new BlockState[256][width][length];
|
final BlockState[][][] newBlocks = new BlockState[256][width][length];
|
||||||
for (final BlockState[][] newBlock : newBlocks) {
|
final BlockState airBlock = BlockTypes.AIR.getDefaultState();
|
||||||
for (final BlockState[] blockStates : newBlock) {
|
|
||||||
Arrays.fill(blockStates, airBlock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (final BlockState[][] oldBlock : oldBlocks) {
|
|
||||||
for (final BlockState[] blockStates : oldBlock) {
|
|
||||||
Arrays.fill(blockStates, airBlock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
System.gc();
|
System.gc();
|
||||||
System.gc();
|
System.gc();
|
||||||
@ -231,6 +221,9 @@ public class HybridUtils {
|
|||||||
for (int y = 0; y < 256; y++) {
|
for (int y = 0; y < 256; y++) {
|
||||||
BlockState old = oldBlocks[y][x][z];
|
BlockState old = oldBlocks[y][x][z];
|
||||||
try {
|
try {
|
||||||
|
if (old == null) {
|
||||||
|
old = airBlock;
|
||||||
|
}
|
||||||
BlockState now = newBlocks[y][x][z];
|
BlockState now = newBlocks[y][x][z];
|
||||||
if (!old.equals(now)) {
|
if (!old.equals(now)) {
|
||||||
changes[i]++;
|
changes[i]++;
|
||||||
|
@ -95,7 +95,6 @@ public abstract class IndependentPlotGenerator {
|
|||||||
* @param world ChunkGenerator Implementation
|
* @param world ChunkGenerator Implementation
|
||||||
* @return Chunk generator
|
* @return Chunk generator
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <T> GeneratorWrapper<T> specify(final @NonNull String world) {
|
public <T> GeneratorWrapper<T> specify(final @NonNull String world) {
|
||||||
return (GeneratorWrapper<T>) PlotSquared.platform().wrapPlotGenerator(world, this);
|
return (GeneratorWrapper<T>) PlotSquared.platform().wrapPlotGenerator(world, this);
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,8 @@ 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 com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -51,6 +53,8 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class ProcessedWEExtent extends AbstractDelegateExtent {
|
public class ProcessedWEExtent extends AbstractDelegateExtent {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + ProcessedWEExtent.class.getSimpleName());
|
||||||
|
|
||||||
private final Set<CuboidRegion> mask;
|
private final Set<CuboidRegion> mask;
|
||||||
private final String world;
|
private final String world;
|
||||||
private final int max;
|
private final int max;
|
||||||
@ -158,7 +162,6 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(BlockVector2 position, BiomeType biome) {
|
public boolean setBiome(BlockVector2 position, BiomeType biome) {
|
||||||
return WEManager.maskContains(this.mask, position.getX(), position.getZ()) && super
|
return WEManager.maskContains(this.mask, position.getX(), position.getZ()) && super
|
||||||
|
@ -54,7 +54,6 @@ public class WEExtent extends AbstractDelegateExtent {
|
|||||||
this.mask = mask;
|
this.mask = mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(BlockVector3 location, BlockStateHolder block)
|
public boolean setBlock(BlockVector3 location, BlockStateHolder block)
|
||||||
throws WorldEditException {
|
throws WorldEditException {
|
||||||
|
@ -52,7 +52,6 @@ public interface PermissionHolder {
|
|||||||
* @param permission Permission
|
* @param permission Permission
|
||||||
* @param key Permission "key"
|
* @param key Permission "key"
|
||||||
* @return {@code true} if the owner has the given permission, else {@code false}
|
* @return {@code true} if the owner has the given permission, else {@code false}
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
default boolean hasKeyedPermission(
|
default boolean hasKeyedPermission(
|
||||||
final @NonNull String permission,
|
final @NonNull String permission,
|
||||||
@ -116,7 +115,6 @@ public interface PermissionHolder {
|
|||||||
* @param permission Permission
|
* @param permission Permission
|
||||||
* @param key Permission "key"
|
* @param key Permission "key"
|
||||||
* @return {@code true} if the owner has the given permission, else {@code false}
|
* @return {@code true} if the owner has the given permission, else {@code false}
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
boolean hasKeyedPermission(@Nullable String world, @NonNull String permission, @NonNull String key);
|
boolean hasKeyedPermission(@Nullable String world, @NonNull String permission, @NonNull String key);
|
||||||
|
|
||||||
|
@ -59,9 +59,7 @@ public interface PermissionProfile {
|
|||||||
* @param permission Permission
|
* @param permission Permission
|
||||||
* @param key Permission "key"
|
* @param key Permission "key"
|
||||||
* @return {@code true} if the owner has the given permission, else {@code false}
|
* @return {@code true} if the owner has the given permission, else {@code false}
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
|
||||||
default boolean hasKeyedPermission(
|
default boolean hasKeyedPermission(
|
||||||
final @NonNull String permission,
|
final @NonNull String permission,
|
||||||
final @NonNull String key
|
final @NonNull String key
|
||||||
@ -77,7 +75,6 @@ public interface PermissionProfile {
|
|||||||
* @param permission Permission
|
* @param permission Permission
|
||||||
* @param key Permission "key"
|
* @param key Permission "key"
|
||||||
* @return {@code true} if the owner has the given permission, else {@code false}
|
* @return {@code true} if the owner has the given permission, else {@code false}
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
boolean hasKeyedPermission(
|
boolean hasKeyedPermission(
|
||||||
@Nullable String world, final @NonNull String permission,
|
@Nullable String world, final @NonNull String permission,
|
||||||
|
@ -53,7 +53,7 @@ public abstract class MetaDataAccess<T> implements AutoCloseable {
|
|||||||
this.lockAccess = lockAccess;
|
this.lockAccess = lockAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("ALL")
|
||||||
private static <E extends Throwable> void sneakyThrow(final Throwable e) throws E {
|
private static <E extends Throwable> void sneakyThrow(final Throwable e) throws E {
|
||||||
throw (E) e;
|
throw (E) e;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,6 @@ public final class MetaDataKey<T> {
|
|||||||
* @param <T> Type
|
* @param <T> Type
|
||||||
* @return MetaData key instance
|
* @return MetaData key instance
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static @NonNull <T> MetaDataKey<T> of(final @NonNull String key, final @NonNull TypeLiteral<T> type) {
|
public static @NonNull <T> MetaDataKey<T> of(final @NonNull String key, final @NonNull TypeLiteral<T> type) {
|
||||||
synchronized (keyMetaData) {
|
synchronized (keyMetaData) {
|
||||||
return (MetaDataKey<T>)
|
return (MetaDataKey<T>)
|
||||||
|
@ -47,7 +47,6 @@ final class PersistentMetaDataAccess<T> extends MetaDataAccess<T> {
|
|||||||
return this.getPlayer().hasPersistentMeta(getMetaDataKey().toString());
|
return this.getPlayer().hasPersistentMeta(getMetaDataKey().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable T remove() {
|
public @Nullable T remove() {
|
||||||
this.checkClosed();
|
this.checkClosed();
|
||||||
|
@ -104,8 +104,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
private static final Set<PlotPlayer<?>> debugModeEnabled =
|
private static final Set<PlotPlayer<?>> debugModeEnabled =
|
||||||
Collections.synchronizedSet(new HashSet<>());
|
Collections.synchronizedSet(new HashSet<>());
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
private static final Map<Class, PlotPlayerConverter> converters = new HashMap<>();
|
||||||
private static final Map<Class<?>, PlotPlayerConverter> converters = new HashMap<>();
|
|
||||||
private final LockRepository lockRepository = new LockRepository();
|
private final LockRepository lockRepository = new LockRepository();
|
||||||
private final PlotAreaManager plotAreaManager;
|
private final PlotAreaManager plotAreaManager;
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
@ -129,7 +128,6 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
this.permissionHandler = permissionHandler;
|
this.permissionHandler = permissionHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
|
||||||
public static <T> PlotPlayer<T> from(final @NonNull T object) {
|
public static <T> PlotPlayer<T> from(final @NonNull T object) {
|
||||||
// fast path
|
// fast path
|
||||||
if (converters.containsKey(object.getClass())) {
|
if (converters.containsKey(object.getClass())) {
|
||||||
@ -236,7 +234,6 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
* @param <T> the object type to return
|
* @param <T> the object type to return
|
||||||
* @return the value assigned to the key or null if it does not exist
|
* @return the value assigned to the key or null if it does not exist
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
<T> T getMeta(String key) {
|
<T> T getMeta(String key) {
|
||||||
if (this.meta != null) {
|
if (this.meta != null) {
|
||||||
return (T) this.meta.get(key);
|
return (T) this.meta.get(key);
|
||||||
@ -364,6 +361,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getClusterCount(String world) {
|
public int getClusterCount(String world) {
|
||||||
|
UUID uuid = getUUID();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (PlotArea area : this.plotAreaManager.getPlotAreasSet(world)) {
|
for (PlotArea area : this.plotAreaManager.getPlotAreasSet(world)) {
|
||||||
for (PlotCluster cluster : area.getClusters()) {
|
for (PlotCluster cluster : area.getClusters()) {
|
||||||
@ -378,12 +376,9 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
/**
|
/**
|
||||||
* Get a {@link Set} of plots owned by this player.
|
* Get a {@link Set} of plots owned by this player.
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Take a look at {@link PlotSquared} for more searching functions.
|
|
||||||
* See {@link #getPlotCount()} for the number of plots.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return a {@link Set} of plots owned by the player
|
* @return a {@link Set} of plots owned by the player
|
||||||
|
* @see PlotSquared for more searching functions
|
||||||
|
* @see #getPlotCount() for the number of plots
|
||||||
*/
|
*/
|
||||||
public Set<Plot> getPlots() {
|
public Set<Plot> getPlots() {
|
||||||
return PlotQuery.newQuery().ownedBy(this).asSet();
|
return PlotQuery.newQuery().ownedBy(this).asSet();
|
||||||
@ -504,7 +499,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
* Retrieves the attribute of this player.
|
* Retrieves the attribute of this player.
|
||||||
*
|
*
|
||||||
* @param key metadata key
|
* @param key metadata key
|
||||||
* @return the attribute will be either {@code true} or {@code false}
|
* @return the attribute will be either true or false
|
||||||
*/
|
*/
|
||||||
public boolean getAttribute(String key) {
|
public boolean getAttribute(String key) {
|
||||||
if (!hasPersistentMeta("attrib_" + key)) {
|
if (!hasPersistentMeta("attrib_" + key)) {
|
||||||
@ -575,7 +570,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
/**
|
/**
|
||||||
* Check if this player is banned.
|
* Check if this player is banned.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the player is banned, {@code false} otherwise.
|
* @return true if the player is banned, false otherwise.
|
||||||
*/
|
*/
|
||||||
public abstract boolean isBanned();
|
public abstract boolean isBanned();
|
||||||
|
|
||||||
@ -800,16 +795,16 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
final @NonNull MetaDataKey<T> key,
|
final @NonNull MetaDataKey<T> key,
|
||||||
final @NonNull T value
|
final @NonNull T value
|
||||||
) {
|
) {
|
||||||
|
final Object rawValue = value;
|
||||||
if (key.getType().getRawType().equals(Integer.class)) {
|
if (key.getType().getRawType().equals(Integer.class)) {
|
||||||
this.setPersistentMeta(key.toString(), Ints.toByteArray((int) (Object) value));
|
this.setPersistentMeta(key.toString(), Ints.toByteArray((int) rawValue));
|
||||||
} else if (key.getType().getRawType().equals(Boolean.class)) {
|
} else if (key.getType().getRawType().equals(Boolean.class)) {
|
||||||
this.setPersistentMeta(key.toString(), ByteArrayUtilities.booleanToBytes((boolean) (Object) value));
|
this.setPersistentMeta(key.toString(), ByteArrayUtilities.booleanToBytes((boolean) rawValue));
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException(String.format("Unknown meta data type '%s'", key.getType()));
|
throw new IllegalArgumentException(String.format("Unknown meta data type '%s'", key.getType()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Nullable <T> T getPersistentMeta(final @NonNull MetaDataKey<T> key) {
|
@Nullable <T> T getPersistentMeta(final @NonNull MetaDataKey<T> key) {
|
||||||
final byte[] value = this.getPersistentMeta(key.toString());
|
final byte[] value = this.getPersistentMeta(key.toString());
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
@ -47,7 +47,6 @@ final class TemporaryMetaDataAccess<T> extends MetaDataAccess<T> {
|
|||||||
return this.getPlayer().getMeta(this.getMetaDataKey().toString()) != null;
|
return this.getPlayer().getMeta(this.getMetaDataKey().toString()) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable T remove() {
|
public @Nullable T remove() {
|
||||||
this.checkClosed();
|
this.checkClosed();
|
||||||
|
@ -219,13 +219,10 @@ public class Plot {
|
|||||||
* Constructor for a new plot.
|
* Constructor for a new plot.
|
||||||
* (Only changes after plot.create() will be properly set in the database)
|
* (Only changes after plot.create() will be properly set in the database)
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* See {@link Plot#getPlot(Location)} for existing plots
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param area the PlotArea where the plot is located
|
* @param area the PlotArea where the plot is located
|
||||||
* @param id the plot id
|
* @param id the plot id
|
||||||
* @param owner the plot owner
|
* @param owner the plot owner
|
||||||
|
* @see Plot#getPlot(Location) for existing plots
|
||||||
*/
|
*/
|
||||||
public Plot(final PlotArea area, final @NonNull PlotId id, final UUID owner) {
|
public Plot(final PlotArea area, final @NonNull PlotId id, final UUID owner) {
|
||||||
this(area, id, owner, 0);
|
this(area, id, owner, 0);
|
||||||
@ -235,12 +232,9 @@ public class Plot {
|
|||||||
* Constructor for an unowned plot.
|
* Constructor for an unowned plot.
|
||||||
* (Only changes after plot.create() will be properly set in the database)
|
* (Only changes after plot.create() will be properly set in the database)
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* See {@link Plot#getPlot(Location)} for existing plots
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param area the PlotArea where the plot is located
|
* @param area the PlotArea where the plot is located
|
||||||
* @param id the plot id
|
* @param id the plot id
|
||||||
|
* @see Plot#getPlot(Location) for existing plots
|
||||||
*/
|
*/
|
||||||
public Plot(final @NonNull PlotArea area, final @NonNull PlotId id) {
|
public Plot(final @NonNull PlotArea area, final @NonNull PlotId id) {
|
||||||
this(area, id, null, 0);
|
this(area, id, null, 0);
|
||||||
@ -251,14 +245,11 @@ public class Plot {
|
|||||||
* The database will ignore any queries regarding temporary plots.
|
* The database will ignore any queries regarding temporary plots.
|
||||||
* Please note that some bulk plot management functions may still affect temporary plots (TODO: fix this)
|
* Please note that some bulk plot management functions may still affect temporary plots (TODO: fix this)
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* See {@link Plot#getPlot(Location)} for existing plots
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param area the PlotArea where the plot is located
|
* @param area the PlotArea where the plot is located
|
||||||
* @param id the plot id
|
* @param id the plot id
|
||||||
* @param owner the owner of the plot
|
* @param owner the owner of the plot
|
||||||
* @param temp Represents whatever the database manager needs it to
|
* @param temp Represents whatever the database manager needs it to
|
||||||
|
* @see Plot#getPlot(Location) for existing plots
|
||||||
*/
|
*/
|
||||||
public Plot(final PlotArea area, final @NonNull PlotId id, final UUID owner, final int temp) {
|
public Plot(final PlotArea area, final @NonNull PlotId id, final UUID owner, final int temp) {
|
||||||
this.area = area;
|
this.area = area;
|
||||||
@ -275,10 +266,6 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Constructor for a saved plots (Used by the database manager when plots are fetched)
|
* Constructor for a saved plots (Used by the database manager when plots are fetched)
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* See {@link Plot#getPlot(Location)} for existing plots
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param id the plot id
|
* @param id the plot id
|
||||||
* @param owner the plot owner
|
* @param owner the plot owner
|
||||||
* @param trusted the plot trusted players
|
* @param trusted the plot trusted players
|
||||||
@ -291,6 +278,7 @@ public class Plot {
|
|||||||
* @param merged an array giving merged plots
|
* @param merged an array giving merged plots
|
||||||
* @param timestamp when the plot was created
|
* @param timestamp when the plot was created
|
||||||
* @param temp value representing whatever DBManager needs to to. Do not touch tbh.
|
* @param temp value representing whatever DBManager needs to to. Do not touch tbh.
|
||||||
|
* @see Plot#getPlot(Location) for existing plots
|
||||||
*/
|
*/
|
||||||
public Plot(
|
public Plot(
|
||||||
@NonNull PlotId id,
|
@NonNull PlotId id,
|
||||||
@ -430,12 +418,9 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Return a new/cached plot object at a given location.
|
* Return a new/cached plot object at a given location.
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link PlotPlayer#getCurrentPlot()} if a player is expected here.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param location the location of the plot
|
* @param location the location of the plot
|
||||||
* @return plot at location or null
|
* @return plot at location or null
|
||||||
|
* @see PlotPlayer#getCurrentPlot() if a player is expected here.
|
||||||
*/
|
*/
|
||||||
public static @Nullable Plot getPlot(final @NonNull Location location) {
|
public static @Nullable Plot getPlot(final @NonNull Location location) {
|
||||||
final PlotArea pa = location.getPlotArea();
|
final PlotArea pa = location.getPlotArea();
|
||||||
@ -464,7 +449,7 @@ public class Plot {
|
|||||||
* that could alter the de facto owner of the plot.
|
* that could alter the de facto owner of the plot.
|
||||||
*
|
*
|
||||||
* @return The plot owner of this particular (sub-)plot
|
* @return The plot owner of this particular (sub-)plot
|
||||||
* as stored in the database, if one exists. Else, null.
|
* as stored in the database, if one exists. Else, null.
|
||||||
*/
|
*/
|
||||||
public @Nullable UUID getOwnerAbs() {
|
public @Nullable UUID getOwnerAbs() {
|
||||||
return this.owner;
|
return this.owner;
|
||||||
@ -603,13 +588,10 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Get the plot owner of this particular sub-plot.
|
* Get the plot owner of this particular sub-plot.
|
||||||
* (Merged plots can have multiple owners)
|
* (Merged plots can have multiple owners)
|
||||||
* Direct access is discouraged: use {@link #getOwners()}
|
* Direct access is discouraged: use getOwners()
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* Use {@link #getOwnerAbs()} to get the owner as stored in the database
|
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @return Server if ServerPlot flag set, else {@link #getOwnerAbs()}
|
* @return Server if ServerPlot flag set, else {@link #getOwnerAbs()}
|
||||||
|
* @see #getOwnerAbs() getOwnerAbs() to get the owner as stored in the database
|
||||||
*/
|
*/
|
||||||
public @Nullable UUID getOwner() {
|
public @Nullable UUID getOwner() {
|
||||||
if (this.getFlag(ServerPlotFlag.class)) {
|
if (this.getFlag(ServerPlotFlag.class)) {
|
||||||
@ -1219,6 +1201,12 @@ public class Plot {
|
|||||||
*
|
*
|
||||||
* @return array of entity counts
|
* @return array of entity counts
|
||||||
* @see RegionManager#countEntities(Plot)
|
* @see RegionManager#countEntities(Plot)
|
||||||
|
* 0 = Entity
|
||||||
|
* 1 = Animal
|
||||||
|
* 2 = Monster
|
||||||
|
* 3 = Mob
|
||||||
|
* 4 = Boat
|
||||||
|
* 5 = Misc
|
||||||
*/
|
*/
|
||||||
public int[] countEntities() {
|
public int[] countEntities() {
|
||||||
int[] count = new int[6];
|
int[] count = new int[6];
|
||||||
@ -1237,7 +1225,7 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Returns true if a previous task was running
|
* Returns true if a previous task was running
|
||||||
*
|
*
|
||||||
* @return {@code true} if a previous task is running
|
* @return true if a previous task is running
|
||||||
*/
|
*/
|
||||||
public int addRunning() {
|
public int addRunning() {
|
||||||
int value = this.getRunning();
|
int value = this.getRunning();
|
||||||
@ -1281,7 +1269,7 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Unclaim the plot (does not modify terrain). Changes made to this plot will not be reflected in unclaimed plot objects.
|
* Unclaim the plot (does not modify terrain). Changes made to this plot will not be reflected in unclaimed plot objects.
|
||||||
*
|
*
|
||||||
* @return {@code false} if the Plot has no owner, otherwise {@code true}.
|
* @return false if the Plot has no owner, otherwise true.
|
||||||
*/
|
*/
|
||||||
public boolean unclaim() {
|
public boolean unclaim() {
|
||||||
if (!this.hasOwner()) {
|
if (!this.hasOwner()) {
|
||||||
@ -1698,7 +1686,7 @@ public class Plot {
|
|||||||
return base.settings != null && base.settings.getRatings() != null;
|
return base.settings != null && base.settings.getRatings() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public boolean claim(final @NonNull PlotPlayer<?> player, boolean teleport, String schematic) {
|
public boolean claim(final @NonNull PlotPlayer<?> player, boolean teleport, String schematic) {
|
||||||
if (!canClaim(player)) {
|
if (!canClaim(player)) {
|
||||||
return false;
|
return false;
|
||||||
@ -1706,7 +1694,7 @@ public class Plot {
|
|||||||
return claim(player, teleport, schematic, true);
|
return claim(player, teleport, schematic, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "6.1.0")
|
@Deprecated(forRemoval = true)
|
||||||
public boolean claim(final @NonNull PlotPlayer<?> player, boolean teleport, String schematic, boolean updateDB) {
|
public boolean claim(final @NonNull PlotPlayer<?> player, boolean teleport, String schematic, boolean updateDB) {
|
||||||
return claim(player, teleport, schematic, updateDB, false);
|
return claim(player, teleport, schematic, updateDB, false);
|
||||||
}
|
}
|
||||||
@ -1720,7 +1708,6 @@ public class Plot {
|
|||||||
* @param updateDB If the database should be updated
|
* @param updateDB If the database should be updated
|
||||||
* @param auto If the plot is being claimed by a /plot auto
|
* @param auto If the plot is being claimed by a /plot auto
|
||||||
* @return success
|
* @return success
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
*/
|
||||||
public boolean claim(
|
public boolean claim(
|
||||||
final @NonNull PlotPlayer<?> player, boolean teleport, String schematic, boolean updateDB,
|
final @NonNull PlotPlayer<?> player, boolean teleport, String schematic, boolean updateDB,
|
||||||
@ -2682,7 +2669,7 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Checks if the owner of this Plot is online.
|
* Checks if the owner of this Plot is online.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the owner of the Plot is online
|
* @return true if the owner of the Plot is online
|
||||||
*/
|
*/
|
||||||
public boolean isOnline() {
|
public boolean isOnline() {
|
||||||
if (!this.hasOwner()) {
|
if (!this.hasOwner()) {
|
||||||
@ -2847,7 +2834,7 @@ public class Plot {
|
|||||||
if (this.isOnline()) {
|
if (this.isOnline()) {
|
||||||
seen = TranslatableCaption.of("info.now").getComponent(player);
|
seen = TranslatableCaption.of("info.now").getComponent(player);
|
||||||
} else {
|
} else {
|
||||||
int time = (int) (ExpireManager.IMP.getAge(this, false) / 1000);
|
int time = (int) (ExpireManager.IMP.getAge(this) / 1000);
|
||||||
if (time != 0) {
|
if (time != 0) {
|
||||||
seen = TimeUtil.secToTime(time);
|
seen = TimeUtil.secToTime(time);
|
||||||
} else {
|
} else {
|
||||||
@ -3044,11 +3031,8 @@ public class Plot {
|
|||||||
* If rating categories are enabled, get the average rating by category.<br>
|
* If rating categories are enabled, get the average rating by category.<br>
|
||||||
* - The index corresponds to the index of the category in the config
|
* - The index corresponds to the index of the category in the config
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* See {@link Settings.Ratings#CATEGORIES} for rating categories
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return Average ratings in each category
|
* @return Average ratings in each category
|
||||||
|
* @see Settings.Ratings#CATEGORIES Rating categories
|
||||||
*/
|
*/
|
||||||
public @NonNull double[] getAverageRatings() {
|
public @NonNull double[] getAverageRatings() {
|
||||||
Map<UUID, Integer> rating;
|
Map<UUID, Integer> rating;
|
||||||
|
@ -295,7 +295,7 @@ public abstract class PlotArea {
|
|||||||
* Check if a PlotArea is compatible (move/copy etc.).
|
* Check if a PlotArea is compatible (move/copy etc.).
|
||||||
*
|
*
|
||||||
* @param plotArea the {@link PlotArea} to compare
|
* @param plotArea the {@link PlotArea} to compare
|
||||||
* @return {@code true} if both areas are compatible
|
* @return true if both areas are compatible
|
||||||
*/
|
*/
|
||||||
public boolean isCompatible(final @NonNull PlotArea plotArea) {
|
public boolean isCompatible(final @NonNull PlotArea plotArea) {
|
||||||
final ConfigurationSection section = this.worldConfiguration.getConfigurationSection("worlds");
|
final ConfigurationSection section = this.worldConfiguration.getConfigurationSection("worlds");
|
||||||
@ -439,6 +439,38 @@ public abstract class PlotArea {
|
|||||||
loadConfiguration(config);
|
loadConfiguration(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Component getFlagsComponent(Component flagsComponent, Collection<PlotFlag<?, ?>> flagCollection) {
|
||||||
|
if (flagCollection.isEmpty()) {
|
||||||
|
flagsComponent = MINI_MESSAGE.parse(TranslatableCaption.of("flag.no_flags").getComponent(LocaleHolder.console()));
|
||||||
|
} else {
|
||||||
|
String prefix = " ";
|
||||||
|
for (final PlotFlag<?, ?> flag : flagCollection) {
|
||||||
|
Object value;
|
||||||
|
if (flag instanceof DoubleFlag && !Settings.General.SCIENTIFIC) {
|
||||||
|
value = FLAG_DECIMAL_FORMAT.format(flag.getValue());
|
||||||
|
} else {
|
||||||
|
value = flag.toString();
|
||||||
|
}
|
||||||
|
Component snip = MINI_MESSAGE.parse(
|
||||||
|
prefix + CaptionUtility
|
||||||
|
.format(
|
||||||
|
ConsolePlayer.getConsole(),
|
||||||
|
TranslatableCaption.of("info.plot_flag_list").getComponent(LocaleHolder.console())
|
||||||
|
),
|
||||||
|
Template.of("flag", flag.getName()),
|
||||||
|
Template.of("value", CaptionUtility.formatRaw(ConsolePlayer.getConsole(), value.toString()))
|
||||||
|
);
|
||||||
|
if (flagsComponent != null) {
|
||||||
|
flagsComponent.append(snip);
|
||||||
|
} else {
|
||||||
|
flagsComponent = snip;
|
||||||
|
}
|
||||||
|
prefix = ", ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return flagsComponent;
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void loadConfiguration(ConfigurationSection config);
|
public abstract void loadConfiguration(ConfigurationSection config);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1101,7 +1133,7 @@ public abstract class PlotArea {
|
|||||||
* If a schematic is available, it can be used for plot claiming.
|
* If a schematic is available, it can be used for plot claiming.
|
||||||
*
|
*
|
||||||
* @param schematic the schematic to look for.
|
* @param schematic the schematic to look for.
|
||||||
* @return {@code true} if the schematic exists, {@code false} otherwise.
|
* @return true if the schematic exists, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasSchematic(@NonNull String schematic) {
|
public boolean hasSchematic(@NonNull String schematic) {
|
||||||
return getSchematics().contains(schematic.toLowerCase());
|
return getSchematics().contains(schematic.toLowerCase());
|
||||||
@ -1110,7 +1142,7 @@ public abstract class PlotArea {
|
|||||||
/**
|
/**
|
||||||
* Get whether economy is enabled and used on this plot area or not.
|
* Get whether economy is enabled and used on this plot area or not.
|
||||||
*
|
*
|
||||||
* @return {@code true} if this plot area uses economy, {@code false} otherwise.
|
* @return true if this plot area uses economy, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean useEconomy() {
|
public boolean useEconomy() {
|
||||||
return useEconomy;
|
return useEconomy;
|
||||||
@ -1119,7 +1151,7 @@ public abstract class PlotArea {
|
|||||||
/**
|
/**
|
||||||
* Get whether the plot area is limited by a world border or not.
|
* Get whether the plot area is limited by a world border or not.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the plot area has a world border, {@code false} otherwise.
|
* @return true if the plot area has a world border, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasWorldBorder() {
|
public boolean hasWorldBorder() {
|
||||||
return worldBorder;
|
return worldBorder;
|
||||||
@ -1128,7 +1160,7 @@ public abstract class PlotArea {
|
|||||||
/**
|
/**
|
||||||
* Get whether plot signs are allowed or not.
|
* Get whether plot signs are allowed or not.
|
||||||
*
|
*
|
||||||
* @return {@code true} if plot signs are allowed, {@code false} otherwise.
|
* @return true if plot signs are allow, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean allowSigns() {
|
public boolean allowSigns() {
|
||||||
return allowSigns;
|
return allowSigns;
|
||||||
@ -1276,9 +1308,8 @@ public abstract class PlotArea {
|
|||||||
* @deprecated Use {@link #signMaterial()}. This method is used for 1.13 only and
|
* @deprecated Use {@link #signMaterial()}. This method is used for 1.13 only and
|
||||||
* will be removed without replacement in favor of {@link #signMaterial()}
|
* will be removed without replacement in favor of {@link #signMaterial()}
|
||||||
* once we remove the support for 1.13.
|
* once we remove the support for 1.13.
|
||||||
* @since 6.0.3
|
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.3")
|
@Deprecated(forRemoval = true)
|
||||||
public String getLegacySignMaterial() {
|
public String getLegacySignMaterial() {
|
||||||
return this.legacySignMaterial;
|
return this.legacySignMaterial;
|
||||||
}
|
}
|
||||||
@ -1324,18 +1355,14 @@ public abstract class PlotArea {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the location for non-members to be teleported to.
|
* Get the location for non-members to be teleported to.
|
||||||
*
|
|
||||||
* @since 6.1.4
|
|
||||||
*/
|
*/
|
||||||
public BlockLoc nonmemberHome() {
|
public BlockLoc nonmemberHome() {
|
||||||
return this.nonmemberHome;
|
return this.nonmemberHome;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default location for players to be teleported to. May be overridden by {@link #nonmemberHome} if the player is
|
* Get the default location for players to be teleported to. May be overriden by {@link #nonmemberHome} if the player is
|
||||||
* not a member of the plot.
|
* not a member of the plot.
|
||||||
*
|
|
||||||
* @since 6.1.4
|
|
||||||
*/
|
*/
|
||||||
public BlockLoc defaultHome() {
|
public BlockLoc defaultHome() {
|
||||||
return this.defaultHome;
|
return this.defaultHome;
|
||||||
@ -1344,7 +1371,7 @@ public abstract class PlotArea {
|
|||||||
/**
|
/**
|
||||||
* @deprecated Use {@link #nonmemberHome}
|
* @deprecated Use {@link #nonmemberHome}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.4")
|
@Deprecated(forRemoval = true)
|
||||||
public PlotLoc getNonmemberHome() {
|
public PlotLoc getNonmemberHome() {
|
||||||
return new PlotLoc(this.defaultHome.getX(), this.defaultHome.getY(), this.defaultHome.getZ());
|
return new PlotLoc(this.defaultHome.getX(), this.defaultHome.getY(), this.defaultHome.getZ());
|
||||||
}
|
}
|
||||||
@ -1352,7 +1379,7 @@ public abstract class PlotArea {
|
|||||||
/**
|
/**
|
||||||
* @deprecated Use {@link #defaultHome}
|
* @deprecated Use {@link #defaultHome}
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.1.4")
|
@Deprecated(forRemoval = true)
|
||||||
public PlotLoc getDefaultHome() {
|
public PlotLoc getDefaultHome() {
|
||||||
return new PlotLoc(this.defaultHome.getX(), this.defaultHome.getY(), this.defaultHome.getZ());
|
return new PlotLoc(this.defaultHome.getX(), this.defaultHome.getY(), this.defaultHome.getZ());
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ public abstract class PlotManager {
|
|||||||
* @param plotIds list of PlotIds to finish the merge for
|
* @param plotIds list of PlotIds to finish the merge for
|
||||||
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
||||||
* otherwise writes to the queue but does not enqueue.
|
* otherwise writes to the queue but does not enqueue.
|
||||||
* @return {@code false} if part if the merge failed, otherwise {@code true} if successful.
|
* @return false if part if the merge failed, otherwise true if successful.
|
||||||
*/
|
*/
|
||||||
public abstract boolean finishPlotMerge(@NonNull List<PlotId> plotIds, @Nullable QueueCoordinator queue);
|
public abstract boolean finishPlotMerge(@NonNull List<PlotId> plotIds, @Nullable QueueCoordinator queue);
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ public abstract class PlotManager {
|
|||||||
* @return the world height
|
* @return the world height
|
||||||
* @deprecated In favor of custom world heights within 1.17 and therefore scheduled for removal without replacement
|
* @deprecated In favor of custom world heights within 1.17 and therefore scheduled for removal without replacement
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
public int getWorldHeight() {
|
public int getWorldHeight() {
|
||||||
return 255;
|
return 255;
|
||||||
}
|
}
|
||||||
@ -224,7 +224,7 @@ public abstract class PlotManager {
|
|||||||
*
|
*
|
||||||
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
||||||
* otherwise writes to the queue but does not enqueue.
|
* otherwise writes to the queue but does not enqueue.
|
||||||
* @return {@code true} if the wall blocks were successfully set
|
* @return true if the wall blocks were successfully set
|
||||||
*/
|
*/
|
||||||
public boolean regenerateAllPlotWalls(@Nullable QueueCoordinator queue) {
|
public boolean regenerateAllPlotWalls(@Nullable QueueCoordinator queue) {
|
||||||
boolean success = true;
|
boolean success = true;
|
||||||
|
@ -190,12 +190,9 @@ public final class PlotModificationManager {
|
|||||||
/**
|
/**
|
||||||
* Clear the plot
|
* Clear the plot
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link #deletePlot(PlotPlayer, Runnable)} to clear and delete a plot
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param whenDone A runnable to execute when clearing finishes, or null
|
* @param whenDone A runnable to execute when clearing finishes, or null
|
||||||
* @see #clear(boolean, boolean, PlotPlayer, Runnable)
|
* @see #clear(boolean, boolean, PlotPlayer, Runnable)
|
||||||
|
* @see #deletePlot(PlotPlayer, Runnable) to clear and delete a plot
|
||||||
*/
|
*/
|
||||||
public void clear(final @Nullable Runnable whenDone) {
|
public void clear(final @Nullable Runnable whenDone) {
|
||||||
this.clear(false, false, null, whenDone);
|
this.clear(false, false, null, whenDone);
|
||||||
@ -204,14 +201,11 @@ public final class PlotModificationManager {
|
|||||||
/**
|
/**
|
||||||
* Clear the plot
|
* Clear the plot
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link #deletePlot(PlotPlayer, Runnable)} to clear and delete a plot
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param checkRunning Whether or not already executing tasks should be checked
|
* @param checkRunning Whether or not already executing tasks should be checked
|
||||||
* @param isDelete Whether or not the plot is being deleted
|
* @param isDelete Whether or not the plot is being deleted
|
||||||
* @param actor The actor clearing the plot
|
* @param actor The actor clearing the plot
|
||||||
* @param whenDone A runnable to execute when clearing finishes, or null
|
* @param whenDone A runnable to execute when clearing finishes, or null
|
||||||
|
* @see #deletePlot(PlotPlayer, Runnable) to clear and delete a plot
|
||||||
*/
|
*/
|
||||||
public boolean clear(
|
public boolean clear(
|
||||||
final boolean checkRunning,
|
final boolean checkRunning,
|
||||||
@ -454,7 +448,7 @@ public final class PlotModificationManager {
|
|||||||
* - Any setting from before plot creation will not be saved until the server is stopped properly. i.e. Set any values/options after plot
|
* - Any setting from before plot creation will not be saved until the server is stopped properly. i.e. Set any values/options after plot
|
||||||
* creation.
|
* creation.
|
||||||
*
|
*
|
||||||
* @return {@code true} if plot was created successfully
|
* @return true if plot was created successfully
|
||||||
*/
|
*/
|
||||||
public boolean create() {
|
public boolean create() {
|
||||||
return this.create(this.plot.getOwnerAbs(), true);
|
return this.create(this.plot.getOwnerAbs(), true);
|
||||||
@ -798,7 +792,7 @@ public final class PlotModificationManager {
|
|||||||
/**
|
/**
|
||||||
* Unlink a plot and remove the roads
|
* Unlink a plot and remove the roads
|
||||||
*
|
*
|
||||||
* @return {@code true} if plot was linked
|
* @return true if plot was linked
|
||||||
* @see #unlinkPlot(boolean, boolean)
|
* @see #unlinkPlot(boolean, boolean)
|
||||||
*/
|
*/
|
||||||
public boolean unlink() {
|
public boolean unlink() {
|
||||||
@ -864,14 +858,11 @@ public final class PlotModificationManager {
|
|||||||
/**
|
/**
|
||||||
* Delete a plot (use null for the runnable if you don't need to be notified on completion)
|
* Delete a plot (use null for the runnable if you don't need to be notified on completion)
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link PlotModificationManager#clear(boolean, boolean, PlotPlayer, Runnable)} to simply clear a plot
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param actor The actor executing the task
|
* @param actor The actor executing the task
|
||||||
* @param whenDone task to run when plot has been deleted. Nullable
|
* @param whenDone task to run when plot has been deleted. Nullable
|
||||||
* @return {@code true} if the deletion was successful, {@code false} if not
|
* @return {@code true} if the deletion was successful, {@code false} if not
|
||||||
* @see PlotSquared#removePlot(Plot, boolean)
|
* @see PlotSquared#removePlot(Plot, boolean)
|
||||||
|
* @see PlotModificationManager#clear(boolean, boolean, PlotPlayer, Runnable) to simply clear a plot
|
||||||
*/
|
*/
|
||||||
public boolean deletePlot(@Nullable PlotPlayer<?> actor, final Runnable whenDone) {
|
public boolean deletePlot(@Nullable PlotPlayer<?> actor, final Runnable whenDone) {
|
||||||
if (!this.plot.hasOwner()) {
|
if (!this.plot.hasOwner()) {
|
||||||
|
@ -30,9 +30,6 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public class PlotTitle {
|
public class PlotTitle {
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
|
||||||
public static final PlotTitle CONFIGURED = new PlotTitle();
|
public static final PlotTitle CONFIGURED = new PlotTitle();
|
||||||
|
|
||||||
private final String title;
|
private final String title;
|
||||||
@ -43,9 +40,6 @@ public class PlotTitle {
|
|||||||
subtitle = null;
|
subtitle = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
|
||||||
public PlotTitle(String title, String subtitle) {
|
public PlotTitle(String title, String subtitle) {
|
||||||
Objects.requireNonNull(title);
|
Objects.requireNonNull(title);
|
||||||
Objects.requireNonNull(subtitle);
|
Objects.requireNonNull(subtitle);
|
||||||
@ -53,17 +47,11 @@ public class PlotTitle {
|
|||||||
this.subtitle = subtitle;
|
this.subtitle = subtitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public String title() {
|
public String title() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public String subtitle() {
|
public String subtitle() {
|
||||||
return subtitle;
|
return subtitle;
|
||||||
|
@ -54,7 +54,7 @@ public abstract class CommentInbox {
|
|||||||
/**
|
/**
|
||||||
* @param plot the plot's inbox to write to
|
* @param plot the plot's inbox to write to
|
||||||
* @param player the player trying to write the comment
|
* @param player the player trying to write the comment
|
||||||
* @return {@code true} if the player can write a comment on the plot
|
* @return true if the player can write a comment on the plot
|
||||||
*/
|
*/
|
||||||
public boolean canWrite(Plot plot, PlotPlayer<?> player) {
|
public boolean canWrite(Plot plot, PlotPlayer<?> player) {
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
@ -68,7 +68,7 @@ public abstract class CommentInbox {
|
|||||||
/**
|
/**
|
||||||
* @param plot the plot's inbox to write to
|
* @param plot the plot's inbox to write to
|
||||||
* @param player the player trying to modify the inbox
|
* @param player the player trying to modify the inbox
|
||||||
* @return {@code true} if the player can write a comment on the plot
|
* @return true if the player can write a comment on the plot
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"BooleanMethodIsAlwaysInverted"})
|
@SuppressWarnings({"BooleanMethodIsAlwaysInverted"})
|
||||||
public boolean canModify(Plot plot, PlotPlayer<?> player) {
|
public boolean canModify(Plot plot, PlotPlayer<?> player) {
|
||||||
|
@ -216,20 +216,24 @@ public class ExpireManager {
|
|||||||
applicable.add(et);
|
applicable.add(et);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (applicable.isEmpty()) {
|
if (applicable.isEmpty()) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't delete server plots
|
|
||||||
if (plot.getFlag(ServerPlotFlag.class)) {
|
if (plot.getFlag(ServerPlotFlag.class)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long diff = getAge(plot);
|
||||||
|
if (diff == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
// Filter out non old plots
|
// Filter out non old plots
|
||||||
boolean shouldCheckAccountAge = false;
|
boolean shouldCheckAccountAge = false;
|
||||||
for (int i = 0; i < applicable.size(); i++) {
|
for (int i = 0; i < applicable.size(); i++) {
|
||||||
ExpiryTask et = applicable.poll();
|
ExpiryTask et = applicable.poll();
|
||||||
if (et.applies(getAge(plot, et.shouldDeleteForUnknownOwner()))) {
|
if (et.applies(diff)) {
|
||||||
applicable.add(et);
|
applicable.add(et);
|
||||||
shouldCheckAccountAge |= et.getSettings().SKIP_ACCOUNT_AGE_DAYS != -1;
|
shouldCheckAccountAge |= et.getSettings().SKIP_ACCOUNT_AGE_DAYS != -1;
|
||||||
}
|
}
|
||||||
@ -239,9 +243,9 @@ public class ExpireManager {
|
|||||||
}
|
}
|
||||||
// Check account age
|
// Check account age
|
||||||
if (shouldCheckAccountAge) {
|
if (shouldCheckAccountAge) {
|
||||||
|
long accountAge = getAge(plot);
|
||||||
for (int i = 0; i < applicable.size(); i++) {
|
for (int i = 0; i < applicable.size(); i++) {
|
||||||
ExpiryTask et = applicable.poll();
|
ExpiryTask et = applicable.poll();
|
||||||
long accountAge = getAge(plot, et.shouldDeleteForUnknownOwner());
|
|
||||||
if (et.appliesAccountAge(accountAge)) {
|
if (et.appliesAccountAge(accountAge)) {
|
||||||
applicable.add(et);
|
applicable.add(et);
|
||||||
}
|
}
|
||||||
@ -305,8 +309,9 @@ public class ExpireManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.running = 2;
|
this.running = 2;
|
||||||
|
final ConcurrentLinkedDeque<Plot> plots =
|
||||||
|
new ConcurrentLinkedDeque<>(PlotQuery.newQuery().allPlots().asList());
|
||||||
TaskManager.runTaskAsync(new Runnable() {
|
TaskManager.runTaskAsync(new Runnable() {
|
||||||
private ConcurrentLinkedDeque<Plot> plots = null;
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final Runnable task = this;
|
final Runnable task = this;
|
||||||
@ -314,9 +319,7 @@ public class ExpireManager {
|
|||||||
ExpireManager.this.running = 0;
|
ExpireManager.this.running = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (plots == null) {
|
long start = System.currentTimeMillis();
|
||||||
plots = new ConcurrentLinkedDeque<>(PlotQuery.newQuery().allPlots().asList());
|
|
||||||
}
|
|
||||||
while (!plots.isEmpty()) {
|
while (!plots.isEmpty()) {
|
||||||
if (ExpireManager.this.running != 2) {
|
if (ExpireManager.this.running != 2) {
|
||||||
ExpireManager.this.running = 0;
|
ExpireManager.this.running = 0;
|
||||||
@ -451,20 +454,7 @@ public class ExpireManager {
|
|||||||
plot.getPlotModificationManager().deletePlot(null, whenDone);
|
plot.getPlotModificationManager().deletePlot(null, whenDone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "TODO")
|
|
||||||
public long getAge(UUID uuid) {
|
public long getAge(UUID uuid) {
|
||||||
return getAge(uuid, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the age (last play time) of the passed player
|
|
||||||
*
|
|
||||||
* @param uuid the uuid of the owner to check against
|
|
||||||
* @param shouldDeleteUnknownOwner {@code true} if an unknown player should be counted as never online
|
|
||||||
* @return the millis since the player was last online, or {@link Long#MAX_VALUE} if player was never online
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public long getAge(UUID uuid, final boolean shouldDeleteUnknownOwner) {
|
|
||||||
if (PlotSquared.platform().playerManager().getPlayerIfExists(uuid) != null) {
|
if (PlotSquared.platform().playerManager().getPlayerIfExists(uuid) != null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -474,7 +464,7 @@ public class ExpireManager {
|
|||||||
if (opp != null && (last = opp.getLastPlayed()) != 0) {
|
if (opp != null && (last = opp.getLastPlayed()) != 0) {
|
||||||
this.dates_cache.put(uuid, last);
|
this.dates_cache.put(uuid, last);
|
||||||
} else {
|
} else {
|
||||||
return shouldDeleteUnknownOwner ? Long.MAX_VALUE : 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (last == 0) {
|
if (last == 0) {
|
||||||
@ -483,7 +473,7 @@ public class ExpireManager {
|
|||||||
return System.currentTimeMillis() - last;
|
return System.currentTimeMillis() - last;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getAge(Plot plot, final boolean shouldDeleteUnknownOwner) {
|
public long getAge(Plot plot) {
|
||||||
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.getOwner())
|
if (!plot.hasOwner() || Objects.equals(DBFunc.EVERYONE, plot.getOwner())
|
||||||
|| PlotSquared.platform().playerManager().getPlayerIfExists(plot.getOwner()) != null || plot.getRunning() > 0) {
|
|| PlotSquared.platform().playerManager().getPlayerIfExists(plot.getOwner()) != null || plot.getRunning() > 0) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -505,7 +495,7 @@ public class ExpireManager {
|
|||||||
}
|
}
|
||||||
long min = Long.MAX_VALUE;
|
long min = Long.MAX_VALUE;
|
||||||
for (UUID owner : plot.getOwners()) {
|
for (UUID owner : plot.getOwners()) {
|
||||||
long age = getAge(owner, shouldDeleteUnknownOwner);
|
long age = getAge(owner);
|
||||||
if (age < min) {
|
if (age < min) {
|
||||||
min = age;
|
min = age;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ public class ExpiryTask {
|
|||||||
diff = settings.REQUIRED_PLOTS - plots.size();
|
diff = settings.REQUIRED_PLOTS - plots.size();
|
||||||
}
|
}
|
||||||
List<Long> entireList =
|
List<Long> entireList =
|
||||||
plots.stream().map(plot -> ExpireManager.IMP.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN))
|
plots.stream().map(plot -> ExpireManager.IMP.getAge(plot))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<Long> top = new ArrayList<>(diff + 1);
|
List<Long> top = new ArrayList<>(diff + 1);
|
||||||
if (diff > 1000) {
|
if (diff > 1000) {
|
||||||
@ -157,13 +157,5 @@ public class ExpiryTask {
|
|||||||
return settings.CONFIRMATION;
|
return settings.CONFIRMATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns {@code true} if this task respects unknown owners
|
|
||||||
* @return {@code true} if unknown owners should be counted as never online
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public boolean shouldDeleteForUnknownOwner() {
|
|
||||||
return settings.DELETE_IF_OWNER_IS_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -558,7 +558,6 @@ public class PlotAnalysis {
|
|||||||
return ranks;
|
return ranks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static void sort(int[] input) {
|
public static void sort(int[] input) {
|
||||||
int SIZE = 10;
|
int SIZE = 10;
|
||||||
List<Integer>[] bucket = new ArrayList[SIZE];
|
List<Integer>[] bucket = new ArrayList[SIZE];
|
||||||
|
@ -96,7 +96,7 @@ public class FlagContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cast a plot flag with wildcard parameters into a parametrized
|
* Cast a plot flag with wildcard parameters into a parametrisized
|
||||||
* PlotFlag. This is an unsafe operation, and should only be performed
|
* PlotFlag. This is an unsafe operation, and should only be performed
|
||||||
* if the generic parameters are known beforehand.
|
* if the generic parameters are known beforehand.
|
||||||
*
|
*
|
||||||
@ -105,7 +105,7 @@ public class FlagContainer {
|
|||||||
* @param <T> Flag type
|
* @param <T> Flag type
|
||||||
* @return Casted flag
|
* @return Casted flag
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("ALL")
|
||||||
public static <V, T extends PlotFlag<V, ?>> T castUnsafe(
|
public static <V, T extends PlotFlag<V, ?>> T castUnsafe(
|
||||||
final PlotFlag<?, ?> flag
|
final PlotFlag<?, ?> flag
|
||||||
) {
|
) {
|
||||||
@ -142,13 +142,10 @@ public class FlagContainer {
|
|||||||
/**
|
/**
|
||||||
* Add a flag to the container
|
* Add a flag to the container
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link #addAll(Collection)} to add multiple flags.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param flag Flag to add
|
* @param flag Flag to add
|
||||||
* @param <T> flag type
|
* @param <T> flag type
|
||||||
* @param <V> flag value type
|
* @param <V> flag value type
|
||||||
|
* @see #addAll(Collection) to add multiple flags
|
||||||
*/
|
*/
|
||||||
public <V, T extends PlotFlag<V, ?>> void addFlag(final T flag) {
|
public <V, T extends PlotFlag<V, ?>> void addFlag(final T flag) {
|
||||||
try {
|
try {
|
||||||
@ -184,7 +181,6 @@ public class FlagContainer {
|
|||||||
* @param <V> flag value type
|
* @param <V> flag value type
|
||||||
* @return value of flag removed
|
* @return value of flag removed
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <V, T extends PlotFlag<V, ?>> V removeFlag(final T flag) {
|
public <V, T extends PlotFlag<V, ?>> V removeFlag(final T flag) {
|
||||||
final Object value = this.flagMap.remove(flag.getClass());
|
final Object value = this.flagMap.remove(flag.getClass());
|
||||||
if (this.plotFlagUpdateHandler != null) {
|
if (this.plotFlagUpdateHandler != null) {
|
||||||
@ -202,11 +198,8 @@ public class FlagContainer {
|
|||||||
/**
|
/**
|
||||||
* Add all flags to the container
|
* Add all flags to the container
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link #addFlag(PlotFlag)} to add a single flag.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param flags Flags to add
|
* @param flags Flags to add
|
||||||
|
* @see #addFlag(PlotFlag) to add a single flagg
|
||||||
*/
|
*/
|
||||||
public void addAll(final Collection<PlotFlag<?, ?>> flags) {
|
public void addAll(final Collection<PlotFlag<?, ?>> flags) {
|
||||||
for (final PlotFlag<?, ?> flag : flags) {
|
for (final PlotFlag<?, ?> flag : flags) {
|
||||||
@ -311,11 +304,8 @@ public class FlagContainer {
|
|||||||
* Updates are: a flag being removed, a flag being added or a flag
|
* Updates are: a flag being removed, a flag being added or a flag
|
||||||
* being updated.
|
* being updated.
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link PlotFlagUpdateType} to see the update types available.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param plotFlagUpdateHandler The update handler which will react to changes.
|
* @param plotFlagUpdateHandler The update handler which will react to changes.
|
||||||
|
* @see PlotFlagUpdateType Plot flag update types
|
||||||
*/
|
*/
|
||||||
public void subscribe(final @NonNull PlotFlagUpdateHandler plotFlagUpdateHandler) {
|
public void subscribe(final @NonNull PlotFlagUpdateHandler plotFlagUpdateHandler) {
|
||||||
this.updateSubscribers.add(plotFlagUpdateHandler);
|
this.updateSubscribers.add(plotFlagUpdateHandler);
|
||||||
@ -358,7 +348,6 @@ public class FlagContainer {
|
|||||||
* This is to prevent memory leaks. This method is not part of the API.
|
* This is to prevent memory leaks. This method is not part of the API.
|
||||||
*
|
*
|
||||||
* @return a new Runnable that cleans up once the FlagContainer isn't needed anymore.
|
* @return a new Runnable that cleans up once the FlagContainer isn't needed anymore.
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
@AnnotationHelper.ApiDescription(info = "This method should not be considered as public or API.")
|
@AnnotationHelper.ApiDescription(info = "This method should not be considered as public or API.")
|
||||||
public Runnable createCleanupHook() {
|
public Runnable createCleanupHook() {
|
||||||
|
@ -163,7 +163,6 @@ public abstract class PlotFlag<T, F extends PlotFlag<T, F>> {
|
|||||||
* Get if the flag's permission should check for values. E.g. plots.flag.set.music.VALUE
|
* Get if the flag's permission should check for values. E.g. plots.flag.set.music.VALUE
|
||||||
*
|
*
|
||||||
* @return if valued permission
|
* @return if valued permission
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public boolean isValuedPermission() {
|
public boolean isValuedPermission() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -29,7 +29,6 @@ import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
|||||||
import com.plotsquared.core.plot.PlotTitle;
|
import com.plotsquared.core.plot.PlotTitle;
|
||||||
import com.plotsquared.core.plot.flag.FlagParseException;
|
import com.plotsquared.core.plot.flag.FlagParseException;
|
||||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||||
import com.plotsquared.core.util.StringMan;
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
|
||||||
public class PlotTitleFlag extends PlotFlag<PlotTitle, PlotTitleFlag> {
|
public class PlotTitleFlag extends PlotFlag<PlotTitle, PlotTitleFlag> {
|
||||||
@ -57,17 +56,16 @@ public class PlotTitleFlag extends PlotFlag<PlotTitle, PlotTitleFlag> {
|
|||||||
if (!input.contains("\"")) {
|
if (!input.contains("\"")) {
|
||||||
return new PlotTitleFlag(new PlotTitle(input, ""));
|
return new PlotTitleFlag(new PlotTitle(input, ""));
|
||||||
}
|
}
|
||||||
|
input = input.substring(input.indexOf("\""));
|
||||||
var split = StringMan.splitMessage(input);
|
input = input.substring(0, input.lastIndexOf("\"") + 1);
|
||||||
|
String[] inputs = input.split("\"");
|
||||||
if (split.isEmpty() || split.size() > 2) {
|
|
||||||
throw new FlagParseException(this, input, TranslatableCaption.of("flags.flag_error_title"));
|
|
||||||
}
|
|
||||||
PlotTitle value;
|
PlotTitle value;
|
||||||
if (split.size() == 1) {
|
if (inputs.length == 2) {
|
||||||
value = new PlotTitle(split.get(0), "");
|
value = new PlotTitle(inputs[1], "");
|
||||||
|
} else if (inputs.length > 3) {
|
||||||
|
value = new PlotTitle(inputs[1], inputs[3]);
|
||||||
} else {
|
} else {
|
||||||
value = new PlotTitle(split.get(0), split.get(1));
|
throw new FlagParseException(this, input, TranslatableCaption.of("flags.flag_error_title"));
|
||||||
}
|
}
|
||||||
return new PlotTitleFlag(value);
|
return new PlotTitleFlag(value);
|
||||||
}
|
}
|
||||||
|
@ -196,12 +196,9 @@ public interface PlotAreaManager {
|
|||||||
/**
|
/**
|
||||||
* Check if a plot world.
|
* Check if a plot world.
|
||||||
*
|
*
|
||||||
* <p>
|
|
||||||
* Use {@link #getPlotAreaByString(String)} to get the PlotArea object
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param world the world
|
* @param world the world
|
||||||
* @return if a plot world is registered
|
* @return if a plot world is registered
|
||||||
|
* @see #getPlotAreaByString(String) to get the PlotArea object
|
||||||
*/
|
*/
|
||||||
default boolean hasPlotArea(final @NonNull String world) {
|
default boolean hasPlotArea(final @NonNull String world) {
|
||||||
return this.getPlotAreas(world, null).length != 0;
|
return this.getPlotAreas(world, null).length != 0;
|
||||||
|
@ -57,9 +57,7 @@ import java.nio.file.Files;
|
|||||||
|
|
||||||
public class SinglePlotArea extends GridPlotWorld {
|
public class SinglePlotArea extends GridPlotWorld {
|
||||||
|
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
private final PlotListener plotListener;
|
private final PlotListener plotListener;
|
||||||
public boolean VOID = false;
|
public boolean VOID = false;
|
||||||
|
|
||||||
@ -83,7 +81,6 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
* Returns true if the given string matches the naming system used to identify single plot worlds
|
* Returns true if the given string matches the naming system used to identify single plot worlds
|
||||||
* e.g. -1_5 represents plot id *;-1;5. "*" being the plot area name given to single plot world
|
* e.g. -1_5 represents plot id *;-1;5. "*" being the plot area name given to single plot world
|
||||||
* {@link com.plotsquared.core.plot.PlotArea}.
|
* {@link com.plotsquared.core.plot.PlotArea}.
|
||||||
* @since 6.1.4
|
|
||||||
*/
|
*/
|
||||||
public static boolean isSinglePlotWorld(String worldName) {
|
public static boolean isSinglePlotWorld(String worldName) {
|
||||||
int len = worldName.length();
|
int len = worldName.length();
|
||||||
@ -276,7 +273,6 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
return false; // do not create signs for single plots
|
return false; // do not create signs for single plots
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
protected Plot adapt(Plot p) {
|
protected Plot adapt(Plot p) {
|
||||||
if (p instanceof SinglePlot) {
|
if (p instanceof SinglePlot) {
|
||||||
return p;
|
return p;
|
||||||
|
@ -57,6 +57,7 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
|
|||||||
private final ConcurrentHashMap<BlockVector2, LocalChunk> blockChunks = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<BlockVector2, LocalChunk> blockChunks = new ConcurrentHashMap<>();
|
||||||
private final List<BlockVector2> readRegion = new ArrayList<>();
|
private final List<BlockVector2> readRegion = new ArrayList<>();
|
||||||
private final List<ProgressSubscriber> progressSubscribers = new ArrayList<>();
|
private final List<ProgressSubscriber> progressSubscribers = new ArrayList<>();
|
||||||
|
private long modified;
|
||||||
private LocalChunk lastWrappedChunk;
|
private LocalChunk lastWrappedChunk;
|
||||||
private int lastX = Integer.MIN_VALUE;
|
private int lastX = Integer.MIN_VALUE;
|
||||||
private int lastZ = Integer.MIN_VALUE;
|
private int lastZ = Integer.MIN_VALUE;
|
||||||
@ -75,6 +76,7 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
|
|||||||
public BasicQueueCoordinator(@NonNull World world) {
|
public BasicQueueCoordinator(@NonNull World world) {
|
||||||
super(world);
|
super(world);
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
this.modified = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -92,6 +94,7 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void setModified(long modified) {
|
public final void setModified(long modified) {
|
||||||
|
this.modified = modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -117,7 +120,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
|
|||||||
return setBlock(x, y, z, id.toBaseBlock());
|
return setBlock(x, y, z, id.toBaseBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("removal")
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(int x, int z, @NonNull BiomeType biomeType) {
|
public boolean setBiome(int x, int z, @NonNull BiomeType biomeType) {
|
||||||
LocalChunk chunk = getChunk(x >> 4, z >> 4);
|
LocalChunk chunk = getChunk(x >> 4, z >> 4);
|
||||||
|
@ -36,7 +36,6 @@ public abstract class ChunkCoordinator implements Runnable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancel the chunk coordinator.
|
* Cancel the chunk coordinator.
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public abstract void cancel();
|
public abstract void cancel();
|
||||||
|
|
||||||
|
@ -46,20 +46,13 @@ public class ChunkQueueCoordinator extends ScopedQueueCoordinator {
|
|||||||
private final int length;
|
private final int length;
|
||||||
private final BlockVector3 bot;
|
private final BlockVector3 bot;
|
||||||
private final BlockVector3 top;
|
private final BlockVector3 top;
|
||||||
private final World weWorld;
|
|
||||||
|
|
||||||
public ChunkQueueCoordinator(
|
public ChunkQueueCoordinator(@NonNull BlockVector3 bot, @NonNull BlockVector3 top, boolean biomes) {
|
||||||
final @NonNull World weWorld,
|
|
||||||
@NonNull BlockVector3 bot,
|
|
||||||
@NonNull BlockVector3 top,
|
|
||||||
boolean biomes
|
|
||||||
) {
|
|
||||||
super(null, Location.at("", 0, 0, 0), Location.at("", 15, 255, 15));
|
super(null, Location.at("", 0, 0, 0), Location.at("", 15, 255, 15));
|
||||||
this.weWorld = weWorld;
|
|
||||||
this.width = top.getX() - bot.getX() + 1;
|
this.width = top.getX() - bot.getX() + 1;
|
||||||
this.length = top.getZ() - bot.getZ() + 1;
|
this.length = top.getZ() - bot.getZ() + 1;
|
||||||
this.result = new BlockState[256][width][length];
|
this.result = new BlockState[256][][];
|
||||||
this.biomeResult = biomes ? new BiomeType[256][width][length] : null;
|
this.biomeResult = biomes ? new BiomeType[256][][] : null;
|
||||||
this.bot = bot;
|
this.bot = bot;
|
||||||
this.top = top;
|
this.top = top;
|
||||||
}
|
}
|
||||||
@ -144,7 +137,7 @@ public class ChunkQueueCoordinator extends ScopedQueueCoordinator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable World getWorld() {
|
public @Nullable World getWorld() {
|
||||||
return weWorld;
|
return super.getWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -56,7 +56,6 @@ public abstract class QueueCoordinator {
|
|||||||
private Object chunkObject;
|
private Object chunkObject;
|
||||||
private final AtomicBoolean enqueued = new AtomicBoolean();
|
private final AtomicBoolean enqueued = new AtomicBoolean();
|
||||||
|
|
||||||
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
|
||||||
@Inject
|
@Inject
|
||||||
private GlobalBlockQueue blockQueue;
|
private GlobalBlockQueue blockQueue;
|
||||||
|
|
||||||
@ -209,7 +208,7 @@ public abstract class QueueCoordinator {
|
|||||||
* <br>
|
* <br>
|
||||||
* Scheduled for removal once we drop the support for versions not supporting 3D biomes.
|
* Scheduled for removal once we drop the support for versions not supporting 3D biomes.
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
public abstract boolean setBiome(int x, int z, @NonNull BiomeType biome);
|
public abstract boolean setBiome(int x, int z, @NonNull BiomeType biome);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -327,7 +326,6 @@ public abstract class QueueCoordinator {
|
|||||||
* Enqueue the queue to start it
|
* Enqueue the queue to start it
|
||||||
*
|
*
|
||||||
* @return success or not
|
* @return success or not
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public boolean enqueue() {
|
public boolean enqueue() {
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
|
@ -34,7 +34,6 @@ import java.util.function.Consumer;
|
|||||||
/**
|
/**
|
||||||
* A repository for keyed {@link java.util.concurrent.locks.Lock locks}
|
* A repository for keyed {@link java.util.concurrent.locks.Lock locks}
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
|
||||||
public final class LockRepository {
|
public final class LockRepository {
|
||||||
|
|
||||||
private final Striped<Lock> striped;
|
private final Striped<Lock> striped;
|
||||||
|
@ -90,7 +90,7 @@ public final class BlockUtil {
|
|||||||
if (id.length() == 1 && id.charAt(0) == '*') {
|
if (id.length() == 1 && id.charAt(0) == '*') {
|
||||||
return FuzzyBlockState.builder().type(BlockTypes.AIR).build();
|
return FuzzyBlockState.builder().type(BlockTypes.AIR).build();
|
||||||
}
|
}
|
||||||
String mutableId;
|
String mutableId = id;
|
||||||
mutableId = id.toLowerCase();
|
mutableId = id.toLowerCase();
|
||||||
BlockType type = BlockTypes.get(mutableId);
|
BlockType type = BlockTypes.get(mutableId);
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
|
@ -123,7 +123,7 @@ public class ChunkUtil {
|
|||||||
* @param pos1 Region minimum point
|
* @param pos1 Region minimum point
|
||||||
* @param pos2 Region maximum point
|
* @param pos2 Region maximum point
|
||||||
* @param chunk BlockVector2 of chunk coordinates
|
* @param chunk BlockVector2 of chunk coordinates
|
||||||
* @return {@code true} if the region pos1-pos2 contains the chunk
|
* @return true if the region pos1-pos2 contains the chunk
|
||||||
*/
|
*/
|
||||||
public static boolean isWholeChunk(@NonNull Location pos1, @NonNull Location pos2, @NonNull BlockVector2 chunk) {
|
public static boolean isWholeChunk(@NonNull Location pos1, @NonNull Location pos2, @NonNull BlockVector2 chunk) {
|
||||||
int x1 = pos1.getX();
|
int x1 = pos1.getX();
|
||||||
|
@ -73,7 +73,6 @@ public class EntityUtil {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static boolean checkEntity(Plot plot, PlotFlag<Integer, ?>... flags) {
|
public static boolean checkEntity(Plot plot, PlotFlag<Integer, ?>... flags) {
|
||||||
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -30,7 +30,7 @@ package com.plotsquared.core.util;
|
|||||||
*
|
*
|
||||||
* @deprecated Do not use
|
* @deprecated Do not use
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
public class MainUtil {
|
public class MainUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,7 +74,6 @@ public class Permissions {
|
|||||||
* @param permission Permission
|
* @param permission Permission
|
||||||
* @param key Permission "key"
|
* @param key Permission "key"
|
||||||
* @return {@code true} if the owner has the given permission, else {@code false}
|
* @return {@code true} if the owner has the given permission, else {@code false}
|
||||||
* @since 6.0.10
|
|
||||||
*/
|
*/
|
||||||
public static boolean hasKeyedPermission(
|
public static boolean hasKeyedPermission(
|
||||||
final @NonNull PermissionHolder caller, final @NonNull String permission,
|
final @NonNull PermissionHolder caller, final @NonNull String permission,
|
||||||
|
@ -52,7 +52,7 @@ public class PremiumVerification {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param userID Spigot user ID
|
* @param userID Spigot user ID
|
||||||
* @return {@code true} if userID does not contain __USER__
|
* @return true if userID does not contain __USER__
|
||||||
*/
|
*/
|
||||||
private static Boolean isPremium(String userID) {
|
private static Boolean isPremium(String userID) {
|
||||||
return !userID.contains("__USER__");
|
return !userID.contains("__USER__");
|
||||||
@ -61,7 +61,7 @@ public class PremiumVerification {
|
|||||||
/**
|
/**
|
||||||
* Returns true if this plugin is premium
|
* Returns true if this plugin is premium
|
||||||
*
|
*
|
||||||
* @return {@code true} if is premium
|
* @return if is premium
|
||||||
*/
|
*/
|
||||||
public static Boolean isPremium() {
|
public static Boolean isPremium() {
|
||||||
return usingPremium == null ? (usingPremium = isPremium(getUserID())) : usingPremium;
|
return usingPremium == null ? (usingPremium = isPremium(getUserID())) : usingPremium;
|
||||||
|
@ -120,7 +120,7 @@ public abstract class RegionManager {
|
|||||||
* @param actor the actor associated with the cuboid set
|
* @param actor the actor associated with the cuboid set
|
||||||
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
* @param queue Nullable {@link QueueCoordinator}. If null, creates own queue and enqueues,
|
||||||
* otherwise writes to the queue but does not enqueue.
|
* otherwise writes to the queue but does not enqueue.
|
||||||
* @return {@code true} if not enqueued, otherwise whether the created queue enqueued.
|
* @return true if not enqueued, otherwise whether the created queue enqueued.
|
||||||
*/
|
*/
|
||||||
public boolean setCuboids(
|
public boolean setCuboids(
|
||||||
final @NonNull PlotArea area,
|
final @NonNull PlotArea area,
|
||||||
@ -161,7 +161,7 @@ public abstract class RegionManager {
|
|||||||
* Notify any plugins that may want to modify clear behaviour that a clear is occuring
|
* Notify any plugins that may want to modify clear behaviour that a clear is occuring
|
||||||
*
|
*
|
||||||
* @param manager plot manager
|
* @param manager plot manager
|
||||||
* @return {@code true} if the notified will accept the clear task
|
* @return true if the notified will accept the clear task
|
||||||
*/
|
*/
|
||||||
public boolean notifyClear(PlotManager manager) {
|
public boolean notifyClear(PlotManager manager) {
|
||||||
return false;
|
return false;
|
||||||
@ -174,7 +174,7 @@ public abstract class RegionManager {
|
|||||||
* @param whenDone task to run when complete
|
* @param whenDone task to run when complete
|
||||||
* @param manager plot manager
|
* @param manager plot manager
|
||||||
* @param actor the player running the clear
|
* @param actor the player running the clear
|
||||||
* @return {@code true} if the clear worked. {@code false} if someone went wrong so P2 can then handle the clear
|
* @return true if the clear worked. False if someone went wrong so P2 can then handle the clear
|
||||||
*/
|
*/
|
||||||
public abstract boolean handleClear(
|
public abstract boolean handleClear(
|
||||||
@NonNull Plot plot,
|
@NonNull Plot plot,
|
||||||
@ -289,7 +289,7 @@ public abstract class RegionManager {
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
toQueue2.setCompleteTask(whenDone);
|
toQueue2.setCompleteTask(whenDone::run);
|
||||||
if (actor != null && Settings.QUEUE.NOTIFY_PROGRESS) {
|
if (actor != null && Settings.QUEUE.NOTIFY_PROGRESS) {
|
||||||
toQueue2.addProgressSubscriber(subscriberFactory.createFull(
|
toQueue2.addProgressSubscriber(subscriberFactory.createFull(
|
||||||
actor,
|
actor,
|
||||||
|
@ -127,7 +127,7 @@ public abstract class SchematicHandler {
|
|||||||
this.subscriberFactory = subscriberFactory;
|
this.subscriberFactory = subscriberFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
public static void upload(
|
public static void upload(
|
||||||
@Nullable UUID uuid,
|
@Nullable UUID uuid,
|
||||||
final @Nullable String file,
|
final @Nullable String file,
|
||||||
@ -520,7 +520,7 @@ public abstract class SchematicHandler {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true, since = "6.0.0")
|
@Deprecated(forRemoval = true)
|
||||||
public void upload(final CompoundTag tag, UUID uuid, String file, RunnableVal<URL> whenDone) {
|
public void upload(final CompoundTag tag, UUID uuid, String file, RunnableVal<URL> whenDone) {
|
||||||
if (tag == null) {
|
if (tag == null) {
|
||||||
TaskManager.runTask(whenDone);
|
TaskManager.runTask(whenDone);
|
||||||
@ -543,7 +543,7 @@ public abstract class SchematicHandler {
|
|||||||
*
|
*
|
||||||
* @param tag to save
|
* @param tag to save
|
||||||
* @param path to save in
|
* @param path to save in
|
||||||
* @return {@code true} if succeeded
|
* @return true if succeeded
|
||||||
*/
|
*/
|
||||||
public boolean save(CompoundTag tag, String path) {
|
public boolean save(CompoundTag tag, String path) {
|
||||||
if (tag == null) {
|
if (tag == null) {
|
||||||
|
@ -35,9 +35,6 @@ public abstract class SetupUtils {
|
|||||||
|
|
||||||
public static HashMap<String, GeneratorWrapper<?>> generators = new HashMap<>();
|
public static HashMap<String, GeneratorWrapper<?>> generators = new HashMap<>();
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 6.1.0
|
|
||||||
*/
|
|
||||||
public abstract void updateGenerators(final boolean force);
|
public abstract void updateGenerators(final boolean force);
|
||||||
|
|
||||||
public abstract String getGenerator(final PlotArea plotArea);
|
public abstract String getGenerator(final PlotArea plotArea);
|
||||||
|
@ -59,7 +59,6 @@ public class StringComparison<T> {
|
|||||||
this(input, objects, Object::toString);
|
this(input, objects, Object::toString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public StringComparison(String input, Collection<T> objects, Function<T, String> toString) {
|
public StringComparison(String input, Collection<T> objects, Function<T, String> toString) {
|
||||||
this(input, (T[]) objects.toArray(), toString);
|
this(input, (T[]) objects.toArray(), toString);
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user