diff --git a/src/main/java/com/sk89q/worldedit/LocalWorld.java b/src/main/java/com/sk89q/worldedit/LocalWorld.java index 6e65cf1f6..ca9d25b75 100644 --- a/src/main/java/com/sk89q/worldedit/LocalWorld.java +++ b/src/main/java/com/sk89q/worldedit/LocalWorld.java @@ -39,6 +39,7 @@ public abstract class LocalWorld { public static final int PETS = 1 << 0; public static final int NPCS = 1 << 1; public static final int ANIMALS = 1 << 2; + public static final int GOLEMS = 1 << 3; public static final int WITH_LIGHTNING = 1 << 20; } diff --git a/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index 721f4c761..49b9c4996 100644 --- a/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -475,6 +475,7 @@ public class BukkitWorld extends LocalWorld { boolean killNPCs = (flags & KillFlags.NPCS) != 0; boolean killAnimals = (flags & KillFlags.ANIMALS) != 0; boolean withLightning = (flags & KillFlags.WITH_LIGHTNING) != 0; + boolean killGolems = (flags & KillFlags.GOLEMS) != 0; int num = 0; double radiusSq = radius * radius; @@ -494,6 +495,13 @@ public class BukkitWorld extends LocalWorld { continue; // tamed wolf } + try { + // Temporary solution to fix Golems being butchered. + if (!killGolems && Class.forName("org.bukkit.entity.Golem").isAssignableFrom(ent.getClass())) { + continue; + } + } catch (ClassNotFoundException e) {} + try { // Temporary solution until org.bukkit.entity.NPC is widely deployed. if (!killNPCs && Class.forName("org.bukkit.entity.NPC").isAssignableFrom(ent.getClass())) { diff --git a/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java b/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java index 0921077fb..e065ae22a 100644 --- a/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java +++ b/src/main/java/com/sk89q/worldedit/commands/UtilityCommands.java @@ -346,13 +346,14 @@ public class UtilityCommands { @Command( aliases = { "butcher" }, usage = "[radius]", - flags = "plan", + flags = "plang", desc = "Kill all or nearby mobs", help = "Kills nearby mobs, based on radius, if none is given uses default in configuration.\n" + "Flags:" + " -p also kills pets.\n" + " -n also kills NPCs.\n" + + " -g also kills Golems.\n" + " -a also kills animals.\n" + " -l strikes lightning on each killed mob.", min = 0, @@ -383,6 +384,10 @@ public class UtilityCommands { if (player.hasPermission("worldedit.butcher.npcs") && (args.hasFlag('n'))) { flags |= KillFlags.NPCS; } + + if (player.hasPermission("worldedit.butcher.golems") && (args.hasFlag('g'))) { + flags |= KillFlags.GOLEMS; + } if (player.hasPermission("worldedit.butcher.animals") && (args.hasFlag('a'))) { flags |= KillFlags.ANIMALS;