From fa765d3077852cd1093cd8dae16a6f7e4fe141b4 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 9 Feb 2014 22:26:54 +0000 Subject: [PATCH] Fix world argument to ignore radius, and allow for skipping radius param in syntax. --- .../essentials/commands/Commandremove.java | 43 +++++++++++-------- Essentials/src/plugin.yml | 2 +- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandremove.java b/Essentials/src/com/earth2me/essentials/commands/Commandremove.java index cafd22ba8..9fa946260 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandremove.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandremove.java @@ -20,7 +20,7 @@ public class Commandremove extends EssentialsCommand { super("remove"); } - + @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { @@ -38,17 +38,19 @@ public class Commandremove extends EssentialsCommand } catch (NumberFormatException e) { - throw new Exception(_("numberRequired"), e); + world = ess.getWorld(args[1]); } } if (args.length >= 3) { + // This is to prevent breaking the old syntax + radius = 0; world = ess.getWorld(args[2]); } parseCommand(server, user.getSource(), args, world, radius); - + } - + @Override protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { @@ -59,12 +61,17 @@ public class Commandremove extends EssentialsCommand World world = ess.getWorld(args[1]); parseCommand(server, sender, args, world, 0); } - + private void parseCommand(Server server, CommandSource sender, String[] args, World world, int radius) throws Exception { List types = new ArrayList(); List customTypes = new ArrayList(); - + + if (world == null) + { + throw new Exception(_("invalidWorld")); + } + if (args[0].contentEquals("*") || args[0].contentEquals("all")) { types.add(0, "ALL"); @@ -95,7 +102,7 @@ public class Commandremove extends EssentialsCommand } removeHandler(sender, types, customTypes, world, radius); } - + private void removeHandler(CommandSource sender, List types, List customTypes, World world, int radius) { int removed = 0; @@ -103,17 +110,17 @@ public class Commandremove extends EssentialsCommand { radius *= radius; } - + ArrayList removeTypes = new ArrayList(); ArrayList customRemoveTypes = new ArrayList(); - + for (String s : types) { removeTypes.add(ToRemove.valueOf(s)); } - + boolean warnUser = false; - + for (String s : customTypes) { Mob mobType = Mob.fromName(s); @@ -126,12 +133,12 @@ public class Commandremove extends EssentialsCommand customRemoveTypes.add(mobType); } } - + if (warnUser) { sender.sendMessage(_("invalidMob")); } - + for (Chunk chunk : world.getLoadedChunks()) { for (Entity e : chunk.getEntities()) @@ -147,10 +154,10 @@ public class Commandremove extends EssentialsCommand { continue; } - + for (ToRemove toRemove : removeTypes) { - + if (e instanceof Tameable && ((Tameable)e).isTamed()) { if (toRemove == ToRemove.TAMED) @@ -163,7 +170,7 @@ public class Commandremove extends EssentialsCommand continue; } } - + switch (toRemove) { case DROPS: @@ -278,8 +285,8 @@ public class Commandremove extends EssentialsCommand } sender.sendMessage(_("removed", removed)); } - - + + private enum ToRemove { DROPS, diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index bb40080d9..e26b0673c 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -300,7 +300,7 @@ commands: aliases: [formula,eformula,method,emethod,erecipe,recipes,erecipes] remove: description: Removes entities in your world. - usage: / [radius] [world] + usage: / [radius|world] aliases: [eremove,butcher,ebutcher,killall,ekillall,mobkill,emobkill] repair: description: Repairs the durability of one or all items.