From e161209a46728f03879caaa047fdc97bfbd83bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Tue, 7 Apr 2020 22:12:52 +0200 Subject: [PATCH] Fix plot claiming --- .../plotsquared/plot/commands/Claim.java | 15 ++++++++--- .../plotsquared/plot/database/SQLManager.java | 1 - .../plotsquared/plot/object/Plot.java | 27 ++++++++++++++++--- 3 files changed, 36 insertions(+), 7 deletions(-) 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 3a17fb183..559df28ef 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 @@ -101,8 +101,12 @@ public class Claim extends SubCommand { final String finalSchematic = schematic; DBFunc.createPlotSafe(plot, () -> TaskManager.IMP.sync(new RunnableVal() { @Override public void run(Object value) { - plot.claim(player, true, finalSchematic); - if (area.isAutoMerge()) { + if (!plot.claim(player, true, finalSchematic)) { + PlotSquared.get().getLogger().log(Captions.PREFIX.getTranslated() + + String.format("Failed to claim plot %s", plot.getId().toCommaSeparatedString())); + sendMessage(player, Captions.PLOT_NOT_CLAIMED); + plot.owner = null; + } else if (area.isAutoMerge()) { PlotMergeEvent event = PlotSquared.get().getEventDispatcher() .callMerge(plot, Direction.ALL, Integer.MAX_VALUE, player); if (event.getEventResult() == Result.DENY) { @@ -112,7 +116,12 @@ public class Claim extends SubCommand { } } } - }), () -> sendMessage(player, Captions.PLOT_NOT_CLAIMED)); + }), () -> { + PlotSquared.get().getLogger().log(Captions.PREFIX.getTranslated() + + String.format("Failed to add plot %s to the database", plot.getId().toCommaSeparatedString())); + sendMessage(player, Captions.PLOT_NOT_CLAIMED); + plot.owner = null; + }); return true; } } 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 ee4bf35fa..b3d52a114 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 @@ -978,7 +978,6 @@ import java.util.concurrent.atomic.AtomicInteger; } public void createPlotSafe(final Plot plot, final Runnable success, final Runnable failure) { - final long timestamp = plot.getTimestamp(); addPlotTask(plot, new UniqueStatement("createPlotSafe_" + plot.hashCode()) { @Override public void set(PreparedStatement statement) throws SQLException { statement.setInt(1, plot.getId().x); 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 4aac2dd11..17d857ed2 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 @@ -1,7 +1,6 @@ package com.github.intellectualsites.plotsquared.plot.object; import com.github.intellectualsites.plotsquared.plot.PlotSquared; -import com.github.intellectualsites.plotsquared.plot.config.CaptionUtility; import com.github.intellectualsites.plotsquared.plot.config.Captions; import com.github.intellectualsites.plotsquared.plot.config.Configuration; import com.github.intellectualsites.plotsquared.plot.config.Settings; @@ -19,7 +18,14 @@ import com.github.intellectualsites.plotsquared.plot.generator.SquarePlotWorld; import com.github.intellectualsites.plotsquared.plot.listener.PlotListener; import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment; import com.github.intellectualsites.plotsquared.plot.object.schematic.Schematic; -import com.github.intellectualsites.plotsquared.plot.util.*; +import com.github.intellectualsites.plotsquared.plot.util.ChunkManager; +import com.github.intellectualsites.plotsquared.plot.util.MainUtil; +import com.github.intellectualsites.plotsquared.plot.util.MathMan; +import com.github.intellectualsites.plotsquared.plot.util.Permissions; +import com.github.intellectualsites.plotsquared.plot.util.SchematicHandler; +import com.github.intellectualsites.plotsquared.plot.util.TaskManager; +import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler; +import com.github.intellectualsites.plotsquared.plot.util.WorldUtil; import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue; import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue; import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager; @@ -1581,6 +1587,9 @@ public class Plot { public boolean claim(final PlotPlayer player, boolean teleport, String schematic) { if (!canClaim(player)) { + PlotSquared.debug(Captions.PREFIX.getTranslated() + + String.format("Player %s attempted to claim plot %s, but was not allowed", + player.getName(), this.getId().toCommaSeparatedString())); return false; } return claim(player, teleport, schematic, true); @@ -1591,6 +1600,9 @@ public class Plot { if (updateDB) { if (!create(player.getUUID(), true)) { + PlotSquared.debug(Captions.PREFIX.getTranslated() + + String.format("Player %s attempted to claim plot %s, but the database failed to update", + player.getName(), this.getId().toCommaSeparatedString())); return false; } } else { @@ -1676,6 +1688,9 @@ public class Plot { }); return true; } + PlotSquared.get().getLogger().log(Captions.PREFIX.getTranslated() + + String.format("Failed to add plot %s to plot area %s", this.getId().toCommaSeparatedString(), + this.area.toString())); return false; } @@ -2212,7 +2227,13 @@ public class Plot { return false; } } - return this.guessOwner() == null && !isMerged(); + final UUID owner = this.guessOwner(); + if (owner != null) { + if (player == null || !player.getUUID().equals(owner)) { + return false; + } + } + return !isMerged(); } /**