Merge branch 'master' of github.com:essentials/Essentials into essmaster

This commit is contained in:
KHobbits 2011-08-26 05:14:03 +01:00
commit dfd283d998
4 changed files with 51 additions and 27 deletions

View File

@ -192,8 +192,13 @@ public class EssentialsSign
{ {
return true; return true;
} }
public boolean onBlockIgnite(final Block block, final IEssentials ess)
{
return true;
}
public boolean onBlockPush(Block block, IEssentials ess) public boolean onBlockPush(final Block block, final IEssentials ess)
{ {
return true; return true;
} }

View File

@ -184,9 +184,24 @@ public class SignBlockListener extends BlockListener
return; return;
} }
if (protectSignsAndBlocks(event.getBlock(), event.getPlayer())) final Block block = event.getBlock();
if (((block.getType() == Material.WALL_SIGN
|| block.getType() == Material.SIGN_POST)
&& EssentialsSign.isValidSign(new EssentialsSign.BlockSign(block)))
|| EssentialsSign.checkIfBlockBreaksSigns(block))
{ {
event.setCancelled(true); event.setCancelled(true);
return;
}
for (Signs signs : Signs.values())
{
final EssentialsSign sign = signs.getSign();
if (sign.getBlocks().contains(block.getType())
&& !sign.onBlockIgnite(block, ess))
{
event.setCancelled(true);
return;
}
} }
} }

View File

@ -313,6 +313,14 @@ public class SignProtection extends EssentialsSign
return state == SignProtectionState.NOSIGN; return state == SignProtectionState.NOSIGN;
} }
@Override
public boolean onBlockIgnite(final Block block, final IEssentials ess)
{
final SignProtectionState state = isBlockProtected(block, null, null, false);
return state == SignProtectionState.NOSIGN;
}
@Override @Override
public boolean onBlockPush(final Block block, final IEssentials ess) public boolean onBlockPush(final Block block, final IEssentials ess)

View File

@ -1,6 +1,5 @@
package com.earth2me.essentials.protect; package com.earth2me.essentials.protect;
import com.earth2me.essentials.EssentialsBlockListener;
import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.User; import com.earth2me.essentials.User;
import java.util.HashSet; import java.util.HashSet;
@ -21,11 +20,11 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.Fireball; import org.bukkit.entity.Fireball;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.TNTPrimed; import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent; import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityExplodeEvent;
@ -47,7 +46,7 @@ public class EssentialsProtectEntityListener extends EntityListener
} }
@Override @Override
public void onEntityDamage(EntityDamageEvent event) public void onEntityDamage(final EntityDamageEvent event)
{ {
if (event.isCancelled()) if (event.isCancelled())
{ {
@ -102,7 +101,7 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
//Creeper explode prevention //Creeper explode prevention
if (eAttack instanceof Creeper && prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) if (eAttack instanceof Creeper && prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
&& !(target instanceof Player && !(target instanceof Player
@ -121,7 +120,7 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (eAttack instanceof Fireball && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg) if (eAttack instanceof Fireball && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg)
&& !(target instanceof Player && !(target instanceof Player
&& user.isAuthorized("essentials.protect.damage.fireball") && user.isAuthorized("essentials.protect.damage.fireball")
@ -130,7 +129,7 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg) if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg)
&& !(target instanceof Player && !(target instanceof Player
&& user.isAuthorized("essentials.protect.damage.tnt") && user.isAuthorized("essentials.protect.damage.tnt")
@ -139,17 +138,20 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
}
if (event instanceof EntityDamageByProjectileEvent if (edEvent.getDamager() instanceof Projectile
&& target instanceof Player && target instanceof Player
&& prot.getSettingBool(ProtectConfig.disable_projectiles) && ((prot.getSettingBool(ProtectConfig.disable_projectiles)
&& !(user.isAuthorized("essentials.protect.damage.projectiles") && !(user.isAuthorized("essentials.protect.damage.projectiles")
&& !user.isAuthorized("essentials.protect.damage.disable"))) && !user.isAuthorized("essentials.protect.damage.disable")))
{ || (((Projectile)edEvent.getDamager()).getShooter() instanceof Player
event.setCancelled(true); && prot.getSettingBool(ProtectConfig.disable_pvp)
((EntityDamageByProjectileEvent)event).setBounce(true); && (!user.isAuthorized("essentials.protect.pvp")
return; || !ess.getUser(((Projectile)edEvent.getDamager()).getShooter()).isAuthorized("essentials.protect.pvp")))))
{
event.setCancelled(true);
return;
}
} }
final DamageCause cause = event.getCause(); final DamageCause cause = event.getCause();
@ -201,7 +203,7 @@ public class EssentialsProtectEntityListener extends EntityListener
} }
@Override @Override
public void onEntityExplode(EntityExplodeEvent event) public void onEntityExplode(final EntityExplodeEvent event)
{ {
if (event.isCancelled()) if (event.isCancelled())
{ {
@ -240,7 +242,7 @@ public class EssentialsProtectEntityListener extends EntityListener
} }
((CraftServer)ess.getServer()).getHandle().sendPacketNearby(loc.getX(), loc.getY(), loc.getZ(), 64.0D, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension, ((CraftServer)ess.getServer()).getHandle().sendPacketNearby(loc.getX(), loc.getY(), loc.getZ(), 64.0D, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension,
new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0f, set)); new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0f, set));
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -279,12 +281,6 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
/*if (EssentialsBlockListener.protectedBlocks.contains(block.getType())
&& EssentialsBlockListener.isBlockProtected(block))
{
event.setCancelled(true);
return;
}*/
} }
} }
@ -340,7 +336,7 @@ public class EssentialsProtectEntityListener extends EntityListener
public void onExplosionPrime(ExplosionPrimeEvent event) public void onExplosionPrime(ExplosionPrimeEvent event)
{ {
if (event.getEntity() instanceof CraftFireball if (event.getEntity() instanceof CraftFireball
&& prot.getSettingBool(ProtectConfig.prevent_fireball_fire)) && prot.getSettingBool(ProtectConfig.prevent_fireball_fire))
{ {
event.setFire(false); event.setFire(false);
} }