summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunfighterJ <joseph.jenniges@gmail.com>2013-02-25 17:15:20 -0600
committerGunfighterJ <joseph.jenniges@gmail.com>2013-02-25 17:15:20 -0600
commitd5f702f2cba892321e0cb1dcedd27d5ea56244d8 (patch)
treee74b1e126281cd3dfc5c918e79dfc9cb197f02b7
parent964bdc6d30748d843c8e510758d69838f8d29791 (diff)
downloadEssentials-d5f702f2cba892321e0cb1dcedd27d5ea56244d8.tar
Essentials-d5f702f2cba892321e0cb1dcedd27d5ea56244d8.tar.gz
Essentials-d5f702f2cba892321e0cb1dcedd27d5ea56244d8.tar.lz
Essentials-d5f702f2cba892321e0cb1dcedd27d5ea56244d8.tar.xz
Essentials-d5f702f2cba892321e0cb1dcedd27d5ea56244d8.zip
[Protect] Prevent creepers from breaking paintings if their explosions are disabled.
Backport from 3.0
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
index d9102c023..4ba608d48 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
@@ -13,6 +13,8 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.*;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
+import org.bukkit.event.hanging.HangingBreakByEntityEvent;
+import org.bukkit.event.hanging.HangingBreakEvent;
public class EssentialsProtectEntityListener implements Listener
@@ -176,7 +178,7 @@ public class EssentialsProtectEntityListener implements Listener
private boolean shouldBeDamaged(final User user, final String type)
{
return (user.isAuthorized("essentials.protect.damage.".concat(type))
- && !user.isAuthorized("essentials.protect.damage.disable"));
+ && !user.isAuthorized("essentials.protect.damage.disable"));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -232,7 +234,7 @@ public class EssentialsProtectEntityListener implements Listener
event.setCancelled(true);
return;
}
-
+
// This code will prevent explosions near protected rails, signs or protected chests
// TODO: Use protect db instead of this code
@@ -332,4 +334,15 @@ public class EssentialsProtectEntityListener implements Listener
event.setCancelled(true);
}
}
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onPaintingBreak(HangingBreakByEntityEvent event)
+ {
+ if (event.getCause() == HangingBreakEvent.RemoveCause.ENTITY
+ && event.getRemover() instanceof Creeper
+ && prot.getSettingBool(ProtectConfig.prevent_creeper_explosion))
+ {
+ event.setCancelled(true);
+ }
+ }
}