From 04f789d404491199725adfbcd8f5149c654ff86d Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Sun, 8 Sep 2019 20:02:45 +0200 Subject: [PATCH] Fix merging --- .github/ISSUE_TEMPLATE.md | 6 +- .../plotsquared/bukkit/BukkitMain.java | 32 +-- .../bukkit/events/PlotAutoMergeEvent.java | 6 +- .../bukkit/events/PlotMergeEvent.java | 7 +- .../bukkit/events/PlotUnlinkEvent.java | 6 +- .../bukkit/listeners/PlayerEvents.java | 133 +++++----- .../bukkit/listeners/SingleWorldListener.java | 4 +- .../bukkit/object/BukkitPlayer.java | 11 +- .../bukkit/util/BukkitChunkManager.java | 29 +-- .../bukkit/util/BukkitEventUtil.java | 192 +++++++-------- .../plotsquared/bukkit/util/BukkitUtil.java | 5 +- .../plotsquared/bukkit/util/SendChunk.java | 4 +- .../bukkit/uuid/SQLUUIDHandler.java | 8 +- Bukkit/src/main/resources/plugin.yml | 3 +- .../plotsquared/commands/Command.java | 2 +- .../configuration/ConfigurationOptions.java | 23 +- .../MemoryConfigurationOptions.java | 4 - .../file/FileConfigurationOptions.java | 5 - .../file/YamlConfigurationOptions.java | 29 +-- .../plotsquared/plot/IPlotMain.java | 36 +-- .../plotsquared/plot/PlotSquared.java | 4 +- .../plotsquared/plot/PlotVersion.java | 11 +- .../plotsquared/plot/commands/Alias.java | 4 +- .../plotsquared/plot/commands/Auto.java | 15 +- .../plotsquared/plot/commands/Claim.java | 11 +- .../plotsquared/plot/commands/Comment.java | 6 +- .../plotsquared/plot/commands/Copy.java | 4 +- .../plot/commands/CreateRoadSchematic.java | 6 +- .../plot/commands/DebugClaimTest.java | 6 +- .../plotsquared/plot/commands/DebugExec.java | 6 +- .../plot/commands/DebugRoadRegen.java | 17 +- .../plotsquared/plot/commands/Delete.java | 21 +- .../plotsquared/plot/commands/Deny.java | 4 +- .../plotsquared/plot/commands/Done.java | 4 +- .../plotsquared/plot/commands/FlagCmd.java | 11 +- .../plotsquared/plot/commands/Inbox.java | 8 +- .../plot/commands/MainCommand.java | 10 +- .../plotsquared/plot/commands/Merge.java | 32 +-- .../plotsquared/plot/commands/Move.java | 6 +- .../plotsquared/plot/commands/Music.java | 10 +- .../plotsquared/plot/commands/Owner.java | 2 +- .../plotsquared/plot/commands/PluginCmd.java | 4 +- .../plotsquared/plot/commands/Remove.java | 2 +- .../plot/commands/SchematicCmd.java | 5 +- .../plotsquared/plot/commands/Set.java | 2 - .../plotsquared/plot/commands/SetCommand.java | 4 +- .../plotsquared/plot/commands/SetHome.java | 9 +- .../plotsquared/plot/commands/Setup.java | 12 +- .../plotsquared/plot/commands/Swap.java | 4 +- .../plotsquared/plot/commands/Toggle.java | 15 +- .../plotsquared/plot/commands/Unlink.java | 11 +- .../plot/commands/WE_Anywhere.java | 3 +- .../plotsquared/plot/config/Captions.java | 81 +++--- .../plotsquared/plot/database/AbstractDB.java | 26 +- .../plotsquared/plot/database/DBFunc.java | 16 +- .../plotsquared/plot/database/SQLManager.java | 8 +- .../plot/generator/AugmentedUtils.java | 3 - .../plot/generator/ClassicPlotManager.java | 108 ++++---- .../plot/generator/ClassicPlotWorld.java | 2 +- .../plot/generator/HybridPlotManager.java | 14 +- .../plot/generator/HybridPlotWorld.java | 2 +- .../plot/generator/HybridUtils.java | 2 +- .../plot/listener/PlotListener.java | 14 +- .../plot/object/ConsolePlayer.java | 24 +- .../plotsquared/plot/object/Direction.java | 15 +- .../plotsquared/plot/object/Plot.java | 232 ++++++++++-------- .../plotsquared/plot/object/PlotArea.java | 90 ++++--- .../plotsquared/plot/object/PlotCluster.java | 4 +- .../plotsquared/plot/object/PlotId.java | 8 +- .../plotsquared/plot/object/PlotManager.java | 9 +- .../plotsquared/plot/object/PlotPlayer.java | 36 +-- .../plotsquared/plot/object/PlotSettings.java | 18 +- .../plot/object/schematic/Schematic.java | 8 +- .../plot/object/worlds/SinglePlot.java | 4 +- .../plot/object/worlds/SinglePlotArea.java | 28 +-- .../plotsquared/plot/util/EventUtil.java | 2 +- .../plotsquared/plot/util/MainUtil.java | 14 +- .../plot/util/SchematicHandler.java | 14 +- .../plotsquared/plot/util/UUIDHandler.java | 2 +- .../plot/util/UUIDHandlerImplementation.java | 2 +- .../plot/util/block/BasicLocalBlockQueue.java | 3 +- .../util/block/DelegateLocalBlockQueue.java | 5 +- .../plot/util/block/GlobalBlockQueue.java | 22 +- .../plot/util/block/LocalBlockQueue.java | 12 +- .../util/block/ScopedLocalBlockQueue.java | 14 +- .../plot/database/AbstractDBTest.java | 16 +- Nukkit/src/main/resources/plugin.yml | 1 + gradlew | 2 +- gradlew.bat | 2 +- 89 files changed, 854 insertions(+), 823 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 91ba21cb9..8192d7fa6 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -3,15 +3,13 @@ __*NOTICE: Bukkit/Spigot versions 1.7.10 to 1.12.2 are considered legacy and wil -**[REQUIRED] PlotSquared Version Number:** +**Debug paste link:** + **[REQUIRED] Spigot/Paper Version Number:** **[REQUIRED] Minecraft Version Number:** -**Links to worlds.yml file and settings.yml file:** - - **[REQUIRED] Description of the problem:** **Any relevant console output or screenshots:** diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java index e32b26cb2..9596a25e9 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java @@ -54,8 +54,8 @@ import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nullable; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; @@ -132,8 +132,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain // Check for updates if (PlotSquared.get().getUpdateUtility() != null) { final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility(); - updateUtility - .checkForUpdate(this.getPluginVersionString(), ((updateDescription, throwable) -> { + updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(), + ((updateDescription, throwable) -> { Bukkit.getScheduler().runTask(BukkitMain.this, () -> { getLogger().info("-------- PlotSquared Update Check --------"); if (throwable != null) { @@ -289,9 +289,11 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain @Override public void registerCommands() { final BukkitCommand bukkitCommand = new BukkitCommand(); final PluginCommand plotCommand = getCommand("plots"); - plotCommand.setExecutor(bukkitCommand); - plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot")); - plotCommand.setTabCompleter(bukkitCommand); + if (plotCommand != null) { + plotCommand.setExecutor(bukkitCommand); + plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot")); + plotCommand.setTabCompleter(bukkitCommand); + } } @Override public File getDirectory() { @@ -598,14 +600,15 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain } @Override public QueueProvider initBlockQueue() { - try { - new SendChunk(); - MainUtil.canSendChunk = true; - } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) { - PlotSquared.debug( - SendChunk.class + " does not support " + StringMan.getString(getServerVersion())); - MainUtil.canSendChunk = false; - } + //TODO Figure out why this code is still here yet isn't being called anywhere. + // try { + // new SendChunk(); + // MainUtil.canSendChunk = true; + // } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) { + // PlotSquared.debug( + // SendChunk.class + " does not support " + StringMan.getString(getServerVersion())); + // MainUtil.canSendChunk = false; + // } return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class); } @@ -800,4 +803,5 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain @Override public LegacyMappings getLegacyMappings() { return this.legacyMappings; } + } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotAutoMergeEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotAutoMergeEvent.java index 88c9773c9..059b296cf 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotAutoMergeEvent.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotAutoMergeEvent.java @@ -7,8 +7,8 @@ import lombok.Setter; import org.bukkit.World; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.Collections; import java.util.List; @@ -30,8 +30,8 @@ public final class PlotAutoMergeEvent extends PlotEvent implements Cancellable { * @param plot Plot that was merged * @param plots A list of plots involved in the event */ - public PlotAutoMergeEvent(@Nonnull final World world, @Nonnull final Plot plot, - @Nonnull final List plots) { + public PlotAutoMergeEvent(@NotNull final World world, @NotNull final Plot plot, + @NotNull final List plots) { super(plot); this.world = world; this.plots = plots; diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java index 493145f2a..55488011e 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java @@ -6,8 +6,7 @@ import lombok.Setter; import org.bukkit.World; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; - -import javax.annotation.Nonnull; +import org.jetbrains.annotations.NotNull; /** * Event called when several plots are merged @@ -29,8 +28,8 @@ public final class PlotMergeEvent extends PlotEvent implements Cancellable { * @param dir The direction of the merge * @param max Max merge size */ - public PlotMergeEvent(@Nonnull final World world, @Nonnull final Plot plot, - @Nonnull final int dir, @Nonnull final int max) { + public PlotMergeEvent(@NotNull final World world, @NotNull final Plot plot, + @NotNull final int dir, @NotNull final int max) { super(plot); this.world = world; this.dir = dir; diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java index 675f10d8f..5db7d04d4 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java @@ -8,8 +8,8 @@ import org.bukkit.World; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.Collections; import java.util.List; @@ -31,8 +31,8 @@ public final class PlotUnlinkEvent extends Event implements Cancellable { * @param world World in which the event occurred * @param plots Plots that are involved in the event */ - public PlotUnlinkEvent(@Nonnull final World world, @Nonnull final PlotArea area, - @Nonnull final List plots) { + public PlotUnlinkEvent(@NotNull final World world, @NotNull final PlotArea area, + @NotNull final List plots) { this.plots = plots; this.world = world; this.area = area; diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java index 938cc8b9a..21c604dcc 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java @@ -85,10 +85,10 @@ import java.util.regex.Pattern; int distance = Bukkit.getViewDistance() * 16; for (Entry entry : UUIDHandler.getPlayers().entrySet()) { PlotPlayer player = entry.getValue(); - Location loc = player.getLocation(); - if (loc.getWorld().equals(world)) { - if (16 * Math.abs(loc.getX() - x) / 16 > distance - || 16 * Math.abs(loc.getZ() - z) / 16 > distance) { + Location location = player.getLocation(); + if (location.getWorld().equals(world)) { + if (16 * Math.abs(location.getX() - x) / 16 > distance + || 16 * Math.abs(location.getZ() - z) / 16 > distance) { continue; } ((BukkitPlayer) player).player.sendBlockChange(bloc, data); @@ -314,12 +314,12 @@ import java.util.regex.Pattern; case POWERED_RAIL: return; default:*/ - Location loc = BukkitUtil.getLocation(block.getLocation()); - PlotArea area = loc.getPlotArea(); + Location location = BukkitUtil.getLocation(block.getLocation()); + PlotArea area = location.getPlotArea(); if (area == null) { return; } - Plot plot = loc.getOwnedPlot(); + Plot plot = location.getOwnedPlot(); if (plot == null) { return; } @@ -369,12 +369,11 @@ import java.util.regex.Pattern; switch (event.getChangedType()) { case COMPARATOR: { Block block = event.getBlock(); - Location loc = BukkitUtil.getLocation(block.getLocation()); - PlotArea area = loc.getPlotArea(); - if (area == null) { + Location location = BukkitUtil.getLocation(block.getLocation()); + if (location.isPlotArea()) { return; } - Plot plot = area.getOwnedPlotAbs(loc); + Plot plot = location.getOwnedPlotAbs(); if (plot == null) { return; } @@ -391,12 +390,12 @@ import java.util.regex.Pattern; case TURTLE_HELMET: case TURTLE_SPAWN_EGG: { Block block = event.getBlock(); - Location loc = BukkitUtil.getLocation(block.getLocation()); - PlotArea area = loc.getPlotArea(); + Location location = BukkitUtil.getLocation(block.getLocation()); + PlotArea area = location.getPlotArea(); if (area == null) { return; } - Plot plot = area.getOwnedPlotAbs(loc); + Plot plot = area.getOwnedPlotAbs(location); if (plot == null) { return; } @@ -413,30 +412,30 @@ import java.util.regex.Pattern; case STICKY_PISTON: org.bukkit.block.data.Directional piston = (org.bukkit.block.data.Directional) block.getBlockData(); - Location loc = BukkitUtil.getLocation(block.getLocation()); - PlotArea area = loc.getPlotArea(); + Location location = BukkitUtil.getLocation(block.getLocation()); + PlotArea area = location.getPlotArea(); if (area == null) { return; } - Plot plot = area.getOwnedPlotAbs(loc); + Plot plot = area.getOwnedPlotAbs(location); if (plot == null) { return; } switch (piston.getFacing()) { case EAST: - loc.setX(loc.getX() + 1); + location.setX(location.getX() + 1); break; case SOUTH: - loc.setX(loc.getX() - 1); + location.setX(location.getX() - 1); break; case WEST: - loc.setZ(loc.getZ() + 1); + location.setZ(location.getZ() + 1); break; case NORTH: - loc.setZ(loc.getZ() - 1); + location.setZ(location.getZ() - 1); break; } - Plot newPlot = area.getOwnedPlotAbs(loc); + Plot newPlot = area.getOwnedPlotAbs(location); if (!plot.equals(newPlot)) { event.setCancelled(true); return; @@ -470,15 +469,15 @@ import java.util.regex.Pattern; @EventHandler public boolean onProjectileHit(ProjectileHitEvent event) { Projectile entity = event.getEntity(); - Location loc = BukkitUtil.getLocation(entity); - if (!PlotSquared.get().hasPlotArea(loc.getWorld())) { + Location location = BukkitUtil.getLocation(entity); + if (!PlotSquared.get().hasPlotArea(location.getWorld())) { return true; } - PlotArea area = loc.getPlotArea(); + PlotArea area = location.getPlotArea(); if (area == null) { return true; } - Plot plot = area.getPlot(loc); + Plot plot = area.getPlot(location); ProjectileSource shooter = entity.getShooter(); if (shooter instanceof Player) { PlotPlayer pp = BukkitUtil.getPlayer((Player) shooter); @@ -523,22 +522,22 @@ import java.util.regex.Pattern; return; } Player player = event.getPlayer(); - PlotPlayer pp = BukkitUtil.getPlayer(player); - Location loc = pp.getLocation(); - PlotArea area = loc.getPlotArea(); + PlotPlayer plotPlayer = BukkitUtil.getPlayer(player); + Location location = plotPlayer.getLocation(); + PlotArea area = location.getPlotArea(); if (area == null) { return; } String[] parts = msg.split(" "); - Plot plot = pp.getCurrentPlot(); + Plot plot = plotPlayer.getCurrentPlot(); // Check WorldEdit switch (parts[0].toLowerCase()) { case "up": case "/up": case "worldedit:up": case "worldedit:/up": - if (plot == null || (!plot.isAdded(pp.getUUID()) && !Permissions - .hasPermission(pp, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) { + if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions + .hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) { event.setCancelled(true); return; } @@ -548,7 +547,7 @@ import java.util.regex.Pattern; } Optional> flag = plot.getFlag(Flags.BLOCKED_CMDS); if (flag.isPresent() && !Permissions - .hasPermission(pp, Captions.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) { + .hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) { List blocked_cmds = flag.get(); String part = parts[0]; if (parts[0].contains(":")) { @@ -592,13 +591,13 @@ import java.util.regex.Pattern; } if (pattern.matcher(msg).matches()) { String perm; - if (plot.isAdded(pp.getUUID())) { + if (plot.isAdded(plotPlayer.getUUID())) { perm = "plots.admin.command.blocked-cmds.shared"; } else { perm = "plots.admin.command.blocked-cmds.other"; } - if (!Permissions.hasPermission(pp, perm)) { - MainUtil.sendMessage(pp, Captions.COMMAND_BLOCKED); + if (!Permissions.hasPermission(plotPlayer, perm)) { + MainUtil.sendMessage(plotPlayer, Captions.COMMAND_BLOCKED); event.setCancelled(true); } return; @@ -619,10 +618,10 @@ import java.util.regex.Pattern; UUID uuid = pp.getUUID(); UUIDHandler.add(sw, uuid); - Location loc = pp.getLocation(); - PlotArea area = loc.getPlotArea(); + Location location = pp.getLocation(); + PlotArea area = location.getPlotArea(); if (area != null) { - Plot plot = area.getPlot(loc); + Plot plot = area.getPlot(location); if (plot != null) { plotEntry(pp, plot); } @@ -641,7 +640,7 @@ import java.util.regex.Pattern; && PlotSquared.get().getUpdateUtility() != null) { final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility(); final BukkitMain bukkitMain = BukkitMain.getPlugin(BukkitMain.class); - updateUtility.checkForUpdate(bukkitMain.getPluginVersionString(), + updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(), ((updateDescription, throwable) -> { if (throwable != null) { bukkitMain.getLogger().severe(String @@ -688,27 +687,27 @@ import java.util.regex.Pattern; org.bukkit.Location to = event.getTo(); if (to != null) { Player player = event.getPlayer(); - PlotPlayer pp = PlotPlayer.wrap(player); - Location loc = BukkitUtil.getLocation(to); - PlotArea area = loc.getPlotArea(); + PlotPlayer plotPlayer = PlotPlayer.wrap(player); + Location location = BukkitUtil.getLocation(to); + PlotArea area = location.getPlotArea(); if (area == null) { return; } - Plot plot = area.getPlot(loc); + Plot plot = area.getPlot(location); if (plot != null) { - final boolean result = Flags.DENY_TELEPORT.allowsTeleport(pp, plot); + final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot); if (!result) { - MainUtil.sendMessage(pp, Captions.NO_PERMISSION_EVENT, + MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT, Captions.PERMISSION_ADMIN_ENTRY_DENIED); event.setCancelled(true); if (lastLoc != null) { - pp.setMeta(PlotPlayer.META_LOCATION, lastLoc); + plotPlayer.setMeta(PlotPlayer.META_LOCATION, lastLoc); } if (lastPlot != null) { - pp.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot); + plotPlayer.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot); } } else { - plotEntry(pp, plot); + plotEntry(plotPlayer, plot); } } } @@ -809,14 +808,14 @@ import java.util.regex.Pattern; // Cancel teleport TaskManager.TELEPORT_QUEUE.remove(pp.getName()); // Set last location - Location loc = BukkitUtil.getLocation(to); - pp.setMeta(PlotPlayer.META_LOCATION, loc); - PlotArea area = loc.getPlotArea(); + Location location = BukkitUtil.getLocation(to); + pp.setMeta(PlotPlayer.META_LOCATION, location); + PlotArea area = location.getPlotArea(); if (area == null) { pp.deleteMeta(PlotPlayer.META_LAST_PLOT); return; } - Plot now = area.getPlot(loc); + Plot now = area.getPlot(location); Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT); if (now == null) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp @@ -869,14 +868,14 @@ import java.util.regex.Pattern; // Cancel teleport TaskManager.TELEPORT_QUEUE.remove(pp.getName()); // Set last location - Location loc = BukkitUtil.getLocation(to); - pp.setMeta(PlotPlayer.META_LOCATION, loc); - PlotArea area = loc.getPlotArea(); + Location location = BukkitUtil.getLocation(to); + pp.setMeta(PlotPlayer.META_LOCATION, location); + PlotArea area = location.getPlotArea(); if (area == null) { pp.deleteMeta(PlotPlayer.META_LAST_PLOT); return; } - Plot now = area.getPlot(loc); + Plot now = area.getPlot(location); Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT); if (now == null) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp @@ -1123,10 +1122,10 @@ import java.util.regex.Pattern; if (Settings.Enabled_Components.PERMISSION_CACHE) { pp.deleteMeta("perm"); } - Location loc = pp.getLocation(); - PlotArea area = loc.getPlotArea(); - if (loc.isPlotArea()) { - plot = loc.getPlot(); + Location location = pp.getLocation(); + PlotArea area = location.getPlotArea(); + if (location.isPlotArea()) { + plot = location.getPlot(); if (plot != null) { plotEntry(pp, plot); } @@ -2269,17 +2268,17 @@ import java.util.regex.Pattern; Entity ignitingEntity = event.getIgnitingEntity(); Block block = event.getBlock(); BlockIgniteEvent.IgniteCause igniteCause = event.getCause(); - Location loc; + Location location1; if (block != null) { - loc = BukkitUtil.getLocation(block.getLocation()); + location1 = BukkitUtil.getLocation(block.getLocation()); } else if (ignitingEntity != null) { - loc = BukkitUtil.getLocation(ignitingEntity); + location1 = BukkitUtil.getLocation(ignitingEntity); } else if (player != null) { - loc = BukkitUtil.getLocation(player); + location1 = BukkitUtil.getLocation(player); } else { return; } - PlotArea area = loc.getPlotArea(); + PlotArea area = location1.getPlotArea(); if (area == null) { return; } @@ -2288,7 +2287,7 @@ import java.util.regex.Pattern; return; } - Plot plot = area.getOwnedPlotAbs(loc); + Plot plot = area.getOwnedPlotAbs(location1); if (player != null) { PlotPlayer pp = BukkitUtil.getPlayer(player); if (plot == null) { diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java index fc13147dd..a53527fc9 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java @@ -30,8 +30,8 @@ import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle").getRealMethod(); try { this.mustSave = classChunk.getField("mustSave").getRealField(); - } catch (Throwable ignore) { - ignore.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); } Bukkit.getPluginManager().registerEvents(this, plugin); } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java index d16038215..61862f899 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java @@ -25,7 +25,6 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.RegisteredListener; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.Arrays; import java.util.Set; import java.util.UUID; @@ -56,7 +55,7 @@ public class BukkitPlayer extends PlotPlayer { super.populatePersistentMetaMap(); } - @Override public Location getLocation() { + @NotNull @Override public Location getLocation() { final Location location = super.getLocation(); return location == null ? BukkitUtil.getLocation(this.player) : location; } @@ -72,8 +71,8 @@ public class BukkitPlayer extends PlotPlayer { return this.player.getLastPlayed(); } - @Override public boolean canTeleport(@NotNull final Location loc) { - final org.bukkit.Location to = BukkitUtil.getLocation(loc); + @Override public boolean canTeleport(@NotNull final Location location) { + final org.bukkit.Location to = BukkitUtil.getLocation(location); final org.bukkit.Location from = player.getLocation(); PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to); callEvent(event); @@ -184,7 +183,7 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override public void teleport(@Nonnull final Location location) { + @Override public void teleport(@NotNull final Location location) { if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) { return; } @@ -229,7 +228,7 @@ public class BukkitPlayer extends PlotPlayer { } } - @Nonnull @Override public PlotGameMode getGameMode() { + @NotNull @Override public PlotGameMode getGameMode() { switch (this.player.getGameMode()) { case ADVENTURE: return PlotGameMode.ADVENTURE; diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java index c3b7521f2..a9c6b2518 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java @@ -351,8 +351,8 @@ public class BukkitChunkManager extends ChunkManager { int bz = min.getZ(); for (int x1 = 0; x1 < 16; x1++) { for (int z1 = 0; z1 < 16; z1++) { - PlotLoc loc = new PlotLoc(bx + x1, bz + z1); - BaseBlock[] ids = map.allBlocks.get(loc); + PlotLoc plotLoc = new PlotLoc(bx + x1, bz + z1); + BaseBlock[] ids = map.allBlocks.get(plotLoc); if (ids != null) { for (int y = 0; y < Math.min(128, ids.length); y++) { BaseBlock id = ids[y]; @@ -387,17 +387,18 @@ public class BukkitChunkManager extends ChunkManager { return true; } - @Override public boolean loadChunk(String world, ChunkLoc loc, boolean force) { - return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(force); + @Override public boolean loadChunk(String world, ChunkLoc chunkLoc, boolean force) { + return BukkitUtil.getWorld(world).getChunkAt(chunkLoc.x, chunkLoc.z).load(force); } - @SuppressWarnings("deprecation") @Override - public void unloadChunk(final String world, final ChunkLoc loc, final boolean save, + @Override + public void unloadChunk(final String world, final ChunkLoc chunkLoc, final boolean save, final boolean safe) { if (!PlotSquared.get().isMainThread(Thread.currentThread())) { - TaskManager.runTask(() -> BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save)); + TaskManager.runTask( + () -> BukkitUtil.getWorld(world).unloadChunk(chunkLoc.x, chunkLoc.z, save)); } else { - BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save); + BukkitUtil.getWorld(world).unloadChunk(chunkLoc.x, chunkLoc.z, save); } } @@ -614,9 +615,9 @@ public class BukkitChunkManager extends ChunkManager { void saveEntitiesOut(Chunk chunk, RegionWrapper region) { for (Entity entity : chunk.getEntities()) { - Location loc = BukkitUtil.getLocation(entity); - int x = loc.getX(); - int z = loc.getZ(); + Location location = BukkitUtil.getLocation(entity); + int x = location.getX(); + int z = location.getZ(); if (isIn(region, x, z)) { continue; } @@ -636,9 +637,9 @@ public class BukkitChunkManager extends ChunkManager { void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ, boolean delete) { for (Entity entity : chunk.getEntities()) { - Location loc = BukkitUtil.getLocation(entity); - int x = loc.getX(); - int z = loc.getZ(); + Location location = BukkitUtil.getLocation(entity); + int x = location.getX(); + int z = location.getZ(); if (!isIn(region, x, z)) { continue; } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java index 744d9084f..c2e39715e 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java @@ -1,22 +1,6 @@ package com.github.intellectualsites.plotsquared.bukkit.util; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerClaimPlotEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerEnterPlotEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerLeavePlotEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotDeniedEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotHelperEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotTrustedEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlayerTeleportToPlotEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotAutoMergeEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotChangeOwnerEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotClearEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotComponentSetEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotDeleteEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotFlagAddEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotFlagRemoveEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotMergeEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotRateEvent; -import com.github.intellectualsites.plotsquared.bukkit.events.PlotUnlinkEvent; +import com.github.intellectualsites.plotsquared.bukkit.events.*; import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer; import com.github.intellectualsites.plotsquared.plot.flag.Flag; import com.github.intellectualsites.plotsquared.plot.object.Location; @@ -30,9 +14,9 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.UUID; @@ -41,91 +25,93 @@ import java.util.UUID; */ public final class BukkitEventUtil extends EventUtil { - @Nullable public Player getPlayer(final PlotPlayer player) { - if (player instanceof BukkitPlayer) { - return ((BukkitPlayer) player).player; + @Nullable public Player getPlayer(final PlotPlayer player) { + if (player instanceof BukkitPlayer) { + return ((BukkitPlayer) player).player; + } + return null; } - return null; - } - private boolean callEvent(@Nonnull final Event event) { - Bukkit.getServer().getPluginManager().callEvent(event); - return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled(); - } - - @Override public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) { - return callEvent(new PlayerClaimPlotEvent(getPlayer(player), plot, auto)); - } - - @Override public boolean callTeleport(PlotPlayer player, Location from, Plot plot) { - return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot)); - } - - @Override public boolean callComponentSet(Plot plot, String component) { - return callEvent(new PlotComponentSetEvent(plot, component)); - } - - @Override public boolean callClear(Plot plot) { - return callEvent(new PlotClearEvent(plot)); - } - - @Override public boolean callDelete(Plot plot) { - return callEvent(new PlotDeleteEvent(plot)); - } - - @Override public boolean callFlagAdd(Flag flag, Plot plot) { - return callEvent(new PlotFlagAddEvent(flag, plot)); - } - - @Override public boolean callFlagRemove(Flag flag, Plot plot, Object value) { - return callEvent(new PlotFlagRemoveEvent(flag, plot)); - } - - @Override public boolean callMerge(Plot plot, int dir, int max) { - return callEvent(new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max)); - } - - @Override public boolean callAutoMerge(Plot plot, List plots) { - return callEvent(new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots)); - } - - @Override public boolean callUnlink(PlotArea area, List plots) { - return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots)); - } - - @Override public void callEntry(PlotPlayer player, Plot plot) { - callEvent(new PlayerEnterPlotEvent(getPlayer(player), plot)); - } - - @Override public void callLeave(PlotPlayer player, Plot plot) { - callEvent(new PlayerLeavePlotEvent(getPlayer(player), plot)); - } - - @Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) { - callEvent(new PlayerPlotDeniedEvent(getPlayer(initiator), plot, player, added)); - } - - @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) { - callEvent(new PlayerPlotTrustedEvent(getPlayer(initiator), plot, player, added)); - } - - @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) { - callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added)); - } - - @Override - public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner, - boolean hasOldOwner) { - return callEvent( - new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner)); - } - - @Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) { - PlotRateEvent event = new PlotRateEvent(player, rating, plot); - Bukkit.getServer().getPluginManager().callEvent(event); - if (event.isCancelled()) { - return null; + private boolean callEvent(@NotNull final Event event) { + Bukkit.getServer().getPluginManager().callEvent(event); + return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled(); + } + + @Override public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) { + return callEvent(new PlayerClaimPlotEvent(getPlayer(player), plot, auto)); + } + + @Override public boolean callTeleport(PlotPlayer player, Location from, Plot plot) { + return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot)); + } + + @Override public boolean callComponentSet(Plot plot, String component) { + return callEvent(new PlotComponentSetEvent(plot, component)); + } + + @Override public boolean callClear(Plot plot) { + return callEvent(new PlotClearEvent(plot)); + } + + @Override public boolean callDelete(Plot plot) { + return callEvent(new PlotDeleteEvent(plot)); + } + + @Override public boolean callFlagAdd(Flag flag, Plot plot) { + return callEvent(new PlotFlagAddEvent(flag, plot)); + } + + @Override public boolean callFlagRemove(Flag flag, Plot plot, Object value) { + return callEvent(new PlotFlagRemoveEvent(flag, plot)); + } + + @Override public boolean callMerge(Plot plot, int dir, int max) { + return callEvent( + new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max)); + } + + @Override public boolean callAutoMerge(Plot plot, List plots) { + return callEvent( + new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots)); + } + + @Override public boolean callUnlink(PlotArea area, List plots) { + return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots)); + } + + @Override public void callEntry(PlotPlayer player, Plot plot) { + callEvent(new PlayerEnterPlotEvent(getPlayer(player), plot)); + } + + @Override public void callLeave(PlotPlayer player, Plot plot) { + callEvent(new PlayerLeavePlotEvent(getPlayer(player), plot)); + } + + @Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) { + callEvent(new PlayerPlotDeniedEvent(getPlayer(initiator), plot, player, added)); + } + + @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) { + callEvent(new PlayerPlotTrustedEvent(getPlayer(initiator), plot, player, added)); + } + + @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) { + callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added)); + } + + @Override + public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner, + boolean hasOldOwner) { + return callEvent( + new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner)); + } + + @Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) { + PlotRateEvent event = new PlotRateEvent(player, rating, plot); + Bukkit.getServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return null; + } + return event.getRating(); } - return event.getRating(); - } } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java index 283e68688..a2d0b0c9b 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java @@ -27,8 +27,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -242,7 +243,7 @@ import java.util.Set; location.getBlockZ()); } - public static Location getLocationFull(@NonNull final Entity entity) { + @NotNull public static Location getLocationFull(@NonNull final Entity entity) { final org.bukkit.Location location = entity.getLocation(); return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()), MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()), location.getYaw(), diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/SendChunk.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/SendChunk.java index 6ed7317b6..cb525199c 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/SendChunk.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/SendChunk.java @@ -42,7 +42,6 @@ public class SendChunk { * Constructor. */ public SendChunk() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException { - RefConstructor tempMapChunk; RefClass classCraftPlayer = getRefClass("{cb}.entity.CraftPlayer"); this.methodGetHandlePlayer = classCraftPlayer.getMethod("getHandle"); RefClass classCraftChunk = getRefClass("{cb}.CraftChunk"); @@ -50,8 +49,7 @@ public class SendChunk { RefClass classChunk = getRefClass("{nms}.Chunk"); this.methodInitLighting = classChunk.getMethod("initLighting"); RefClass classMapChunk = getRefClass("{nms}.PacketPlayOutMapChunk"); - tempMapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class); - this.mapChunk = tempMapChunk; + this.mapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class); RefClass classEntityPlayer = getRefClass("{nms}.EntityPlayer"); this.connection = classEntityPlayer.getField("playerConnection"); RefClass classPacket = getRefClass("{nms}.Packet"); diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/uuid/SQLUUIDHandler.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/uuid/SQLUUIDHandler.java index 86cd9ae0d..4c74be5b6 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/uuid/SQLUUIDHandler.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/uuid/SQLUUIDHandler.java @@ -31,13 +31,13 @@ import java.util.ArrayDeque; import java.util.Collections; import java.util.HashMap; import java.util.UUID; +import java.util.concurrent.TimeUnit; public class SQLUUIDHandler extends UUIDHandlerImplementation { final int MAX_REQUESTS = 500; private final String PROFILE_URL = "https://sessionserver.mojang.com/session/minecraft/profile/"; - private final int INTERVAL = 12000; private final JSONParser jsonParser = new JSONParser(); private final SQLite sqlite; @@ -133,7 +133,10 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation { "Invalid response from Mojang: Some UUIDs will be cached later. (`unknown` until then or player joins)"); } try { - Thread.sleep(INTERVAL * 50); + //Mojang allows requests every 10 minutes according to https://wiki.vg/Mojang_API + //15 Minutes is chosen here since system timers are not always precise + //and it should provide enough time where Mojang won't block requests. + TimeUnit.MINUTES.sleep(15); } catch (InterruptedException e) { e.printStackTrace(); break; @@ -142,7 +145,6 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation { if (whenDone != null) { whenDone.run(); } - return; }); }); } catch (SQLException e) { diff --git a/Bukkit/src/main/resources/plugin.yml b/Bukkit/src/main/resources/plugin.yml index 95f22dae1..0dbd861e0 100644 --- a/Bukkit/src/main/resources/plugin.yml +++ b/Bukkit/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ${name} main: com.github.intellectualsites.plotsquared.bukkit.BukkitMain -api-version: 1.13 +api-version: "1.13" version: "${version}" load: STARTUP description: > @@ -126,6 +126,7 @@ permissions: plots.toggle: true plots.toggle.titles: true plots.toggle.chat: true + plots.toggle.time: true plots.set.biome: true plots.set.home: true plots.set.alias: true diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/commands/Command.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/commands/Command.java index 945d2d374..faaf3c7af 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/commands/Command.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/commands/Command.java @@ -263,7 +263,7 @@ public abstract class Command { /** * @param player Caller - * @param args Arguments + * @param args Arguments * @param confirm Instance, Success, Failure * @return CompletableFuture true if the command executed fully, false in * any other case diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/ConfigurationOptions.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/ConfigurationOptions.java index 5d13920e4..81c96196d 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/ConfigurationOptions.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/ConfigurationOptions.java @@ -6,7 +6,6 @@ package com.github.intellectualsites.plotsquared.configuration; */ class ConfigurationOptions { private final Configuration configuration; - private char pathSeparator = '.'; private boolean copyDefaults = false; protected ConfigurationOptions(Configuration configuration) { @@ -26,28 +25,12 @@ class ConfigurationOptions { * Gets the char that will be used to separate {@link * ConfigurationSection}s. * - *

