diff options
author | Iaccidentally <coryhuckaby@gmail.com> | 2013-02-12 18:37:40 -0500 |
---|---|---|
committer | Iaccidentally <coryhuckaby@gmail.com> | 2013-02-12 18:37:40 -0500 |
commit | ec8c778f685de92c6cacd92d492009477c0f5768 (patch) | |
tree | e4b8a1503c23d21f5abd1ad77e9fc1ad4393e764 /EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java | |
parent | c2d904ac7dad474b35874fd6a1cb410179001c75 (diff) | |
download | Essentials-ec8c778f685de92c6cacd92d492009477c0f5768.tar Essentials-ec8c778f685de92c6cacd92d492009477c0f5768.tar.gz Essentials-ec8c778f685de92c6cacd92d492009477c0f5768.tar.lz Essentials-ec8c778f685de92c6cacd92d492009477c0f5768.tar.xz Essentials-ec8c778f685de92c6cacd92d492009477c0f5768.zip |
Clean up protect :: transient is not needed :: remove unnecessary returns :: @Override all the things!
Diffstat (limited to 'EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java')
-rw-r--r-- | EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java | 673 |
1 files changed, 335 insertions, 338 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java index 4770248b9..d9102c023 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java @@ -1,338 +1,335 @@ -package com.earth2me.essentials.protect; - -import com.earth2me.essentials.IEssentials; -import com.earth2me.essentials.User; -import java.util.Locale; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.*; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.*; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.EntityTargetEvent.TargetReason; - - -public class EssentialsProtectEntityListener implements Listener -{ - private final transient IProtect prot; - private final transient IEssentials ess; - - public EssentialsProtectEntityListener(final IProtect prot) - { - this.prot = prot; - this.ess = prot.getEssentialsConnect().getEssentials(); - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityDamage(final EntityDamageEvent event) - { - final Entity target = event.getEntity(); - - if (target instanceof Villager && prot.getSettingBool(ProtectConfig.prevent_villager_death)) - { - event.setCancelled(true); - return; - } - - final User user = ess.getUser(target); - final DamageCause cause = event.getCause(); - - if (event instanceof EntityDamageByBlockEvent) - { - if (prot.getSettingBool(ProtectConfig.disable_contactdmg) - && cause == DamageCause.CONTACT - && !(target instanceof Player && shouldBeDamaged(user, "contact"))) - { - event.setCancelled(true); - return; - } - if (prot.getSettingBool(ProtectConfig.disable_lavadmg) - && cause == DamageCause.LAVA - && !(target instanceof Player && shouldBeDamaged(user, "lava"))) - { - event.setCancelled(true); - return; - } - if (prot.getSettingBool(ProtectConfig.prevent_tnt_explosion) - && cause == DamageCause.BLOCK_EXPLOSION - && !(target instanceof Player && shouldBeDamaged(user, "tnt"))) - { - event.setCancelled(true); - return; - } - } - - if (event instanceof EntityDamageByEntityEvent) - { - final EntityDamageByEntityEvent edEvent = (EntityDamageByEntityEvent)event; - final Entity eAttack = edEvent.getDamager(); - final User attacker = ess.getUser(eAttack); - - //Creeper explode prevention - if (eAttack instanceof Creeper - && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) - || prot.getSettingBool(ProtectConfig.prevent_creeper_playerdmg)) - && !(target instanceof Player && shouldBeDamaged(user, "creeper"))) - { - event.setCancelled(true); - return; - } - - if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball) - && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg) - && !(target instanceof Player && shouldBeDamaged(user, "fireball"))) - { - event.setCancelled(true); - return; - } - - if (event.getEntity() instanceof WitherSkull - && prot.getSettingBool(ProtectConfig.prevent_witherskull_playerdmg) - && !(target instanceof Player && shouldBeDamaged(user, "witherskull"))) - { - event.setCancelled(true); - return; - } - - if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg) - && !(target instanceof Player && shouldBeDamaged(user, "tnt"))) - { - event.setCancelled(true); - return; - } - - // PVP Settings - if (target instanceof Player && eAttack instanceof Player - && prot.getSettingBool(ProtectConfig.disable_pvp) - && (!user.isAuthorized("essentials.protect.pvp") || !attacker.isAuthorized("essentials.protect.pvp"))) - { - event.setCancelled(true); - return; - } - - if (edEvent.getDamager() instanceof Projectile - && target instanceof Player - && ((prot.getSettingBool(ProtectConfig.disable_projectiles) && !shouldBeDamaged(user, "projectiles")) - || (((Projectile)edEvent.getDamager()).getShooter() instanceof Player - && prot.getSettingBool(ProtectConfig.disable_pvp) - && (!user.isAuthorized("essentials.protect.pvp") - || !ess.getUser(((Projectile)edEvent.getDamager()).getShooter()).isAuthorized("essentials.protect.pvp"))))) - { - event.setCancelled(true); - return; - } - } - - if (target instanceof Player) - { - if (cause == DamageCause.FALL - && prot.getSettingBool(ProtectConfig.disable_fall) - && !shouldBeDamaged(user, "fall")) - { - event.setCancelled(true); - return; - } - - if (cause == DamageCause.SUFFOCATION - && prot.getSettingBool(ProtectConfig.disable_suffocate) - && !shouldBeDamaged(user, "suffocation")) - { - event.setCancelled(true); - return; - } - if ((cause == DamageCause.FIRE || cause == DamageCause.FIRE_TICK) - && prot.getSettingBool(ProtectConfig.disable_firedmg) - && !shouldBeDamaged(user, "fire")) - { - event.setCancelled(true); - return; - } - if (cause == DamageCause.DROWNING - && prot.getSettingBool(ProtectConfig.disable_drown) - && !shouldBeDamaged(user, "drowning")) - { - event.setCancelled(true); - return; - } - if (cause == DamageCause.LIGHTNING - && prot.getSettingBool(ProtectConfig.disable_lightning) - && !shouldBeDamaged(user, "lightning")) - { - event.setCancelled(true); - return; - } - if (cause == DamageCause.WITHER - && prot.getSettingBool(ProtectConfig.disable_wither) - && !shouldBeDamaged(user, "wither")) - { - event.setCancelled(true); - return; - } - } - } - - private boolean shouldBeDamaged(final User user, final String type) - { - return (user.isAuthorized("essentials.protect.damage.".concat(type)) - && !user.isAuthorized("essentials.protect.damage.disable")); - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityExplode(final EntityExplodeEvent event) - { - if (event.getEntity() == null) - { - return; - } - final int maxHeight = ess.getSettings().getProtectCreeperMaxHeight(); - - if (event.getEntity() instanceof EnderDragon - && prot.getSettingBool(ProtectConfig.prevent_enderdragon_blockdmg)) - { - event.setCancelled(true); - if (prot.getSettingBool(ProtectConfig.enderdragon_fakeexplosions)) - { - event.getLocation().getWorld().createExplosion(event.getLocation(), 0F); - } - return; - } - if (event.getEntity() instanceof Wither - && prot.getSettingBool(ProtectConfig.prevent_wither_spawnexplosion)) - { - event.setCancelled(true); - return; - } - else if (event.getEntity() instanceof Creeper - && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) - || prot.getSettingBool(ProtectConfig.prevent_creeper_blockdmg) - || (maxHeight >= 0 && event.getLocation().getBlockY() > maxHeight))) - { - //Nicccccccccce plaaacccccccccce.. - event.setCancelled(true); - event.getLocation().getWorld().createExplosion(event.getLocation(), 0F); - return; - } - else if (event.getEntity() instanceof TNTPrimed - && prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)) - { - event.setCancelled(true); - return; - } - else if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball) - && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion)) - { - event.setCancelled(true); - return; - } - else if ((event.getEntity() instanceof WitherSkull) - && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion)) - { - event.setCancelled(true); - return; - } - - // This code will prevent explosions near protected rails, signs or protected chests - // TODO: Use protect db instead of this code - - for (Block block : event.blockList()) - { - if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS - || block.getType() == Material.RAILS - || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL - || block.getType() == Material.POWERED_RAIL - || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL - || block.getType() == Material.DETECTOR_RAIL) - && prot.getSettingBool(ProtectConfig.protect_rails)) - { - event.setCancelled(true); - return; - } - if ((block.getType() == Material.WALL_SIGN - || block.getRelative(BlockFace.NORTH).getType() == Material.WALL_SIGN - || block.getRelative(BlockFace.EAST).getType() == Material.WALL_SIGN - || block.getRelative(BlockFace.SOUTH).getType() == Material.WALL_SIGN - || block.getRelative(BlockFace.WEST).getType() == Material.WALL_SIGN - || block.getType() == Material.SIGN_POST - || block.getRelative(BlockFace.UP).getType() == Material.SIGN_POST) - && prot.getSettingBool(ProtectConfig.protect_signs)) - { - event.setCancelled(true); - return; - } - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onCreatureSpawn(final CreatureSpawnEvent event) - { - if (event.getEntity() instanceof Player) - { - return; - } - final EntityType creature = event.getEntityType(); - if (creature == null) - { - return; - } - final String creatureName = creature.toString().toLowerCase(Locale.ENGLISH); - if (creatureName == null || creatureName.isEmpty()) - { - return; - } - if (ess.getSettings().getProtectPreventSpawn(creatureName)) - { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityTarget(final EntityTargetEvent event) - { - if (!(event.getTarget() instanceof Player)) - { - return; - } - final User user = ess.getUser(event.getTarget()); - if ((event.getReason() == TargetReason.CLOSEST_PLAYER - || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY - || event.getReason() == TargetReason.PIG_ZOMBIE_TARGET - || event.getReason() == TargetReason.RANDOM_TARGET - || event.getReason() == TargetReason.DEFEND_VILLAGE - || event.getReason() == TargetReason.TARGET_ATTACKED_OWNER - || event.getReason() == TargetReason.OWNER_ATTACKED_TARGET) - && prot.getSettingBool(ProtectConfig.prevent_entitytarget) - && !user.isAuthorized("essentials.protect.entitytarget.bypass")) - { - event.setCancelled(true); - return; - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onExplosionPrime(ExplosionPrimeEvent event) - { - if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball) - && prot.getSettingBool(ProtectConfig.prevent_fireball_fire)) - { - event.setFire(false); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityChangeBlock(EntityChangeBlockEvent event) - { - if (event.getEntityType() == EntityType.ENDERMAN && prot.getSettingBool(ProtectConfig.prevent_enderman_pickup)) - { - event.setCancelled(true); - return; - } - if (event.getEntityType() == EntityType.WITHER && prot.getSettingBool(ProtectConfig.prevent_wither_blockreplace)) - { - event.setCancelled(true); - return; - } - } -} +package com.earth2me.essentials.protect;
+
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.User;
+import java.util.Locale;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.BlockFace;
+import org.bukkit.entity.*;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.*;
+import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
+
+
+public class EssentialsProtectEntityListener implements Listener
+{
+ private final IProtect prot;
+ private final IEssentials ess;
+
+ public EssentialsProtectEntityListener(final IProtect prot)
+ {
+ this.prot = prot;
+ this.ess = prot.getEssentialsConnect().getEssentials();
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onEntityDamage(final EntityDamageEvent event)
+ {
+ final Entity target = event.getEntity();
+
+ if (target instanceof Villager && prot.getSettingBool(ProtectConfig.prevent_villager_death))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ final User user = ess.getUser(target);
+ final DamageCause cause = event.getCause();
+
+ if (event instanceof EntityDamageByBlockEvent)
+ {
+ if (prot.getSettingBool(ProtectConfig.disable_contactdmg)
+ && cause == DamageCause.CONTACT
+ && !(target instanceof Player && shouldBeDamaged(user, "contact")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (prot.getSettingBool(ProtectConfig.disable_lavadmg)
+ && cause == DamageCause.LAVA
+ && !(target instanceof Player && shouldBeDamaged(user, "lava")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)
+ && cause == DamageCause.BLOCK_EXPLOSION
+ && !(target instanceof Player && shouldBeDamaged(user, "tnt")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+
+ if (event instanceof EntityDamageByEntityEvent)
+ {
+ final EntityDamageByEntityEvent edEvent = (EntityDamageByEntityEvent)event;
+ final Entity eAttack = edEvent.getDamager();
+ final User attacker = ess.getUser(eAttack);
+
+ //Creeper explode prevention
+ if (eAttack instanceof Creeper
+ && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
+ || prot.getSettingBool(ProtectConfig.prevent_creeper_playerdmg))
+ && !(target instanceof Player && shouldBeDamaged(user, "creeper")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
+ && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "fireball")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (event.getEntity() instanceof WitherSkull
+ && prot.getSettingBool(ProtectConfig.prevent_witherskull_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "witherskull")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "tnt")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ // PVP Settings
+ if (target instanceof Player && eAttack instanceof Player
+ && prot.getSettingBool(ProtectConfig.disable_pvp)
+ && (!user.isAuthorized("essentials.protect.pvp") || !attacker.isAuthorized("essentials.protect.pvp")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (edEvent.getDamager() instanceof Projectile
+ && target instanceof Player
+ && ((prot.getSettingBool(ProtectConfig.disable_projectiles) && !shouldBeDamaged(user, "projectiles"))
+ || (((Projectile)edEvent.getDamager()).getShooter() instanceof Player
+ && prot.getSettingBool(ProtectConfig.disable_pvp)
+ && (!user.isAuthorized("essentials.protect.pvp")
+ || !ess.getUser(((Projectile)edEvent.getDamager()).getShooter()).isAuthorized("essentials.protect.pvp")))))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+
+ if (target instanceof Player)
+ {
+ if (cause == DamageCause.FALL
+ && prot.getSettingBool(ProtectConfig.disable_fall)
+ && !shouldBeDamaged(user, "fall"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (cause == DamageCause.SUFFOCATION
+ && prot.getSettingBool(ProtectConfig.disable_suffocate)
+ && !shouldBeDamaged(user, "suffocation"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((cause == DamageCause.FIRE || cause == DamageCause.FIRE_TICK)
+ && prot.getSettingBool(ProtectConfig.disable_firedmg)
+ && !shouldBeDamaged(user, "fire"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (cause == DamageCause.DROWNING
+ && prot.getSettingBool(ProtectConfig.disable_drown)
+ && !shouldBeDamaged(user, "drowning"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (cause == DamageCause.LIGHTNING
+ && prot.getSettingBool(ProtectConfig.disable_lightning)
+ && !shouldBeDamaged(user, "lightning"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (cause == DamageCause.WITHER
+ && prot.getSettingBool(ProtectConfig.disable_wither)
+ && !shouldBeDamaged(user, "wither"))
+ {
+ event.setCancelled(true);
+ }
+ }
+ }
+
+ private boolean shouldBeDamaged(final User user, final String type)
+ {
+ return (user.isAuthorized("essentials.protect.damage.".concat(type))
+ && !user.isAuthorized("essentials.protect.damage.disable"));
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onEntityExplode(final EntityExplodeEvent event)
+ {
+ if (event.getEntity() == null)
+ {
+ return;
+ }
+ final int maxHeight = ess.getSettings().getProtectCreeperMaxHeight();
+
+ if (event.getEntity() instanceof EnderDragon
+ && prot.getSettingBool(ProtectConfig.prevent_enderdragon_blockdmg))
+ {
+ event.setCancelled(true);
+ if (prot.getSettingBool(ProtectConfig.enderdragon_fakeexplosions))
+ {
+ event.getLocation().getWorld().createExplosion(event.getLocation(), 0F);
+ }
+ return;
+ }
+ if (event.getEntity() instanceof Wither
+ && prot.getSettingBool(ProtectConfig.prevent_wither_spawnexplosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ else if (event.getEntity() instanceof Creeper
+ && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
+ || prot.getSettingBool(ProtectConfig.prevent_creeper_blockdmg)
+ || (maxHeight >= 0 && event.getLocation().getBlockY() > maxHeight)))
+ {
+ //Nicccccccccce plaaacccccccccce..
+ event.setCancelled(true);
+ event.getLocation().getWorld().createExplosion(event.getLocation(), 0F);
+ return;
+ }
+ else if (event.getEntity() instanceof TNTPrimed
+ && prot.getSettingBool(ProtectConfig.prevent_tnt_explosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ else if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
+ && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ else if ((event.getEntity() instanceof WitherSkull)
+ && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ // This code will prevent explosions near protected rails, signs or protected chests
+ // TODO: Use protect db instead of this code
+
+ for (Block block : event.blockList())
+ {
+ if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
+ || block.getType() == Material.RAILS
+ || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
+ || block.getType() == Material.POWERED_RAIL
+ || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
+ || block.getType() == Material.DETECTOR_RAIL)
+ && prot.getSettingBool(ProtectConfig.protect_rails))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((block.getType() == Material.WALL_SIGN
+ || block.getRelative(BlockFace.NORTH).getType() == Material.WALL_SIGN
+ || block.getRelative(BlockFace.EAST).getType() == Material.WALL_SIGN
+ || block.getRelative(BlockFace.SOUTH).getType() == Material.WALL_SIGN
+ || block.getRelative(BlockFace.WEST).getType() == Material.WALL_SIGN
+ || block.getType() == Material.SIGN_POST
+ || block.getRelative(BlockFace.UP).getType() == Material.SIGN_POST)
+ && prot.getSettingBool(ProtectConfig.protect_signs))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onCreatureSpawn(final CreatureSpawnEvent event)
+ {
+ if (event.getEntity() instanceof Player)
+ {
+ return;
+ }
+ final EntityType creature = event.getEntityType();
+ if (creature == null)
+ {
+ return;
+ }
+ final String creatureName = creature.toString().toLowerCase(Locale.ENGLISH);
+ if (creatureName == null || creatureName.isEmpty())
+ {
+ return;
+ }
+ if (ess.getSettings().getProtectPreventSpawn(creatureName))
+ {
+ event.setCancelled(true);
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onEntityTarget(final EntityTargetEvent event)
+ {
+ if (!(event.getTarget() instanceof Player))
+ {
+ return;
+ }
+ final User user = ess.getUser(event.getTarget());
+ if ((event.getReason() == TargetReason.CLOSEST_PLAYER
+ || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY
+ || event.getReason() == TargetReason.PIG_ZOMBIE_TARGET
+ || event.getReason() == TargetReason.RANDOM_TARGET
+ || event.getReason() == TargetReason.DEFEND_VILLAGE
+ || event.getReason() == TargetReason.TARGET_ATTACKED_OWNER
+ || event.getReason() == TargetReason.OWNER_ATTACKED_TARGET)
+ && prot.getSettingBool(ProtectConfig.prevent_entitytarget)
+ && !user.isAuthorized("essentials.protect.entitytarget.bypass"))
+ {
+ event.setCancelled(true);
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onExplosionPrime(ExplosionPrimeEvent event)
+ {
+ if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
+ && prot.getSettingBool(ProtectConfig.prevent_fireball_fire))
+ {
+ event.setFire(false);
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onEntityChangeBlock(EntityChangeBlockEvent event)
+ {
+ if (event.getEntityType() == EntityType.ENDERMAN && prot.getSettingBool(ProtectConfig.prevent_enderman_pickup))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (event.getEntityType() == EntityType.WITHER && prot.getSettingBool(ProtectConfig.prevent_wither_blockreplace))
+ {
+ event.setCancelled(true);
+ }
+ }
+}
|