diff --git a/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java b/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java index 7855a3bb..558eb01f 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java @@ -255,26 +255,12 @@ public static boolean isIntensiveEntity(Entity entity) { return entity instanceof Item || entity instanceof TNTPrimed || entity instanceof ExperienceOrb - || entity instanceof FallingSand + || entity instanceof FallingBlock || (entity instanceof LivingEntity && !(entity instanceof Tameable) && !(entity instanceof Player)); } - /** - * Returns whether our running CraftBukkit already supports - * the HangingEvent instead of the PaintingEvent - * - * @return true if the hanging event is supported - */ - public static boolean hasHangingEvent() { - Class tmp = null; - try { - tmp = Class.forName("org.bukkit.event.hanging.HangingEvent"); - } catch (ClassNotFoundException ignored) { } - return (tmp != null); - } - /** * Search an enum for a value, and return the first one found. Return null if the * enum entry is not found. diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java index 6f1b29f1..b96f9daf 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java @@ -42,6 +42,7 @@ import org.bukkit.entity.Wither; import org.bukkit.entity.WitherSkull; import org.bukkit.entity.Wolf; +import org.bukkit.entity.minecart.ExplosiveMinecart; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -88,8 +89,6 @@ public class WorldGuardEntityListener implements Listener { private WorldGuardPlugin plugin; - private EntityType tntMinecartType; - /** * Construct the object; * @@ -97,7 +96,6 @@ public class WorldGuardEntityListener implements Listener { */ public WorldGuardEntityListener(WorldGuardPlugin plugin) { this.plugin = plugin; - tntMinecartType = BukkitUtil.tryEnum(EntityType.class, "MINECART_TNT"); } /** @@ -286,7 +284,7 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) { } } - if (attacker instanceof TNTPrimed || attacker.getType() == tntMinecartType) { + if (attacker instanceof TNTPrimed || attacker instanceof ExplosiveMinecart) { // The check for explosion damage should be handled already... But... What ever... if (wcfg.blockTNTExplosions) { @@ -616,7 +614,7 @@ public void onEntityExplode(EntityExplodeEvent event) { } } } - } else if (ent instanceof TNTPrimed || (ent != null && ent.getType() == tntMinecartType)) { + } else if (ent instanceof TNTPrimed || ent instanceof ExplosiveMinecart) { if (wcfg.blockTNTExplosions) { event.setCancelled(true); return; @@ -743,7 +741,7 @@ public void onExplosionPrime(ExplosionPrimeEvent event) { return; } } else if (event.getEntityType() == EntityType.PRIMED_TNT - || event.getEntityType() == tntMinecartType) { + || event.getEntityType() == EntityType.MINECART_TNT) { if (wcfg.blockTNTExplosions) { event.setCancelled(true); return; diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPaintingListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPaintingListener.java deleted file mode 100644 index 00402903..00000000 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPaintingListener.java +++ /dev/null @@ -1,174 +0,0 @@ -// $Id$ -/* - * WorldGuard - * Copyright (C) 2010 sk89q - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . -*/ - -package com.sk89q.worldguard.bukkit; - -import static com.sk89q.worldguard.bukkit.BukkitUtil.toVector; - -import org.bukkit.ChatColor; -import org.bukkit.Warning; -import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.entity.Creeper; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Painting; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.painting.PaintingBreakByEntityEvent; -import org.bukkit.event.painting.PaintingBreakEvent; -import org.bukkit.event.painting.PaintingPlaceEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; - -import com.sk89q.worldedit.blocks.ItemID; -import com.sk89q.worldguard.blacklist.events.BlockBreakBlacklistEvent; -import com.sk89q.worldguard.blacklist.events.ItemUseBlacklistEvent; -import com.sk89q.worldguard.protection.flags.DefaultFlag; - -/** - * Listener for painting related events. - * - * @author sk89q - * @deprecated Use {@link com.sk89q.worldguard.bukkit.WorldGuardHangingListener} instead. - */ -@Deprecated -@Warning(reason="This listener has been replaced by WorldGuardHangingListener") -public class WorldGuardPaintingListener implements Listener { - - private WorldGuardPlugin plugin; - - /** - * Construct the object; - * - * @param plugin The plugin instance - */ - public WorldGuardPaintingListener(WorldGuardPlugin plugin) { - this.plugin = plugin; - } - - /** - * Register events. - */ - public void registerEvents() { - plugin.getServer().getPluginManager().registerEvents(this, plugin); - } - - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPaintingBreak(PaintingBreakEvent breakEvent) { - if (!(breakEvent instanceof PaintingBreakByEntityEvent)) { - return; - } - - PaintingBreakByEntityEvent event = (PaintingBreakByEntityEvent) breakEvent; - Painting painting = event.getPainting(); - World world = painting.getWorld(); - ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); - - if (event.getRemover() instanceof Player) { - Player player = (Player) event.getRemover(); - - if (wcfg.getBlacklist() != null) { - if (!wcfg.getBlacklist().check( - new BlockBreakBlacklistEvent(plugin.wrapPlayer(player), - toVector(player.getLocation()), ItemID.PAINTING), false, false)) { - event.setCancelled(true); - return; - } - } - - if (wcfg.useRegions) { - if (!plugin.getGlobalRegionManager().canBuild(player, painting.getLocation())) { - player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); - event.setCancelled(true); - return; - } - } - } else { - if (event.getRemover() instanceof Creeper) { - if (wcfg.blockCreeperBlockDamage || wcfg.blockCreeperExplosions) { - event.setCancelled(true); - return; - } - if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows(DefaultFlag.CREEPER_EXPLOSION, painting.getLocation())) { - event.setCancelled(true); - return; - } - } - - if (wcfg.blockEntityPaintingDestroy - || (wcfg.useRegions - && !plugin.getGlobalRegionManager().allows(DefaultFlag.ENTITY_PAINTING_DESTROY, painting.getLocation()))) { - event.setCancelled(true); - } - } - } - - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPaintingPlace(PaintingPlaceEvent event) { - Block placedOn = event.getBlock(); - Player player = event.getPlayer(); - World world = placedOn.getWorld(); - - ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); - - if (wcfg.getBlacklist() != null) { - - if (!wcfg.getBlacklist().check( - new ItemUseBlacklistEvent(plugin.wrapPlayer(player), - toVector(player.getLocation()), ItemID.PAINTING), false, false)) { - event.setCancelled(true); - return; - } - } - - if (wcfg.useRegions) { - if (!plugin.getGlobalRegionManager().canBuild(player, placedOn.getLocation())) { - player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); - event.setCancelled(true); - return; - } - } - } - - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onEntityInteract(PlayerInteractEntityEvent event) { - Player player = event.getPlayer(); - Entity entity = event.getRightClicked(); - - ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(entity.getWorld()); - - if (wcfg.useRegions && entity instanceof Painting) { - if (!plugin.getGlobalRegionManager().canBuild(player, entity.getLocation())) { - player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); - event.setCancelled(true); - return; - } - - if (entity instanceof Painting - && ((!plugin.getGlobalRegionManager().allows( - DefaultFlag.ENTITY_PAINTING_DESTROY, entity.getLocation())))) { - event.setCancelled(true); - } - } - } -} diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index c58a9b35..cbd9c6fe 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -19,8 +19,6 @@ package com.sk89q.worldguard.bukkit; -import static com.sk89q.worldguard.bukkit.BukkitUtil.hasHangingEvent; - import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -183,11 +181,7 @@ public void run() { (new WorldGuardWeatherListener(this)).registerEvents(); (new WorldGuardVehicleListener(this)).registerEvents(); (new WorldGuardServerListener(this)).registerEvents(); - if (hasHangingEvent()) { - (new WorldGuardHangingListener(this)).registerEvents(); - } else { - (new WorldGuardPaintingListener(this)).registerEvents(); - } + (new WorldGuardHangingListener(this)).registerEvents(); configuration.updateCommandBookGodMode(); if (getServer().getPluginManager().isPluginEnabled("CommandBook")) {