This value does not affect how the {@link Configuration} is stored, - * only in how you access the data. The default value is '.'. + *

This value is always '.'. * * @return Path separator */ - public char pathSeparator() { - return pathSeparator; - } - - /** - * Sets the char that will be used to separate {@link - * ConfigurationSection}s. - * - *

This value does not affect how the {@link Configuration} is stored, - * only in how you access the data. The default value is '.'. - * - * @param value Path separator - * @return This object, for chaining - */ - public ConfigurationOptions pathSeparator(char value) { - pathSeparator = value; - return this; + char pathSeparator() { + return '.'; } /** diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/MemoryConfigurationOptions.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/MemoryConfigurationOptions.java index 971ea1e70..22f9d751b 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/MemoryConfigurationOptions.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/MemoryConfigurationOptions.java @@ -18,8 +18,4 @@ public class MemoryConfigurationOptions extends ConfigurationOptions { return this; } - @Override public MemoryConfigurationOptions pathSeparator(char value) { - super.pathSeparator(value); - return this; - } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/FileConfigurationOptions.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/FileConfigurationOptions.java index a216d0566..6eb99bb6e 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/FileConfigurationOptions.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/FileConfigurationOptions.java @@ -25,11 +25,6 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions { return this; } - @Override public FileConfigurationOptions pathSeparator(char value) { - super.pathSeparator(value); - return this; - } - /** * Gets the header that will be applied to the top of the saved output. * diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/YamlConfigurationOptions.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/YamlConfigurationOptions.java index a17bc3538..a7e71cdaf 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/YamlConfigurationOptions.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/configuration/file/YamlConfigurationOptions.java @@ -5,7 +5,6 @@ package com.github.intellectualsites.plotsquared.configuration.file; * YamlConfiguration}. */ public class YamlConfigurationOptions extends FileConfigurationOptions { - private int indent = 2; YamlConfigurationOptions(YamlConfiguration configuration) { super(configuration); @@ -20,11 +19,6 @@ public class YamlConfigurationOptions extends FileConfigurationOptions { return this; } - @Override public YamlConfigurationOptions pathSeparator(char value) { - super.pathSeparator(value); - return this; - } - @Override public YamlConfigurationOptions header(String value) { super.header(value); return this; @@ -42,27 +36,8 @@ public class YamlConfigurationOptions extends FileConfigurationOptions { * * @return How much to indent by */ - public int indent() { - return indent; + int indent() { + return 2; } - /** - * Sets how much spaces should be used to indent each line. - * - *

The minimum value this may be is 2, and the maximum is 9. - * - * @param value New indent - * @return This object, for chaining - */ - public YamlConfigurationOptions indent(int value) { - if (value < 2) { - throw new IllegalArgumentException("Indent must be at least 2 characters"); - } - if (value > 9) { - throw new IllegalArgumentException("Indent cannot be greater than 9 characters"); - } - - indent = value; - return this; - } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/IPlotMain.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/IPlotMain.java index e1eb152b5..8fff0921d 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/IPlotMain.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/IPlotMain.java @@ -63,12 +63,12 @@ public interface IPlotMain extends ILogger { */ String getPluginVersionString(); - String getPluginName(); + default String getPluginName() { + return "PlotSquared"; + } /** * Gets the version of Minecraft that is running. - * - * @return */ int[] getServerVersion(); @@ -101,7 +101,7 @@ public interface IPlotMain extends ILogger { /** * The task manager will run and manage Minecraft tasks. * - * @return + * @return the PlotSquared task manager */ TaskManager getTaskManager(); @@ -138,49 +138,39 @@ public interface IPlotMain extends ILogger { /** * Gets the economy provider. * - * @return + * @return the PlotSquared economy manager */ EconHandler getEconomyHandler(); /** * Gets the {@link QueueProvider} class. - * - * @return */ QueueProvider initBlockQueue(); /** * Gets the {@link WorldUtil} class. - * - * @return */ WorldUtil initWorldUtil(); /** * Gets the EventUtil class. - * - * @return */ EventUtil initEventUtil(); /** * Gets the chunk manager. * - * @return + * @return the PlotSquared chunk manager */ ChunkManager initChunkManager(); /** * Gets the {@link SetupUtils} class. - * - * @return */ SetupUtils initSetupUtils(); /** * Gets {@link HybridUtils} class. - * - * @return */ HybridUtils initHybridUtils(); @@ -199,32 +189,28 @@ public interface IPlotMain extends ILogger { /** * Gets the {@link UUIDHandlerImplementation} which will cache and * provide UUIDs. - * - * @return */ UUIDHandlerImplementation initUUIDHandler(); /** * Gets the {@link InventoryUtil} class (used for implementation specific * inventory guis). - * - * @return */ InventoryUtil initInventoryUtil(); /** * Unregisters a {@link PlotPlayer} from cache e.g. if they have logged off. * - * @param player + * @param player the player to remove */ void unregister(PlotPlayer player); /** * Gets the generator wrapper for a world (world) and generator (name). * - * @param world - * @param name - * @return + * @param world the world to get the generator from + * @param name the name of the generator + * @return the generator being used for the provided world */ GeneratorWrapper getGenerator(String world, String name); @@ -232,7 +218,7 @@ public interface IPlotMain extends ILogger { /** * Register the chunk processor which will clean out chunks that have too - * many blockstates or entities. + * many block states or entities. */ void registerChunkProcessor(); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotSquared.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotSquared.java index f92c6a6fb..45c284a3f 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotSquared.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotSquared.java @@ -33,8 +33,8 @@ import com.sk89q.worldedit.WorldEdit; import lombok.Getter; import lombok.NonNull; import lombok.Setter; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nullable; import java.io.*; import java.net.MalformedURLException; import java.net.URISyntaxException; @@ -1623,7 +1623,7 @@ import java.util.zip.ZipInputStream; final Properties properties = new Properties(); properties.load(bufferedReader); final boolean enabled = - Boolean.valueOf(properties.getOrDefault("enabled", true).toString()); + Boolean.parseBoolean(properties.getOrDefault("enabled", true).toString()); if (enabled) { this.updateUtility = new UpdateUtility(properties.getProperty("path"), properties.getProperty("job"), properties.getProperty("artifact")); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotVersion.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotVersion.java index 1d65c36e0..4646a787a 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotVersion.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotVersion.java @@ -24,12 +24,19 @@ public class PlotVersion { public static PlotVersion tryParse(String version, String commit, String date) { try { return new PlotVersion(version, commit, date); - } catch (Exception ignore) { - ignore.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); return new PlotVersion(0, 0, 0, 0, 0); } } + public String versionString() { + if (hash == 0 && build == 0) { + return "NoVer-SNAPSHOT"; + } else { + return "4." + build; + } + } @Override public String toString() { if (hash == 0 && build == 0) { return "PlotSquared-NoVer-SNAPSHOT"; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Alias.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Alias.java index e4a719dcf..401446243 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Alias.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Alias.java @@ -25,8 +25,8 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler; return false; } - Location loc = player.getLocation(); - Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java index fa187877e..93eef7813 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java @@ -5,19 +5,14 @@ import com.github.intellectualsites.plotsquared.plot.PlotSquared; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.config.Settings; import com.github.intellectualsites.plotsquared.plot.database.DBFunc; -import com.github.intellectualsites.plotsquared.plot.object.Expression; -import com.github.intellectualsites.plotsquared.plot.object.Plot; -import com.github.intellectualsites.plotsquared.plot.object.PlotArea; -import com.github.intellectualsites.plotsquared.plot.object.PlotId; -import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; -import com.github.intellectualsites.plotsquared.plot.object.RunnableVal; +import com.github.intellectualsites.plotsquared.plot.object.*; import com.github.intellectualsites.plotsquared.plot.util.ByteArrayUtilities; import com.github.intellectualsites.plotsquared.plot.util.EconHandler; import com.github.intellectualsites.plotsquared.plot.util.MainUtil; import com.github.intellectualsites.plotsquared.plot.util.Permissions; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.Set; @CommandDeclaration(command = "auto", permission = "plots.auto", @@ -123,7 +118,8 @@ public class Auto extends SubCommand { } else if (checkAllowedPlots(player, area, allowedPlots, 1, 1)) { plot.claim(player, true, schematic, false); if (area.AUTO_MERGE) { - plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true); + plot.autoMerge(Direction.ALL, Integer.MAX_VALUE, player.getUUID(), + true); } } else { DBFunc.delete(plot); @@ -253,6 +249,9 @@ public class Auto extends SubCommand { for (int j = start.y; j <= end.y; j++) { Plot plot = plotarea.getPlotAbs(new PlotId(i, j)); boolean teleport = i == end.x && j == end.y; + if (plot == null) { + return false; + } plot.claim(player, teleport, null); } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Claim.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Claim.java index b06e0b57b..94a82fdd8 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Claim.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Claim.java @@ -20,13 +20,14 @@ public class Claim extends SubCommand { if (args.length >= 1) { schematic = args[0]; } - Location loc = player.getLocation(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + final Plot plot = location.getPlotAbs(); if (plot == null) { return sendMessage(player, Captions.NOT_IN_PLOT); } - int currentPlots = - Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld()); + int currentPlots = Settings.Limit.GLOBAL ? + player.getPlotCount() : + player.getPlotCount(location.getWorld()); int grants = 0; if (currentPlots >= player.getAllowedPlots()) { if (player.hasPersistentMeta("grantedPlots")) { @@ -89,7 +90,7 @@ public class Claim extends SubCommand { @Override public void run(Object value) { plot.claim(player, true, finalSchematic, false); if (area.AUTO_MERGE) { - plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true); + plot.autoMerge(Direction.ALL, Integer.MAX_VALUE, player.getUUID(), true); } } }), () -> sendMessage(player, Captions.PLOT_NOT_CLAIMED)); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Comment.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Comment.java index 048047bb6..171a5bfe5 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Comment.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Comment.java @@ -32,7 +32,7 @@ public class Comment extends SubCommand { StringMan.join(CommentManager.inboxes.keySet(), "|")); return false; } - Location loc = player.getLocation(); + Location location = player.getLocation(); PlotId id; try { id = PlotId.fromString(args[1]); @@ -44,7 +44,7 @@ public class Comment extends SubCommand { int index; if (plot == null) { index = 1; - plot = loc.getPlotAbs(); + plot = location.getPlotAbs(); } else { if (args.length < 4) { sendMessage(player, Captions.COMMENT_SYNTAX, @@ -59,7 +59,7 @@ public class Comment extends SubCommand { } String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " "); PlotComment comment = - new PlotComment(loc.getWorld(), id, message, player.getName(), inbox.toString(), + new PlotComment(location.getWorld(), id, message, player.getName(), inbox.toString(), System.currentTimeMillis()); boolean result = inbox.addComment(plot, comment); if (!result) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Copy.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Copy.java index 2a34fdbf5..de77513bc 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Copy.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Copy.java @@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions; requiredType = RequiredType.NONE) public class Copy extends SubCommand { @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - Plot plot1 = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot1 = location.getPlotAbs(); if (plot1 == null) { return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/CreateRoadSchematic.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/CreateRoadSchematic.java index 2c901aa35..14fa6347e 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/CreateRoadSchematic.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/CreateRoadSchematic.java @@ -16,12 +16,12 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil; usage = "/plot createroadschematic") public class CreateRoadSchematic extends SubCommand { @Override public boolean onCommand(PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot = location.getPlotAbs(); if (plot == null) { return sendMessage(player, Captions.NOT_IN_PLOT); } - if (!(loc.getPlotArea() instanceof HybridPlotWorld)) { + if (!(location.getPlotArea() instanceof HybridPlotWorld)) { return sendMessage(player, Captions.NOT_IN_PLOT_WORLD); } HybridUtils.manager.setupRoadSchematic(plot); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java index 41a5eda80..6dbcdfb57 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java @@ -55,13 +55,13 @@ public class DebugClaimTest extends SubCommand { MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId()); continue; } - Location loc = manager.getSignLoc(plot); - ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4); + Location location = manager.getSignLoc(plot); + ChunkLoc chunk = new ChunkLoc(location.getX() >> 4, location.getZ() >> 4); boolean result = ChunkManager.manager.loadChunk(area.worldname, chunk, false); if (!result) { continue; } - String[] lines = WorldUtil.IMP.getSign(loc); + String[] lines = WorldUtil.IMP.getSign(location); if (lines != null) { String line = lines[2]; if (line != null && line.length() > 2) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugExec.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugExec.java index 7e8e9cf34..841c6fc8c 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugExec.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugExec.java @@ -369,17 +369,17 @@ import java.util.concurrent.CompletableFuture; Command cmd = MainCommand.getInstance().getCommand(args[3]); String[] params = Arrays.copyOfRange(args, 4, args.length); if ("true".equals(args[1])) { - Location loc = player.getMeta(PlotPlayer.META_LOCATION); + Location location = player.getMeta(PlotPlayer.META_LOCATION); Plot plot = player.getMeta(PlotPlayer.META_LAST_PLOT); for (Plot current : PlotSquared.get().getBasePlots()) { player.setMeta(PlotPlayer.META_LOCATION, current.getBottomAbs()); player.setMeta(PlotPlayer.META_LAST_PLOT, current); cmd.execute(player, params, null, null); } - if (loc == null) { + if (location == null) { player.deleteMeta(PlotPlayer.META_LOCATION); } else { - player.setMeta(PlotPlayer.META_LOCATION, loc); + player.setMeta(PlotPlayer.META_LOCATION, location); } if (plot == null) { player.deleteMeta(PlotPlayer.META_LAST_PLOT); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugRoadRegen.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugRoadRegen.java index d6029186f..a268f8903 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugRoadRegen.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugRoadRegen.java @@ -3,7 +3,6 @@ package com.github.intellectualsites.plotsquared.plot.commands; import com.github.intellectualsites.plotsquared.commands.CommandDeclaration; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.generator.HybridPlotManager; -import com.github.intellectualsites.plotsquared.plot.generator.HybridPlotWorld; import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils; import com.github.intellectualsites.plotsquared.plot.object.Location; import com.github.intellectualsites.plotsquared.plot.object.Plot; @@ -23,28 +22,24 @@ public class DebugRoadRegen extends SubCommand { @Override public boolean onCommand(PlotPlayer player, String[] args) { if (args.length < 1) { - MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, - DebugRoadRegen.USAGE); + MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE); return false; } String kind = args[0].toLowerCase(); switch (kind) { case "plot": return regenPlot(player); - case "region": return regenRegion(player, Arrays.copyOfRange(args, 1, args.length)); - default: - MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, - DebugRoadRegen.USAGE); + MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE); return false; } } public boolean regenPlot(PlotPlayer player) { - Location loc = player.getLocation(); - PlotArea area = loc.getPlotArea(); + Location location = player.getLocation(); + PlotArea area = location.getPlotArea(); if (area == null) { return sendMessage(player, Captions.NOT_IN_PLOT_WORLD); } @@ -82,8 +77,8 @@ public class DebugRoadRegen extends SubCommand { return false; } - Location loc = player.getLocation(); - PlotArea area = loc.getPlotArea(); + Location location = player.getLocation(); + PlotArea area = location.getPlotArea(); if (area == null) { return sendMessage(player, Captions.NOT_IN_PLOT_WORLD); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Delete.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Delete.java index 3593de74f..72c6da126 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Delete.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Delete.java @@ -3,8 +3,16 @@ package com.github.intellectualsites.plotsquared.plot.commands; import com.github.intellectualsites.plotsquared.commands.CommandDeclaration; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.config.Settings; -import com.github.intellectualsites.plotsquared.plot.object.*; -import com.github.intellectualsites.plotsquared.plot.util.*; +import com.github.intellectualsites.plotsquared.plot.object.Expression; +import com.github.intellectualsites.plotsquared.plot.object.Location; +import com.github.intellectualsites.plotsquared.plot.object.Plot; +import com.github.intellectualsites.plotsquared.plot.object.PlotArea; +import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; +import com.github.intellectualsites.plotsquared.plot.util.CmdConfirm; +import com.github.intellectualsites.plotsquared.plot.util.EconHandler; +import com.github.intellectualsites.plotsquared.plot.util.MainUtil; +import com.github.intellectualsites.plotsquared.plot.util.Permissions; +import com.github.intellectualsites.plotsquared.plot.util.TaskManager; @CommandDeclaration(command = "delete", permission = "plots.delete", @@ -16,8 +24,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*; // The syntax also works with any command: /plot @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + final Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } @@ -30,8 +38,9 @@ import com.github.intellectualsites.plotsquared.plot.util.*; } final PlotArea plotArea = plot.getArea(); final java.util.Set plots = plot.getConnectedPlots(); - final int currentPlots = - Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld()); + final int currentPlots = Settings.Limit.GLOBAL ? + player.getPlotCount() : + player.getPlotCount(location.getWorld()); Runnable run = new Runnable() { @Override public void run() { if (plot.getRunning() > 0) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Deny.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Deny.java index 6d5dc99c7..5ddfde305 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Deny.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Deny.java @@ -97,8 +97,8 @@ import java.util.UUID; if (player.getGameMode() == PlotGameMode.SPECTATOR) { player.stopSpectating(); } - Location loc = player.getLocation(); - Location spawn = WorldUtil.IMP.getSpawn(loc.getWorld()); + Location location = player.getLocation(); + Location spawn = WorldUtil.IMP.getSpawn(location.getWorld()); MainUtil.sendMessage(player, Captions.YOU_GOT_DENIED); if (plot.equals(spawn.getPlot())) { Location newSpawn = diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Done.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Done.java index 8ef920565..055cfabd9 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Done.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Done.java @@ -19,8 +19,8 @@ import com.github.intellectualsites.plotsquared.plot.util.expiry.PlotAnalysis; requiredType = RequiredType.NONE) public class Done extends SubCommand { @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + final Plot plot = location.getPlotAbs(); if ((plot == null) || !plot.hasOwner()) { return !sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/FlagCmd.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/FlagCmd.java index b55895494..84446aa00 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/FlagCmd.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/FlagCmd.java @@ -24,10 +24,9 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan; import java.util.*; -@CommandDeclaration(command = "setflag", aliases = {"f", "flag", "setf", "setflag"}, - usage = "/plot flag ", description = "Set plot flags", - category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE, - permission = "plots.flag") public class FlagCmd extends SubCommand { +@CommandDeclaration(command = "setflag", aliases = {"f", "flag", + "setflag"}, usage = "/plot flag ", description = "Set plot flags", category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE, permission = "plots.flag") +public class FlagCmd extends SubCommand { private boolean checkPermValue(PlotPlayer player, Flag flag, String key, String value) { key = key.toLowerCase(); @@ -90,8 +89,8 @@ import java.util.*; MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, getUsage()); return false; } - Location loc = player.getLocation(); - Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot = location.getPlotAbs(); if (plot == null) { MainUtil.sendMessage(player, Captions.NOT_IN_PLOT); return false; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Inbox.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Inbox.java index 180bec623..030ef0f44 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Inbox.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Inbox.java @@ -14,9 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan; import java.util.List; @CommandDeclaration(command = "inbox", description = "Review the comments for a plot", - usage = "/plot inbox [inbox] [delete |clear|page]", permission = "plots.inbox", - category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER) public class Inbox - extends SubCommand { + usage = "/plot inbox [inbox] [delete |clear|page]", permission = "plots.inbox", category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER) +public class Inbox extends SubCommand { public void displayComments(PlotPlayer player, List oldComments, int page) { if (oldComments == null || oldComments.isEmpty()) { @@ -178,8 +177,7 @@ import java.util.List; try { page = Integer.parseInt(args[1]); } catch (NumberFormatException ignored) { - sendMessage(player, Captions.COMMAND_SYNTAX, - "/plot inbox [inbox] [delete |clear|page]"); + sendMessage(player, Captions.COMMAND_SYNTAX, getUsage()); return false; } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/MainCommand.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/MainCommand.java index 31e599976..31095cd75 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/MainCommand.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/MainCommand.java @@ -193,19 +193,19 @@ public class MainCommand extends Command { // Clear perm caching // player.deleteMeta("perm"); // Optional command scope // - Location loc = null; + Location location = null; Plot plot = null; boolean tp = false; if (args.length >= 2) { PlotArea area = player.getApplicablePlotArea(); Plot newPlot = Plot.fromString(area, args[0]); if (newPlot != null && (player instanceof ConsolePlayer || newPlot.getArea() - .equals(area) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN)) + .equals(area) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_SUDO_AREA)) && !newPlot.isDenied(player.getUUID())) { Location newLoc = newPlot.getCenter(); if (player.canTeleport(newLoc)) { // Save meta - loc = player.getMeta(PlotPlayer.META_LOCATION); + location = player.getMeta(PlotPlayer.META_LOCATION); plot = player.getMeta(PlotPlayer.META_LAST_PLOT); tp = true; // Set loc @@ -262,10 +262,10 @@ public class MainCommand extends Command { } // Reset command scope // if (tp && !(player instanceof ConsolePlayer)) { - if (loc == null) { + if (location == null) { player.deleteMeta(PlotPlayer.META_LOCATION); } else { - player.setMeta(PlotPlayer.META_LOCATION, loc); + player.setMeta(PlotPlayer.META_LOCATION, location); } if (plot == null) { player.deleteMeta(PlotPlayer.META_LAST_PLOT); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Merge.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Merge.java index 179761f94..43204b266 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Merge.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Merge.java @@ -3,6 +3,7 @@ package com.github.intellectualsites.plotsquared.plot.commands; import com.github.intellectualsites.plotsquared.commands.CommandDeclaration; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.config.Settings; +import com.github.intellectualsites.plotsquared.plot.object.Direction; import com.github.intellectualsites.plotsquared.plot.object.Expression; import com.github.intellectualsites.plotsquared.plot.object.Location; import com.github.intellectualsites.plotsquared.plot.object.Plot; @@ -17,6 +18,8 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler; import java.util.UUID; +import static com.github.intellectualsites.plotsquared.plot.object.Direction.getFromIndex; + @CommandDeclaration(command = "merge", aliases = "m", description = "Merge the plot you are standing on with another plot", permission = "plots.merge", usage = "/plot merge [removeroads]", @@ -49,8 +52,8 @@ public class Merge extends SubCommand { } @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocationFull(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocationFull(); + final Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } @@ -82,20 +85,20 @@ public class Merge extends SubCommand { MainUtil.sendMessage(player, Captions.NO_PERMISSION, "plots.merge." + (size + 1)); return false; } - int direction = -1; + Direction direction = Direction.ALL; if (args.length == 0) { switch (direction(player.getLocationFull().getYaw())) { case "NORTH": - direction = 0; + direction = Direction.NORTH; break; case "EAST": - direction = 1; + direction = Direction.EAST; break; case "SOUTH": - direction = 2; + direction = Direction.SOUTH; break; case "WEST": - direction = 3; + direction = Direction.WEST; break; } } else { @@ -110,7 +113,7 @@ public class Merge extends SubCommand { Captions.PERMISSION_MERGE_KEEP_ROAD.getTranslated()); return true; } - if (plot.autoMerge(-1, maxSize, uuid, terrain)) { + if (plot.autoMerge(Direction.ALL, maxSize, uuid, terrain)) { if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d) { EconHandler.manager.withdrawMoney(player, price); sendMessage(player, Captions.REMOVED_BALANCE, String.valueOf(price)); @@ -124,16 +127,16 @@ public class Merge extends SubCommand { } for (int i = 0; i < values.length; i++) { if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) { - direction = i; + direction = getFromIndex(i); break; } } } - if (direction == -1) { + if (direction == Direction.ALL) { MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, "/plot merge <" + StringMan.join(values, "|") + "> [removeroads]"); - MainUtil.sendMessage(player, - Captions.DIRECTION.getTranslated().replaceAll("%dir%", direction(loc.getYaw()))); + MainUtil.sendMessage(player, Captions.DIRECTION.getTranslated() + .replaceAll("%dir%", direction(location.getYaw()))); return false; } final boolean terrain; @@ -156,7 +159,8 @@ public class Merge extends SubCommand { return true; } Plot adjacent = plot.getRelative(direction); - if (adjacent == null || !adjacent.hasOwner() || adjacent.getMerged((direction + 2) % 4) + if (adjacent == null || !adjacent.hasOwner() || adjacent + .getMerged((direction.getIndex() + 2) % 4) || adjacent.isOwner(uuid)) { MainUtil.sendMessage(player, Captions.NO_AVAILABLE_AUTOMERGE); return false; @@ -173,7 +177,7 @@ public class Merge extends SubCommand { continue; } isOnline = true; - final int dir = direction; + final Direction dir = direction; Runnable run = () -> { MainUtil.sendMessage(accepter, Captions.MERGE_ACCEPTED); plot.autoMerge(dir, maxSize - size, owner, terrain); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Move.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Move.java index fb8464aea..02c7494cb 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Move.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Move.java @@ -11,12 +11,12 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil; import com.github.intellectualsites.plotsquared.plot.util.Permissions; @CommandDeclaration(usage = "/plot move ", command = "move", description = "Move a plot", - permission = "plots.move", category = CommandCategory.CLAIMING, + permission = "plots.move", category = CommandCategory.CLAIMING, requiredType = RequiredType.PLAYER) public class Move extends SubCommand { @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - Plot plot1 = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot1 = location.getPlotAbs(); if (plot1 == null) { return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Music.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Music.java index e773879ae..a763a3c51 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Music.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Music.java @@ -3,7 +3,11 @@ package com.github.intellectualsites.plotsquared.plot.commands; import com.github.intellectualsites.plotsquared.commands.CommandDeclaration; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.flag.Flags; -import com.github.intellectualsites.plotsquared.plot.object.*; +import com.github.intellectualsites.plotsquared.plot.object.Location; +import com.github.intellectualsites.plotsquared.plot.object.Plot; +import com.github.intellectualsites.plotsquared.plot.object.PlotInventory; +import com.github.intellectualsites.plotsquared.plot.object.PlotItemStack; +import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; import java.util.Arrays; import java.util.Collection; @@ -20,8 +24,8 @@ import java.util.Locale; "music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait"); @Override public boolean onCommand(PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + final Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Owner.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Owner.java index 98e32dcd6..55dbdbda4 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Owner.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Owner.java @@ -17,7 +17,7 @@ import java.util.UUID; @CommandDeclaration(command = "setowner", permission = "plots.set.owner", description = "Set the plot owner", usage = "/plot setowner ", aliases = {"owner", "so", "seto"}, category = CommandCategory.CLAIMING, - requiredType = RequiredType.PLAYER, confirmation = true) public class Owner extends SetCommand { + requiredType = RequiredType.NONE, confirmation = true) public class Owner extends SetCommand { @Override public boolean set(final PlotPlayer player, final Plot plot, String value) { Set plots = plot.getConnectedPlots(); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/PluginCmd.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/PluginCmd.java index d284ce708..8e31051fb 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/PluginCmd.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/PluginCmd.java @@ -22,8 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.TaskManager; "$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21"); MainUtil.sendMessage(player, "$2>> $1&lWiki$2: $1https://github.com/IntellectualSites/PlotSquared/wiki"); - MainUtil.sendMessage(player, - "$2>> $1&lNewest Version$2: $1" + getNewestVersionString()); + // MainUtil.sendMessage(player, + // "$2>> $1&lNewest Version$2: $1" + getNewestVersionString()); } }); return true; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Remove.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Remove.java index af1c0024d..875eb6e4c 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Remove.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Remove.java @@ -19,7 +19,7 @@ import java.util.UUID; @CommandDeclaration(command = "remove", aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"}, description = "Remove a player from a plot", usage = "/plot remove ", - category = CommandCategory.SETTINGS, requiredType = RequiredType.PLAYER, + category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE, permission = "plots.remove") public class Remove extends SubCommand { public Remove() { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SchematicCmd.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SchematicCmd.java index deef2081c..e645b8781 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SchematicCmd.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SchematicCmd.java @@ -158,8 +158,7 @@ public class SchematicCmd extends SubCommand { } Collection plots = area.getPlots(); if (plots.isEmpty()) { - MainUtil - .sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD); + MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD); return false; } boolean result = SchematicHandler.manager.exportAll(plots, null, null, @@ -169,7 +168,7 @@ public class SchematicCmd extends SubCommand { return false; } else { MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_STARTED); - MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_COUNT, plots.size()); + MainUtil.sendMessage(player, "&3Plot&8->&3Schematic&8: &7Found &c" + plots.size() + "&7 plots..."); } break; } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Set.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Set.java index 1f2d1c2a0..d3c65c8db 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Set.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Set.java @@ -10,7 +10,6 @@ import com.github.intellectualsites.plotsquared.plot.flag.FlagManager; import com.github.intellectualsites.plotsquared.plot.flag.Flags; import com.github.intellectualsites.plotsquared.plot.object.BlockBucket; import com.github.intellectualsites.plotsquared.plot.object.Plot; -import com.github.intellectualsites.plotsquared.plot.object.PlotArea; import com.github.intellectualsites.plotsquared.plot.object.PlotBlock; import com.github.intellectualsites.plotsquared.plot.object.PlotManager; import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; @@ -45,7 +44,6 @@ import java.util.stream.IntStream; } @Override public boolean set(PlotPlayer player, final Plot plot, String value) { - PlotArea plotArea = player.getLocation().getPlotArea(); PlotManager manager = player.getLocation().getPlotManager(); String[] components = manager.getPlotComponents(plot.getId()); boolean allowUnsafe = DebugAllowUnsafe.unsafeAllowed.contains(player.getUUID()); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetCommand.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetCommand.java index bc64f0244..8b746c624 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetCommand.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetCommand.java @@ -11,8 +11,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan; public abstract class SetCommand extends SubCommand { @Override public boolean onCommand(PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetHome.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetHome.java index 7a208ebd5..4b742ad94 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetHome.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SetHome.java @@ -25,11 +25,10 @@ public class SetHome extends SetCommand { } case "": Plot base = plot.getBasePlot(false); - Location bot = base.getBottomAbs(); - Location loc = player.getLocationFull(); - BlockLoc rel = - new BlockLoc(loc.getX() - bot.getX(), loc.getY(), loc.getZ() - bot.getZ(), - loc.getYaw(), loc.getPitch()); + Location bottom = base.getBottomAbs(); + Location location = player.getLocationFull(); + BlockLoc rel = new BlockLoc(location.getX() - bottom.getX(), location.getY(), + location.getZ() - bottom.getZ(), location.getYaw(), location.getPitch()); base.setHome(rel); return MainUtil.sendMessage(player, Captions.POSITION_SET); default: diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Setup.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Setup.java index 2b7e5ab7f..7b21352e2 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Setup.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Setup.java @@ -16,8 +16,8 @@ import com.github.intellectualsites.plotsquared.plot.util.SetupUtils; import com.github.intellectualsites.plotsquared.plot.util.StringMan; import com.github.intellectualsites.plotsquared.plot.util.WorldUtil; import lombok.*; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.Map.Entry; @@ -288,6 +288,11 @@ import java.util.Map.Entry; MainUtil.sendMessage(player, "&cYou need to choose a world name!"); return false; } + if (!d(args[0])) { + MainUtil.sendMessage(player, + "Non [a-z0-9_.-] character in the world name: " + args[0]); + return false; + } if (WorldUtil.IMP.isWorld(args[0])) { if (PlotSquared.get().hasPlotArea(args[0])) { MainUtil.sendMessage(player, "&cThat world name is already taken!"); @@ -317,6 +322,11 @@ import java.util.Map.Entry; return false; } + private static boolean d(String s) { + return s.chars().allMatch((i) -> { + return i == 95 || i == 45 || i >= 97 && i <= 122 || i >= 48 && i <= 57 || i == 46; + }); + } private static final class StepPickGenerator extends SetupStep { @Getter private String generator; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Swap.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Swap.java index 9f7f0b145..b3ec2ff05 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Swap.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Swap.java @@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions; public class Swap extends SubCommand { @Override public boolean onCommand(final PlotPlayer player, String[] args) { - Location loc = player.getLocation(); - Plot plot1 = loc.getPlotAbs(); + Location location = player.getLocation(); + Plot plot1 = location.getPlotAbs(); if (plot1 == null) { return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Toggle.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Toggle.java index efe54f3d8..87411f1c6 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Toggle.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Toggle.java @@ -9,10 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3; import com.github.intellectualsites.plotsquared.plot.util.MainUtil; @CommandDeclaration(command = "toggle", aliases = {"attribute"}, permission = "plots.use", - usage = "/plot toggle ", + usage = "/plot toggle ", description = "Toggle per user settings", requiredType = RequiredType.NONE, category = CommandCategory.SETTINGS) public class Toggle extends Command { - public Toggle() { super(MainCommand.getInstance(), true); } @@ -77,6 +76,18 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil; } } + @CommandDeclaration(command = "time", permission = "plots.toggle.time", + description = "Toggle plot time settings") + public void time(Command command, PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone) { + if (toggle(player, "disabletime")) { + MainUtil.sendMessage(player, Captions.TOGGLE_ENABLED, command.toString()); + } else { + MainUtil.sendMessage(player, Captions.TOGGLE_DISABLED, command.toString()); + } + } + public boolean toggle(PlotPlayer player, String key) { if (player.getAttribute(key)) { player.removeAttribute(key); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Unlink.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Unlink.java index 7e84ef3aa..66682ccda 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Unlink.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Unlink.java @@ -5,7 +5,11 @@ import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.object.Location; import com.github.intellectualsites.plotsquared.plot.object.Plot; import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; -import com.github.intellectualsites.plotsquared.plot.util.*; +import com.github.intellectualsites.plotsquared.plot.util.CmdConfirm; +import com.github.intellectualsites.plotsquared.plot.util.MainUtil; +import com.github.intellectualsites.plotsquared.plot.util.Permissions; +import com.github.intellectualsites.plotsquared.plot.util.StringMan; +import com.github.intellectualsites.plotsquared.plot.util.TaskManager; @CommandDeclaration(command = "unlink", aliases = {"u", "unmerge"}, description = "Unlink a mega-plot", usage = "/plot unlink [createroads]", @@ -13,9 +17,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*; public class Unlink extends SubCommand { @Override public boolean onCommand(final PlotPlayer player, String[] args) { - - Location loc = player.getLocation(); - final Plot plot = loc.getPlotAbs(); + Location location = player.getLocation(); + final Plot plot = location.getPlotAbs(); if (plot == null) { return !sendMessage(player, Captions.NOT_IN_PLOT); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/WE_Anywhere.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/WE_Anywhere.java index 3a4e1d71c..36744cc44 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/WE_Anywhere.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/WE_Anywhere.java @@ -5,7 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer; @CommandDeclaration(command = "weanywhere", permission = "plots.worldedit.bypass", description = "Force bypass of WorldEdit restrictions", aliases = {"wea"}, usage = "/plot weanywhere", - requiredType = RequiredType.NONE, category = CommandCategory.ADMINISTRATION) @Deprecated + requiredType = RequiredType.NONE, category = CommandCategory.ADMINISTRATION) +@Deprecated public class WE_Anywhere extends SubCommand { @Override public boolean onCommand(PlotPlayer player, String[] arguments) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Captions.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Captions.java index 52d56f364..9928f643a 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Captions.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Captions.java @@ -59,8 +59,8 @@ public enum Captions { PERMISSION_ADMIN_ENTRY_DENIED("plots.admin.entry.denied", "static.permissions"), PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield", "static.permissions"), PERMISSION_COMMANDS_CHAT("plots.admin.command.chat", "static.permissions"), - PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"), - PERMISSION_MERGE_KEEP_ROAD("plots.merge.keeproad", "static.permissions"), + PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"), PERMISSION_MERGE_KEEP_ROAD( + "plots.merge.keeproad", "static.permissions"), PERMISSION_ADMIN_DESTROY_UNOWNED("plots.admin.destroy.unowned", "static.permissions"), PERMISSION_ADMIN_DESTROY_GROUNDLEVEL("plots.admin.destroy.groundlevel", "static.permissions"), PERMISSION_ADMIN_DESTROY_OTHER("plots.admin.destroy.other", "static.permissions"), @@ -70,8 +70,8 @@ public enum Captions { PERMISSION_ADMIN_BUILD_OTHER("plots.admin.build.other", "static.permissions"), PERMISSION_ADMIN_INTERACT_ROAD("plots.admin.interact.road", "static.permissions"), PERMISSION_ADMIN_INTERACT_UNOWNED("plots.admin.interact.unowned", "static.permissions"), - PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"), - PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT("plots.admin.build.heightlimit", "static.permissions"), + PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"), PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT( + "plots.admin.build.heightlimit", "static.permissions"), PERMISSION_ADMIN_UPDATE("plots.admin.command.update", "static.permissions"), PERMISSION_ADMIN_COMMAND_RATE("plots.admin.command.rate", "static.permissions"), PERMISSION_ADMIN_COMMAND_TRUST("plots.admin.command.trust", "static.permissions"), @@ -124,8 +124,8 @@ public enum Captions { PERMISSION_FLAG_ADD("plots.flag.add", "static.permissions"), PERMISSION_FLAG_LIST("plots.flag.list", "static.permissions"), PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick", "static.permissions"), - PERMISSION_GRANT("plots.grant.%s0", "static.permissions"), - PERMISSION_LIST_FOR_SALE("plots.list.forsale", "static.permissions"), + PERMISSION_GRANT("plots.grant.%s0", "static.permissions"), PERMISSION_LIST_FOR_SALE( + "plots.list.forsale", "static.permissions"), PERMISSION_LIST_MINE("plots.list.mine", "static.permissions"), PERMISSION_LIST_SHARED("plots.list.shared", "static.permissions"), PERMISSION_LIST_WORLD("plots.list.world", "static.permissions"), @@ -140,8 +140,8 @@ public enum Captions { PERMISSION_LIST_FUZZY("plots.list.fuzzy", "static.permissions"), PERMISSION_LIST_AREA("plots.list.area", "static.permissions"), PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load", "static.permissions"), - PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge", "static.permissions"), - PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner", "static.permissions"), + PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge", "static.permissions"), PERMISSION_ADMIN_COMMAND_SET_OWNER( + "plots.admin.command.setowner", "static.permissions"), PERMISSION_COMMENT("plots.comment", "static.permissions"), PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove", "static.permissions"), PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save", "static.permissions"), @@ -224,15 +224,9 @@ public enum Captions { // // BORDER("$2You are outside the current map border", "Border"), - // - // WORLDEDIT_BYPASS("$2&oTo bypass your restrictions use $4/plot wea", "WorldEdit Masks"), WORLDEDIT_BYPASSED("$2Currently bypassing WorldEdit restriction.", "WorldEdit Masks"), - // - // - GAMEMODE_WAS_BYPASSED("$1You bypassed the gamemode ($2{gamemode}$1) $1set for $2{plot}", "GameMode"), - // - // + GAMEMODE_WAS_BYPASSED("$1You bypassed the GameMode ($2{gamemode}$1) $1set for $2{plot}", "GameMode"), HEIGHT_LIMIT("$1This plot area has a height limit of $2{limit}", "Height Limit"), // // @@ -244,9 +238,8 @@ public enum Captions { SWAP_DIMENSIONS("$2The proposed areas must have comparable dimensions", "Swap"), SWAP_SYNTAX("$2/plot swap ", "Swap"), SWAP_SUCCESS("$4Successfully swapped plots", "Swap"), - STARTED_SWAP("$2Started plot swap task. You will be notified when it finishes", "Swap"), // - // + // INBOX_NOTIFICATION("%s unread messages. Use /plot inbox", "Comment"), NOT_VALID_INBOX_INDEX("$2No comment at index %s", "Comment"), INBOX_ITEM("$2 - $4%s", "Comment"), @@ -271,8 +264,6 @@ public enum Captions { // TOGGLE_ENABLED("$2Enabled setting: %s", "Toggle"), TOGGLE_DISABLED("$2Disabled setting: %s", "Toggle"), - // - // COMMAND_BLOCKED("$2That command is not allowed in this plot", "Blocked Command"), // // @@ -303,7 +294,7 @@ public enum Captions { NOT_FOR_SALE("$2This plot is not for sale", "Economy"), CANNOT_BUY_OWN("$2You cannot buy your own plot", "Economy"), PLOT_SOLD("$4Your plot; $1%s0$4, has been sold to $1%s1$4 for $1$%s2", "Economy"), - CANNOT_AFFORD_MERGE("$2You cannot afford to merge the plots. It costs $1%s", "Economy"), + CANNOT_AFFORD_MERGE("$2You cannot afford to merge the plots. It costs $1%s","Economy"), ADDED_BALANCE("$1%s $2has been added to your balance", "Economy"), REMOVED_BALANCE("$1%s $2has been taken from your balance", "Economy"), REMOVED_GRANTED_PLOT("$2You used %s plot grant(s), you've got $1%s $2left", "Economy"), @@ -317,17 +308,21 @@ public enum Captions { "$4You should have been teleported to the created world. Otherwise you will need to set the generator manually using the bukkit.yml or " + "your chosen world management plugin.", "Setup"), SETUP_WORLD_TAKEN("$2%s is already a world", "Setup"), + SETUP_MISSING_WORLD( "$2You need to specify a world name ($1/plot setup &l$1 $2)&-$1Additional commands:&-$2 - $1/plot setup &-$2 -" + " $1/plot setup back&-$2 - $1/plot setup cancel", "Setup"), SETUP_MISSING_GENERATOR( "$2You need to specify a generator ($1/plot setup &l&r$2)&-$1Additional commands:&-$2 - $1/plot setup &-$2 - " + "$1/plot setup back&-$2 - $1/plot setup cancel", "Setup"), + SETUP_INVALID_GENERATOR("$2Invalid generator. Possible options: %s", "Setup"), // - // - SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", "Schematics"), + // + SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", + "Schematics"), SCHEMATIC_MISSING_ARG("$2You need to specify an argument. Possible values: $1test $2 , $1save$2 , $1paste $2, $1exportall$2, $1list", "Schematics"), + SCHEMATIC_INVALID("$2That is not a valid schematic. Reason: $2%s", "Schematics"), SCHEMATIC_VALID("$2That is a valid schematic", "Schematics"), SCHEMATIC_PASTE_FAILED("$2Failed to paste the schematic", "Schematics"), @@ -336,12 +331,13 @@ public enum Captions { SCHEMATIC_ROAD_CREATED("$1Saved new road schematic. To test the schematic, fly to a few other plots and run /plot debugroadregen", "Schematics"), MCA_FILE_SIZE("$1Note: The `.mca` files are 512x512", "Schematics"), SCHEMATIC_EXPORTALL_STARTED("$1Starting export...", "Schematics"), - SCHEMATIC_EXPORTALL_WORLD_ARGS("$1Need world argument. Use $3/plot schem exportall ", "Schematics"), - SCHEMATIC_EXPORTALL_WORLD("$1Invalid world. Use &3/plot sch exportall ", "Schematics"), - SCHEMATIC_EXPORTALL_MASS_STARTED("$1Schematic mass export has been started. This may take a while", "Schematicss"), + SCHEMATIC_EXPORTALL_WORLD_ARGS("$1Need world argument. Use $3/plot sch exportall ", "Schematics"), + SCHEMATIC_EXPORTALL_WORLD("$1Invalid world. Use &3/plot sch exportall ", "Schematic"), + SCHEMATIC_EXPORTALL_MASS_STARTED("$1Schematic mass export has been started. This may take a while", "Schematics"), SCHEMATIC_EXPORTALL_COUNT("$1Found $3%s $1plots...", "Schematics"), SCHEMATIC_EXPORTALL_FINISHED("$1Finished mass export", "Schematics"), SCHEMATIC_EXPORTALL_SINGLE_FINISHED("$1Finished export", "Schematics"), + TASK_IN_PROCESS("$1Task is already running.", "Error"), // // TITLE_ENTERED_PLOT("$1Plot: %world%;%x%;%z%", "Titles"), @@ -357,13 +353,14 @@ public enum Captions { RELOADED_CONFIGS("$1Translations and world settings have been reloaded", "Reload"), RELOAD_FAILED("$2Failed to reload file configurations", "Reload"), // - // + // DESC_SET("$2Plot description set", "Desc"), DESC_UNSET("$2Plot description unset", "Desc"), // // ALIAS_SET_TO("$2Plot alias set to $1%alias%", "Alias"), ALIAS_REMOVED("$2Plot alias removed", "Alias"), + ALIAS_TOO_LONG("$2The alias must be < 50 characters in length", "Alias"), ALIAS_IS_TAKEN("$2That alias is already taken", "Alias"), // @@ -379,6 +376,7 @@ public enum Captions { NO_PLOT_PERMS("$2You must be the plot owner to perform this action", "Permission"), CANT_CLAIM_MORE_PLOTS("$2You can't claim more plots.", "Permission"), CANT_CLAIM_MORE_CLUSTERS("$2You can't claim more clusters.", "Permission"), + CANT_TRANSFER_MORE_PLOTS("$2You can't send more plots to that user", "Permission"), CANT_CLAIM_MORE_PLOTS_NUM("$2You can't claim more than $1%s $2plots at once", "Permission"), // @@ -390,8 +388,8 @@ public enum Captions { MERGE_REQUEST_CONFIRM("Merge request from %s", "Permission"), NO_PERM_MERGE("$2You are not the owner of the plot: $1%plot%", "Merge"), NO_AVAILABLE_AUTOMERGE("$2You do not own any adjacent plots in the specified direction or are not allowed to merge to the required size.", "Merge"), - UNMERGE_CANCELLED("$1Unlink has been cancelled", "Merge"), UNLINK_IMPOSSIBLE("$2You can only unlink a mega-plot", "Merge"), + UNMERGE_CANCELLED("$1Unlink has been cancelled", "Merge"), UNLINK_SUCCESS("$2Successfully unlinked plots.", "Merge"), // // @@ -416,14 +414,9 @@ public enum Captions { NOT_VALID_PLOT_WORLD("$2That is not a valid plot area (case sensitive)", "Errors"), NO_PLOTS("$2You don't have any plots", "Errors"), WAIT_FOR_TIMER("$2A set block timer is bound to either the current plot or you. Please wait for it to finish", "Errors"), - TASK_IN_PROCESS("$1Task is already running.", "Error"), // - // DEBUG_REPORT_CREATED("$1Uploaded a full debug to: $1%url%", "Paste"), - // - // PURGE_SUCCESS("$4Successfully purged %s plots", "Purge"), - // // TRIM_IN_PROGRESS("A world trim task is already in progress!", "Trim"), // @@ -443,7 +436,7 @@ public enum Captions { // SET_BLOCK_ACTION_FINISHED("$1The last setblock action is now finished.", "Set Block"), // - // + // DEBUGALLOWUNSAFE_ON("$2Unsafe actions allowed", "unsafe"), DEBUGALLOWUNSAFE_OFF("$2Unsafe actions disabled", "unsafe"), // @@ -529,9 +522,7 @@ public enum Captions { YOU_GOT_DENIED("$4You are denied from the plot you were previously on, and got teleported to spawn", "Deny"), CANT_REMOVE_OWNER("$2You can't remove the plot owner", "Deny"), // - // YOU_GOT_KICKED("$4You got kicked!", "Kick"), - // // FLAG_KEY("$2Key: %s", "Flag"), FLAG_TYPE("$2Type: %s", "Flag"), @@ -547,6 +538,7 @@ public enum Captions { // // TRUSTED_ADDED("$4You successfully trusted a user to the plot", "Trusted"), + WAS_NOT_ADDED("$2That player was not trusted on this plot", "Trusted"), PLOT_REMOVED_USER("$1Plot %s of which you were added to has been deleted due to owner inactivity", "Trusted"), // // @@ -554,10 +546,9 @@ public enum Captions { ALREADY_OWNER("$2That user is already the plot owner: %s0", "Member"), ALREADY_ADDED("$2That user is already added to that category: %s0", "Member"), MEMBER_ADDED("$4That user can now build while the plot owner is online", "Member"), - MEMBER_WAS_NOT_ADDED("$2That player was not added as a user on this plot", "Member"), PLOT_MAX_MEMBERS("$2You are not allowed to add any more players to this plot", "Member"), // - // + // SET_OWNER("$4You successfully set the plot owner", "Owner"), SET_OWNER_CANCELLED("$2The set owner action was cancelled", "Owner"), NOW_OWNER("$4You are now owner of plot %s", "Owner"), @@ -577,8 +568,7 @@ public enum Captions { HELP_DISPLAY_ALL_COMMANDS("Display all commands", "Help"), DIRECTION("$1Current direction: %dir%", "Help"), // - // - BUCKET_ENTRIES_IGNORED("$2Total bucket values add up to 1 or more. Blocks without a specified chance will be ignored", "Generator_Bucket"), + BUCKET_ENTRIES_IGNORED("$2Total bucket values add up to 1 or more. Blocks without a specified chance will be ignored","Generator_Bucket"), /** * Command Categories @@ -593,6 +583,7 @@ public enum Captions { COMMAND_CATEGORY_DEBUG("Debug", "Category"), COMMAND_CATEGORY_ADMINISTRATION("Admin", "Category"), + // GRANTED_PLOTS("$1Result: $2%s $1grants left", "Grants"), GRANTED_PLOT("$1You granted %s0 plot to $2%s1", "Grants"), @@ -602,16 +593,18 @@ public enum Captions { /** * Legacy Configuration Conversion */ - LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.", "LegacyConfig"), - LEGACY_CONFIG_BACKUP("A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.", "LegacyConfig"), - LEGACY_CONFIG_REPLACED("> %s has been replaced with %s", "LegacyConfig"), - LEGACY_CONFIG_DONE( + LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.", + "LegacyConfig"), LEGACY_CONFIG_BACKUP( + "A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.", + "LegacyConfig"), LEGACY_CONFIG_REPLACED("> %s has been replaced with %s", + "LegacyConfig"), LEGACY_CONFIG_DONE( "The conversion has finished. PlotSquared will now be disabled and the new configuration file will" + " be used at next startup. Please review the new worlds.yml file. " + "Please note that schematics will not be converted, as we are now using WorldEdit to handle schematics. " + "You need to re-generate the schematics.", + "LegacyConfig"), LEGACY_CONFIG_CONVERSION_FAILED( + "Failed to convert the legacy configuration file. See stack trace for information.", "LegacyConfig"), - LEGACY_CONFIG_CONVERSION_FAILED("Failed to convert the legacy configuration file. See stack trace for information.", "LegacyConfig"), CUSTOM_STRING("-", "-"); //@formatter:on diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDB.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDB.java index d812413ea..5beef2aab 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDB.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDB.java @@ -1,11 +1,19 @@ package com.github.intellectualsites.plotsquared.plot.database; import com.github.intellectualsites.plotsquared.plot.flag.Flag; -import com.github.intellectualsites.plotsquared.plot.object.*; +import com.github.intellectualsites.plotsquared.plot.object.Plot; +import com.github.intellectualsites.plotsquared.plot.object.PlotArea; +import com.github.intellectualsites.plotsquared.plot.object.PlotCluster; +import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import com.github.intellectualsites.plotsquared.plot.object.RunnableVal; import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; public interface AbstractDB { @@ -223,7 +231,7 @@ public interface AbstractDB { /** * @param cluster PlotCluster Object - * @param uuid Player that should be removed + * @param uuid Player that should be removed */ void setHelper(PlotCluster cluster, UUID uuid); @@ -275,7 +283,7 @@ public interface AbstractDB { /** * Removes the specified comment from the given plot. * - * @param plot the plot + * @param plot the plot * @param comment the comment to remove */ void removeComment(Plot plot, PlotComment comment); @@ -283,7 +291,7 @@ public interface AbstractDB { /** * Clears the specified inbox on the given plot. * - * @param plot the plot + * @param plot the plot * @param inbox the inbox to clear */ void clearInbox(Plot plot, String inbox); @@ -291,17 +299,17 @@ public interface AbstractDB { /** * Adds the specified comment to the given plot. * - * @param plot the plot + * @param plot the plot * @param comment the comment to add */ void setComment(Plot plot, PlotComment comment); /** - * Gets Plot Comments. + * Gets Plot comments. * * @param plot The Plot to get comments from */ - void getComments(@Nonnull Plot plot, String inbox, RunnableVal> whenDone); + void getComments(@NotNull Plot plot, String inbox, RunnableVal> whenDone); void createPlotAndSettings(Plot plot, Runnable whenDone); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/DBFunc.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/DBFunc.java index abb4dad24..47a03cf60 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/DBFunc.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/DBFunc.java @@ -1,13 +1,21 @@ package com.github.intellectualsites.plotsquared.plot.database; import com.github.intellectualsites.plotsquared.plot.flag.Flag; -import com.github.intellectualsites.plotsquared.plot.object.*; +import com.github.intellectualsites.plotsquared.plot.object.Plot; +import com.github.intellectualsites.plotsquared.plot.object.PlotArea; +import com.github.intellectualsites.plotsquared.plot.object.PlotCluster; +import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import com.github.intellectualsites.plotsquared.plot.object.RunnableVal; import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; /** * Database Functions @@ -74,6 +82,8 @@ public class DBFunc { DBFunc.dbManager.validateAllPlots(plots); } + + //TODO Consider Removal /** * Check if a {@link ResultSet} contains a column. * @@ -81,7 +91,7 @@ public class DBFunc { * @param name * @return */ - public static boolean hasColumn(ResultSet resultSet, String name) { + @Deprecated public static boolean hasColumn(ResultSet resultSet, String name) { try { ResultSetMetaData meta = resultSet.getMetaData(); int count = meta.getColumnCount(); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/SQLManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/SQLManager.java index 49fbc0bc9..2f041cc57 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/SQLManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/database/SQLManager.java @@ -12,8 +12,8 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil; import com.github.intellectualsites.plotsquared.plot.util.StringMan; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; import com.google.common.base.Charsets; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.sql.*; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -2170,7 +2170,7 @@ import java.util.concurrent.atomic.AtomicInteger; }); } - @Override public void getComments(@Nonnull Plot plot, final String inbox, + @Override public void getComments(@NotNull Plot plot, final String inbox, final RunnableVal> whenDone) { addPlotTask(plot, new UniqueStatement("getComments_" + plot) { @Override public void set(PreparedStatement statement) throws SQLException { @@ -2942,7 +2942,7 @@ import java.util.concurrent.atomic.AtomicInteger; boolean[] pm = plot.getMerged(); boolean[] dm = dataPlot.getMerged(); if (pm[0] != dm[0] || pm[1] != dm[1]) { - PlotSquared.debug("&8 - &7Correcting merge for: " + plot); + PlotSquared.debug(" - Correcting merge for: " + plot); setMerged(dataPlot, plot.getMerged()); } HashMap, Object> pf = plot.getFlags(); @@ -2951,7 +2951,7 @@ import java.util.concurrent.atomic.AtomicInteger; if (pf.size() != df.size() || !StringMan .isEqual(StringMan.joinOrdered(pf.values(), ","), StringMan.joinOrdered(df.values(), ","))) { - PlotSquared.debug("&8 - &7Correcting flags for: " + plot); + PlotSquared.debug(" - Correcting flags for: " + plot); setFlags(plot, pf); } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/AugmentedUtils.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/AugmentedUtils.java index fe0a614a2..2a85581ad 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/AugmentedUtils.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/AugmentedUtils.java @@ -47,9 +47,6 @@ public class AugmentedUtils { continue; } IndependentPlotGenerator generator = area.getGenerator(); - if (generator == null) { - continue; - } // Mask if (queue == null) { queue = GlobalBlockQueue.IMP.getNewQueue(world, false); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java index 118733f36..320953963 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java @@ -24,29 +24,21 @@ public class ClassicPlotManager extends SquarePlotManager { BlockBucket blocks) { switch (component) { case "floor": - setFloor(plotId, blocks); - return true; + return setFloor(plotId, blocks); case "wall": - setWallFilling(plotId, blocks); - return true; + return setWallFilling(plotId, blocks); case "all": - setAll(plotId, blocks); - return true; + return setAll(plotId, blocks); case "air": - setAir(plotId, blocks); - return true; + return setAir(plotId, blocks); case "main": - setMain(plotId, blocks); - return true; + return setMain(plotId, blocks); case "middle": - setMiddle(plotId, blocks); - return true; + return setMiddle(plotId, blocks); case "outline": - setOutline(plotId, blocks); - return true; + return setOutline(plotId, blocks); case "border": - setWall(plotId, blocks); - return true; + return setWall(plotId, blocks); } return false; } @@ -54,8 +46,7 @@ public class ClassicPlotManager extends SquarePlotManager { @Override public boolean unClaimPlot(Plot plot, Runnable whenDone) { setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING); setWall(plot.getId(), classicPlotWorld.WALL_BLOCK); - GlobalBlockQueue.IMP.addTask(whenDone); - return true; + return GlobalBlockQueue.IMP.addTask(whenDone); } public boolean setFloor(PlotId plotId, BlockBucket blocks) { @@ -70,8 +61,7 @@ public class ClassicPlotManager extends SquarePlotManager { queue.setCuboid(pos1, pos2, blocks); } } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setAll(PlotId plotId, BlockBucket blocks) { @@ -86,8 +76,7 @@ public class ClassicPlotManager extends SquarePlotManager { Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ); queue.setCuboid(pos1, pos2, blocks); } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setAir(PlotId plotId, BlockBucket blocks) { @@ -103,8 +92,7 @@ public class ClassicPlotManager extends SquarePlotManager { Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ); queue.setCuboid(pos1, pos2, blocks); } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setMain(PlotId plotId, BlockBucket blocks) { @@ -119,8 +107,7 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, region.maxX, classicPlotWorld.PLOT_HEIGHT - 1, region.maxZ); queue.setCuboid(pos1, pos2, blocks); } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setMiddle(PlotId plotId, BlockBucket blocks) { @@ -134,8 +121,7 @@ public class ClassicPlotManager extends SquarePlotManager { int x = MathMan.average(corners[0].getX(), corners[1].getX()); int z = MathMan.average(corners[0].getZ(), corners[1].getZ()); queue.setBlock(x, classicPlotWorld.PLOT_HEIGHT, z, blocks.getBlock()); - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setOutline(PlotId plotId, BlockBucket blocks) { @@ -187,8 +173,7 @@ public class ClassicPlotManager extends SquarePlotManager { queue.setCuboid(pos1, pos2, blocks); } } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setWallFilling(PlotId plotId, BlockBucket blocks) { @@ -235,8 +220,7 @@ public class ClassicPlotManager extends SquarePlotManager { } } } - queue.enqueue(); - return true; + return queue.enqueue(); } public boolean setWall(PlotId plotId, BlockBucket blocks) { @@ -276,8 +260,7 @@ public class ClassicPlotManager extends SquarePlotManager { queue.setBlock(x, y, z, blocks.getBlock()); } } - queue.enqueue(); - return true; + return queue.enqueue(); } /** @@ -308,8 +291,7 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, ex, classicPlotWorld.WALL_HEIGHT + 1, ez - 1), classicPlotWorld.WALL_BLOCK); queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1), new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } @Override public boolean createRoadSouth(Plot plot) { @@ -337,8 +319,7 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.WALL_HEIGHT + 1, ez), classicPlotWorld.WALL_BLOCK); queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1), new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } @Override public boolean createRoadSouthEast(Plot plot) { @@ -356,8 +337,7 @@ public class ClassicPlotManager extends SquarePlotManager { PlotBlock.get((short) 7, (byte) 0)); queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1), new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } @Override public boolean removeRoadEast(Plot plot) { @@ -377,8 +357,7 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, ex, classicPlotWorld.PLOT_HEIGHT - 1, ez - 1), classicPlotWorld.MAIN_BLOCK); queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.PLOT_HEIGHT, sz + 1), new Location(classicPlotWorld.worldname, ex, classicPlotWorld.PLOT_HEIGHT, ez - 1), classicPlotWorld.TOP_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } @Override public boolean removeRoadSouth(Plot plot) { @@ -398,8 +377,7 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.PLOT_HEIGHT - 1, ez), classicPlotWorld.MAIN_BLOCK); queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, classicPlotWorld.PLOT_HEIGHT, sz), new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.PLOT_HEIGHT, ez), classicPlotWorld.TOP_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } @Override public boolean removeRoadSouthEast(Plot plot) { @@ -416,38 +394,53 @@ public class ClassicPlotManager extends SquarePlotManager { new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT - 1, ez), classicPlotWorld.MAIN_BLOCK); queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.ROAD_HEIGHT, sz), new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT, ez), classicPlotWorld.TOP_BLOCK); - queue.enqueue(); - return true; + return queue.enqueue(); } /** * Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED). + * + * @return false if part of the merge failed, otherwise true if successful. */ @Override public boolean finishPlotMerge(List plotIds) { final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK; - plotIds.forEach(id -> setWall(id, block)); + boolean success = true; + for (PlotId plotId : plotIds) { + success &= setWall(plotId, block); + } if (Settings.General.MERGE_REPLACE_WALL) { final BlockBucket wallBlock = classicPlotWorld.WALL_FILLING; - plotIds.forEach(id -> setWallFilling(id, wallBlock)); + for (PlotId id : plotIds) { + success &= setWallFilling(id, wallBlock); + } } - return true; + return success; } @Override public boolean finishPlotUnlink(List plotIds) { final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK; - plotIds.forEach(id -> setWall(id, block)); - return true; + boolean success = true; + for (PlotId id : plotIds) { + success &= setWall(id, block); + } + return success; } + /** + * Sets all the blocks along all the plot walls to their correct state (claimed or unclaimed). + * + * @return true if the wall blocks were successfully set + */ @Override public boolean regenerateAllPlotWalls() { + boolean success = true; for (Plot plot : classicPlotWorld.getPlots()) { if (plot.hasOwner()) { - setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK); + success &= setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK); } else { - setWall(plot.getId(), classicPlotWorld.WALL_BLOCK); + success &= setWall(plot.getId(), classicPlotWorld.WALL_BLOCK); } } - return true; + return success; } @Override public boolean startPlotMerge(List plotIds) { @@ -460,8 +453,7 @@ public class ClassicPlotManager extends SquarePlotManager { @Override public boolean claimPlot(Plot plot) { final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK; - setWall(plot.getId(), claim); - return true; + return setWall(plot.getId(), claim); } @Override public String[] getPlotComponents(PlotId plotId) { @@ -469,7 +461,9 @@ public class ClassicPlotManager extends SquarePlotManager { } /** - * Remove sign for a plot. + * Retrieves the location of where a sign should be for a plot. + * @param plot The plot + * @return The location where a sign should be */ @Override public Location getSignLoc(Plot plot) { plot = plot.getBasePlot(false); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java index 6bf38d22c..143879680 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java @@ -46,7 +46,7 @@ import java.util.Locale; * command - this may be useful if a config value can be changed at a later date, and has no impact on the actual * world generation

*/ - @Nonnull @Override public ConfigurationNode[] getSettingNodes() { + @NotNull @Override public ConfigurationNode[] getSettingNodes() { return new ConfigurationNode[] { new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height", Configuration.INTEGER), diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotManager.java index 773b427c9..0a3fc4de6 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotManager.java @@ -12,6 +12,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue; import com.google.common.collect.Sets; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockTypes; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -34,13 +35,13 @@ public class HybridPlotManager extends ClassicPlotManager { String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + hybridPlotWorld.worldname + File.separator; try { - File sideroad = + File sideRoad = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "sideroad.schem"); String newDir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + "__TEMP_DIR__" + File.separator; - if (sideroad.exists()) { + if (sideRoad.exists()) { files.add(new FileBytes(newDir + "sideroad.schem", - Files.readAllBytes(sideroad.toPath()))); + Files.readAllBytes(sideRoad.toPath()))); } File intersection = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "intersection.schem"); @@ -146,8 +147,7 @@ public class HybridPlotManager extends ClassicPlotManager { if (hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) { createSchemAbs(queue, pos1, pos2); } - queue.enqueue(); - return true; + return queue.enqueue(); } /** @@ -221,7 +221,9 @@ public class HybridPlotManager extends ClassicPlotManager { } /** - * Remove sign for a plot. + * Retrieves the location of where a sign should be for a plot. + * @param plot The plot + * @return The location where a sign should be */ @Override public Location getSignLoc(Plot plot) { return hybridPlotWorld.getSignLocation(plot); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotWorld.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotWorld.java index 101b6fcb3..2f8c7c823 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotWorld.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridPlotWorld.java @@ -44,7 +44,7 @@ public class HybridPlotWorld extends ClassicPlotWorld { super(worldName, id, generator, min, max); } - @Override + @NotNull @Override protected PlotManager createManager() { return new HybridPlotManager(this); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridUtils.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridUtils.java index 84c487bdb..3f4261440 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridUtils.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/HybridUtils.java @@ -140,7 +140,7 @@ public abstract class HybridUtils { } HybridUtils.UPDATE = true; Set regions = new HashSet<>(); - regions.add(ChunkManager.manager.getChunkChunk(plot.getCenter())); + regions.add(ChunkManager.getChunkChunk(plot.getCenter())); return scheduleRoadUpdate(plot.getArea(), regions, extend); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/listener/PlotListener.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/listener/PlotListener.java index c26c4231e..4911f9f47 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/listener/PlotListener.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/listener/PlotListener.java @@ -122,7 +122,7 @@ public class PlotListener { } } Optional timeFlag = plot.getFlag(Flags.TIME); - if (timeFlag.isPresent()) { + if (timeFlag.isPresent() && !player.getAttribute("disabletime")) { try { long time = timeFlag.get(); player.setTime(time); @@ -138,18 +138,18 @@ public class PlotListener { final PlotBlock block = PlotBlock.get(id); final String rawId = block.getRawId().toString(); if (rawId.contains("disc") || PlotBlock.isEverything(block) || block.isAir()) { - Location loc = player.getLocation(); - Location lastLoc = player.getMeta("music"); - if (lastLoc != null) { - player.playMusic(lastLoc, PlotBlock.get("air")); + Location location = player.getLocation(); + Location lastLocation = player.getMeta("music"); + if (lastLocation != null) { + player.playMusic(lastLocation, PlotBlock.get("air")); if (PlotBlock.isEverything(block) || block.isAir()) { player.deleteMeta("music"); } } if (!(PlotBlock.isEverything(block) || block.isAir())) { try { - player.setMeta("music", loc); - player.playMusic(loc, block); + player.setMeta("music", location); + player.playMusic(location, block); } catch (Exception ignored) { } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/ConsolePlayer.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/ConsolePlayer.java index 9f4677f4f..490a6e211 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/ConsolePlayer.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/ConsolePlayer.java @@ -5,8 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.commands.RequiredType; import com.github.intellectualsites.plotsquared.plot.database.DBFunc; import com.github.intellectualsites.plotsquared.plot.util.PlotGameMode; import com.github.intellectualsites.plotsquared.plot.util.PlotWeather; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.UUID; public class ConsolePlayer extends PlotPlayer { @@ -15,15 +15,15 @@ public class ConsolePlayer extends PlotPlayer { private ConsolePlayer() { PlotArea area = PlotSquared.get().getFirstPlotArea(); - Location loc; + Location location; if (area != null) { RegionWrapper region = area.getRegion(); - loc = new Location(area.worldname, region.minX + region.maxX / 2, 0, + location = new Location(area.worldname, region.minX + region.maxX / 2, 0, region.minZ + region.maxZ / 2); } else { - loc = new Location("world", 0, 0, 0); + location = new Location("world", 0, 0, 0); } - setMeta("location", loc); + setMeta("location", location); } public static ConsolePlayer getConsole() { @@ -34,7 +34,7 @@ public class ConsolePlayer extends PlotPlayer { return instance; } - @Override public boolean canTeleport(@Nonnull Location loc) { + @Override public boolean canTeleport(@NotNull Location location) { return true; } @@ -42,7 +42,7 @@ public class ConsolePlayer extends PlotPlayer { public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) { } - @Override public Location getLocation() { + @NotNull @Override public Location getLocation() { return this.getMeta("location"); } @@ -50,7 +50,7 @@ public class ConsolePlayer extends PlotPlayer { return getLocation(); } - @Nonnull @Override public UUID getUUID() { + @NotNull @Override public UUID getUUID() { return DBFunc.EVERYONE; } @@ -100,14 +100,14 @@ public class ConsolePlayer extends PlotPlayer { return RequiredType.CONSOLE; } - @Override public void setWeather(@Nonnull PlotWeather weather) { + @Override public void setWeather(@NotNull PlotWeather weather) { } - @Nonnull @Override public PlotGameMode getGameMode() { + @NotNull @Override public PlotGameMode getGameMode() { return PlotGameMode.NOT_SET; } - @Override public void setGameMode(@Nonnull PlotGameMode gameMode) { + @Override public void setGameMode(@NotNull PlotGameMode gameMode) { } @Override public void setTime(long time) { @@ -120,7 +120,7 @@ public class ConsolePlayer extends PlotPlayer { @Override public void setFlight(boolean fly) { } - @Override public void playMusic(@Nonnull Location location, @Nonnull PlotBlock id) { + @Override public void playMusic(@NotNull Location location, @NotNull PlotBlock id) { } @Override public void kick(String message) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Direction.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Direction.java index 0c7de4905..3c3900dc1 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Direction.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Direction.java @@ -1,9 +1,9 @@ package com.github.intellectualsites.plotsquared.plot.object; public enum Direction { - NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3, "west"), NORTHEAST(4, - "northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6, "southwest"), NORTHWEST(7, - "northwest"), + ALL(-1, "all"), NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3, + "west"), NORTHEAST(4, "northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6, + "southwest"), NORTHWEST(7, "northwest"), ; @@ -16,6 +16,15 @@ public enum Direction { this.name = name; } + public static Direction getFromIndex(int index) { + for (Direction value : values()) { + if (value.getIndex() == index) { + return value; + } + } + return NORTH; + } + public int getIndex() { return index; } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java index b1098e6f3..30c5034a8 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java @@ -21,9 +21,9 @@ import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.sk89q.jnbt.CompoundTag; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.awt.geom.Area; import java.awt.geom.PathIterator; import java.awt.geom.Rectangle2D; @@ -46,13 +46,14 @@ import java.util.stream.Collectors; public class Plot { private static final int MAX_HEIGHT = 256; + /** * @deprecated raw access is deprecated */ @Deprecated private static HashSet connected_cache; private static HashSet regions_cache; - private final PlotId id; + @NotNull private final PlotId id; /** * plot owner @@ -62,10 +63,12 @@ public class Plot { * @deprecated */ @Deprecated public UUID owner; + /** * Has the plot changed since the last save cycle? */ public boolean countsTowardsMax = true; + /** * Represents whatever the database manager needs it to:
* - A value of -1 usually indicates the plot will not be stored in the DB
@@ -74,23 +77,28 @@ public class Plot { * @deprecated magical */ @Deprecated public int temp; + /** * Plot creation timestamp (not accurate if the plot was created before this was implemented)
* - Milliseconds since the epoch
*/ private long timestamp; + /** * List of trusted (with plot permissions). */ private HashSet trusted; + /** * List of members users (with plot permissions). */ private HashSet members; + /** * List of denied players. */ private HashSet denied; + /** * External settings class. * - Please favor the methods over direct access to this class
@@ -99,6 +107,7 @@ public class Plot { private PlotSettings settings; private PlotArea area; + /** * Session only plot metadata (session is until the server stops)
*
@@ -107,6 +116,7 @@ public class Plot { * @see FlagManager */ private ConcurrentHashMap meta; + /** * The cached origin plot. * - The origin plot is used for plot grouping and relational data @@ -117,12 +127,12 @@ public class Plot { * Constructor for a new plot. * (Only changes after plot.create() will be properly set in the database) * - * @param area the PlotArea where the plot is located - * @param id the plot id + * @param area the PlotArea where the plot is located + * @param id the plot id * @param owner the plot owner * @see Plot#getPlot(Location) for existing plots */ - public Plot(PlotArea area, PlotId id, UUID owner) { + public Plot(PlotArea area, @NotNull PlotId id, UUID owner) { this.area = area; this.id = id; this.owner = owner; @@ -133,10 +143,10 @@ public class Plot { * (Only changes after plot.create() will be properly set in the database) * * @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(PlotArea area, PlotId id) { + public Plot(PlotArea area, @NotNull PlotId id) { this.area = area; this.id = id; } @@ -146,13 +156,13 @@ public class Plot { * 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) * - * @param area the PlotArea where the plot is located - * @param id the plot id + * @param area the PlotArea where the plot is located + * @param id the plot id * @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(PlotArea area, PlotId id, UUID owner, int temp) { + public Plot(PlotArea area, @NotNull PlotId id, UUID owner, int temp) { this.area = area; this.id = id; this.owner = owner; @@ -162,14 +172,14 @@ public class Plot { /** * Constructor for a saved plots (Used by the database manager when plots are fetched) * - * @param id the plot id - * @param owner the plot owner + * @param id the plot id + * @param owner the plot owner * @param trusted the plot trusted players - * @param denied the plot denied players - * @param merged array giving merged plots + * @param denied the plot denied players + * @param merged an array giving merged plots * @see Plot#getPlot(Location) for existing plots */ - public Plot(PlotId id, UUID owner, HashSet trusted, HashSet members, + public Plot(@NotNull PlotId id, UUID owner, HashSet trusted, HashSet members, HashSet denied, String alias, BlockLoc position, Collection flags, PlotArea area, boolean[] merged, long timestamp, int temp) { this.id = id; @@ -194,8 +204,8 @@ public class Plot { /** * Gets a plot from a string e.g. [area];[id] * - * @param defaultArea If no area is specified - * @param string plot id/area + id + * @param defaultArea if no area is specified + * @param string plot id/area + id * @return New or existing plot object */ public static Plot fromString(PlotArea defaultArea, String string) { @@ -326,7 +336,7 @@ public class Plot { * @param uuid the player uuid * @return if the provided uuid is the owner of the plot */ - public boolean isOwner(@Nonnull UUID uuid) { + public boolean isOwner(@NotNull UUID uuid) { if (uuid.equals(this.getOwner())) { return true; } @@ -452,7 +462,7 @@ public class Plot { * * @return the PlotId for this plot */ - public PlotId getId() { + @NotNull public PlotId getId() { return this.id; } @@ -779,7 +789,7 @@ public class Plot { /** * Sets the plot owner (and update the database) * - * @param owner uuid to set as owner + * @param owner uuid to set as owner * @param initiator player initiating set owner * @return boolean */ @@ -864,8 +874,15 @@ public class Plot { } Plot current = queue.poll(); if (Plot.this.area.TERRAIN != 0) { - ChunkManager.manager - .regenerateRegion(current.getBottomAbs(), current.getTopAbs(), false, this); + try { + ChunkManager.manager + .regenerateRegion(current.getBottomAbs(), current.getTopAbs(), false, + this); + } catch (UnsupportedOperationException exception) { + MainUtil.sendMessage(null, + "Please ask md_5 to fix regenerateChunk() because it breaks plugins. We apologize for the inconvenience"); + return; + } return; } manager.clearPlot(current, this); @@ -919,8 +936,8 @@ public class Plot { /** * Unlink the plot and all connected plots. * - * @param createSign whether to recreate signs * @param createRoad whether to recreate road + * @param createSign whether to recreate signs * @return success/!cancelled */ public boolean unlinkPlot(boolean createRoad, boolean createSign) { @@ -982,7 +999,7 @@ public class Plot { * * @param name name */ - public void setSign(@Nonnull String name) { + public void setSign(@NotNull String name) { if (!isLoaded()) { return; } @@ -992,7 +1009,7 @@ public class Plot { } PlotManager manager = this.area.getPlotManager(); if (this.area.ALLOW_SIGNS) { - Location loc = manager.getSignLoc(this); + Location location = manager.getSignLoc(this); String id = this.id.x + ";" + this.id.y; String[] lines = new String[] {Captions.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id), @@ -1002,7 +1019,9 @@ public class Plot { "%plr%", name), Captions.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll( "%plr%", name)}; - WorldUtil.IMP.setSign(this.getWorldName(), loc.getX(), loc.getY(), loc.getZ(), lines); + WorldUtil.IMP + .setSign(this.getWorldName(), location.getX(), location.getY(), location.getZ(), + lines); } } @@ -1199,18 +1218,18 @@ public class Plot { Location[] corners = getCorners(); Location top = corners[0]; Location bot = corners[1]; - Location loc = new Location(this.getWorldName(), MathMan.average(bot.getX(), top.getX()), + Location location = + new Location(this.getWorldName(), MathMan.average(bot.getX(), top.getX()), MathMan.average(bot.getY(), top.getY()), MathMan.average(bot.getZ(), top.getZ())); if (!isLoaded()) { - return loc; + return location; } - int y = - isLoaded() ? WorldUtil.IMP.getHighestBlock(getWorldName(), loc.getX(), loc.getZ()) : 62; + int y = WorldUtil.IMP.getHighestBlock(getWorldName(), location.getX(), location.getZ()); if (area.ALLOW_SIGNS) { y = Math.max(y, getManager().getSignLoc(this).getY()); } - loc.setY(1 + y); - return loc; + location.setY(1 + y); + return location; } public Location getSide() { @@ -1235,18 +1254,19 @@ public class Plot { if (home == null || home.x == 0 && home.z == 0) { return this.getDefaultHome(true); } else { - Location bot = this.getBottomAbs(); - Location loc = new Location(bot.getWorld(), bot.getX() + home.x, bot.getY() + home.y, - bot.getZ() + home.z, home.yaw, home.pitch); + Location bottom = this.getBottomAbs(); + Location location = + new Location(bottom.getWorld(), bottom.getX() + home.x, bottom.getY() + home.y, + bottom.getZ() + home.z, home.yaw, home.pitch); if (!isLoaded()) { - return loc; + return location; } - if (!WorldUtil.IMP.getBlock(loc).isAir()) { - loc.setY(Math.max( - 1 + WorldUtil.IMP.getHighestBlock(this.getWorldName(), loc.getX(), loc.getZ()), - bot.getY())); + if (!WorldUtil.IMP.getBlock(location).isAir()) { + location.setY(Math.max(1 + WorldUtil.IMP + .getHighestBlock(this.getWorldName(), location.getX(), location.getZ()), + bottom.getY())); } - return loc; + return location; } } @@ -1413,9 +1433,9 @@ public class Plot { if (!this.area.ALLOW_SIGNS) { return; } - Location loc = manager.getSignLoc(this); + Location location = manager.getSignLoc(this); LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(getWorldName(), false); - queue.setBlock(loc.getX(), loc.getY(), loc.getZ(), PlotBlock.get("air")); + queue.setBlock(location.getX(), location.getY(), location.getZ(), PlotBlock.get("air")); queue.flush(); } @@ -1510,7 +1530,7 @@ public class Plot { * @param notify notify * @return true if plot was created successfully */ - public boolean create(@Nonnull UUID uuid, final boolean notify) { + public boolean create(@NotNull UUID uuid, final boolean notify) { this.owner = uuid; Plot existing = this.area.getOwnedPlotAbs(this.id); if (existing != null) { @@ -1532,7 +1552,7 @@ public class Plot { DBFunc.createPlotAndSettings(this, () -> { PlotArea plotworld = Plot.this.area; if (notify && plotworld.AUTO_MERGE) { - Plot.this.autoMerge(-1, Integer.MAX_VALUE, uuid, true); + Plot.this.autoMerge(Direction.ALL, Integer.MAX_VALUE, uuid, true); } }); return true; @@ -1555,8 +1575,8 @@ public class Plot { * @return the name of the biome */ public String getBiome() { - Location loc = this.getCenter(); - return WorldUtil.IMP.getBiome(loc.getWorld(), loc.getX(), loc.getZ()); + Location location = this.getCenter(); + return WorldUtil.IMP.getBiome(location.getWorld(), location.getX(), location.getZ()); } //TODO Better documentation needed. @@ -1576,9 +1596,9 @@ public class Plot { * Returns the bottom location for the plot. */ public Location getBottomAbs() { - Location loc = getManager().getPlotBottomLocAbs(this.id); - loc.setWorld(getWorldName()); - return loc; + Location location = getManager().getPlotBottomLocAbs(this.id); + location.setWorld(getWorldName()); + return location; } /** @@ -1627,7 +1647,7 @@ public class Plot { /** * Moves the settings for a plot. * - * @param plot the plot to move + * @param plot the plot to move * @param whenDone * @return */ @@ -2009,17 +2029,11 @@ public class Plot { * Sets the raw merge data
* - Updates DB
* - Does not modify terrain
- * ----------
- * 0 = north
- * 1 = east
- * 2 = south
- * 3 = west
- * ----------
* * @param direction * @param value */ - public void setMerged(int direction, boolean value) { + public void setMerged(Direction direction, boolean value) { if (this.getSettings().setMerged(direction, value)) { if (value) { Plot other = this.getRelative(direction).getBasePlot(false); @@ -2124,11 +2138,12 @@ public class Plot { return null; } try { - final Location loc = this.getManager().getSignLoc(this); + final Location location = this.getManager().getSignLoc(this); String[] lines = TaskManager.IMP.sync(new RunnableVal() { @Override public void run(String[] value) { - ChunkManager.manager.loadChunk(loc.getWorld(), loc.getChunkLoc(), false); - this.value = WorldUtil.IMP.getSign(loc); + ChunkManager.manager + .loadChunk(location.getWorld(), location.getChunkLoc(), false); + this.value = WorldUtil.IMP.getSign(location); } }); if (lines == null) { @@ -2198,24 +2213,21 @@ public class Plot { } /** - * Auto merge a plot in a specific direction
+ * Auto merge a plot in a specific direction. * - * @param dir The direction to merge
- * -1 = All directions
- * 0 = north
- * 1 = east
- * 2 = south
- * 3 = west
- * @param max The max number of merges to do - * @param uuid The UUID it is allowed to merge with - * @param removeRoads Whether to remove roads + * @param dir the direction to merge + * @param max the max number of merges to do + * @param uuid the UUID it is allowed to merge with + * @param removeRoads whether to remove roads * @return true if a merge takes place */ - public boolean autoMerge(int dir, int max, UUID uuid, boolean removeRoads) { + public boolean autoMerge(Direction dir, int max, UUID uuid, boolean removeRoads) { + //Ignore merging if there is no owner for the plot if (this.owner == null) { return false; } - if (!EventUtil.manager.callMerge(this, dir, max)) { + //Call the merge event + if (!EventUtil.manager.callMerge(this, dir.getIndex(), max)) { return false; } Set connected = this.getConnectedPlots(); @@ -2231,7 +2243,7 @@ public class Plot { } visited.add(current); Set plots; - if ((dir == -1 || dir == 0) && !getMerged(Direction.NORTH)) { + if ((dir == Direction.ALL || dir == Direction.NORTH) && !getMerged(Direction.NORTH)) { Plot other = current.getRelative(Direction.NORTH); if (other != null && other.isOwner(uuid) && ( other.getBasePlot(false).equals(current.getBasePlot(false)) @@ -2250,7 +2262,8 @@ public class Plot { } } } - if (max >= 0 && (dir == -1 || dir == 1) && !current.getMerged(Direction.EAST)) { + if (max >= 0 && (dir == Direction.ALL || dir == Direction.EAST) && !current + .getMerged(Direction.EAST)) { Plot other = current.getRelative(Direction.EAST); if (other != null && other.isOwner(uuid) && ( other.getBasePlot(false).equals(current.getBasePlot(false)) @@ -2269,7 +2282,8 @@ public class Plot { } } } - if (max >= 0 && (dir == -1 || dir == 2) && !getMerged(Direction.SOUTH)) { + if (max >= 0 && (dir == Direction.ALL || dir == Direction.SOUTH) && !getMerged( + Direction.SOUTH)) { Plot other = current.getRelative(Direction.SOUTH); if (other != null && other.isOwner(uuid) && ( other.getBasePlot(false).equals(current.getBasePlot(false)) @@ -2288,7 +2302,8 @@ public class Plot { } } } - if (max >= 0 && (dir == -1 || dir == 3) && !getMerged(Direction.WEST)) { + if (max >= 0 && (dir == Direction.ALL || dir == Direction.WEST) && !getMerged( + Direction.WEST)) { Plot other = current.getRelative(Direction.WEST); if (other != null && other.isOwner(uuid) && ( other.getBasePlot(false).equals(current.getBasePlot(false)) @@ -2403,20 +2418,16 @@ public class Plot { * @param direction * @return */ - public Plot getRelative(int direction) { + @Deprecated public Plot getRelative(int direction) { return this.area.getPlotAbs(this.id.getRelative(direction)); } /** - * Gets the plot in a relative direction
- * 0 = north
- * 1 = east
- * 2 = south
- * 3 = west
+ * Gets the plot in a relative direction * Note: May be null if the partial plot area does not include the relative location * * @param direction - * @return + * @return the plot relative to this one */ public Plot getRelative(Direction direction) { return this.area.getPlotAbs(this.id.getRelative(direction)); @@ -2426,7 +2437,7 @@ public class Plot { * Gets a set of plots connected (and including) this plot
* - This result is cached globally * - * @return + * @return a Set of Plots connected to this Plot */ public Set getConnectedPlots() { if (this.settings == null) { @@ -2451,10 +2462,10 @@ public class Plot { // invalid merge PlotSquared.debug("Fixing invalid merge: " + this); if (tmp.isOwnerAbs(this.owner)) { - tmp.getSettings().setMerged(2, true); + tmp.getSettings().setMerged(Direction.SOUTH, true); DBFunc.setMerged(tmp, tmp.getSettings().getMerged()); } else { - this.getSettings().setMerged(0, false); + this.getSettings().setMerged(Direction.NORTH, false); DBFunc.setMerged(this, this.getSettings().getMerged()); } } @@ -2467,10 +2478,10 @@ public class Plot { // invalid merge PlotSquared.debug("Fixing invalid merge: " + this); if (tmp.isOwnerAbs(this.owner)) { - tmp.getSettings().setMerged(3, true); + tmp.getSettings().setMerged(Direction.WEST, true); DBFunc.setMerged(tmp, tmp.getSettings().getMerged()); } else { - this.getSettings().setMerged(1, false); + this.getSettings().setMerged(Direction.EAST, false); DBFunc.setMerged(this, this.getSettings().getMerged()); } } @@ -2483,10 +2494,10 @@ public class Plot { // invalid merge PlotSquared.debug("Fixing invalid merge: " + this); if (tmp.isOwnerAbs(this.owner)) { - tmp.getSettings().setMerged(0, true); + tmp.getSettings().setMerged(Direction.NORTH, true); DBFunc.setMerged(tmp, tmp.getSettings().getMerged()); } else { - this.getSettings().setMerged(2, false); + this.getSettings().setMerged(Direction.SOUTH, false); DBFunc.setMerged(this, this.getSettings().getMerged()); } } @@ -2499,10 +2510,10 @@ public class Plot { // invalid merge PlotSquared.debug("Fixing invalid merge: " + this); if (tmp.isOwnerAbs(this.owner)) { - tmp.getSettings().setMerged(1, true); + tmp.getSettings().setMerged(Direction.EAST, true); DBFunc.setMerged(tmp, tmp.getSettings().getMerged()); } else { - this.getSettings().setMerged(3, false); + this.getSettings().setMerged(Direction.WEST, false); DBFunc.setMerged(this, this.getSettings().getMerged()); } } @@ -2560,7 +2571,7 @@ public class Plot { * * @return */ - @Nonnull public HashSet getRegions() { + @NotNull public HashSet getRegions() { if (regions_cache != null && connected_cache != null && connected_cache.contains(this)) { return regions_cache; } @@ -2787,6 +2798,11 @@ public class Plot { return false; } + /** + * Checks if the owner of this Plot is online. + * + * @return true if the owner of the Plot is online + */ public boolean isOnline() { if (this.owner == null) { return false; @@ -2841,13 +2857,14 @@ public class Plot { } /** - * Merges 2 plots Removes the road in-between
- Assumes plots are directly next to each other
- saves to DB + * Merges two plots.
- Assumes plots are directly next to each other
- saves to DB * * @param lesserPlot * @param removeRoads */ public void mergePlot(Plot lesserPlot, boolean removeRoads) { Plot greaterPlot = this; + lesserPlot.removeSign(); if (lesserPlot.getId().x == greaterPlot.getId().x) { if (lesserPlot.getId().y > greaterPlot.getId().y) { Plot tmp = lesserPlot; @@ -2857,10 +2874,11 @@ public class Plot { if (!lesserPlot.getMerged(Direction.SOUTH)) { lesserPlot.clearRatings(); greaterPlot.clearRatings(); - lesserPlot.setMerged(2, true); - greaterPlot.setMerged(0, true); + lesserPlot.setMerged(Direction.SOUTH, true); + greaterPlot.setMerged(Direction.NORTH, true); lesserPlot.mergeData(greaterPlot); if (removeRoads) { + //lesserPlot.removeSign(); lesserPlot.removeRoadSouth(); Plot diagonal = greaterPlot.getRelative(Direction.EAST); if (diagonal.getMerged(Direction.NORTHWEST)) { @@ -2881,10 +2899,11 @@ public class Plot { if (!lesserPlot.getMerged(Direction.EAST)) { lesserPlot.clearRatings(); greaterPlot.clearRatings(); - lesserPlot.setMerged(1, true); - greaterPlot.setMerged(3, true); + lesserPlot.setMerged(Direction.EAST, true); + greaterPlot.setMerged(Direction.WEST, true); lesserPlot.mergeData(greaterPlot); if (removeRoads) { + //lesserPlot.removeSign(); Plot diagonal = greaterPlot.getRelative(Direction.SOUTH); if (diagonal.getMerged(Direction.NORTHWEST)) { lesserPlot.removeRoadSouthEast(); @@ -2897,6 +2916,7 @@ public class Plot { } } } + } /** @@ -3079,23 +3099,23 @@ public class Plot { return getFlags().containsKey(flag); } - @SuppressWarnings("deprecation") public boolean removeComment(PlotComment comment) { + public boolean removeComment(PlotComment comment) { return getSettings().removeComment(comment); } - @SuppressWarnings("deprecation") public void removeComments(List comments) { + public void removeComments(List comments) { getSettings().removeComments(comments); } - @SuppressWarnings("deprecation") public List getComments(String inbox) { + public List getComments(String inbox) { return getSettings().getComments(inbox); } - @SuppressWarnings("deprecation") public void addComment(PlotComment comment) { + public void addComment(PlotComment comment) { getSettings().addComment(comment); } - @SuppressWarnings("deprecation") public void setComments(List list) { + public void setComments(List list) { getSettings().setComments(list); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java index 3ed1e2c95..ff6668ea4 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java @@ -22,9 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; @@ -37,12 +36,12 @@ public abstract class PlotArea { public final String worldname; public final String id; - public final PlotManager manager; + @NotNull public final PlotManager manager; public final int worldhash; protected final ConcurrentHashMap plots = new ConcurrentHashMap<>(); private final PlotId min; private final PlotId max; - private final IndependentPlotGenerator generator; + @NotNull private final IndependentPlotGenerator generator; private final BlockBucket[][] blockBucketChunk; public int MAX_PLOT_MEMBERS = 128; public boolean AUTO_MERGE = false; @@ -76,7 +75,7 @@ public abstract class PlotArea { private ConcurrentHashMap meta; private QuadMap clusters; - public PlotArea(@Nonnull final String worldName, @Nullable final String id, + public PlotArea(@NotNull final String worldName, @Nullable final String id, @NotNull IndependentPlotGenerator generator, @Nullable final PlotId min, @Nullable final PlotId max) { this.worldname = worldName; @@ -102,7 +101,7 @@ public abstract class PlotArea { } } - protected abstract PlotManager createManager(); + @NotNull protected abstract PlotManager createManager(); public LocalBlockQueue getQueue(final boolean autoQueue) { return GlobalBlockQueue.IMP.getNewQueue(worldname, autoQueue); @@ -117,10 +116,7 @@ public abstract class PlotArea { if (blockBucketChunk != null) { return blockBucketChunk; } - if (generator != null) { - return generator.generateBlockBucketChunk(this); - } - return null; + return generator.generateBlockBucketChunk(this); } /** @@ -178,7 +174,7 @@ public abstract class PlotArea { * * @return the {@link IndependentPlotGenerator} */ - public IndependentPlotGenerator getGenerator() { + @NotNull public IndependentPlotGenerator getGenerator() { return this.generator; } @@ -394,7 +390,7 @@ public abstract class PlotArea { } } - @Nonnull @Override public String toString() { + @NotNull @Override public String toString() { if (this.id == null) { return this.worldname; } else { @@ -422,7 +418,7 @@ public abstract class PlotArea { * @param location the location * @return the {@code Plot} or null if none exists */ - @Nullable public Plot getPlotAbs(@Nonnull final Location location) { + @Nullable public Plot getPlotAbs(@NotNull final Location location) { final PlotId pid = this.manager.getPlotId(location.getX(), location.getY(), location.getZ()); if (pid == null) { @@ -437,7 +433,7 @@ public abstract class PlotArea { * @param location the location * @return base Plot */ - @Nullable public Plot getPlot(@Nonnull final Location location) { + @Nullable public Plot getPlot(@NotNull final Location location) { final PlotId pid = this.manager.getPlotId(location.getX(), location.getY(), location.getZ()); if (pid == null) { @@ -452,7 +448,7 @@ public abstract class PlotArea { * @param location the location * @return the base plot or null */ - @Nullable public Plot getOwnedPlot(@Nonnull final Location location) { + @Nullable public Plot getOwnedPlot(@NotNull final Location location) { final PlotId pid = this.manager.getPlotId(location.getX(), location.getY(), location.getZ()); if (pid == null) { @@ -468,7 +464,7 @@ public abstract class PlotArea { * @param location the location * @return Plot or null */ - @Nullable public Plot getOwnedPlotAbs(@Nonnull final Location location) { + @Nullable public Plot getOwnedPlotAbs(@NotNull final Location location) { final PlotId pid = this.manager.getPlotId(location.getX(), location.getY(), location.getZ()); if (pid == null) { @@ -483,11 +479,11 @@ public abstract class PlotArea { * @param id the {@code PlotId} * @return the plot or null */ - @Nullable public Plot getOwnedPlotAbs(@Nonnull final PlotId id) { + @Nullable public Plot getOwnedPlotAbs(@NotNull final PlotId id) { return this.plots.get(id); } - @Nullable public Plot getOwnedPlot(@Nonnull final PlotId id) { + @Nullable public Plot getOwnedPlot(@NotNull final PlotId id) { Plot plot = this.plots.get(id); return plot == null ? null : plot.getBasePlot(false); } @@ -496,17 +492,17 @@ public abstract class PlotArea { return this.TYPE != 2 || getRegionAbs().isIn(x, z); } - public boolean contains(@Nonnull final PlotId id) { + public boolean contains(@NotNull final PlotId id) { return this.min == null || (id.x >= this.min.x && id.x <= this.max.x && id.y >= this.min.y && id.y <= this.max.y); } - public boolean contains(@Nonnull final Location location) { + public boolean contains(@NotNull final Location location) { return StringMan.isEqual(location.getWorld(), this.worldname) && (getRegionAbs() == null || this.region.isIn(location.getX(), location.getZ())); } - @Nonnull Set getPlotsAbs(final UUID uuid) { + @NotNull Set getPlotsAbs(final UUID uuid) { if (uuid == null) { return Collections.emptySet(); } @@ -519,7 +515,7 @@ public abstract class PlotArea { return myPlots; } - @Nonnull public Set getPlots(@Nonnull final UUID uuid) { + @NotNull public Set getPlots(@NotNull final UUID uuid) { return getPlots().stream().filter(plot -> plot.isBasePlot() && plot.isOwner(uuid)) .collect(ImmutableSet.toImmutableSet()); } @@ -533,7 +529,7 @@ public abstract class PlotArea { return this.plots.values(); } - public int getPlotCount(@Nonnull final UUID uuid) { + public int getPlotCount(@NotNull final UUID uuid) { if (!Settings.Done.COUNTS_TOWARDS_LIMIT) { return (int) getPlotsAbs(uuid).stream().filter(plot -> !plot.hasFlag(Flags.DONE)) .count(); @@ -546,11 +542,11 @@ public abstract class PlotArea { * * @deprecated Use {@link #getPlots(UUID)} */ - @Deprecated public Set getPlots(@Nonnull final PlotPlayer player) { + @Deprecated public Set getPlots(@NotNull final PlotPlayer player) { return getPlots(player.getUUID()); } - public boolean hasPlot(@Nonnull final UUID uuid) { + public boolean hasPlot(@NotNull final UUID uuid) { return this.plots.entrySet().stream().anyMatch(entry -> entry.getValue().isOwner(uuid)); } @@ -559,7 +555,7 @@ public abstract class PlotArea { return player != null ? getPlotCount(player.getUUID()) : 0; } - @Nullable public Plot getPlotAbs(@Nonnull final PlotId id) { + @Nullable public Plot getPlotAbs(@NotNull final PlotId id) { Plot plot = getOwnedPlotAbs(id); if (plot == null) { if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y @@ -571,7 +567,7 @@ public abstract class PlotArea { return plot; } - @Nullable public Plot getPlot(@Nonnull final PlotId id) { + @Nullable public Plot getPlot(@NotNull final PlotId id) { final Plot plot = getOwnedPlotAbs(id); if (plot == null) { if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y @@ -592,7 +588,7 @@ public abstract class PlotArea { return this.plots.size(); } - @Nullable public PlotCluster getCluster(@Nonnull final Location location) { + @Nullable public PlotCluster getCluster(@NotNull final Location location) { final Plot plot = getPlot(location); if (plot == null) { return null; @@ -600,8 +596,8 @@ public abstract class PlotArea { return this.clusters != null ? this.clusters.get(plot.getId().x, plot.getId().y) : null; } - @Nullable public PlotCluster getFirstIntersectingCluster(@Nonnull final PlotId pos1, - @Nonnull final PlotId pos2) { + @Nullable public PlotCluster getFirstIntersectingCluster(@NotNull final PlotId pos1, + @NotNull final PlotId pos2) { if (this.clusters == null) { return null; } @@ -613,11 +609,11 @@ public abstract class PlotArea { return null; } - @Nullable PlotCluster getCluster(@Nonnull final PlotId id) { + @Nullable PlotCluster getCluster(@NotNull final PlotId id) { return this.clusters != null ? this.clusters.get(id.x, id.y) : null; } - public PlotManager getPlotManager() { + @NotNull public PlotManager getPlotManager() { return this.manager; } @@ -628,14 +624,14 @@ public abstract class PlotArea { * * @see FlagManager */ - public void setMeta(@Nonnull final String key, @Nullable final Object value) { + public void setMeta(@NotNull final String key, @Nullable final Object value) { if (this.meta == null) { this.meta = new ConcurrentHashMap<>(); } this.meta.put(key, value); } - @Nullable public T getMeta(@Nullable final String key, @Nullable final T def) { + @NotNull public T getMeta(@Nullable final String key, @NotNull final T def) { final Object v = getMeta(key); return v == null ? def : (T) v; } @@ -645,14 +641,14 @@ public abstract class PlotArea { *
* For persistent metadata use the flag system */ - @Nullable public Object getMeta(@Nonnull final String key) { + @Nullable public Object getMeta(@NotNull final String key) { if (this.meta != null) { return this.meta.get(key); } return null; } - @SuppressWarnings("unused") @Nonnull public Set getBasePlots() { + @SuppressWarnings("unused") @NotNull public Set getBasePlots() { final HashSet myPlots = new HashSet<>(getPlots()); myPlots.removeIf(plot -> !plot.isBasePlot()); return myPlots; @@ -685,15 +681,15 @@ public abstract class PlotArea { * @deprecated Use {@link #getPlotsMap()} */ //todo eventually remove - @Deprecated @Nonnull public Map getPlotsRaw() { + @Deprecated @NotNull public Map getPlotsRaw() { return ImmutableMap.copyOf(plots); } - @Nonnull public Set> getPlotEntries() { + @NotNull public Set> getPlotEntries() { return this.plots.entrySet(); } - public boolean addPlot(@Nonnull final Plot plot) { + public boolean addPlot(@NotNull final Plot plot) { for (PlotPlayer pp : plot.getPlayersInPlot()) { pp.setMeta(PlotPlayer.META_LAST_PLOT, plot); } @@ -731,7 +727,7 @@ public abstract class PlotArea { return null; } - public boolean addPlotIfAbsent(@Nonnull final Plot plot) { + public boolean addPlotIfAbsent(@NotNull final Plot plot) { if (this.plots.putIfAbsent(plot.getId(), plot) == null) { for (PlotPlayer pp : plot.getPlayersInPlot()) { pp.setMeta(PlotPlayer.META_LAST_PLOT, plot); @@ -741,7 +737,7 @@ public abstract class PlotArea { return false; } - public boolean addPlotAbs(@Nonnull final Plot plot) { + public boolean addPlotAbs(@NotNull final Plot plot) { return this.plots.put(plot.getId(), plot) == null; } @@ -786,14 +782,14 @@ public abstract class PlotArea { * * @param key Meta data key */ - public void deleteMeta(@Nonnull final String key) { + public void deleteMeta(@NotNull final String key) { if (this.meta != null) { this.meta.remove(key); } } - public boolean canClaim(@Nullable final PlotPlayer player, @Nonnull final PlotId pos1, - @Nonnull final PlotId pos2) { + public boolean canClaim(@Nullable final PlotPlayer player, @NotNull final PlotId pos1, + @NotNull final PlotId pos2) { if (pos1.x == pos2.x && pos1.y == pos2.y) { if (getOwnedPlot(pos1) != null) { return false; @@ -819,11 +815,11 @@ public abstract class PlotArea { return true; } - public boolean removePlot(@Nonnull final PlotId id) { + public boolean removePlot(@NotNull final PlotId id) { return this.plots.remove(id) != null; } - public boolean mergePlots(@Nonnull final List plotIds, final boolean removeRoads) { + public boolean mergePlots(@NotNull final List plotIds, final boolean removeRoads) { if (plotIds.size() < 2) { return false; } @@ -901,7 +897,7 @@ public abstract class PlotArea { * @param pos2 second corner of selection * @return the plots in the selection which are owned */ - public Set getPlotSelectionOwned(@Nonnull final PlotId pos1, @Nonnull final PlotId pos2) { + public Set getPlotSelectionOwned(@NotNull final PlotId pos1, @NotNull final PlotId pos2) { final int size = (1 + pos2.x - pos1.x) * (1 + pos2.y - pos1.y); final Set result = new HashSet<>(); if (size < 16 || size < getPlotCount()) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotCluster.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotCluster.java index 0b9427839..feaf64ddb 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotCluster.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotCluster.java @@ -132,8 +132,8 @@ public class PlotCluster { toReturn = center.getHome(); if (toReturn.getY() == 0) { PlotManager manager = this.area.getPlotManager(); - Location loc = manager.getSignLoc(center); - toReturn.setY(loc.getY()); + Location location = manager.getSignLoc(center); + toReturn.setY(location.getY()); } } else { toReturn = getClusterBottom().add(home.x, home.y, home.z); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotId.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotId.java index 10b9e4c71..21e7dc777 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotId.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotId.java @@ -1,7 +1,7 @@ package com.github.intellectualsites.plotsquared.plot.object; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class PlotId { /** @@ -32,14 +32,14 @@ public class PlotId { * @return the PlotId representation of the arguement * @throws IllegalArgumentException if the string does not contain a valid PlotId */ - @Nonnull public static PlotId fromString(@Nonnull String string) { + @NotNull public static PlotId fromString(@NotNull String string) { PlotId plot = fromStringOrNull(string); if (plot == null) throw new IllegalArgumentException("Cannot create PlotID. String invalid."); return plot; } - @Nullable public static PlotId fromStringOrNull(@Nonnull String string) { + @Nullable public static PlotId fromStringOrNull(@NotNull String string) { String[] parts = string.split("[;|,]"); if (parts.length < 2) { return null; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java index 74f0eddb7..0b39b2b7d 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java @@ -39,6 +39,12 @@ public abstract class PlotManager { public abstract boolean unClaimPlot(Plot plot, Runnable whenDone); + /** + * Retrieves the location of where a sign should be for a plot. + * + * @param plot The plot + * @return The location where a sign should be + */ public abstract Location getSignLoc(Plot plot); /* @@ -47,8 +53,7 @@ public abstract class PlotManager { */ public abstract String[] getPlotComponents(PlotId plotId); - public abstract boolean setComponent(PlotId plotId, String component, - BlockBucket blocks); + public abstract boolean setComponent(PlotId plotId, String component, BlockBucket blocks); /* * PLOT MERGING (return false if your generator does not support plot diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotPlayer.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotPlayer.java index 8981b2923..f8e21255b 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotPlayer.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotPlayer.java @@ -14,8 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*; import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager; import com.google.common.base.Preconditions; import lombok.NonNull; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.HashSet; @@ -306,7 +306,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { * * @return The location */ - public Location getLocation() { + @NotNull public Location getLocation() { Location location = getMeta("location"); if (location != null) { return location; @@ -335,14 +335,14 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { * * @return UUID */ - @Override @Nonnull public abstract UUID getUUID(); + @Override @NotNull public abstract UUID getUUID(); - public boolean canTeleport(@Nonnull final Location loc) { - Preconditions.checkNotNull(loc, "Specified location cannot be null"); + public boolean canTeleport(@NotNull final Location location) { + Preconditions.checkNotNull(location, "Specified location cannot be null"); final Location current = getLocationFull(); - teleport(loc); + teleport(location); boolean result = true; - if (!getLocation().equals(loc)) { + if (!getLocation().equals(location)) { result = false; } teleport(current); @@ -421,21 +421,21 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { * * @param weather the weather visible to the player */ - public abstract void setWeather(@Nonnull PlotWeather weather); + public abstract void setWeather(@NotNull PlotWeather weather); /** * Get this player's gamemode. * * @return the gamemode of the player. */ - @Nonnull public abstract PlotGameMode getGameMode(); + @NotNull public abstract PlotGameMode getGameMode(); /** * Set this player's gameMode. * * @param gameMode the gamemode to set */ - public abstract void setGameMode(@Nonnull PlotGameMode gameMode); + public abstract void setGameMode(@NotNull PlotGameMode gameMode); /** * Set this player's local time (ticks). @@ -464,7 +464,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { * @param location where to play the music * @param id the record item id */ - public abstract void playMusic(@Nonnull Location location, @Nonnull PlotBlock id); + public abstract void playMusic(@NotNull Location location, @NotNull PlotBlock id); /** * Check if this player is banned. @@ -493,10 +493,10 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { ByteBuffer buffer = ByteBuffer.allocate(13); buffer.putShort((short) x); buffer.putShort((short) z); - Location loc = getLocation(); - buffer.putInt(loc.getX()); - buffer.put((byte) loc.getY()); - buffer.putInt(loc.getZ()); + Location location = getLocation(); + buffer.putInt(location.getX()); + buffer.put((byte) location.getY()); + buffer.putInt(location.getZ()); setPersistentMeta("quitLoc", buffer.array()); } else if (hasPersistentMeta("quitLoc")) { removePersistentMeta("quitLoc"); @@ -596,11 +596,11 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { return; } - final Location loc = new Location(plot.getWorldName(), x, y, z); + final Location location = new Location(plot.getWorldName(), x, y, z); if (plot.isLoaded()) { TaskManager.runTask(() -> { if (getMeta("teleportOnLogin", true)) { - teleport(loc); + teleport(location); sendMessage( Captions.TELEPORTED_TO_PLOT.f() + " (quitLoc) (" + plotX + "," + plotZ + ")"); @@ -612,7 +612,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer { TaskManager.runTask(() -> { if (getMeta("teleportOnLogin", true)) { if (plot.isLoaded()) { - teleport(loc); + teleport(location); sendMessage(Captions.TELEPORTED_TO_PLOT.f() + " (quitLoc-unloaded) (" + plotX + "," + plotZ + ")"); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotSettings.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotSettings.java index 829e42dbd..ce51fea33 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotSettings.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotSettings.java @@ -5,7 +5,12 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags; import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment; import com.google.common.collect.ImmutableList; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; /** * Generic settings class. @@ -80,6 +85,17 @@ public class PlotSettings { return false; } + public boolean setMerged(Direction direction, boolean merged) { + if (Direction.ALL == direction) { + throw new IllegalArgumentException("You cannot use Direction.ALL in this method!"); + } + if (this.merged[direction.getIndex()] != merged) { + this.merged[direction.getIndex()] = merged; + return true; + } + return false; + } + public BlockLoc getPosition() { if (this.position == null) { return new BlockLoc(0, 0, 0); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/schematic/Schematic.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/schematic/Schematic.java index b67b16b58..e2c222df5 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/schematic/Schematic.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/schematic/Schematic.java @@ -30,8 +30,8 @@ public class Schematic { public boolean setBlock(BlockVector3 position, BaseBlock block) throws WorldEditException { if (clipboard.getRegion().contains(position)) { - BlockVector3 v = position.subtract(clipboard.getRegion().getMinimumPoint()); - clipboard.setBlock(v, block); + BlockVector3 vector3 = position.subtract(clipboard.getRegion().getMinimumPoint()); + clipboard.setBlock(vector3, block); return true; } else { return false; @@ -39,9 +39,9 @@ public class Schematic { } public void save(File file) throws IOException { - try (SpongeSchematicWriter ssw = new SpongeSchematicWriter( + try (SpongeSchematicWriter schematicWriter = new SpongeSchematicWriter( new NBTOutputStream(new FileOutputStream(file)))) { - ssw.write(clipboard); + schematicWriter.write(clipboard); } } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlot.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlot.java index 36d23c8f6..8c80e46a7 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlot.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlot.java @@ -4,8 +4,8 @@ import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.flag.Flag; import com.github.intellectualsites.plotsquared.plot.object.*; import com.google.common.collect.Sets; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.HashSet; import java.util.UUID; @@ -60,7 +60,7 @@ public class SinglePlot extends Plot { return super.isLoaded(); } - @Nonnull @Override public HashSet getRegions() { + @NotNull @Override public HashSet getRegions() { return regions; } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java index 41801c087..8f8ac96b1 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java @@ -9,9 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.object.*; import com.github.intellectualsites.plotsquared.plot.util.SetupUtils; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; import com.github.intellectualsites.plotsquared.plot.util.WorldUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -26,7 +26,7 @@ public class SinglePlotArea extends GridPlotWorld { this.DEFAULT_HOME = new PlotLoc(Integer.MAX_VALUE, Integer.MAX_VALUE); } - @Override + @NotNull @Override protected PlotManager createManager() { return new SinglePlotManager(this); } @@ -76,8 +76,8 @@ public class SinglePlotArea extends GridPlotWorld { new File(dataDest, file.getName()).toPath()); } } - } catch (IOException ignore) { - ignore.printStackTrace(); + } catch (IOException exception) { + exception.printStackTrace(); } } } @@ -113,38 +113,38 @@ public class SinglePlotArea extends GridPlotWorld { new ConfigurationNode("void", this.VOID, "Void world", Configuration.BOOLEAN)}; } - @Nullable @Override public Plot getOwnedPlot(@Nonnull final Location location) { + @Nullable @Override public Plot getOwnedPlot(@NotNull final Location location) { PlotId pid = PlotId.fromStringOrNull(location.getWorld()); Plot plot = pid == null ? null : this.plots.get(pid); return plot == null ? null : plot.getBasePlot(false); } - @Nullable @Override public Plot getOwnedPlotAbs(@Nonnull Location location) { + @Nullable @Override public Plot getOwnedPlotAbs(@NotNull Location location) { PlotId pid = PlotId.fromStringOrNull(location.getWorld()); return pid == null ? null : plots.get(pid); } - @Nullable @Override public Plot getPlot(@Nonnull final Location location) { + @Nullable @Override public Plot getPlot(@NotNull final Location location) { PlotId pid = PlotId.fromStringOrNull(location.getWorld()); return pid == null ? null : getPlot(pid); } - @Nullable @Override public Plot getPlotAbs(@Nonnull final Location location) { + @Nullable @Override public Plot getPlotAbs(@NotNull final Location location) { final PlotId pid = PlotId.fromStringOrNull(location.getWorld()); return pid == null ? null : getPlotAbs(pid); } - public boolean addPlot(@Nonnull Plot plot) { + public boolean addPlot(@NotNull Plot plot) { plot = adapt(plot); return super.addPlot(plot); } - @Override public boolean addPlotAbs(@Nonnull Plot plot) { + @Override public boolean addPlotAbs(@NotNull Plot plot) { plot = adapt(plot); return super.addPlotAbs(plot); } - @Override public boolean addPlotIfAbsent(@Nonnull Plot plot) { + @Override public boolean addPlotIfAbsent(@NotNull Plot plot) { plot = adapt(plot); return super.addPlotIfAbsent(plot); } @@ -160,7 +160,7 @@ public class SinglePlotArea extends GridPlotWorld { return p; } - @Nullable public Plot getPlotAbs(@Nonnull final PlotId id) { + @Nullable public Plot getPlotAbs(@NotNull final PlotId id) { Plot plot = getOwnedPlotAbs(id); if (plot == null) { return new SinglePlot(this, id); @@ -168,7 +168,7 @@ public class SinglePlotArea extends GridPlotWorld { return plot; } - @Nullable public Plot getPlot(@Nonnull PlotId id) { + @Nullable public Plot getPlot(@NotNull PlotId id) { // TODO Plot plot = getOwnedPlotAbs(id); if (plot == null) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java index 0a5b77515..b2b88d342 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java @@ -10,7 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.object.*; import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotArea; import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.List; import java.util.Optional; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/MainUtil.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/MainUtil.java index e45d70caf..1f42d6772 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/MainUtil.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/MainUtil.java @@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags; import com.github.intellectualsites.plotsquared.plot.object.*; import com.github.intellectualsites.plotsquared.plot.object.stream.AbstractDelegateOutputStream; import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; @@ -329,7 +329,7 @@ public class MainUtil { * @param owner * @return The player's name, None, Everyone or Unknown */ - @Nonnull public static String getName(UUID owner) { + @NotNull public static String getName(UUID owner) { if (owner == null) { return Captions.NONE.getTranslated(); } @@ -358,7 +358,7 @@ public class MainUtil { * @return * @see Plot#getCorners() */ - @Nonnull public static Location[] getCorners(String world, Collection regions) { + @NotNull public static Location[] getCorners(String world, Collection regions) { Location min = null; Location max = null; for (RegionWrapper region : regions) { @@ -560,11 +560,11 @@ public class MainUtil { * Send a message to the player. * * @param player Player to receive message - * @param msg Message to send + * @param message Message to send * @return true Can be used in things such as commands (return PlayerFunctions.sendMessage(...)) */ - public static boolean sendMessage(PlotPlayer player, String msg) { - return sendMessage(player, msg, true); + public static boolean sendMessage(PlotPlayer player, String message) { + return sendMessage(player, message, true); } /** @@ -585,7 +585,7 @@ public class MainUtil { * @param prefix If the message should be prefixed with the configured prefix * @return */ - public static boolean sendMessage(CommandCaller player, String msg, boolean prefix) { + public static boolean sendMessage(CommandCaller player, @NotNull String msg, boolean prefix) { if (!msg.isEmpty()) { if (player == null) { String message = (prefix ? Captions.PREFIX.getTranslated() : "") + msg; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/SchematicHandler.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/SchematicHandler.java index 6ce59fe6c..9742ffb98 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/SchematicHandler.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/SchematicHandler.java @@ -327,9 +327,9 @@ public abstract class SchematicHandler { public Schematic getSchematic(@NotNull URL url) { try { - ReadableByteChannel rbc = Channels.newChannel(url.openStream()); - InputStream is = Channels.newInputStream(rbc); - return getSchematic(is); + ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream()); + InputStream inputStream = Channels.newInputStream(readableByteChannel); + return getSchematic(inputStream); } catch (IOException e) { e.printStackTrace(); } @@ -338,15 +338,15 @@ public abstract class SchematicHandler { public Schematic getSchematic(@NotNull InputStream is) { try { - SpongeSchematicReader ssr = + SpongeSchematicReader schematicReader = new SpongeSchematicReader(new NBTInputStream(new GZIPInputStream(is))); - BlockArrayClipboard clip = (BlockArrayClipboard) ssr.read(); + BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read(); return new Schematic(clip); } catch (IOException ignored) { try { - MCEditSchematicReader msr = + MCEditSchematicReader schematicReader = new MCEditSchematicReader(new NBTInputStream(new GZIPInputStream(is))); - BlockArrayClipboard clip = (BlockArrayClipboard) msr.read(); + BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read(); return new Schematic(clip); } catch (IOException e) { e.printStackTrace(); diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandler.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandler.java index 315687463..60a0d778b 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandler.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandler.java @@ -11,7 +11,7 @@ import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper; import com.google.common.collect.BiMap; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandlerImplementation.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandlerImplementation.java index 55ff35c95..17ab6b5ce 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandlerImplementation.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/UUIDHandlerImplementation.java @@ -15,7 +15,7 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java index 6993c3208..7f44d2931 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java @@ -102,8 +102,7 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue { lastWrappedChunk.setBlock(x & 15, y, z & 15, id); LocalChunk previous = this.blockChunks.put(pair, lastWrappedChunk); if (previous == null) { - chunks.add(lastWrappedChunk); - return true; + return chunks.add(lastWrappedChunk); } this.blockChunks.put(pair, previous); lastWrappedChunk = previous; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/DelegateLocalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/DelegateLocalBlockQueue.java index 0c797c706..c5c17b4a4 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/DelegateLocalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/DelegateLocalBlockQueue.java @@ -102,9 +102,10 @@ public class DelegateLocalBlockQueue extends LocalBlockQueue { } } - @Override public void enqueue() { + @Override public boolean enqueue() { if (parent != null) { - parent.enqueue(); + return parent.enqueue(); } + return false; } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/GlobalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/GlobalBlockQueue.java index 6d75b6bfb..3373f8e57 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/GlobalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/GlobalBlockQueue.java @@ -45,10 +45,10 @@ public class GlobalBlockQueue { public GlobalBlockQueue(QueueProvider provider, int threads) { this.provider = provider; - activeQueues = new ConcurrentLinkedDeque<>(); - inactiveQueues = new ConcurrentLinkedDeque<>(); - runnables = new ConcurrentLinkedDeque<>(); - running = new AtomicBoolean(); + this.activeQueues = new ConcurrentLinkedDeque<>(); + this.inactiveQueues = new ConcurrentLinkedDeque<>(); + this.runnables = new ConcurrentLinkedDeque<>(); + this.running = new AtomicBoolean(); this.PARALLEL_THREADS = threads; } @@ -151,12 +151,20 @@ public class GlobalBlockQueue { return false; } - public void enqueue(LocalBlockQueue queue) { - inactiveQueues.remove(queue); + /** + * TODO Documentation needed. + * + * @param queue todo + * @return true if added to queue, false otherwise + */ + public boolean enqueue(LocalBlockQueue queue) { + boolean success = false; + success = inactiveQueues.remove(queue); if (queue.size() > 0 && !activeQueues.contains(queue)) { queue.optimize(); - activeQueues.add(queue); + success = activeQueues.add(queue); } + return success; } public void dequeue(LocalBlockQueue queue) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/LocalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/LocalBlockQueue.java index 53196966e..04a9e2f0c 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/LocalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/LocalBlockQueue.java @@ -16,8 +16,12 @@ import java.util.Map; public abstract class LocalBlockQueue { - public LocalBlockQueue(String world) { - // Implement this elsewhere + /** + * Needed for compatibility with FAWE. + * + * @param world unused + */ + @Deprecated public LocalBlockQueue(String world) { } public ScopedLocalBlockQueue getForChunk(int x, int z) { @@ -92,8 +96,8 @@ public abstract class LocalBlockQueue { } } - public void enqueue() { - GlobalBlockQueue.IMP.enqueue(this); + public boolean enqueue() { + return GlobalBlockQueue.IMP.enqueue(this); } public void setCuboid(Location pos1, Location pos2, PlotBlock block) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/ScopedLocalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/ScopedLocalBlockQueue.java index c9065f65e..7e41887ed 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/ScopedLocalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/ScopedLocalBlockQueue.java @@ -80,22 +80,22 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue { int bx = minX; int bz = minZ; PlotArea area = PlotSquared.get().getPlotArea(getWorld(), null); - Location loc = new Location(getWorld(), bx, 0, bz); + Location location = new Location(getWorld(), bx, 0, bz); if (area != null) { PlotManager manager = area.getPlotManager(); for (int x = 0; x < 16; x++) { - loc.setX(bx + x); + location.setX(bx + x); for (int z = 0; z < 16; z++) { - loc.setZ(bz + z); - task.run(area.getPlotAbs(loc), x, z); + location.setZ(bz + z); + task.run(area.getPlotAbs(location), x, z); } } } else { for (int x = 0; x < 16; x++) { - loc.setX(bx + x); + location.setX(bx + x); for (int z = 0; z < 16; z++) { - loc.setZ(bz + z); - task.run(loc.getPlotAbs(), x, z); + location.setZ(bz + z); + task.run(location.getPlotAbs(), x, z); } } } diff --git a/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDBTest.java b/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDBTest.java index 1ef5c92ec..a2cc07d1b 100644 --- a/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDBTest.java +++ b/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/database/AbstractDBTest.java @@ -1,11 +1,19 @@ package com.github.intellectualsites.plotsquared.plot.database; import com.github.intellectualsites.plotsquared.plot.flag.Flag; -import com.github.intellectualsites.plotsquared.plot.object.*; +import com.github.intellectualsites.plotsquared.plot.object.Plot; +import com.github.intellectualsites.plotsquared.plot.object.PlotArea; +import com.github.intellectualsites.plotsquared.plot.object.PlotCluster; +import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import com.github.intellectualsites.plotsquared.plot.object.RunnableVal; import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; public class AbstractDBTest implements AbstractDB { @@ -149,7 +157,7 @@ public class AbstractDBTest implements AbstractDB { @Override public void setComment(Plot plot, PlotComment comment) { } - @Override public void getComments(@Nonnull Plot plot, String inbox, + @Override public void getComments(@NotNull Plot plot, String inbox, RunnableVal> whenDone) { } diff --git a/Nukkit/src/main/resources/plugin.yml b/Nukkit/src/main/resources/plugin.yml index a25e26cf9..d17737c50 100644 --- a/Nukkit/src/main/resources/plugin.yml +++ b/Nukkit/src/main/resources/plugin.yml @@ -119,6 +119,7 @@ permissions: plots.toggle: true plots.toggle.titles: true plots.toggle.chat: true + plots.toggle.time: true plots.set.biome: true plots.set.home: true plots.set.alias: true diff --git a/gradlew b/gradlew index 8e25e6c19..b0d6d0ab5 100755 --- a/gradlew +++ b/gradlew @@ -7,7 +7,7 @@ # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, diff --git a/gradlew.bat b/gradlew.bat index 9618d8d96..9991c5032 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -5,7 +5,7 @@ @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem -@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem http://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS,