diff options
author | snowleo <schneeleo@gmail.com> | 2011-08-25 17:37:41 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-08-25 17:37:54 +0200 |
commit | 01861e5a644e6d2aff80a684d5504d4cad529d35 (patch) | |
tree | ae117e396817a6c213c9fe89000b02ae44be1442 | |
parent | 3d913f9fcc392e3b04be29417205da9a9d27ee5a (diff) | |
download | Essentials-01861e5a644e6d2aff80a684d5504d4cad529d35.tar Essentials-01861e5a644e6d2aff80a684d5504d4cad529d35.tar.gz Essentials-01861e5a644e6d2aff80a684d5504d4cad529d35.tar.lz Essentials-01861e5a644e6d2aff80a684d5504d4cad529d35.tar.xz Essentials-01861e5a644e6d2aff80a684d5504d4cad529d35.zip |
Correctly catch signs ignition
3 files changed, 30 insertions, 2 deletions
diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java index a58a1e70d..1bd1d6184 100644 --- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java +++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java @@ -192,8 +192,13 @@ public class EssentialsSign { 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; } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java index 6f07b67b2..eb6163d20 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -184,9 +184,24 @@ public class SignBlockListener extends BlockListener 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); + 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; + } } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java index c595d9b03..f9957e646 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java @@ -313,6 +313,14 @@ public class SignProtection extends EssentialsSign 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 public boolean onBlockPush(final Block block, final IEssentials ess) |