1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-01 12:20:59 +02:00

Fix sticky piston retract breaking essentials sign

Sticky pistons could break signs that were mounted on blocks the pistons were retracting.

This patch extends the protection from just the piston base to include the extended piston arm and the block at the end of the piston arm as well.

This method will very likely need to be changed again when 1.8 comes out, but this should bring us a bit closer, by wrapping the block tests in a loop.
This commit is contained in:
SidShakal
2014-07-19 09:37:37 -05:00
committed by KHobbits
parent 035182fcda
commit 52dacc054b

View File

@@ -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))
final Block pistonBaseBlock = event.getBlock();
final Block[] affectedBlocks = new Block[]
{
pistonBaseBlock,
pistonBaseBlock.getRelative(event.getDirection()),
event.getRetractLocation().getBlock()
};
for (Block block : affectedBlocks)
{
event.setCancelled(true);
return;
}
for (EssentialsSign sign : ess.getSettings().enabledSigns())
{
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;
}
}
}
}
}