Added -p flag to //butcher to kill pet wolves.

This commit is contained in:
Wizjany 2011-05-24 18:19:11 -04:00
parent f97c765623
commit 8f032fb2ea
3 changed files with 31 additions and 5 deletions

View File

@ -256,7 +256,7 @@ public abstract class LocalWorld {
}
/**
* Kill mobs in an area.
* Kill mobs in an area, excluding pet wolves.
*
* @param origin
* @param radius
@ -264,6 +264,16 @@ public abstract class LocalWorld {
*/
public abstract int killMobs(Vector origin, int radius);
/**
* Kill mobs in an area.
*
* @param origin
* @param radius
* @param killPets
* @return
*/
public abstract int killMobs(Vector origin, int radius, boolean killPets);
/**
* Remove entities in an area.
*

View File

@ -391,7 +391,7 @@ public class BukkitWorld extends LocalWorld {
}
/**
* Kill mobs in an area.
* Kill mobs in an area, excluding tamed wolves.
*
* @param origin
* @param radius -1 for all mobs
@ -399,12 +399,27 @@ public class BukkitWorld extends LocalWorld {
*/
@Override
public int killMobs(Vector origin, int radius) {
return killMobs(origin, radius, false);
}
/**
* Kill mobs in an area.
*
* @param origin
* @param radius -1 for all mobs
* @param killPets true to kill tames wolves
* @return
*/
@Override
public int killMobs(Vector origin, int radius, boolean killPets) {
int num = 0;
double radiusSq = Math.pow(radius, 2);
for (LivingEntity ent : world.getLivingEntities()) {
if ((ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime)
&& !(ent instanceof Wolf)) {
if (!killPets && ent instanceof Wolf && ((Wolf) ent).isTamed()) {
continue; // tamed wolf
}
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime) {
if (radius == -1
|| origin.distanceSq(BukkitUtil.toVector(ent.getLocation())) <= radiusSq) {
ent.remove();

View File

@ -307,6 +307,7 @@ public class UtilityCommands {
@Command(
aliases = {"butcher"},
usage = "[radius]",
flags = "p",
desc = "Kill all or nearby mobs",
min = 0,
max = 1
@ -320,7 +321,7 @@ public class UtilityCommands {
Math.max(1, args.getInteger(0)) : -1;
Vector origin = session.getPlacementPosition(player);
int killed = player.getWorld().killMobs(origin, radius);
int killed = player.getWorld().killMobs(origin, radius, args.hasFlag('p'));
player.print("Killed " + killed + " mobs.");
}