This commit is contained in:
boy0001 2015-07-27 23:10:14 +10:00
parent dce25ba07a
commit a39ec22c8c
87 changed files with 785 additions and 752 deletions

View File

@ -34,7 +34,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
@CommandDeclaration( @CommandDeclaration(
@ -44,7 +44,7 @@ import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
usage = "/plot add <player>", usage = "/plot add <player>",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
permission = "plots.add", permission = "plots.add",
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Add extends SubCommand { public class Add extends SubCommand {
@ -55,8 +55,7 @@ public class Add extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -34,13 +34,13 @@ import com.intellectualcrafters.plot.util.EconHandler;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "auto", command = "auto",
permission = "plots.auto", permission = "plots.auto",
category = CommandCategory.CLAIMING, category = CommandCategory.CLAIMING,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
description = "Claim the nearest plot", description = "Claim the nearest plot",
aliases = {"a"}, aliases = {"a"},
usage = "/plot auto" usage = "/plot auto"
@ -77,8 +77,8 @@ public class Auto extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
String world; String world;
int size_x = 1; int size_x = 1;
int size_z = 1; int size_z = 1;

View File

@ -36,7 +36,7 @@ import com.intellectualcrafters.plot.util.EconHandler;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "buy", command = "buy",
@ -45,13 +45,13 @@ import com.intellectualsites.commands.CommandCaller;
usage = "/plot buy", usage = "/plot buy",
permission = "plots.buy", permission = "plots.buy",
category = CommandCategory.CLAIMING, category = CommandCategory.CLAIMING,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Buy extends SubCommand { public class Buy extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (EconHandler.manager == null) { if (EconHandler.manager == null) {
return sendMessage(plr, C.ECON_DISABLED); return sendMessage(plr, C.ECON_DISABLED);
} }

View File

@ -5,7 +5,7 @@ import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "chat", command = "chat",
@ -13,13 +13,13 @@ import com.intellectualsites.commands.CommandCaller;
usage = "/plot chat [on|off]", usage = "/plot chat [on|off]",
permission = "plots.chat", permission = "plots.chat",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Chat extends SubCommand { public class Chat extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final String world = plr.getLocation().getWorld(); final String world = plr.getLocation().getWorld();
if (!PS.get().isPlotWorld(world)) { if (!PS.get().isPlotWorld(world)) {
return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); return !sendMessage(plr, C.NOT_IN_PLOT_WORLD);

View File

@ -35,14 +35,14 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic; import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "claim", command = "claim",
aliases = {"c"}, aliases = {"c"},
description = "Claim the current plot you're standing on", description = "Claim the current plot you're standing on",
category = CommandCategory.CLAIMING, category = CommandCategory.CLAIMING,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.claim", permission = "plots.claim",
usage = "/plot claim" usage = "/plot claim"
) )
@ -96,8 +96,8 @@ public class Claim extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
String schematic = ""; String schematic = "";
if (args.length >= 1) { if (args.length >= 1) {
schematic = args[0]; schematic = args[0];

View File

@ -23,7 +23,7 @@ package com.intellectualcrafters.plot.commands;
import java.util.Set; import java.util.Set;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Location;
@ -36,7 +36,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "clear", command = "clear",
@ -48,39 +48,7 @@ import com.intellectualsites.commands.CommandCaller;
public class Clear extends SubCommand { public class Clear extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if (plr == null) {
// Is console
if (args.length < 2) {
PS.log("You need to specify two arguments: ID (0;0) & World (world)");
} else {
final PlotId id = PlotId.fromString(args[0]);
final String world = args[1];
if (id == null) {
PS.log("Invalid Plot ID: " + args[0]);
} else {
if (!PS.get().isPlotWorld(world)) {
PS.log("Invalid plot world: " + world);
} else {
final Plot plot = MainUtil.getPlot(world, id);
if (plot == null) {
PS.log("Could not find plot " + args[0] + " in world " + world);
} else {
Runnable runnable = new Runnable() {
@Override
public void run() {
MainUtil.clear(plot, plot.owner == null, null);
PS.log("Plot " + plot.getId().toString() + " cleared.");
}
};
TaskManager.runTask(runnable);
}
}
}
}
return true;
}
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot; final Plot plot;
if (args.length == 2) { if (args.length == 2) {

View File

@ -29,12 +29,6 @@ import org.bukkit.generator.ChunkGenerator;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.generator.PlotGenerator;
import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller;
import com.plotsquared.bukkit.generator.AugmentedPopulator;
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
import com.plotsquared.bukkit.generator.HybridGen;
import com.intellectualcrafters.plot.object.BlockLoc; import com.intellectualcrafters.plot.object.BlockLoc;
import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
@ -48,21 +42,25 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration;
import com.plotsquared.bukkit.generator.AugmentedPopulator;
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
import com.plotsquared.bukkit.generator.HybridGen;
import com.plotsquared.bukkit.util.SetupUtils; import com.plotsquared.bukkit.util.SetupUtils;
@CommandDeclaration( @CommandDeclaration(
command = "cluser", command = "cluser",
aliases = {"clusters"}, aliases = {"clusters"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.cluster", permission = "plots.cluster",
description = "Manage a plot cluster" description = "Manage a plot cluster"
) )
public class Cluster extends SubCommand { public class Cluster extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
// list, create, delete, resize, invite, kick, leave, helpers, tp, sethome // list, create, delete, resize, invite, kick, leave, helpers, tp, sethome
if (args.length == 0) { if (args.length == 0) {
// return arguments // return arguments

View File

@ -23,7 +23,7 @@ package com.intellectualcrafters.plot.commands;
import java.util.Arrays; import java.util.Arrays;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
@ -41,14 +41,13 @@ import com.intellectualcrafters.plot.util.MainUtil;
aliases = {"msg"}, aliases = {"msg"},
description = "Comment on a plot", description = "Comment on a plot",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plot.comment" permission = "plot.comment"
) )
public class Comment extends SubCommand { public class Comment extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer player, String[] args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
if (args.length < 2) { if (args.length < 2) {
sendMessage(player, C.COMMENT_SYNTAX, StringUtils.join(CommentManager.inboxes.keySet(),"|")); sendMessage(player, C.COMMENT_SYNTAX, StringUtils.join(CommentManager.inboxes.keySet(),"|"));
return false; return false;

View File

@ -27,7 +27,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
@ -43,7 +43,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
permission = "plots.admin", permission = "plots.admin",
description = "Condense a plotworld", description = "Condense a plotworld",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PS.class requiredType = RequiredType.CONSOLE
) )
public class Condense extends SubCommand { public class Condense extends SubCommand {
@ -54,8 +54,7 @@ public class Condense extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, String ... args) { public boolean onCommand(final PlotPlayer plr, String ... args) {
final PlotPlayer plr = null;
if ((args.length != 2) && (args.length != 3)) { if ((args.length != 2) && (args.length != 3)) {
MainUtil.sendMessage(plr, "/plot condense <world> <start|stop|info> [radius]"); MainUtil.sendMessage(plr, "/plot condense <world> <start|stop|info> [radius]");
return false; return false;

View File

@ -20,7 +20,7 @@
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.CmdInstance; import com.intellectualcrafters.plot.object.CmdInstance;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
@ -28,7 +28,7 @@ import com.intellectualcrafters.plot.util.CmdConfirm;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "confirm", command = "confirm",
@ -39,8 +39,7 @@ import com.intellectualsites.commands.CommandCaller;
public class Confirm extends SubCommand { public class Confirm extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
CmdInstance command = CmdConfirm.getPending(plr); CmdInstance command = CmdConfirm.getPending(plr);
if (command == null) { if (command == null) {
MainUtil.sendMessage(plr, C.FAILED_CONFIRM); MainUtil.sendMessage(plr, C.FAILED_CONFIRM);

View File

@ -29,7 +29,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "copy", command = "copy",
@ -38,7 +38,7 @@ import com.intellectualsites.commands.CommandCaller;
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
description = "Copy a plot", description = "Copy a plot",
usage = "/plot copy <X;Z>", usage = "/plot copy <X;Z>",
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Copy extends SubCommand { public class Copy extends SubCommand {
@ -49,8 +49,7 @@ public class Copy extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot1 = MainUtil.getPlot(loc); final Plot plot1 = MainUtil.getPlot(loc);
if (plot1 == null) { if (plot1 == null) {

View File

@ -29,13 +29,13 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "createroadschematic", command = "createroadschematic",
aliases = {"crs"}, aliases = {"crs"},
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.createroadschematic", permission = "plots.createroadschematic",
description = "Add a road schematic to your world using the roads around your current plot", description = "Add a road schematic to your world using the roads around your current plot",
usage = "/plot createroadschematic" usage = "/plot createroadschematic"
@ -43,8 +43,7 @@ import com.intellectualsites.commands.CommandCaller;
public class CreateRoadSchematic extends SubCommand { public class CreateRoadSchematic extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer player, final String ... args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
final Location loc = player.getLocation(); final Location loc = player.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -6,7 +6,7 @@ import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.database.MySQL; import com.intellectualcrafters.plot.database.MySQL;
import com.intellectualcrafters.plot.database.SQLManager; import com.intellectualcrafters.plot.database.SQLManager;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
@ -16,7 +16,7 @@ import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "database", command = "database",
@ -24,7 +24,9 @@ import com.intellectualsites.commands.CommandCaller;
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
permission = "plots.database", permission = "plots.database",
description = "Convert/Backup Storage", description = "Convert/Backup Storage",
requiredType = RequiredType.CONSOLE,
usage = "/plots database <type> [details...]" usage = "/plots database <type> [details...]"
) )
public class Database extends SubCommand { public class Database extends SubCommand {
@ -73,8 +75,7 @@ public class Database extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if (args.length < 1) { if (args.length < 1) {
return sendMessage(plr, "/plot database [sqlite/mysql]"); return sendMessage(plr, "/plot database [sqlite/mysql]");
} }

View File

@ -21,13 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.Lag; import com.intellectualcrafters.plot.util.Lag;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debug", command = "debug",
@ -39,8 +39,7 @@ import com.intellectualsites.commands.CommandCaller;
public class Debug extends SubCommand { public class Debug extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if ((args.length > 0) && args[0].equalsIgnoreCase("msg")) { if ((args.length > 0) && args[0].equalsIgnoreCase("msg")) {
final StringBuilder msg = new StringBuilder(); final StringBuilder msg = new StringBuilder();
for (final C c : C.values()) { for (final C c : C.values()) {

View File

@ -9,14 +9,14 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugallowunsafe", command = "debugallowunsafe",
description = "Allow unsafe actions until toggled off", description = "Allow unsafe actions until toggled off",
usage = "/plot debugallowunsafe", usage = "/plot debugallowunsafe",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.debugallowunsafe" permission = "plots.debugallowunsafe"
) )
public class DebugAllowUnsafe extends SubCommand { public class DebugAllowUnsafe extends SubCommand {
@ -24,8 +24,8 @@ public class DebugAllowUnsafe extends SubCommand {
public static final List<UUID> unsafeAllowed = new ArrayList<>(); public static final List<UUID> unsafeAllowed = new ArrayList<>();
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (unsafeAllowed.contains(plr.getUUID())) { if (unsafeAllowed.contains(plr.getUUID())) {
unsafeAllowed.remove(plr.getUUID()); unsafeAllowed.remove(plr.getUUID());
sendMessage(plr, C.DEBUGALLOWUNSAFE_OFF); sendMessage(plr, C.DEBUGALLOWUNSAFE_OFF);

View File

@ -41,13 +41,13 @@ import com.intellectualcrafters.plot.util.EventUtil;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugclaimtest", command = "debugclaimtest",
description = "If you accidentally delete your database, this command will attempt to restore all plots based on the data from plot sighs. Execution time may vary", description = "If you accidentally delete your database, this command will attempt to restore all plots based on the data from plot sighs. Execution time may vary",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
permission = "plots.debugclaimtest" permission = "plots.debugclaimtest"
) )
public class DebugClaimTest extends SubCommand { public class DebugClaimTest extends SubCommand {
@ -70,7 +70,7 @@ public class DebugClaimTest extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
if (args.length < 3) { if (args.length < 3) {
return !MainUtil.sendMessage(null, "If you accidentally delete your database, this command will attempt to restore all plots based on the data from the plot signs. \n\n&cMissing world arg /plot debugclaimtest {world} {PlotId min} {PlotId max}"); return !MainUtil.sendMessage(null, "If you accidentally delete your database, this command will attempt to restore all plots based on the data from the plot signs. \n\n&cMissing world arg /plot debugclaimtest {world} {PlotId min} {PlotId max}");
} }

View File

@ -21,7 +21,7 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.generator.SquarePlotWorld; import com.intellectualcrafters.plot.generator.SquarePlotWorld;
import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Location;
@ -33,7 +33,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugclear", command = "debugclear",
@ -44,46 +44,7 @@ import com.intellectualsites.commands.CommandCaller;
public class DebugClear extends SubCommand { public class DebugClear extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(final PlotPlayer plr, String[] args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if (plr == null) {
// Is console
if (args.length < 2) {
PS.log("You need to specify two arguments: ID (0;0) & World (world)");
} else {
final PlotId id = PlotId.fromString(args[0]);
final String world = args[1];
if (id == null) {
PS.log("Invalid Plot ID: " + args[0]);
} else {
if (!PS.get().isPlotWorld(world) || !(PS.get().getPlotWorld(world) instanceof SquarePlotWorld)) {
PS.log("Invalid plot world: " + world);
} else {
final Plot plot = MainUtil.getPlot(world, id);
if (plot == null) {
PS.log("Could not find plot " + args[0] + " in world " + world);
} else {
final Location pos1 = MainUtil.getPlotBottomLoc(world, plot.id).add(1, 0, 1);
final Location pos2 = MainUtil.getPlotTopLoc(world, plot.id);
if (MainUtil.runners.containsKey(plot)) {
MainUtil.sendMessage(null, C.WAIT_FOR_TIMER);
return false;
}
MainUtil.runners.put(plot, 1);
ChunkManager.manager.regenerateRegion(pos1, pos2, new Runnable() {
@Override
public void run() {
MainUtil.runners.remove(plot);
PS.log("Plot " + plot.getId().toString() + " cleared.");
PS.log("&aDone!");
}
});
}
}
}
}
return true;
}
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if ((plot == null) || !(PS.get().getPlotWorld(loc.getWorld()) instanceof SquarePlotWorld)) { if ((plot == null) || !(PS.get().getPlotWorld(loc.getWorld()) instanceof SquarePlotWorld)) {
@ -109,8 +70,6 @@ public class DebugClear extends SubCommand {
MainUtil.sendMessage(plr, "&aDone!"); MainUtil.sendMessage(plr, "&aDone!");
} }
}); });
// sign
// wall
return true; return true;
} }
} }

View File

@ -30,9 +30,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -64,17 +64,12 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
public class DebugExec extends SubCommand { public class DebugExec extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(final PlotPlayer player, String[] args) {
final PlotPlayer player = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
final List<String> allowed_params = Arrays.asList("calibrate-analysis", "remove-flag", "stop-expire", "start-expire", "show-expired", "update-expired", "seen", "trim-check"); final List<String> allowed_params = Arrays.asList("calibrate-analysis", "remove-flag", "stop-expire", "start-expire", "show-expired", "update-expired", "seen", "trim-check");
if (args.length > 0) { if (args.length > 0) {
final String arg = args[0].toLowerCase(); final String arg = args[0].toLowerCase();
switch (arg) { switch (arg) {
case "analyze": { case "analyze": {
if (player == null) {
MainUtil.sendMessage(player, C.IS_CONSOLE);
return false;
}
Plot plot = MainUtil.getPlot(player.getLocation()); Plot plot = MainUtil.getPlot(player.getLocation());
if (plot == null) { if (plot == null) {
MainUtil.sendMessage(player, C.NOT_IN_PLOT); MainUtil.sendMessage(player, C.NOT_IN_PLOT);

View File

@ -30,7 +30,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.SetBlockQueue; import com.intellectualcrafters.plot.util.SetBlockQueue;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "fill", command = "fill",
@ -39,13 +39,12 @@ import com.intellectualsites.commands.CommandCaller;
usage = "/plot fill", usage = "/plot fill",
aliases = {"debugfill"}, aliases = {"debugfill"},
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class DebugFill extends SubCommand { public class DebugFill extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer player, final String ... args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
if (args.length != 1 || (!args[0].equalsIgnoreCase("outline") && !args[0].equalsIgnoreCase("all"))) { if (args.length != 1 || (!args[0].equalsIgnoreCase("outline") && !args[0].equalsIgnoreCase("all"))) {
MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot fill <outline|all>"); MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot fill <outline|all>");
return true; return true;

View File

@ -35,14 +35,14 @@ import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugfixflags", command = "debugfixflags",
usage = "/plot debugfixflags <world>", usage = "/plot debugfixflags <world>",
permission = "plots.debugfixflags", permission = "plots.debugfixflags",
description = "Attempt to fix all flags for a world", description = "Attempt to fix all flags for a world",
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
category = CommandCategory.DEBUG category = CommandCategory.DEBUG
) )
public class DebugFixFlags extends SubCommand { public class DebugFixFlags extends SubCommand {
@ -54,8 +54,7 @@ public class DebugFixFlags extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final PlotPlayer plr = null;
final String world = args[0]; final String world = args[0];
if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) { if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) {
MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_WORLD, args[0]); MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_WORLD, args[0]);

View File

@ -27,7 +27,7 @@ import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugloadtest", command = "debugloadtest",
@ -35,12 +35,12 @@ import com.intellectualsites.commands.CommandCaller;
description = "This debug command will force the reload of all plots in the DB", description = "This debug command will force the reload of all plots in the DB",
usage = "/plot debugloadtest", usage = "/plot debugloadtest",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PS.class requiredType = RequiredType.CONSOLE
) )
public class DebugLoadTest extends SubCommand { public class DebugLoadTest extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
try { try {
final Field fPlots = PS.class.getDeclaredField("plots"); final Field fPlots = PS.class.getDeclaredField("plots");
fPlots.setAccessible(true); fPlots.setAccessible(true);

View File

@ -1,7 +1,7 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.BukkitMain; import com.plotsquared.bukkit.BukkitMain;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
@ -26,7 +26,7 @@ import java.io.IOException;
public class DebugPaste extends SubCommand { public class DebugPaste extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, String[] args) { public boolean onCommand(final PlotPlayer plr, String[] args) {
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -36,7 +36,7 @@ public class DebugPaste extends SubCommand {
try { try {
latestLOG = HastebinUtility.upload(new File(BukkitMain.THIS.getDirectory(), "../../logs/latest.log")); latestLOG = HastebinUtility.upload(new File(BukkitMain.THIS.getDirectory(), "../../logs/latest.log"));
} catch(final Exception e) { } catch(final Exception e) {
caller.message("&clatest.log is too big to be pasted, will ignore"); plr.sendMessage("&clatest.log is too big to be pasted, will ignore");
latestLOG = "too big :("; latestLOG = "too big :(";
} }
StringBuilder b = new StringBuilder(); StringBuilder b = new StringBuilder();
@ -65,7 +65,7 @@ public class DebugPaste extends SubCommand {
b.append("\n# You can do so at https://github.com/IntellectualSites/PlotSquared/issues"); b.append("\n# You can do so at https://github.com/IntellectualSites/PlotSquared/issues");
String link = HastebinUtility.upload(b.toString()); String link = HastebinUtility.upload(b.toString());
caller.message(C.DEBUG_REPORT_CREATED.s().replace("%url%", link)); plr.sendMessage(C.DEBUG_REPORT_CREATED.s().replace("%url%", link));
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -29,12 +29,12 @@ import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugroadregen", command = "debugroadregen",
usage = "/plot debugroadregen", usage = "/plot debugroadregen",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
description = "Regenerate all roads based on the road schematic", description = "Regenerate all roads based on the road schematic",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
permission = "plots.debugroadregen" permission = "plots.debugroadregen"
@ -42,8 +42,7 @@ import com.intellectualsites.commands.CommandCaller;
public class DebugRoadRegen extends SubCommand { public class DebugRoadRegen extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer player, final String ... args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
final Location loc = player.getLocation(); final Location loc = player.getLocation();
final String world = loc.getWorld(); final String world = loc.getWorld();
if (!(PS.get().getPlotWorld(world) instanceof HybridPlotWorld)) { if (!(PS.get().getPlotWorld(world) instanceof HybridPlotWorld)) {

View File

@ -28,20 +28,20 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "debugsavetest", command = "debugsavetest",
permission = "plots.debugsavetest", permission = "plots.debugsavetest",
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
usage = "/plot debugsavetest", usage = "/plot debugsavetest",
description = "This command will force the recreation of all plots in the DB" description = "This command will force the recreation of all plots in the DB"
) )
public class DebugSaveTest extends SubCommand { public class DebugSaveTest extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
final ArrayList<Plot> plots = new ArrayList<Plot>(); final ArrayList<Plot> plots = new ArrayList<Plot>();
plots.addAll(PS.get().getPlots()); plots.addAll(PS.get().getPlots());
MainUtil.sendMessage(null, "&6Starting `DEBUGSAVETEST`"); MainUtil.sendMessage(null, "&6Starting `DEBUGSAVETEST`");

View File

@ -30,7 +30,7 @@ import java.util.UUID;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -57,7 +57,7 @@ import com.intellectualcrafters.plot.uuid.UUIDWrapper;
permission = "plots.admin", permission = "plots.admin",
description = "Debug UUID conversion", description = "Debug UUID conversion",
usage = "/plot uuidconvert <lower|offline|online>", usage = "/plot uuidconvert <lower|offline|online>",
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
category = CommandCategory.DEBUG category = CommandCategory.DEBUG
) )
public class DebugUUID extends SubCommand { public class DebugUUID extends SubCommand {
@ -69,7 +69,7 @@ public class DebugUUID extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer player = null; PlotPlayer player = null;
UUIDWrapper currentUUIDWrapper = UUIDHandler.getUUIDWrapper(); UUIDWrapper currentUUIDWrapper = UUIDHandler.getUUIDWrapper();

View File

@ -34,7 +34,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "delete", command = "delete",
@ -42,13 +42,13 @@ import com.intellectualsites.commands.CommandCaller;
description = "Delete a plot", description = "Delete a plot",
usage = "/plot delete", usage = "/plot delete",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Delete extends SubCommand { public class Delete extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -34,7 +34,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
@CommandDeclaration( @CommandDeclaration(
@ -43,7 +43,7 @@ import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
description = "Deny a user from a plot", description = "Deny a user from a plot",
usage = "/plot deny <player>", usage = "/plot deny <player>",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Deny extends SubCommand { public class Deny extends SubCommand {
@ -54,8 +54,8 @@ public class Deny extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -14,21 +14,21 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "download", command = "download",
aliases = {"dl"}, aliases = {"dl"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
description = "Download your plot", description = "Download your plot",
permission = "plots.download" permission = "plots.download"
) )
public class Download extends SubCommand { public class Download extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (!Settings.METRICS) { if (!Settings.METRICS) {
MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service");
return false; return false;

View File

@ -25,7 +25,7 @@ import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
@ -45,14 +45,14 @@ import com.intellectualcrafters.plot.util.Permissions;
aliases = {"f"}, aliases = {"f"},
description = "Manage plot flags", description = "Manage plot flags",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.flag" permission = "plots.flag"
) )
public class FlagCmd extends SubCommand { public class FlagCmd extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer player, final String ... args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
/* /*
* plot flag set fly true * plot flag set fly true
* plot flag remove fly * plot flag remove fly

View File

@ -8,7 +8,7 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "help", command = "help",
@ -20,7 +20,7 @@ import com.intellectualsites.commands.CommandCaller;
public class Help extends SubCommand { public class Help extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
return true; return true;
} }
} }

View File

@ -28,7 +28,7 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "home", command = "home",
@ -36,7 +36,7 @@ import com.intellectualsites.commands.CommandCaller;
description = "Go to your plot", description = "Go to your plot",
usage = "/plot home [id|alias]", usage = "/plot home [id|alias]",
category = CommandCategory.TELEPORT, category = CommandCategory.TELEPORT,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Home extends SubCommand { public class Home extends SubCommand {
@ -50,8 +50,8 @@ public class Home extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, String[] args) { public boolean onCommand(final PlotPlayer plr, String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final ArrayList<Plot> plots = PS.get().sortPlotsByWorld(PS.get().getPlots(plr)); final ArrayList<Plot> plots = PS.get().sortPlotsByWorld(PS.get().getPlots(plr));
if (plots.size() == 1) { if (plots.size() == 1) {
MainUtil.teleportPlayer(plr, plr.getLocation(), plots.get(0)); MainUtil.teleportPlayer(plr, plr.getLocation(), plots.get(0));

View File

@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
@ -43,7 +43,7 @@ import com.intellectualcrafters.plot.util.StringMan;
usage = "/plot inbox [inbox] [delete <index>|clear|page]", usage = "/plot inbox [inbox] [delete <index>|clear|page]",
permission = "plots.inbox", permission = "plots.inbox",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Inbox extends SubCommand { public class Inbox extends SubCommand {
@ -86,8 +86,8 @@ public class Inbox extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer player, final String[] args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
final Plot plot = MainUtil.getPlot(player.getLocation()); final Plot plot = MainUtil.getPlot(player.getLocation());
if (args.length == 0) { if (args.length == 0) {

View File

@ -25,10 +25,10 @@ import java.util.Collection;
import java.util.UUID; import java.util.UUID;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.flag.Flag; import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -88,9 +88,7 @@ public class Info extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, String[] args) { public boolean onCommand(final PlotPlayer player, String[] args) {
final PlotPlayer player = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
String arg = null; String arg = null;
Plot plot; Plot plot;
if (args.length > 0) arg = args[0] + ""; if (args.length > 0) arg = args[0] + "";

View File

@ -29,7 +29,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "kick", command = "kick",
@ -37,13 +37,13 @@ import com.intellectualsites.commands.CommandCaller;
description = "Kick a player from your plot", description = "Kick a player from your plot",
permission = "plots.kick", permission = "plots.kick",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Kick extends SubCommand { public class Kick extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -17,13 +17,13 @@ import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic; import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "load", command = "load",
aliases = {"restore"}, aliases = {"restore"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
description = "Load your plot", description = "Load your plot",
permission = "plots.load", permission = "plots.load",
usage = "/plot restore" usage = "/plot restore"
@ -31,8 +31,8 @@ import com.intellectualsites.commands.CommandCaller;
public class Load extends SubCommand { public class Load extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (!Settings.METRICS) { if (!Settings.METRICS) {
MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service");
return false; return false;

View File

@ -24,22 +24,23 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.UUID;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.ConsoleCaller;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.object.ConsolePlayer;
import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.Command; import com.intellectualsites.commands.Command;
import com.intellectualsites.commands.CommandHandlingOutput; import com.intellectualsites.commands.CommandHandlingOutput;
import com.intellectualsites.commands.CommandManager; import com.intellectualsites.commands.CommandManager;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualsites.commands.util.StringUtil;
/** /**
* PlotSquared command class * PlotSquared command class
@ -92,13 +93,12 @@ public class MainCommand extends CommandManager {
return false; return false;
} }
public static List<Command> getCommands(final CommandCategory category, final PlotPlayer player) { public static ArrayList<Command> getCommands(final CommandCategory category, final PlotPlayer player) {
final List<Command> cmds = new ArrayList<>(); ArrayList<Command> cmds = instance.getCommands();
for (final Command c : instance.commands.values()) { for (Iterator<Command> iter = cmds.iterator(); iter.hasNext();){
if (c.getRequiredType().isInstance(PlotPlayer.class)) { Command cmd = iter.next();
if ((category == null || (c.getCategory().equals(category))) && player.hasPermission(c.getPermission())) { if ((category != null && (cmd.getCategory().equals(category))) || !player.hasPermission(cmd.getPermission())) {
cmds.add(c); iter.remove();
}
} }
} }
return cmds; return cmds;
@ -142,106 +142,134 @@ public class MainCommand extends CommandManager {
return help; return help;
} }
public static boolean onCommand(final PlotPlayer player, final String cmd, final String... args) { public static void displayHelp(PlotPlayer player, String cat, int page) {
if ((args.length < 1) || ((args.length >= 1) && (args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("he")))) { if (cat != null && StringMan.isEqualIgnoreCase(cat, "all")) {
if (args.length < 2) { cat = null;
final StringBuilder builder = new StringBuilder();
builder.append(C.HELP_INFO.s());
for (final CommandCategory category : CommandCategory.values()) {
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", category.toString().toLowerCase()).replaceAll("%category_desc%", category.toString()));
}
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all").replaceAll("%category_desc%", "Display all commands"));
return MainUtil.sendMessage(player, builder.toString());
}
final String cat = args[1];
CommandCategory cato = null;
for (final CommandCategory category : CommandCategory.values()) {
if (cat.equalsIgnoreCase(category.toString())) {
cato = category;
break;
}
}
if ((cato == null) && !cat.equalsIgnoreCase("all")) {
final StringBuilder builder = new StringBuilder();
builder.append(C.HELP_INFO.s());
for (final CommandCategory category : CommandCategory.values()) {
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", category.toString().toLowerCase()).replaceAll("%category_desc%", category.toString()));
}
return MainUtil.sendMessage(player, builder.toString(), false);
}
final StringBuilder help = new StringBuilder();
int page = 0;
boolean digit = true;
String arg2;
if (args.length > 2) {
arg2 = args[2];
} else {
arg2 = "1";
}
for (final char c : arg2.toCharArray()) {
if (!Character.isDigit(c)) {
digit = false;
break;
}
}
if (digit) {
page = Integer.parseInt(arg2);
if (--page < 0) {
page = 0;
}
}
for (final String string : helpMenu(player, cato, page)) {
help.append(string).append("\n");
}
MainUtil.sendMessage(player, help.toString());
// return PlayerFunctions.sendMessage(player, help.toString());
} else {
CommandCaller caller;
if (player != null) {
caller = new PlotPlayerCaller(player);
} else {
caller = new ConsoleCaller();
}
StringBuilder builder = new StringBuilder(cmd).append(" ");
Iterator<String> iterator = Arrays.asList(args).iterator();
while (iterator.hasNext()) {
builder.append(iterator.next());
if (iterator.hasNext()) {
builder.append(" ");
}
}
instance.handle(caller, builder.toString());
// for (final SubCommand command : subCommands) {
// if (command.cmd.equalsIgnoreCase(args[0]) || command.alias.contains(args[0].toLowerCase())) {
// final String[] arguments = new String[args.length - 1];
// System.arraycopy(args, 1, arguments, 0, args.length - 1);
// if (command.permission.hasPermissipon(player)) {
// if ((player != null) || !command.isPlayer) {
// return command.execute(player, arguments);
// } else {
// return !MainUtil.sendMessage(null, C.IS_CONSOLE);
// }
// } else {
// return no_permission(player, command.permission.permission.toLowerCase());
// }
// }
// }
// MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND);
// final String[] commands = new String[subCommands.size()];
// for (int x = 0; x < subCommands.size(); x++) {
// commands[x] = subCommands.get(x).cmd;
// }
// /* Let's try to get a proper usage string */
// final String command = new StringComparison(args[0], commands).getBestMatch();
// return MainUtil.sendMessage(player, C.DID_YOU_MEAN, "/plot " + command);
// PlayerFunctions.sendMessage(player, C.DID_YOU_MEAN, new
// StringComparsion(args[0], commands).getBestMatch());
} }
if (cat == null && page == 0) {
final StringBuilder builder = new StringBuilder();
builder.append(C.HELP_INFO.s());
for (final CommandCategory category : CommandCategory.values()) {
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", category.toString().toLowerCase()).replaceAll("%category_desc%", category.toString()));
}
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all").replaceAll("%category_desc%", "Display all commands"));
MainUtil.sendMessage(player, builder.toString());
return;
}
CommandCategory cato = null;
for (final CommandCategory category : CommandCategory.values()) {
if (cat.equalsIgnoreCase(category.toString())) {
cato = category;
break;
}
}
if ((cato == null) && !cat.equalsIgnoreCase("all")) {
final StringBuilder builder = new StringBuilder();
builder.append(C.HELP_INFO.s());
for (final CommandCategory category : CommandCategory.values()) {
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", category.toString().toLowerCase()).replaceAll("%category_desc%", category.toString()));
}
MainUtil.sendMessage(player, builder.toString(), false);
return;
}
final StringBuilder help = new StringBuilder();
for (final String string : helpMenu(player, cato, page)) {
help.append(string).append("\n");
}
MainUtil.sendMessage(player, help.toString());
}
public static boolean onCommand(final PlotPlayer player, final String cmd, final String... args) {
int help_index = -1;
String category = null;
if (args.length == 0) {
help_index = 0;
}
else if (StringMan.isEqualIgnoreCaseToAny(args[0], "he", "help", "?")) {
help_index = 0;
switch (args.length) {
case 3: {
category = args[1];
}
case 2: {
if (MathMan.isInteger(args[args.length - 1])) {
category = null;
try {
help_index = Integer.parseInt(args[1]) - 1;
}
catch (NumberFormatException e) {}
}
if (category == null) {
category = args[1];
}
}
case 1: {
break;
}
}
if (args.length == 3) {
if (MathMan.isInteger(args[args.length - 1])) {
category = null;
try {
help_index = Integer.parseInt(args[1]) - 1;
}
catch (NumberFormatException e) {}
}
else {
category = args[1];
}
}
}
else if (MathMan.isInteger(args[args.length - 1])) {
try {
help_index = Integer.parseInt(args[args.length - 1]) - 1;
}
catch (NumberFormatException e) {}
}
if (help_index != -1) {
displayHelp(player, category, help_index);
return true;
}
PlotPlayer caller;
StringBuilder builder = new StringBuilder(cmd).append(" ");
Iterator<String> iterator = Arrays.asList(args).iterator();
while (iterator.hasNext()) {
builder.append(iterator.next());
if (iterator.hasNext()) {
builder.append(" ");
}
}
instance.handle(player, builder.toString());
// for (final SubCommand command : subCommands) {
// if (command.cmd.equalsIgnoreCase(args[0]) || command.alias.contains(args[0].toLowerCase())) {
// final String[] arguments = new String[args.length - 1];
// System.arraycopy(args, 1, arguments, 0, args.length - 1);
// if (command.permission.hasPermissipon(player)) {
// if ((player != null) || !command.isPlayer) {
// return command.execute(player, arguments);
// } else {
// return !MainUtil.sendMessage(null, C.IS_CONSOLE);
// }
// } else {
// return no_permission(player, command.permission.permission.toLowerCase());
// }
// }
// }
// MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND);
// final String[] commands = new String[subCommands.size()];
// for (int x = 0; x < subCommands.size(); x++) {
// commands[x] = subCommands.get(x).cmd;
// }
// /* Let's try to get a proper usage string */
// final String command = new StringComparison(args[0], commands).getBestMatch();
// return MainUtil.sendMessage(player, C.DID_YOU_MEAN, "/plot " + command);
// PlayerFunctions.sendMessage(player, C.DID_YOU_MEAN, new
// StringComparsion(args[0], commands).getBestMatch());
return true; return true;
} }
@Override @Override
public int handle(CommandCaller caller, String input) { public int handle(PlotPlayer plr, String input) {
String[] parts = input.split(" "); String[] parts = input.split(" ");
String[] args; String[] args;
String command = parts[0].toLowerCase(); String command = parts[0].toLowerCase();
@ -252,29 +280,31 @@ public class MainCommand extends CommandManager {
System.arraycopy(parts, 1, args, 0, args.length); System.arraycopy(parts, 1, args, 0, args.length);
} }
Command cmd = null; Command cmd = null;
System.out.print(command);
System.out.print(StringMan.join(commands.entrySet(), ", "));
cmd = this.commands.get(command); cmd = this.commands.get(command);
if (cmd == null) { if (cmd == null) {
caller.message(C.NOT_VALID_SUBCOMMAND); MainUtil.sendMessage(plr, C.NOT_VALID_SUBCOMMAND);
{ {
final String[] commands = new String[this.commands.size()]; final String[] commands = new String[this.commands.size()];
for (int i = 0; i < commands.length; i++) { for (int i = 0; i < commands.length; i++) {
commands[i] = this.commands.get(i).getCommand(); commands[i] = this.commands.get(i).getCommand();
} }
final String bestMatch = new StringComparison<String>(args[0], commands).getBestMatch(); final String bestMatch = new StringComparison<String>(args[0], commands).getBestMatch();
caller.message(C.DID_YOU_MEAN, "/plot " + bestMatch); MainUtil.sendMessage(plr, C.DID_YOU_MEAN, "/plot " + bestMatch);
} }
return CommandHandlingOutput.NOT_FOUND; return CommandHandlingOutput.NOT_FOUND;
} }
if (!cmd.getRequiredType().isInstance(caller.getSuperCaller())) { if (cmd.getRequiredType().allows(plr)) {
if (caller instanceof PlotPlayerCaller) { if (ConsolePlayer.isConsole(plr)) {
caller.message(C.NOT_CONSOLE); MainUtil.sendMessage(plr, C.IS_CONSOLE);
} else { } else {
caller.message(C.IS_CONSOLE); MainUtil.sendMessage(plr, C.NOT_CONSOLE);
return CommandHandlingOutput.CALLER_OF_WRONG_TYPE;
} }
return CommandHandlingOutput.CALLER_OF_WRONG_TYPE;
} }
if (!caller.hasPermission(cmd.getPermission())) { if (!plr.hasPermission(cmd.getPermission())) {
caller.message(C.NO_PERMISSION, cmd.getPermission()); MainUtil.sendMessage(plr, C.NO_PERMISSION, cmd.getPermission());
return CommandHandlingOutput.NOT_PERMITTED; return CommandHandlingOutput.NOT_PERMITTED;
} }
Argument[] requiredArguments = cmd.getRequiredArguments(); Argument[] requiredArguments = cmd.getRequiredArguments();
@ -291,16 +321,16 @@ public class MainCommand extends CommandManager {
} }
} }
if (!success) { if (!success) {
caller.sendRequiredArgumentsList(this, cmd, requiredArguments); C.COMMAND_SYNTAX.send(plr, cmd.getUsage());
return CommandHandlingOutput.WRONG_USAGE; return CommandHandlingOutput.WRONG_USAGE;
} }
} }
try { try {
boolean a = cmd.onCommand(caller, args); boolean result = cmd.onCommand(plr, args);
if (!a) { if (!result) {
String usage = cmd.getUsage(); String usage = cmd.getUsage();
if (usage != null && !usage.isEmpty()) { if (usage != null && !usage.isEmpty()) {
caller.message(usage); MainUtil.sendMessage(plr, usage);
} }
return CommandHandlingOutput.WRONG_USAGE; return CommandHandlingOutput.WRONG_USAGE;
} }

View File

@ -26,7 +26,7 @@ import java.util.UUID;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -51,7 +51,7 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
permission = "plots.merge", permission = "plots.merge",
usage = "/plot merge [direction]", usage = "/plot merge [direction]",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Merge extends SubCommand { public class Merge extends SubCommand {
public final static String[] values = new String[] { "north", "east", "south", "west" }; public final static String[] values = new String[] { "north", "east", "south", "west" };
@ -86,8 +86,8 @@ public class Merge extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocationFull(); final Location loc = plr.getLocationFull();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -31,7 +31,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "move", command = "move",
@ -39,7 +39,7 @@ import com.intellectualsites.commands.CommandCaller;
aliases = {"debugmove"}, aliases = {"debugmove"},
permission = "plots.move", permission = "plots.move",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Move extends SubCommand { public class Move extends SubCommand {
@ -50,8 +50,8 @@ public class Move extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot1 = MainUtil.getPlot(loc); final Plot plot1 = MainUtil.getPlot(loc);
if (plot1 == null) { if (plot1 == null) {

View File

@ -32,7 +32,7 @@ import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.BlockManager; import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "music", command = "music",
@ -40,13 +40,13 @@ import com.intellectualsites.commands.CommandCaller;
description = "Player music in a plot", description = "Player music in a plot",
usage = "/plot music", usage = "/plot music",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class MusicSubcommand extends SubCommand { public class MusicSubcommand extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer player, final String[] args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
final Location loc = player.getLocation(); final Location loc = player.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -33,7 +33,7 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
@ -41,7 +41,7 @@ import com.intellectualsites.commands.CommandCaller;
permission = "plots.admin", permission = "plots.admin",
description = "Purge all plots for a world", description = "Purge all plots for a world",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PS.class requiredType = RequiredType.CONSOLE
) )
public class Purge extends SubCommand { public class Purge extends SubCommand {
@ -55,45 +55,45 @@ public class Purge extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
if (args.length == 1) { if (args.length == 1) {
final String arg = args[0].toLowerCase(); final String arg = args[0].toLowerCase();
final PlotId id = getId(arg); final PlotId id = getId(arg);
if (id != null) { if (id != null) {
caller.message("/plot purxe x;z &l<world>"); MainUtil.sendMessage(plr, "/plot purxe x;z &l<world>");
return false; return false;
} }
final UUID uuid = UUIDHandler.getUUID(args[0], null); final UUID uuid = UUIDHandler.getUUID(args[0], null);
if (uuid != null) { if (uuid != null) {
caller.message("/plot purge " + args[0] + " &l<world>"); MainUtil.sendMessage(plr, "/plot purge " + args[0] + " &l<world>");
return false; return false;
} }
if (arg.equals("player")) { if (arg.equals("player")) {
caller.message("/plot purge &l<player> <world>"); MainUtil.sendMessage(plr, "/plot purge &l<player> <world>");
return false; return false;
} }
if (arg.equals("unowned")) { if (arg.equals("unowned")) {
caller.message("/plot purge unowned &l<world>"); MainUtil.sendMessage(plr, "/plot purge unowned &l<world>");
return false; return false;
} }
if (arg.equals("unknown")) { if (arg.equals("unknown")) {
caller.message("/plot purge unknown &l<world>"); MainUtil.sendMessage(plr, "/plot purge unknown &l<world>");
return false; return false;
} }
if (arg.equals("all")) { if (arg.equals("all")) {
caller.message("/plot purge all &l<world>"); MainUtil.sendMessage(plr, "/plot purge all &l<world>");
return false; return false;
} }
caller.message(C.PURGE_SYNTAX); MainUtil.sendMessage(plr, C.PURGE_SYNTAX);
return false; return false;
} }
if (args.length != 2) { if (args.length != 2) {
caller.message(C.PURGE_SYNTAX); MainUtil.sendMessage(plr, C.PURGE_SYNTAX);
return false; return false;
} }
final String worldname = args[1]; final String worldname = args[1];
if (!PS.get().getAllPlotsRaw().containsKey(worldname)) { if (!PS.get().getAllPlotsRaw().containsKey(worldname)) {
caller.message("INVALID WORLD"); MainUtil.sendMessage(plr, "INVALID WORLD");
return false; return false;
} }
final String arg = args[0].toLowerCase(); final String arg = args[0].toLowerCase();
@ -160,7 +160,7 @@ public class Purge extends SubCommand {
DBFunc.purge(worldname, ids); DBFunc.purge(worldname, ids);
return finishPurge(length); return finishPurge(length);
} }
caller.message(C.PURGE_SYNTAX); MainUtil.sendMessage(plr, C.PURGE_SYNTAX);
return false; return false;
} }

View File

@ -27,7 +27,7 @@ import java.util.Map.Entry;
import java.util.UUID; import java.util.UUID;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.mutable.MutableInt; import org.apache.commons.lang.mutable.MutableInt;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -53,14 +53,12 @@ import com.intellectualcrafters.plot.util.TaskManager;
usage = "/plot rate [#|next]", usage = "/plot rate [#|next]",
aliases = {"rt"}, aliases = {"rt"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Rate extends SubCommand { public class Rate extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer player, final String[] args) {
final PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
if (args.length == 1) { if (args.length == 1) {
if (args[0].equalsIgnoreCase("next")) { if (args[0].equalsIgnoreCase("next")) {
ArrayList<Plot> plots = new ArrayList<>(PS.get().getPlots()); ArrayList<Plot> plots = new ArrayList<>(PS.get().getPlots());

View File

@ -30,16 +30,17 @@ import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PlotManager; import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.ChunkManager; import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "regenallroads", command = "regenallroads",
description = "Regenerate all roads in the map using the set road schematic", description = "Regenerate all roads in the map using the set road schematic",
aliases = {"rgar"}, aliases = {"rgar"},
category = CommandCategory.DEBUG, category = CommandCategory.DEBUG,
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
permission = "plots.regenallroads" permission = "plots.regenallroads"
) )
public class RegenAllRoads extends SubCommand { public class RegenAllRoads extends SubCommand {
@ -51,22 +52,22 @@ public class RegenAllRoads extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
int height = 0; int height = 0;
if (args.length == 2) { if (args.length == 2) {
try { try {
height = Integer.parseInt(args[1]); height = Integer.parseInt(args[1]);
} }
catch (NumberFormatException e) { catch (NumberFormatException e) {
caller.message(C.NOT_VALID_NUMBER, "(0, 256)"); MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(0, 256)");
caller.message(C.COMMAND_SYNTAX, "/plot regenallroads <world> [height]"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot regenallroads <world> [height]");
return false; return false;
} }
} }
final String name = args[0]; final String name = args[0];
final PlotManager manager = PS.get().getPlotManager(name); final PlotManager manager = PS.get().getPlotManager(name);
if ((manager == null) || !(manager instanceof HybridPlotManager)) { if ((manager == null) || !(manager instanceof HybridPlotManager)) {
caller.message(C.NOT_VALID_PLOT_WORLD); MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_WORLD);
return false; return false;
} }
final List<ChunkLoc> chunks = ChunkManager.manager.getChunkChunks(name); final List<ChunkLoc> chunks = ChunkManager.manager.getChunkChunks(name);

View File

@ -23,9 +23,9 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil;
@CommandDeclaration( @CommandDeclaration(
command = "reload", command = "reload",
@ -37,7 +37,7 @@ import com.intellectualsites.commands.CommandCaller;
public class Reload extends SubCommand { public class Reload extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
try { try {
// The following won't affect world generation, as that has to be // The following won't affect world generation, as that has to be
// loaded during startup unfortunately. // loaded during startup unfortunately.
@ -48,9 +48,9 @@ public class Reload extends SubCommand {
final PlotWorld plotworld = PS.get().getPlotWorld(pw); final PlotWorld plotworld = PS.get().getPlotWorld(pw);
plotworld.loadDefaultConfiguration(PS.get().config.getConfigurationSection("worlds." + pw)); plotworld.loadDefaultConfiguration(PS.get().config.getConfigurationSection("worlds." + pw));
} }
caller.message(C.RELOADED_CONFIGS); MainUtil.sendMessage(plr, C.RELOADED_CONFIGS);
} catch (final Exception e) { } catch (final Exception e) {
caller.message(C.RELOAD_FAILED); MainUtil.sendMessage(plr, C.RELOAD_FAILED);
} }
return true; return true;
} }

View File

@ -33,7 +33,6 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
@CommandDeclaration( @CommandDeclaration(
@ -42,7 +41,7 @@ import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
description = "Remove a player from a plot", description = "Remove a player from a plot",
usage = "/plot remove <player>", usage = "/plot remove <player>",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.remove" permission = "plots.remove"
) )
public class Remove extends SubCommand { public class Remove extends SubCommand {
@ -54,8 +53,7 @@ public class Remove extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (args.length != 1) { if (args.length != 1) {
MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot remove <player>"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot remove <player>");
return true; return true;

View File

@ -0,0 +1,23 @@
package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.object.ConsolePlayer;
import com.intellectualcrafters.plot.object.PlotPlayer;
public enum RequiredType {
CONSOLE,
PLAYER,
NONE;
public boolean allows(PlotPlayer player) {
switch (this) {
case NONE:
return true;
case PLAYER:
return !ConsolePlayer.isConsole(player);
case CONSOLE:
return ConsolePlayer.isConsole(player);
default:
return false;
}
}
}

View File

@ -17,21 +17,21 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "save", command = "save",
aliases = {"backup"}, aliases = {"backup"},
description = "Save your plot", description = "Save your plot",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
permission = "plots.save" permission = "plots.save"
) )
public class Save extends SubCommand { public class Save extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
if (!Settings.METRICS) { if (!Settings.METRICS) {
MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service");
return false; return false;

View File

@ -27,7 +27,7 @@ import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Location;
@ -41,7 +41,7 @@ import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic; import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
// TODO Add sub-subcommands // TODO Add sub-subcommands
@ -61,8 +61,7 @@ public class SchematicCmd extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if (args.length < 1) { if (args.length < 1) {
sendMessage(plr, C.SCHEMATIC_MISSING_ARG); sendMessage(plr, C.SCHEMATIC_MISSING_ARG);
return true; return true;
@ -72,10 +71,6 @@ public class SchematicCmd extends SubCommand {
final Schematic schematic; final Schematic schematic;
switch (arg) { switch (arg) {
case "paste": { case "paste": {
if (plr == null) {
PS.log(C.IS_CONSOLE.s());
return false;
}
if (!Permissions.hasPermission(plr, "plots.schematic.paste")) { if (!Permissions.hasPermission(plr, "plots.schematic.paste")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.paste"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.paste");
return false; return false;

View File

@ -25,7 +25,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -61,15 +61,15 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
usage = "/plot set <arg> <value(s)...>", usage = "/plot set <arg> <value(s)...>",
permission = "plots.set", permission = "plots.set",
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Set extends SubCommand { public class Set extends SubCommand {
public final static String[] values = new String[] { "biome", "alias", "home", "flag" }; public final static String[] values = new String[] { "biome", "alias", "home", "flag" };
public final static String[] aliases = new String[] { "b", "w", "wf", "f", "a", "h", "fl" }; public final static String[] aliases = new String[] { "b", "w", "wf", "f", "a", "h", "fl" };
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -36,7 +36,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "setowner", command = "setowner",
@ -45,7 +45,7 @@ import com.intellectualsites.commands.CommandCaller;
usage = "/plot setowner <player>", usage = "/plot setowner <player>",
aliases = {"so"}, aliases = {"so"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class SetOwner extends SubCommand { public class SetOwner extends SubCommand {
@ -60,8 +60,7 @@ public class SetOwner extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller;
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if ((plot == null) || (plot.owner == null)) { if ((plot == null) || (plot.owner == null)) {

View File

@ -25,9 +25,9 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
@ -74,9 +74,7 @@ public class Setup extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = (caller instanceof PlotPlayerCaller) ? (PlotPlayer) caller.getSuperCaller() : null;
// going through setup // going through setup
String name; String name;
if (plr == null) { if (plr == null) {
@ -219,7 +217,7 @@ public class Setup extends SubCommand {
step.setValue(args[0]); step.setValue(args[0]);
object.setup_index++; object.setup_index++;
if (object.setup_index == object.step.length) { if (object.setup_index == object.step.length) {
onCommand(caller, args); onCommand(plr, args);
return false; return false;
} }
step = object.step[object.setup_index]; step = object.step[object.setup_index];

View File

@ -34,20 +34,20 @@ import com.intellectualcrafters.plot.util.ClusterManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "swap", command = "swap",
description = "Swap two plots", description = "Swap two plots",
aliases = {"switch"}, aliases = {"switch"},
category = CommandCategory.ACTIONS, category = CommandCategory.ACTIONS,
requiredType = PlotPlayer.class requiredType = RequiredType.PLAYER
) )
public class Swap extends SubCommand { public class Swap extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
MainUtil.sendMessage(plr, "&cThis command has not been optimized for large selections yet. Please bug me if this becomes an issue."); MainUtil.sendMessage(plr, "&cThis command has not been optimized for large selections yet. Please bug me if this becomes an issue.");
if (args.length < 1) { if (args.length < 1) {
MainUtil.sendMessage(plr, C.NEED_PLOT_ID); MainUtil.sendMessage(plr, C.NEED_PLOT_ID);

View File

@ -22,7 +22,7 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -41,7 +41,7 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
description = "Teleport to a plot", description = "Teleport to a plot",
permission = "plots.tp", permission = "plots.tp",
usage = "/plot tp <alias|id>", usage = "/plot tp <alias|id>",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.TELEPORT category = CommandCategory.TELEPORT
) )
public class TP extends SubCommand { public class TP extends SubCommand {
@ -53,8 +53,7 @@ public class TP extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final String id = args[0]; final String id = args[0];
PlotId plotid; PlotId plotid;
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();

View File

@ -28,14 +28,14 @@ import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "target", command = "target",
usage = "/plot target <X;Z>", usage = "/plot target <X;Z>",
description = "Target a plot with your compass", description = "Target a plot with your compass",
permission = "plots.target", permission = "plots.target",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Target extends SubCommand { public class Target extends SubCommand {
@ -47,8 +47,7 @@ public class Target extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location ploc = plr.getLocation(); final Location ploc = plr.getLocation();
if (!PS.get().isPlotWorld(ploc.getWorld())) { if (!PS.get().isPlotWorld(ploc.getWorld())) {
MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD); MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD);

View File

@ -42,7 +42,7 @@ import com.intellectualcrafters.plot.object.SetupObject;
import com.intellectualcrafters.plot.util.BlockManager; import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.util.SetupUtils; import com.plotsquared.bukkit.util.SetupUtils;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
@ -119,25 +119,21 @@ public class Template extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
if (args.length != 2 && args.length != 3) { if (args.length != 2 && args.length != 3) {
if (args.length == 1) { if (args.length == 1) {
if (args[0].equalsIgnoreCase("export")) { if (args[0].equalsIgnoreCase("export")) {
caller.message(C.COMMAND_SYNTAX, "/plot template export <world>"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot template export <world>");
return true; return true;
} }
else if (args[0].equalsIgnoreCase("import")) { else if (args[0].equalsIgnoreCase("import")) {
caller.message(C.COMMAND_SYNTAX, "/plot template import <world> <template>"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot template import <world> <template>");
return true; return true;
} }
} }
caller.message(C.COMMAND_SYNTAX, "/plot template <import|explort> <world> [template]"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot template <import|explort> <world> [template]");
return true; return true;
} }
PlotPlayer plr = null;
if (caller.getSuperCaller() instanceof PlotPlayer) {
plr = (PlotPlayer) caller.getSuperCaller();
}
final String world = args[1]; final String world = args[1];
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "import": { case "import": {

View File

@ -24,7 +24,7 @@ import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
// TOGGLE("toggle", "attribute"), // TOGGLE("toggle", "attribute"),
@ -34,21 +34,20 @@ import com.intellectualsites.commands.CommandCaller;
permission = "plots.toggle", permission = "plots.toggle",
description = "Toggle per user settings", description = "Toggle per user settings",
usage = "/plot toggle <setting>", usage = "/plot toggle <setting>",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Toggle extends SubCommand { public class Toggle extends SubCommand {
public void noArgs(CommandCaller caller) { public void noArgs(PlotPlayer plr) {
caller.message(C.COMMAND_SYNTAX, "/plot toggle <setting>"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot toggle <setting>");
caller.message(C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + "titles"); MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + "titles");
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer player, final String[] args) {
PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
if (args.length == 0) { if (args.length == 0) {
noArgs(caller); noArgs(player);
return false; return false;
} }
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {

View File

@ -40,14 +40,14 @@ import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "trim", command = "trim",
permission = "plots.admin", permission = "plots.admin",
description = "Delete unmodified portions of your plotworld", description = "Delete unmodified portions of your plotworld",
usage = "/plot trim", usage = "/plot trim",
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
category = CommandCategory.DEBUG category = CommandCategory.DEBUG
) )
public class Trim extends SubCommand { public class Trim extends SubCommand {
@ -174,8 +174,7 @@ public class Trim extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = null;
if (args.length == 1) { if (args.length == 1) {
final String arg = args[0].toLowerCase(); final String arg = args[0].toLowerCase();
final PlotId id = getId(arg); final PlotId id = getId(arg);

View File

@ -34,13 +34,13 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
@CommandDeclaration( @CommandDeclaration(
command = "trust", command = "trust",
aliases = {"t"}, aliases = {"t"},
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
usage = "/plot trust <player>", usage = "/plot trust <player>",
description = "Allow a player to build in a plot", description = "Allow a player to build in a plot",
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
@ -54,8 +54,8 @@ public class Trust extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -30,20 +30,20 @@ import com.intellectualcrafters.plot.util.EconHandler;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "unclaim", command = "unclaim",
usage = "/plot unclaim", usage = "/plot unclaim",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
description = "Unclaim a plot", description = "Unclaim a plot",
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Unclaim extends SubCommand { public class Unclaim extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -32,7 +32,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
@CommandDeclaration( @CommandDeclaration(
@ -40,7 +40,7 @@ import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
aliases = {"ud"}, aliases = {"ud"},
description = "Remove a denied user from a plot", description = "Remove a denied user from a plot",
usage = "/plot undeny <player>", usage = "/plot undeny <player>",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Undeny extends SubCommand { public class Undeny extends SubCommand {
@ -52,8 +52,8 @@ public class Undeny extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String ... args) { public boolean onCommand(final PlotPlayer plr, final String ... args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -30,21 +30,21 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "unlink", command = "unlink",
aliases = {"u"}, aliases = {"u"},
description = "Unlink a mega-plot", description = "Unlink a mega-plot",
usage = "/plot unlink", usage = "/plot unlink",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Unlink extends SubCommand { public class Unlink extends SubCommand {
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);

View File

@ -32,7 +32,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
// UNTRUST("untrust", "ut"), // UNTRUST("untrust", "ut"),
@ -42,7 +42,7 @@ import com.intellectualsites.commands.CommandCaller;
permission = "plot.untrust", permission = "plot.untrust",
description = "Remove a trusted user from a plot", description = "Remove a trusted user from a plot",
usage = "/plot untrust <player>", usage = "/plot untrust <player>",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.ACTIONS category = CommandCategory.ACTIONS
) )
public class Untrust extends SubCommand { public class Untrust extends SubCommand {
@ -54,8 +54,7 @@ public class Untrust extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
final Plot plot = MainUtil.getPlot(loc); final Plot plot = MainUtil.getPlot(loc);
if (plot == null) { if (plot == null) {

View File

@ -28,14 +28,14 @@ import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "update", command = "update",
permission = "plots.admin", permission = "plots.admin",
description = "Update PlotSquared", description = "Update PlotSquared",
usage = "/plot update", usage = "/plot update",
requiredType = PS.class, requiredType = RequiredType.CONSOLE,
aliases = {"updateplugin"}, aliases = {"updateplugin"},
category = CommandCategory.DEBUG category = CommandCategory.DEBUG
) )
@ -44,7 +44,7 @@ public class Update extends SubCommand {
public static String version; public static String version;
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
URL url; URL url;
if (args.length == 0) { if (args.length == 0) {
url = PS.get().update; url = PS.get().update;
@ -59,12 +59,12 @@ public class Update extends SubCommand {
} }
} }
else { else {
caller.message(C.COMMAND_SYNTAX, getUsage()); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, getUsage());
return false; return false;
} }
if (url == null) { if (url == null) {
caller.message("&cNo update found!"); MainUtil.sendMessage(plr, "&cNo update found!");
caller.message("&cTo manually specify an update URL: /plot update <url>"); MainUtil.sendMessage(plr, "&cTo manually specify an update URL: /plot update <url>");
return false; return false;
} }
if (PS.get().update(null, url) && url == PS.get().update) { if (PS.get().update(null, url) && url == PS.get().update) {

View File

@ -33,7 +33,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualsites.commands.Argument; import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "visit", command = "visit",
@ -41,7 +41,7 @@ import com.intellectualsites.commands.CommandCaller;
description = "Visit someones plot", description = "Visit someones plot",
usage = "/plot visit <player|aliases|world|id> [#]", usage = "/plot visit <player|aliases|world|id> [#]",
aliases = {"v}"}, aliases = {"v}"},
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.TELEPORT category = CommandCategory.TELEPORT
) )
public class Visit extends SubCommand { public class Visit extends SubCommand {
@ -63,8 +63,7 @@ public class Visit extends SubCommand {
} }
@Override @Override
public boolean onCommand(CommandCaller caller, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
PlotPlayer plr = (PlotPlayer) caller.getSuperCaller();
ArrayList<Plot> plots = new ArrayList<>(); ArrayList<Plot> plots = new ArrayList<>();
UUID user = UUIDHandler.getUUID(args[0], null); UUID user = UUIDHandler.getUUID(args[0], null);
if (user != null ) { if (user != null ) {

View File

@ -23,7 +23,7 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.listeners.worldedit.WEManager; import com.plotsquared.bukkit.listeners.worldedit.WEManager;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
@ -35,18 +35,17 @@ import com.intellectualcrafters.plot.util.Permissions;
description = "Force bypass of WorldEdit", description = "Force bypass of WorldEdit",
aliases = {"wea"}, aliases = {"wea"},
usage = "/plot weanywhere", usage = "/plot weanywhere",
requiredType = PlotPlayer.class, requiredType = RequiredType.PLAYER,
category = CommandCategory.DEBUG category = CommandCategory.DEBUG
) )
public class WE_Anywhere extends SubCommand { public class WE_Anywhere extends SubCommand {
@Override @Override
public boolean onCommand(CommandCaller caller, String[] arguments) { public boolean onCommand(PlotPlayer player, String[] arguments) {
if (PS.get().worldEdit == null) { if (PS.get().worldEdit == null) {
caller.message("&cWorldEdit is not enabled on this server"); MainUtil.sendMessage(player, "&cWorldEdit is not enabled on this server");
return true; return true;
} }
PlotPlayer player = (PlotPlayer) caller.getSuperCaller();
if (Permissions.hasPermission(player, "plots.worldedit.bypass")) { if (Permissions.hasPermission(player, "plots.worldedit.bypass")) {
if (WEManager.bypass.contains(player.getName())) { if (WEManager.bypass.contains(player.getName())) {
WEManager.bypass.remove(player.getName()); WEManager.bypass.remove(player.getName());

View File

@ -1,36 +0,0 @@
package com.intellectualcrafters.plot.commands.callers;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.Command;
import com.intellectualsites.commands.CommandManager;
import com.intellectualsites.commands.CommandCaller;
public class ConsoleCaller implements CommandCaller<PS> {
@Override
public boolean hasPermission(String permission) {
return true;
}
@Override
public void message(String message) {
MainUtil.sendConsoleMessage(message);
}
@Override
public PS getSuperCaller() {
return PS.get();
}
@Override
public void message(C c, String... args) {
MainUtil.sendConsoleMessage(c, args);
}
@Override
public void sendRequiredArgumentsList(CommandManager manager, Command cmd, Argument[] required) {
message(C.COMMAND_SYNTAX, cmd.getUsage());
}
}

View File

@ -1,44 +0,0 @@
package com.intellectualcrafters.plot.commands.callers;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.Command;
import com.intellectualsites.commands.CommandCaller;
import com.intellectualsites.commands.CommandManager;
public class PlotPlayerCaller implements CommandCaller<PlotPlayer> {
private final PlotPlayer player;
public PlotPlayerCaller(final PlotPlayer player) {
this.player = player;
}
@Override
public boolean hasPermission(String permission) {
return player.hasPermission(permission);
}
@Override
public void message(String message) {
player.sendMessage(message);
}
@Override
public PlotPlayer getSuperCaller() {
return player;
}
@Override
public void message(C c, String... args) {
MainUtil.sendMessage(getSuperCaller(), c, args);
}
@Override
public void sendRequiredArgumentsList(CommandManager manager, Command cmd, Argument[] required) {
message(C.COMMAND_SYNTAX, cmd.getUsage());
message("Argument list is yet to be implemented");
}
}

View File

@ -29,9 +29,9 @@ import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -119,9 +119,7 @@ public class list extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
final PlotPlayer plr = caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null;
if (args.length < 1) { if (args.length < 1) {
noArgs(plr); noArgs(plr);
return false; return false;

View File

@ -27,14 +27,14 @@ import java.net.URLConnection;
import java.util.ArrayList; import java.util.ArrayList;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualsites.commands.CommandDeclaration; import com.intellectualsites.commands.CommandDeclaration;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
@CommandDeclaration( @CommandDeclaration(
command = "plugin", command = "plugin",
@ -70,7 +70,7 @@ public class plugin extends SubCommand {
} }
@Override @Override
public boolean onCommand(final CommandCaller caller, final String[] args) { public boolean onCommand(final PlotPlayer plr, final String[] args) {
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -85,7 +85,7 @@ public class plugin extends SubCommand {
} }
}; };
for (final String s : strings) { for (final String s : strings) {
MainUtil.sendMessage(caller instanceof PlotPlayerCaller ? (PlotPlayer) caller.getSuperCaller() : null, StringMan.replaceFromMap(s, C.replacements), false); plr.sendMessage(s);
} }
} }
}); });

View File

@ -33,6 +33,8 @@ import org.bukkit.ChatColor;
import com.intellectualcrafters.configuration.ConfigurationSection; import com.intellectualcrafters.configuration.ConfigurationSection;
import com.intellectualcrafters.configuration.file.YamlConfiguration; import com.intellectualcrafters.configuration.file.YamlConfiguration;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
/** /**
@ -689,4 +691,13 @@ public enum C {
public String getCat() { public String getCat() {
return cat; return cat;
} }
public void send(PlotPlayer plr, String... args) {
if (plr == null) {
MainUtil.sendConsoleMessage(this, args);
}
else {
MainUtil.sendMessage(plr, this, args);
}
}
} }

View File

@ -0,0 +1,126 @@
package com.intellectualcrafters.plot.object;
import java.util.HashMap;
import java.util.Set;
import java.util.UUID;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.database.DBFunc;
import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
public class ConsolePlayer implements PlotPlayer {
private static ConsolePlayer instance;
private Location loc;
private final HashMap<String, Object> meta;
public static ConsolePlayer getConsole() {
if (instance == null) {
instance = new ConsolePlayer();
}
return instance;
}
private ConsolePlayer() {
String world;
Set<String> plotworlds = PS.get().getPlotWorlds();
if (plotworlds.size() > 0) {
world = plotworlds.iterator().next();
}
else {
world = "world";
}
this.loc = new Location(world, 0, 0, 0);
this.meta = new HashMap<>();
}
public static boolean isConsole(PlotPlayer plr) {
return instance == plr;
}
@Override
public long getPreviousLogin() {
return 0;
}
@Override
public Location getLocation() {
return loc;
}
@Override
public Location getLocationFull() {
return loc;
}
@Override
public UUID getUUID() {
return DBFunc.everyone;
}
@Override
public boolean hasPermission(String perm) {
return true;
}
@Override
public void sendMessage(String message) {
PS.log(message);
}
@Override
public void teleport(Location loc) {
this.loc = loc;
}
@Override
public boolean isOp() {
return true;
}
@Override
public boolean isOnline() {
return true;
}
@Override
public String getName() {
return "*";
}
@Override
public void setCompassTarget(Location loc) {}
@Override
public void loadData() {}
@Override
public void saveData() {}
@Override
public void setAttribute(String key) {}
@Override
public boolean getAttribute(String key) {
return false;
}
@Override
public void removeAttribute(String key) {}
@Override
public void setMeta(String key, Object value) {
this.meta.put(key, value);
}
@Override
public Object getMeta(String key) {
return this.meta.get(key);
}
@Override
public void deleteMeta(String key) {
this.meta.remove(key);
}
}

View File

@ -606,6 +606,9 @@ public class Plot {
return false; return false;
} }
final Plot other = (Plot) obj; final Plot other = (Plot) obj;
if (this.hashCode() != other.hashCode()) {
return false;
}
return ((this.id.x.equals(other.id.x)) && (this.id.y.equals(other.id.y)) && (this.world.equals(other.world))); return ((this.id.x.equals(other.id.x)) && (this.id.y.equals(other.id.y)) && (this.world.equals(other.world)));
} }

View File

@ -31,7 +31,7 @@ import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualsites.commands.CommandCaller; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.plotsquared.bukkit.listeners.PlotListener; import com.plotsquared.bukkit.listeners.PlotListener;
import com.intellectualcrafters.plot.object.BlockLoc; import com.intellectualcrafters.plot.object.BlockLoc;
import com.intellectualcrafters.plot.object.ChunkLoc; import com.intellectualcrafters.plot.object.ChunkLoc;
@ -1421,15 +1421,6 @@ public class MainUtil {
return sendMessage(plr, msg, true); return sendMessage(plr, msg, true);
} }
public static boolean sendCallerMessage(final CommandCaller plr, final String msg) {
if (plr.getSuperCaller() instanceof PlotPlayer) {
sendMessage((PlotPlayer) plr.getSuperCaller(), msg);
} else {
sendConsoleMessage(msg);
}
return true;
}
public static void sendConsoleMessage(String msg) { public static void sendConsoleMessage(String msg) {
sendMessage(null, msg); sendMessage(null, msg);
} }
@ -1516,15 +1507,6 @@ public class MainUtil {
return lines.toArray(new String[lines.size()]); return lines.toArray(new String[lines.size()]);
} }
public static boolean sendCallerMessage(final CommandCaller caller, final C c, final String... args) {
if (caller.getSuperCaller() instanceof PlotPlayer) {
sendMessage((PlotPlayer) caller.getSuperCaller(), c, args);
} else {
sendConsoleMessage(c, args);
}
return true;
}
/** /**
* Send a message to the player * Send a message to the player
* *

View File

@ -152,23 +152,49 @@ public class StringMan {
public static String join(Object[] array, String delimiter) { public static String join(Object[] array, String delimiter) {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
System.out.print(array.getClass().getName());
for (int i = 0, j = array.length; i < j; i++) { for (int i = 0, j = array.length; i < j; i++) {
if (i > 0) { if (i > 0) {
result.append(delimiter); result.append(delimiter);
} }
System.out.print(array[i].getClass().getName());
result.append(array[i]); result.append(array[i]);
} }
return result.toString(); return result.toString();
} }
public static String join(int[] array, String delimiter) { public static String join(int[] array, String delimiter) {
return join(Arrays.asList(array), delimiter); Integer[] wrapped = new Integer[array.length];
for (int i = 0; i < array.length; i++) wrapped[i] = array[i];
return join(wrapped, delimiter);
} }
public static boolean isEqual(String a, String b ) { public static boolean isEqualToAny(String a, String... args) {
for (String arg : args) {
if (StringMan.isEqual(a, arg)) {
return true;
}
}
return false;
}
public static boolean isEqualIgnoreCaseToAny(String a, String... args) {
for (String arg : args) {
if (StringMan.isEqualIgnoreCase(a, arg)) {
return true;
}
}
return false;
}
public static boolean isEqual(String a, String b) {
return (a == b || (a.length() == b.length() && a.hashCode() == b.hashCode() && a.equals(b))); return (a == b || (a.length() == b.length() && a.hashCode() == b.hashCode() && a.equals(b)));
} }
public static boolean isEqualIgnoreCase(String a, String b) {
return (a == b || (a.length() == b.length() && a.equalsIgnoreCase(b)));
}
public static String repeat(String s, int n) { public static String repeat(String s, int n) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
for(int i = 0; i < n; i++) { for(int i = 0; i < n; i++) {

View File

@ -79,8 +79,8 @@ public class UUIDHandler {
implementation.setUUIDWrapper(wrapper); implementation.setUUIDWrapper(wrapper);
} }
public static void startCaching() { public static void startCaching(Runnable whenDone) {
implementation.startCaching(); implementation.startCaching(whenDone);
} }
public static void cache(final BiMap<StringWrapper, UUID> toAdd) { public static void cache(final BiMap<StringWrapper, UUID> toAdd) {

View File

@ -40,7 +40,7 @@ public abstract class UUIDHandlerImplementation {
* Start UUID caching (this should be an async task) * Start UUID caching (this should be an async task)
* Recommended to override this is you want to cache offline players * Recommended to override this is you want to cache offline players
*/ */
public boolean startCaching() { public boolean startCaching(Runnable whenDone) {
if (CACHED) { if (CACHED) {
return false; return false;
} }
@ -55,6 +55,11 @@ public abstract class UUIDHandlerImplementation {
this.uuidWrapper = wrapper; this.uuidWrapper = wrapper;
} }
public void rename(UUID uuid, StringWrapper name) {
uuidMap.inverse().remove(uuid);
uuidMap.put(name, uuid);
}
public void add(final BiMap<StringWrapper, UUID> toAdd) { public void add(final BiMap<StringWrapper, UUID> toAdd) {
if (uuidMap.size() == 0) { if (uuidMap.size() == 0) {
uuidMap = toAdd; uuidMap = toAdd;
@ -63,7 +68,20 @@ public abstract class UUIDHandlerImplementation {
@Override @Override
public void run() { public void run() {
for (Map.Entry<StringWrapper, UUID> entry : toAdd.entrySet()) { for (Map.Entry<StringWrapper, UUID> entry : toAdd.entrySet()) {
add(entry.getKey(), entry.getValue()); UUID uuid = entry.getValue();
StringWrapper name = entry.getKey();
if ((uuid == null) || (name == null)) {
continue;
}
BiMap<UUID, StringWrapper> inverse = uuidMap.inverse();
if (inverse.containsKey(uuid)) {
if (uuidMap.containsKey(name)) {
continue;
}
rename(uuid, name);
continue;
}
uuidMap.put(name, uuid);
} }
PS.log(C.PREFIX.s() + "&6Cached a total of: " + uuidMap.size() + " UUIDs"); PS.log(C.PREFIX.s() + "&6Cached a total of: " + uuidMap.size() + " UUIDs");
} }
@ -79,7 +97,8 @@ public abstract class UUIDHandlerImplementation {
if (uuidMap.containsKey(name)) { if (uuidMap.containsKey(name)) {
return false; return false;
} }
inverse.remove(uuid); rename(uuid, name);
return false;
} }
uuidMap.put(name, uuid); uuidMap.put(name, uuid);
return true; return true;

View File

@ -1,7 +1,9 @@
package com.intellectualsites.commands; package com.intellectualsites.commands;
import com.intellectualcrafters.plot.object.ConsolePlayer;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import org.bukkit.entity.Player; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.MainUtil;
public abstract class Argument<T> { public abstract class Argument<T> {
@ -28,7 +30,7 @@ public abstract class Argument<T> {
return this.example; return this.example;
} }
public static final Argument<Integer> Integer = new Argument<java.lang.Integer>("int", 16) { public static final Argument<Integer> Integer = new Argument<Integer>("int", 16) {
@Override @Override
public Integer parse(String in) { public Integer parse(String in) {
Integer value = null; Integer value = null;
@ -39,7 +41,7 @@ public abstract class Argument<T> {
} }
}; };
public static final Argument<Boolean> Boolean = new Argument<java.lang.Boolean>("boolean", true) { public static final Argument<Boolean> Boolean = new Argument<Boolean>("boolean", true) {
@Override @Override
public Boolean parse(String in) { public Boolean parse(String in) {
Boolean value = null; Boolean value = null;
@ -52,33 +54,31 @@ public abstract class Argument<T> {
} }
}; };
public static final Argument<String> String = new Argument<java.lang.String>("String", "Example") { public static final Argument<String> String = new Argument<String>("String", "Example") {
@Override @Override
public String parse(String in) { public String parse(String in) {
return in; return in;
} }
}; };
public static Argument<String> PlayerName = new Argument<java.lang.String>("PlayerName", "Dinnerbone") { public static Argument<String> PlayerName = new Argument<String>("PlayerName", "Dinnerbone") {
@Override @Override
public String parse(String in) { public String parse(String in) {
return in.length() < 16 ? in : null; return in.length() < 16 ? in : null;
} }
}; };
public static Argument<PlotId> PlotID = new Argument<com.intellectualcrafters.plot.object.PlotId>("PlotID", new PlotId(3, -32)) { public static Argument<PlotId> PlotID = new Argument<PlotId>("PlotID", new PlotId(-6, 3)) {
@Override @Override
public PlotId parse(String in) { public PlotId parse(String in) {
PlotId plotID; return PlotId.fromString(in);
try { }
String[] parts = in.split(";"); };
int i1 = java.lang.Integer.parseInt(parts[0]);
int i2 = java.lang.Integer.parseInt(parts[1]); public static Argument<Plot> Plot = new Argument<Plot>("Plot", new Plot("plotworld", new PlotId(3, -6), null)) {
plotID = new PlotId(i1, i2); @Override
} catch(final Exception e) { public Plot parse(String in) {
return null; return MainUtil.getPlotFromString(ConsolePlayer.getConsole(), in, false);
}
return plotID;
} }
}; };
} }

View File

@ -7,10 +7,13 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import com.intellectualcrafters.plot.commands.CommandCategory; import com.intellectualcrafters.plot.commands.CommandCategory;
import com.intellectualcrafters.plot.commands.RequiredType;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotPlayer;
public abstract class Command extends CommandManager { public abstract class Command extends CommandManager {
private Class requiredType = Object.class; private RequiredType requiredType = RequiredType.NONE;
private String command, usage = "", description = "", permission = ""; private String command, usage = "", description = "", permission = "";
private Set<String> aliases = new HashSet<>(); private Set<String> aliases = new HashSet<>();
private CommandCategory category; private CommandCategory category;
@ -59,7 +62,7 @@ public abstract class Command extends CommandManager {
this.aliases = new HashSet<>(Arrays.asList(aliases)); this.aliases = new HashSet<>(Arrays.asList(aliases));
} }
public Command(String command, String usage, String description, String permission, String[] aliases, Class requiredType) { public Command(String command, String usage, String description, String permission, String[] aliases, RequiredType requiredType) {
super(null, new ArrayList<Command>()); super(null, new ArrayList<Command>());
this.command = command; this.command = command;
this.usage = usage; this.usage = usage;
@ -69,7 +72,7 @@ public abstract class Command extends CommandManager {
this.requiredType = requiredType; this.requiredType = requiredType;
} }
final public Class getRequiredType() { final public RequiredType getRequiredType() {
return this.requiredType; return this.requiredType;
} }
@ -93,23 +96,19 @@ public abstract class Command extends CommandManager {
final public String toString() { final public String toString() {
return this.command; return this.command;
} }
@Override
final public int hashCode() {
return this.command.hashCode();
}
public abstract boolean onCommand(CommandCaller caller, String[] arguments); public abstract boolean onCommand(PlotPlayer plr, String[] arguments);
final public int handle(CommandCaller caller, String[] args) { final public int handle(PlotPlayer plr, String[] args) {
if (args.length == 0) { if (args.length == 0) {
return super.handle(caller, ""); return super.handle(plr, "");
} }
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
for (String s : args) { for (String s : args) {
builder.append(s).append(" "); builder.append(s).append(" ");
} }
String s = builder.substring(0, builder.length() - 1); String s = builder.substring(0, builder.length() - 1);
return super.handle(caller, s); return super.handle(plr, s);
} }
final public String getCommand() { final public String getCommand() {
@ -139,4 +138,32 @@ public abstract class Command extends CommandManager {
final public CommandCategory getCategory() { final public CommandCategory getCategory() {
return this.category; return this.category;
} }
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Command other = (Command) obj;
if (this.hashCode() != other.hashCode()) {
return false;
}
return this.command.equals(other.command);
}
private int hash;
@Override
public int hashCode() {
if (hash == 0) {
hash = getCommand().hashCode();
}
return hash;
}
} }

View File

@ -1,19 +0,0 @@
package com.intellectualsites.commands;
import com.intellectualcrafters.plot.config.C;
import com.intellectualsites.commands.Argument;
import com.intellectualsites.commands.Command;
import com.intellectualsites.commands.CommandManager;
public interface CommandCaller<T> {
boolean hasPermission(String permission);
void message(String message);
T getSuperCaller();
void message(C c, String ... args);
void sendRequiredArgumentsList(CommandManager manager, Command cmd, Argument[] required);
}

View File

@ -1,6 +1,7 @@
package com.intellectualsites.commands; package com.intellectualsites.commands;
import com.intellectualcrafters.plot.commands.CommandCategory; import com.intellectualcrafters.plot.commands.CommandCategory;
import com.intellectualcrafters.plot.commands.RequiredType;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@ -21,7 +22,7 @@ public @interface CommandDeclaration {
String description() default ""; String description() default "";
Class requiredType() default Object.class; RequiredType requiredType() default RequiredType.NONE;
CommandCategory category(); CommandCategory category();
} }

View File

@ -7,7 +7,11 @@ import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import com.intellectualsites.commands.util.StringUtil; import com.intellectualcrafters.plot.commands.RequiredType;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.ConsolePlayer;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MainUtil;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class CommandManager { public class CommandManager {
@ -68,8 +72,8 @@ public class CommandManager {
return result; return result;
} }
public int handle(CommandCaller caller, String input) { public int handle(PlotPlayer plr, String input) {
if (initialCharacter != null && !StringUtil.startsWith(initialCharacter, input)) { if (initialCharacter != null && !input.startsWith(initialCharacter + "")) {
return CommandHandlingOutput.NOT_COMMAND; return CommandHandlingOutput.NOT_COMMAND;
} }
input = initialCharacter == null ? input : input.substring(1); input = initialCharacter == null ? input : input.substring(1);
@ -87,10 +91,10 @@ public class CommandManager {
if (cmd == null) { if (cmd == null) {
return CommandHandlingOutput.NOT_FOUND; return CommandHandlingOutput.NOT_FOUND;
} }
if (!cmd.getRequiredType().isInstance(caller.getSuperCaller())) { if (!cmd.getRequiredType().allows(plr)) {
return CommandHandlingOutput.CALLER_OF_WRONG_TYPE; return CommandHandlingOutput.CALLER_OF_WRONG_TYPE;
} }
if (!caller.hasPermission(cmd.getPermission())) { if (!plr.hasPermission(cmd.getPermission())) {
return CommandHandlingOutput.NOT_PERMITTED; return CommandHandlingOutput.NOT_PERMITTED;
} }
Argument[] requiredArguments = cmd.getRequiredArguments(); Argument[] requiredArguments = cmd.getRequiredArguments();
@ -108,16 +112,16 @@ public class CommandManager {
} }
if (!success) { if (!success) {
String usage = cmd.getUsage(); String usage = cmd.getUsage();
caller.sendRequiredArgumentsList(this, cmd, requiredArguments); C.COMMAND_SYNTAX.send(plr, cmd.getUsage());
return CommandHandlingOutput.WRONG_USAGE; return CommandHandlingOutput.WRONG_USAGE;
} }
} }
try { try {
boolean a = cmd.onCommand(caller, args); boolean a = cmd.onCommand(plr, args);
if (!a) { if (!a) {
String usage = cmd.getUsage(); String usage = cmd.getUsage();
if (usage != null && !usage.isEmpty()) { if (usage != null && !usage.isEmpty()) {
caller.message(usage); MainUtil.sendMessage(plr, usage);
} }
return CommandHandlingOutput.WRONG_USAGE; return CommandHandlingOutput.WRONG_USAGE;
} }

View File

@ -1,26 +0,0 @@
package com.intellectualsites.commands.util;
public class StringUtil {
public static final String[] emptyArray = new String[0];
public static boolean startsWith(char c, String s) {
return !(s == null || s.isEmpty()) && s.toCharArray()[0] == c;
}
public static boolean inArray(String s, String[] a, boolean matchCase) {
for (String aS : a) {
if (matchCase) {
if (s.equals(aS)) {
return true;
}
} else {
if (s.equalsIgnoreCase(aS)) {
return true;
}
}
}
return false;
}
}

View File

@ -92,7 +92,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
} }
List<World> worlds = Bukkit.getWorlds(); List<World> worlds = Bukkit.getWorlds();
if (worlds.size() > 0) { if (worlds.size() > 0) {
UUIDHandler.startCaching(); UUIDHandler.startCaching(null);
for (World world : worlds) { for (World world : worlds) {
try { try {
SetGenCB.setGenerator(world); SetGenCB.setGenerator(world);
@ -456,9 +456,9 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
FlagManager.removeFlag(FlagManager.getFlag("titles")); FlagManager.removeFlag(FlagManager.getFlag("titles"));
} else { } else {
AbstractTitle.TITLE_CLASS = new DefaultTitle(); AbstractTitle.TITLE_CLASS = new DefaultTitle();
if (UUIDHandler.getUUIDWrapper() instanceof DefaultUUIDWrapper) { if (wrapper instanceof DefaultUUIDWrapper) {
Settings.TWIN_MODE_UUID = true; Settings.TWIN_MODE_UUID = true;
} else if (UUIDHandler.getUUIDWrapper() instanceof OfflineUUIDWrapper && !Bukkit.getOnlineMode()) { } else if (wrapper instanceof OfflineUUIDWrapper && !Bukkit.getOnlineMode()) {
Settings.TWIN_MODE_UUID = true; Settings.TWIN_MODE_UUID = true;
} }
} }

View File

@ -15,6 +15,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.object.ConsolePlayer;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.plotsquared.bukkit.util.bukkit.BukkitUtil; import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
@ -31,7 +32,7 @@ public class BukkitCommand implements CommandExecutor, TabCompleter {
if (commandSender instanceof Player) { if (commandSender instanceof Player) {
return MainCommand.onCommand(BukkitUtil.getPlayer((Player) commandSender), commandLabel, args); return MainCommand.onCommand(BukkitUtil.getPlayer((Player) commandSender), commandLabel, args);
} }
return MainCommand.onCommand(null, commandLabel, args); return MainCommand.onCommand(ConsolePlayer.getConsole(), commandLabel, args);
} }
@Override @Override

View File

@ -47,6 +47,6 @@ public class WorldEvents implements Listener {
@EventHandler @EventHandler
public void worldLoad(final WorldLoadEvent event) { public void worldLoad(final WorldLoadEvent event) {
UUIDHandler.startCaching(); UUIDHandler.startCaching(null);
} }
} }

View File

@ -35,10 +35,14 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
} }
@Override @Override
public boolean startCaching() { public boolean startCaching(Runnable whenDone) {
if (!super.startCaching()) { if (!super.startCaching(whenDone)) {
return false; return false;
} }
return cache(whenDone);
}
public boolean cache(final Runnable whenDone) {
final File container = Bukkit.getWorldContainer(); final File container = Bukkit.getWorldContainer();
List<World> worlds = Bukkit.getWorlds(); List<World> worlds = Bukkit.getWorlds();
final String world; final String world;
@ -48,7 +52,6 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
else { else {
world = worlds.get(0).getName(); world = worlds.get(0).getName();
} }
CACHED = true;
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -88,6 +91,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
} }
} }
add(toAdd); add(toAdd);
if (whenDone != null) whenDone.run();
return; return;
} }
final HashSet<String> worlds = new HashSet<>(); final HashSet<String> worlds = new HashSet<>();
@ -172,6 +176,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
} }
} }
add(toAdd); add(toAdd);
if (whenDone != null) whenDone.run();
} }
}); });
return true; return true;

View File

@ -10,14 +10,15 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import com.google.common.collect.HashBiMap;
import com.intellectualcrafters.json.JSONObject; import com.intellectualcrafters.json.JSONObject;
import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
@ -43,13 +44,13 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
} }
try { try {
PreparedStatement stmt = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS `usercache` (cache_key INTEGER PRIMARY KEY, uuid VARCHAR(32) NOT NULL, username VARCHAR(32) NOT NULL)"); PreparedStatement stmt = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS `usercache` (uuid VARCHAR(32) NOT NULL, username VARCHAR(32) NOT NULL, PRIMARY KEY (uuid, username))");
stmt.execute(); stmt.execute();
stmt.close(); stmt.close();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
startCaching(); startCaching(null);
} }
private class SQLUUIDHandlerException extends RuntimeException { private class SQLUUIDHandlerException extends RuntimeException {
@ -71,97 +72,92 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
} }
@Override @Override
public boolean startCaching() { public boolean startCaching(final Runnable whenDone) {
if (!super.startCaching()) { if (!super.startCaching(whenDone)) {
return false; return false;
} }
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
final HashBiMap<StringWrapper, UUID> toAdd = HashBiMap.create(new HashMap<StringWrapper, UUID>());
PreparedStatement statement = getConnection().prepareStatement("SELECT `uuid`, `username` FROM `usercache`"); PreparedStatement statement = getConnection().prepareStatement("SELECT `uuid`, `username` FROM `usercache`");
ResultSet resultSet = statement.executeQuery(); ResultSet resultSet = statement.executeQuery();
StringWrapper username; StringWrapper username;
UUID uuid; UUID uuid;
boolean found = false;
while (resultSet.next()) { while (resultSet.next()) {
found = true;
username = new StringWrapper(resultSet.getString("username")); username = new StringWrapper(resultSet.getString("username"));
uuid = UUID.fromString(resultSet.getString("uuid")); uuid = UUID.fromString(resultSet.getString("uuid"));
add(new StringWrapper(username.value), uuid); toAdd.put(new StringWrapper(username.value), uuid);
} }
add(new StringWrapper("*"), DBFunc.everyone);
statement.close(); statement.close();
if (!found) { add(toAdd);
PS.log(C.PREFIX.s() + "&cUsing player data files, couldn't find any cached UUIDs"); add(new StringWrapper("*"), DBFunc.everyone);
for (World world : Bukkit.getWorlds()) {
FileUUIDHandler fileHandler = new FileUUIDHandler(SQLUUIDHandler.this.uuidWrapper); // This should be called as long as there are some unknown plots
fileHandler.startCaching(); final List<UUID> toFetch = new ArrayList<>();
for (UUID u : UUIDHandler.getAllUUIDS()) {
if (!uuidExists(u)) {
toFetch.add(u);
} }
PS.log(C.PREFIX.s() + "&cWill fetch the uuids for all plots!"); }
List<UUID> toFetch = new ArrayList<>(); if (toFetch.isEmpty()) {
for (UUID u : UUIDHandler.getAllUUIDS()) { if (whenDone != null) whenDone.run();
if (!uuidExists(u)) { return;
toFetch.add(u); }
} FileUUIDHandler fileHandler = new FileUUIDHandler(SQLUUIDHandler.this.uuidWrapper);
} fileHandler.startCaching(new Runnable() {
PS.log(C.PREFIX.s() + "&cFetching &6" + toFetch.size() + "&c uuids!"); @Override
List<UUID> fetched = new ArrayList<>(); public void run() {
for (UUID u : toFetch) { // If the file based UUID handler didn't cache it, then we can't cache offline mode
OfflinePlayer plr = Bukkit.getOfflinePlayer(u); // Also, trying to cache based on files again, is useless as that's what the file based uuid cacher does
if (plr != null) { if (Settings.OFFLINE_MODE) {
if (plr.getName() != null) { if (whenDone != null) whenDone.run();
add(new StringWrapper(plr.getName()), u);
fetched.add(u);
}
}
}
PS.log(C.PREFIX.s() + "&cFetched &6" + fetched.size() + "&c from player files!");
toFetch.removeAll(fetched);
if (!Settings.OFFLINE_MODE) {
if (toFetch.isEmpty()) {
return; return;
} }
PS.log(C.PREFIX.s() + "&cWill fetch &6" + toFetch.size() + "&c from mojang!"); if (!Settings.OFFLINE_MODE) {
int i = 0; PS.log(C.PREFIX.s() + "&cWill fetch &6" + toFetch.size() + "&c from mojang!");
Iterator<UUID> iterator = toFetch.iterator(); int i = 0;
while (iterator.hasNext()) { Iterator<UUID> iterator = toFetch.iterator();
StringBuilder url = new StringBuilder("http://api.intellectualsites.com/uuid/?user="); while (iterator.hasNext()) {
List<UUID> currentIteration = new ArrayList<>(); StringBuilder url = new StringBuilder("http://api.intellectualsites.com/uuid/?user=");
while (i++ <= 15 && iterator.hasNext()) { List<UUID> currentIteration = new ArrayList<>();
UUID _uuid = iterator.next(); while (i++ <= 15 && iterator.hasNext()) {
url.append(_uuid.toString()); UUID _uuid = iterator.next();
if (iterator.hasNext()) { url.append(_uuid.toString());
url.append(","); if (iterator.hasNext()) {
} url.append(",");
currentIteration.add(_uuid);
}
PS.log(C.PREFIX.s() + "&cWill attempt to fetch &6" + currentIteration.size() + "&c uuids from: &6" + url.toString());
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url.toString()).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder rawJSON = new StringBuilder();
while ((line = reader.readLine()) != null) {
rawJSON.append(line);
}
reader.close();
JSONObject object = new JSONObject(rawJSON.toString());
for (UUID _u : currentIteration) {
Object o = object.getJSONObject(_u.toString().replace("-", "")).get("username");
if (o == null || !(o instanceof String)) {
continue;
} }
add(new StringWrapper(o.toString()), _u); currentIteration.add(_uuid);
} }
} catch (final Exception e) { PS.log(C.PREFIX.s() + "&cWill attempt to fetch &6" + currentIteration.size() + "&c uuids from: &6" + url.toString());
e.printStackTrace(); try {
HttpURLConnection connection = (HttpURLConnection) new URL(url.toString()).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder rawJSON = new StringBuilder();
while ((line = reader.readLine()) != null) {
rawJSON.append(line);
}
reader.close();
JSONObject object = new JSONObject(rawJSON.toString());
for (UUID _u : currentIteration) {
Object o = object.getJSONObject(_u.toString().replace("-", "")).get("username");
if (o == null || !(o instanceof String)) {
continue;
}
add(new StringWrapper(o.toString()), _u);
}
} catch (final Exception e) {
e.printStackTrace();
}
i = 0;
} }
i = 0;
} }
if (whenDone != null) whenDone.run();
} }
} });
} catch (SQLException e) { } catch (SQLException e) {
throw new SQLUUIDHandlerException("Couldn't select :s", e); throw new SQLUUIDHandlerException("Couldn't select :s", e);
} }
@ -211,7 +207,7 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
@Override @Override
public boolean add(final StringWrapper name, final UUID uuid) { public boolean add(final StringWrapper name, final UUID uuid) {
// Ignoring duplicates // Ignoring duplicates
if (!super.add(name, uuid)) { if (super.add(name, uuid)) {
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -226,9 +222,9 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
} }
} }
}); });
return false; return true;
} }
return true; return false;
} }
/** /**
@ -263,4 +259,23 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
}); });
return null; return null;
} }
@Override
public void rename(final UUID uuid, final StringWrapper name) {
super.rename(uuid, name);
TaskManager.runTaskAsync(new Runnable() {
@Override
public void run() {
try {
PreparedStatement statement = getConnection().prepareStatement("UPDATE usercache SET `username`=? WHERE `uuid`=?");
statement.setString(1, name.value);
statement.setString(2, uuid.toString());
statement.execute();
PS.log(C.PREFIX.s() + "Name change for '" + uuid + "' to '" + name.value + "'");
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
} }

View File

@ -114,7 +114,7 @@ public class SpongeMain implements IPlotMain, PluginContainer {
Collection<World> worlds = server.getWorlds(); Collection<World> worlds = server.getWorlds();
if (worlds.size() > 0) { if (worlds.size() > 0) {
log("INJECTING WORLDS!!!!!!!"); log("INJECTING WORLDS!!!!!!!");
UUIDHandler.startCaching(); UUIDHandler.startCaching(null);
for (World world : server.getWorlds()) { for (World world : server.getWorlds()) {
log("INJECTING WORLD: " + world.getName()); log("INJECTING WORLD: " + world.getName());
world.setWorldGenerator(new SpongePlotGenerator(world.getName())); world.setWorldGenerator(new SpongePlotGenerator(world.getName()));