From bed6782a001fc8fb6d09e86ca443e1f37061559c Mon Sep 17 00:00:00 2001 From: sk89q Date: Wed, 29 Jun 2011 16:15:56 -0700 Subject: [PATCH] Made /stoplag handle TNT removal better. --- .../com/sk89q/worldguard/bukkit/BukkitUtil.java | 16 +++++++++++++++- .../bukkit/WorldGuardEntityListener.java | 1 + .../bukkit/WorldGuardPlayerListener.java | 6 +----- .../bukkit/WorldGuardWorldListener.java | 5 +---- .../bukkit/commands/ToggleCommands.java | 6 ++---- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java b/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java index 67f8d789..cce32d44 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java @@ -24,7 +24,7 @@ import com.sk89q.worldedit.blocks.BlockType; import org.bukkit.*; import org.bukkit.block.Block; -import org.bukkit.entity.Player; +import org.bukkit.entity.*; import org.bukkit.inventory.ItemStack; import com.sk89q.worldedit.BlockVector; import com.sk89q.worldedit.Vector; @@ -219,4 +219,18 @@ public static String replaceColorMacros(String str) { return str; } + + /** + * Returns whether an entity should be removed for the halt activity mode. + * + * @param entity + * @return + */ + public static boolean isIntensiveEntity(Entity entity) { + return entity instanceof Item + || entity instanceof TNTPrimed + || (entity instanceof LivingEntity + && !(entity instanceof Tameable) + && !(entity instanceof Player)); + } } diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java index b4e4a026..3ea39860 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java @@ -486,6 +486,7 @@ public void onEntityExplode(EntityExplodeEvent event) { } } else if (ent instanceof TNTPrimed) { if (cfg.activityHaltToggle) { + ent.remove(); event.setCancelled(true); return; } diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java index 81f4f12d..de62d615 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java @@ -23,7 +23,6 @@ import java.util.Set; import java.util.logging.Logger; -import com.sk89q.worldedit.blocks.BlockType; import com.sk89q.worldguard.protection.flags.RegionGroupFlag; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -145,10 +144,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { int removed = 0; for (Entity entity : player.getWorld().getEntities()) { - if (entity instanceof Item - || (entity instanceof LivingEntity - && !(entity instanceof Tameable) - && !(entity instanceof Player))) { + if (BukkitUtil.isIntensiveEntity(entity)) { entity.remove(); removed++; } diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardWorldListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardWorldListener.java index 91d91084..cf570b00 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardWorldListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardWorldListener.java @@ -66,10 +66,7 @@ public void onChunkLoad(ChunkLoadEvent event) { int removed = 0; for (Entity entity : event.getChunk().getEntities()) { - if (entity instanceof Item - || (entity instanceof LivingEntity - && !(entity instanceof Tameable) - && !(entity instanceof Player))) { + if (BukkitUtil.isIntensiveEntity(entity)) { entity.remove(); removed++; } diff --git a/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java b/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java index e86c0ccc..cb888622 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit.commands; +import com.sk89q.worldguard.bukkit.BukkitUtil; import com.sk89q.worldguard.bukkit.ConfigurationManager; import org.bukkit.ChatColor; import org.bukkit.World; @@ -115,10 +116,7 @@ public static void stopLag(CommandContext args, WorldGuardPlugin plugin, int removed = 0; for (Entity entity : world.getEntities()) { - if (entity instanceof Item - || (entity instanceof LivingEntity - && !(entity instanceof Tameable) - && !(entity instanceof Player))) { + if (BukkitUtil.isIntensiveEntity(entity)) { entity.remove(); removed++; }