summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java34
1 files changed, 22 insertions, 12 deletions
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
index e42b13d27..e59245596 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
@@ -271,23 +271,33 @@ public class SignBlockListener implements Listener
if (event.isSticky())
{
- final Block block = event.getBlock();
- if (((block.getType() == WALL_SIGN
- || block.getType() == SIGN_POST)
- && EssentialsSign.isValidSign(new EssentialsSign.BlockSign(block)))
- || EssentialsSign.checkIfBlockBreaksSigns(block))
- {
- event.setCancelled(true);
- return;
- }
- for (EssentialsSign sign : ess.getSettings().enabledSigns())
+ final Block pistonBaseBlock = event.getBlock();
+ final Block[] affectedBlocks = new Block[]
+ {
+ pistonBaseBlock,
+ pistonBaseBlock.getRelative(event.getDirection()),
+ event.getRetractLocation().getBlock()
+ };
+
+ for (Block block : affectedBlocks)
{
- if (sign.areHeavyEventRequired() && sign.getBlocks().contains(block.getType())
- && !sign.onBlockPush(block, ess))
+ if (((block.getType() == WALL_SIGN
+ || block.getType() == SIGN_POST)
+ && EssentialsSign.isValidSign(new EssentialsSign.BlockSign(block)))
+ || EssentialsSign.checkIfBlockBreaksSigns(block))
{
event.setCancelled(true);
return;
}
+ for (EssentialsSign sign : ess.getSettings().enabledSigns())
+ {
+ if (sign.areHeavyEventRequired() && sign.getBlocks().contains(block.getType())
+ && !sign.onBlockPush(block, ess))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
}
}
}