Added permissions to bypass EssentialsProtect damage protection.

As admin you want to disable this with
- -essentials.protect.damage.*

New permissions:
essentials.protect.damage.contact
essentials.protect.damage.lava
essentials.protect.damage.tnt
essentials.protect.damage.creeper
essentials.protect.damage.projectiles
essentials.protect.damage.fall
essentials.protect.damage.suffocation
essentials.protect.damage.fire
essentials.protect.damage.drowning
essentials.protect.damage.lightning

git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1476 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
snowleo 2011-05-15 12:10:24 +00:00
parent 32989d56b6
commit a0b5e8d0f8
3 changed files with 72 additions and 43 deletions

View file

@ -139,6 +139,7 @@ groups:
default: false default: false
permissions: permissions:
- '*' - '*'
- -essentials.protect.damage.*
inheritance: inheritance:
- semiadmin - semiadmin
info: info:

View file

@ -43,22 +43,31 @@ public class EssentialsProtectEntityListener extends EntityListener
@Override @Override
public void onEntityDamage(EntityDamageEvent event) public void onEntityDamage(EntityDamageEvent event)
{ {
if (event.isCancelled()) return; if (event.isCancelled())
{
return;
}
if (event instanceof EntityDamageByBlockEvent) if (event instanceof EntityDamageByBlockEvent)
{ {
DamageCause cause = event.getCause(); DamageCause cause = event.getCause();
if (EssentialsProtect.playerSettings.get("protect.disable.contactdmg") && cause == DamageCause.CONTACT) if (EssentialsProtect.playerSettings.get("protect.disable.contactdmg") && cause == DamageCause.CONTACT
&& !(event.getEntity() instanceof Player
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.contact")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.playerSettings.get("protect.disable.lavadmg") && cause == DamageCause.LAVA) if (EssentialsProtect.playerSettings.get("protect.disable.lavadmg") && cause == DamageCause.LAVA
&& !(event.getEntity() instanceof Player
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.lava")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.guardSettings.get("protect.prevent.tnt-explosion") && cause == DamageCause.BLOCK_EXPLOSION) if (EssentialsProtect.guardSettings.get("protect.prevent.tnt-explosion") && cause == DamageCause.BLOCK_EXPLOSION
&& !(event.getEntity() instanceof Player
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.tnt")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -89,13 +98,17 @@ public class EssentialsProtectEntityListener extends EntityListener
//Creeper explode prevention //Creeper explode prevention
if (eAttack != null && eAttack instanceof Monster) if (eAttack != null && eAttack instanceof Monster)
{ {
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-explosion")) if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-explosion")
&& !(event.getEntity() instanceof Player
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.creeper")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-playerdamage")) if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-playerdamage")
&& !(event.getEntity() instanceof Player
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.creeper")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -105,9 +118,11 @@ public class EssentialsProtectEntityListener extends EntityListener
if (event instanceof EntityDamageByProjectileEvent) if (event instanceof EntityDamageByProjectileEvent)
{ {
if (event.getEntity() instanceof Player) if (event.getEntity() instanceof Player
&& EssentialsProtect.playerSettings.get("protect.disable.projectiles")
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.projectiles"))
{ {
event.setCancelled(EssentialsProtect.playerSettings.get("protect.disable.projectiles")); event.setCancelled(true);
return; return;
} }
} }
@ -116,29 +131,34 @@ public class EssentialsProtectEntityListener extends EntityListener
Entity casualty = event.getEntity(); Entity casualty = event.getEntity();
if (casualty instanceof Player) if (casualty instanceof Player)
{ {
if (EssentialsProtect.playerSettings.get("protect.disable.fall") && cause == DamageCause.FALL) if (EssentialsProtect.playerSettings.get("protect.disable.fall") && cause == DamageCause.FALL
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.fall")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.playerSettings.get("protect.disable.suffocate") && cause == DamageCause.SUFFOCATION) if (EssentialsProtect.playerSettings.get("protect.disable.suffocate") && cause == DamageCause.SUFFOCATION
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.suffocation")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.playerSettings.get("protect.disable.firedmg") && (cause == DamageCause.FIRE if (EssentialsProtect.playerSettings.get("protect.disable.firedmg") && (cause == DamageCause.FIRE
|| cause == DamageCause.FIRE_TICK)) || cause == DamageCause.FIRE_TICK)
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.fire")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.playerSettings.get("protect.disable.drown") && cause == DamageCause.DROWNING) if (EssentialsProtect.playerSettings.get("protect.disable.drown") && cause == DamageCause.DROWNING
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.drowning")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (EssentialsProtect.playerSettings.get("protect.disable.lightning") && cause == DamageCause.LIGHTNING) if (EssentialsProtect.playerSettings.get("protect.disable.lightning") && cause == DamageCause.LIGHTNING
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.lightning")))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -149,7 +169,10 @@ public class EssentialsProtectEntityListener extends EntityListener
@Override @Override
public void onEntityExplode(EntityExplodeEvent event) public void onEntityExplode(EntityExplodeEvent event)
{ {
if (event.isCancelled()) return; if (event.isCancelled())
{
return;
}
if (event.getEntity() instanceof LivingEntity) if (event.getEntity() instanceof LivingEntity)
{ {
//Nicccccccccce plaaacccccccccce.. //Nicccccccccce plaaacccccccccce..
@ -205,20 +228,21 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (( block.getType() == Material.WALL_SIGN || if ((block.getType() == Material.WALL_SIGN
block.getFace(BlockFace.NORTH).getType() == Material.WALL_SIGN || || block.getFace(BlockFace.NORTH).getType() == Material.WALL_SIGN
block.getFace(BlockFace.EAST).getType() == Material.WALL_SIGN || || block.getFace(BlockFace.EAST).getType() == Material.WALL_SIGN
block.getFace(BlockFace.SOUTH).getType() == Material.WALL_SIGN || || block.getFace(BlockFace.SOUTH).getType() == Material.WALL_SIGN
block.getFace(BlockFace.WEST).getType() == Material.WALL_SIGN || || block.getFace(BlockFace.WEST).getType() == Material.WALL_SIGN
block.getType() == Material.SIGN_POST || || block.getType() == Material.SIGN_POST
block.getFace(BlockFace.UP).getType() == Material.SIGN_POST) && || block.getFace(BlockFace.UP).getType() == Material.SIGN_POST)
EssentialsProtect.genSettings.get("protect.protect.signs")) && EssentialsProtect.genSettings.get("protect.protect.signs"))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if ( EssentialsBlockListener.protectedBlocks.contains(block.getType()) && if (EssentialsBlockListener.protectedBlocks.contains(block.getType())
EssentialsBlockListener.isBlockProtected(block)) { && EssentialsBlockListener.isBlockProtected(block))
{
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -228,8 +252,14 @@ public class EssentialsProtectEntityListener extends EntityListener
@Override @Override
public void onCreatureSpawn(CreatureSpawnEvent event) public void onCreatureSpawn(CreatureSpawnEvent event)
{ {
if (event.getEntity() instanceof CraftPlayer) return; if (event.getEntity() instanceof CraftPlayer)
if (event.isCancelled()) return; {
return;
}
if (event.isCancelled())
{
return;
}
String creatureName = event.getCreatureType().toString().toLowerCase(); String creatureName = event.getCreatureType().toString().toLowerCase();
if (creatureName == null || creatureName.isEmpty()) if (creatureName == null || creatureName.isEmpty())
{ {
@ -242,22 +272,21 @@ public class EssentialsProtectEntityListener extends EntityListener
} }
@Override @Override
public void onEntityTarget(EntityTargetEvent event) { public void onEntityTarget(EntityTargetEvent event)
if (!(event.getTarget() instanceof Player)) { {
if (!(event.getTarget() instanceof Player))
{
return; return;
} }
User user = Essentials.getStatic().getUser(event.getTarget()); User user = Essentials.getStatic().getUser(event.getTarget());
if ((event.getReason() == TargetReason.CLOSEST_PLAYER || if ((event.getReason() == TargetReason.CLOSEST_PLAYER
event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY || || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY
event.getReason() == TargetReason.PIG_ZOMBIE_TARGET) && || event.getReason() == TargetReason.PIG_ZOMBIE_TARGET)
EssentialsProtect.guardSettings.get("protect.prevent.entitytarget") && && EssentialsProtect.guardSettings.get("protect.prevent.entitytarget")
!user.isAuthorized("essentials.protect.entitytarget.bypass") && !user.isAuthorized("essentials.protect.entitytarget.bypass"))
)
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
} }

View file

@ -3,7 +3,6 @@ package com.earth2me.essentials.protect;
import com.earth2me.essentials.Essentials; import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User; import com.earth2me.essentials.User;
import com.earth2me.essentials.Util; import com.earth2me.essentials.Util;
import org.bukkit.ChatColor;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;