diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Command.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Command.java index eda65bc73..10309f1da 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Command.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Command.java @@ -36,6 +36,10 @@ public enum Command { // (Rating system) (ratings can be stored as the average, and number of // ratings) // - /plot rate + /** + * + */ + UNCLAIM("unclaim"), /** * */ diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java index 701b06fd8..41a1a27a9 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java @@ -51,25 +51,45 @@ public class MainCommand implements CommandExecutor, TabCompleter { private final static SubCommand[] _subCommands = new SubCommand[]{ - new Ban(), new Unban(), - new OP(), new DEOP(), - new Claim(), new Paste(), - new Copy(), new Clipboard(), - new Auto(), new Home(), - new Visit(), new TP(), - new Set(), new Clear(), - new Delete(), new SetOwner(), - new Denied(), new Helpers(), - new Trusted(), new Info(), - new list(), new Help(), - new Debug(), new Schematic(), - new plugin(), new Inventory(), - new Purge(), new Reload(), - new Merge(), new Unlink(), - new Kick(), new Setup(), - new DebugClaimTest(), new Inbox(), - new Comment(), new Database(), - new Swap(), new MusicSubcommand()}; + new Ban(), + new Unban(), + new OP(), + new DEOP(), + new Claim(), + new Paste(), + new Copy(), + new Clipboard(), + new Auto(), + new Home(), + new Visit(), + new TP(), + new Set(), + new Clear(), + new Delete(), + new SetOwner(), + new Denied(), + new Helpers(), + new Trusted(), + new Info(), + new list(), + new Help(), + new Debug(), + new Schematic(), + new plugin(), + new Inventory(), + new Purge(), + new Reload(), + new Merge(), + new Unlink(), + new Kick(), + new Setup(), + new DebugClaimTest(), + new Inbox(), + new Comment(), + new Database(), + new Unclaim(), + new Swap(), + new MusicSubcommand()}; public final static ArrayList subCommands = new ArrayList() { { diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Unclaim.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Unclaim.java new file mode 100644 index 000000000..20dc450d2 --- /dev/null +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Unclaim.java @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// PlotSquared - A plot manager and world generator for the Bukkit API / +// Copyright (c) 2014 IntellectualSites/IntellectualCrafters / +// / +// This program is free software; you can redistribute it and/or modify / +// it under the terms of the GNU General Public License as published by / +// the Free Software Foundation; either version 3 of the License, or / +// (at your option) any later version. / +// / +// This program is distributed in the hope that it will be useful, / +// but WITHOUT ANY WARRANTY; without even the implied warranty of / +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +// GNU General Public License for more details. / +// / +// You should have received a copy of the GNU General Public License / +// along with this program; if not, write to the Free Software Foundation, / +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA / +// / +// You can contact us via: support@intellectualsites.com / +//////////////////////////////////////////////////////////////////////////////////////////////////// + +package com.intellectualcrafters.plot.commands; + +import com.intellectualcrafters.plot.PlotMain; +import com.intellectualcrafters.plot.config.C; +import com.intellectualcrafters.plot.object.Plot; +import com.intellectualcrafters.plot.object.PlotId; +import com.intellectualcrafters.plot.util.PlayerFunctions; +import com.intellectualcrafters.plot.util.PlotHelper; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class Unclaim extends SubCommand { + + public Unclaim() { + super(Command.UNCLAIM, "Unclaim a plot", "unclaim", CommandCategory.ACTIONS, false); + } + + @Override + public boolean execute(final Player plr, final String... args) { + if (plr == null) { + // Is console + if (args.length < 2) { + PlotMain.sendConsoleSenderMessage("You need to specify two arguments: ID (0;0) & World (world)"); + } else { + PlotId id = PlotId.fromString(args[0]); + String world = args[1]; + if (id == null) { + PlotMain.sendConsoleSenderMessage("Invalid Plot ID: " + args[0]); + } else { + if (!PlotMain.isPlotWorld(world)) { + PlotMain.sendConsoleSenderMessage("Invalid plot world: " + world); + } else { + Plot plot = PlotHelper.getPlot(Bukkit.getWorld(world), id); + if (plot == null) { + PlotMain.sendConsoleSenderMessage("Could not find plot " + args[0] + " in world " + world); + } else { + PlotMain.sendConsoleSenderMessage("Plot " + plot.getId().toString() + " cleared."); + } + } + } + } + return true; + } + + if (!PlayerFunctions.isInPlot(plr)) { + return sendMessage(plr, C.NOT_IN_PLOT); + } + final Plot plot = PlayerFunctions.getCurrentPlot(plr); + if (!PlayerFunctions.getTopPlot(plr.getWorld(), plot).equals(PlayerFunctions.getBottomPlot(plr.getWorld(), plot))) { + return sendMessage(plr, C.UNLINK_REQUIRED); + } + if (((plot == null) || !plot.hasOwner() || !plot.getOwner().equals(plr.getUniqueId())) && !PlotMain.hasPermission(plr, "plots.admin")) { + return sendMessage(plr, C.NO_PLOT_PERMS); + } + return true; + } +}