From c21c380bba501cfbaf3b8d0a0189866a17c87bf5 Mon Sep 17 00:00:00 2001 From: TomyLobo Date: Tue, 6 Dec 2011 07:08:32 +0100 Subject: [PATCH] Added a -a flag to /butcher to kill animals. Its now disabled by default. --- src/main/java/com/sk89q/worldedit/LocalWorld.java | 1 + src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java | 6 ++++++ .../com/sk89q/worldedit/commands/UtilityCommands.java | 8 +++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/LocalWorld.java b/src/main/java/com/sk89q/worldedit/LocalWorld.java index b45a48402..9912976c5 100644 --- a/src/main/java/com/sk89q/worldedit/LocalWorld.java +++ b/src/main/java/com/sk89q/worldedit/LocalWorld.java @@ -38,6 +38,7 @@ public abstract class LocalWorld { public class KillFlags { public static final int PETS = 1 << 0; public static final int NPCS = 1 << 1; + public static final int ANIMALS = 1 << 2; } /** diff --git a/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index 73df0e9ee..59bac1fe1 100644 --- a/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -33,6 +33,7 @@ import org.bukkit.block.Furnace; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Sign; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Animals; import org.bukkit.entity.Arrow; import org.bukkit.entity.Boat; import org.bukkit.entity.Entity; @@ -500,6 +501,7 @@ public class BukkitWorld extends LocalWorld { public int killMobs(Vector origin, double radius, int flags) { boolean killPets = (flags & KillFlags.PETS) != 0; boolean killNPCs = (flags & KillFlags.NPCS) != 0; + boolean killAnimals = (flags & KillFlags.ANIMALS) != 0; int num = 0; double radiusSq = radius * radius; @@ -511,6 +513,10 @@ public class BukkitWorld extends LocalWorld { continue; } + if (!killAnimals && ent instanceof Animals) { + continue; + } + if (!killPets && ent instanceof Tameable && ((Tameable) ent).isTamed()) { continue; // tamed wolf } diff --git a/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java b/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java index 0689b852f..08e871217 100644 --- a/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java +++ b/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java @@ -345,13 +345,14 @@ public class UtilityCommands { @Command( aliases = { "butcher" }, usage = "[radius]", - flags = "pn", + flags = "pna", desc = "Kill all or nearby mobs", help = "Kills nearby mobs, or all mobs if you don't specify a radius.\n" + "Flags:" + - " -p also kill pets.\n" + - " -n also kill NPCs.", + " -p also kills pets.\n" + + " -n also kills NPCs.\n" + + " -a also kills animals.", min = 0, max = 1 ) @@ -368,6 +369,7 @@ public class UtilityCommands { int flags = 0; if (args.hasFlag('p')) flags |= KillFlags.PETS; if (args.hasFlag('n')) flags |= KillFlags.NPCS; + if (args.hasFlag('a')) flags |= KillFlags.ANIMALS; int killed = player.getWorld().killMobs(origin, radius, flags); player.print("Killed " + killed + " mobs.");