Fix world argument to ignore radius, and allow for skipping radius param in syntax.

This commit is contained in:
KHobbits 2014-02-09 22:26:54 +00:00
parent 9bc8f287a4
commit fa765d3077
2 changed files with 26 additions and 19 deletions

View File

@ -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<String> types = new ArrayList<String>();
List<String> customTypes = new ArrayList<String>();
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<String> types, List<String> customTypes, World world, int radius)
{
int removed = 0;
@ -103,17 +110,17 @@ public class Commandremove extends EssentialsCommand
{
radius *= radius;
}
ArrayList<ToRemove> removeTypes = new ArrayList<ToRemove>();
ArrayList<Mob> customRemoveTypes = new ArrayList<Mob>();
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,

View File

@ -300,7 +300,7 @@ commands:
aliases: [formula,eformula,method,emethod,erecipe,recipes,erecipes]
remove:
description: Removes entities in your world.
usage: /<command> <all|tamed|drops|arrows|boats|minecarts|xp|paintings|itemframes|endercrystals|monsters|animals|ambient|mobs|[mobType]> [radius] [world]
usage: /<command> <all|tamed|drops|arrows|boats|minecarts|xp|paintings|itemframes|endercrystals|monsters|animals|ambient|mobs|[mobType]> [radius|world]
aliases: [eremove,butcher,ebutcher,killall,ekillall,mobkill,emobkill]
repair:
description: Repairs the durability of one or all items.