diff options
author | Chris Ward <chris@chrisgward.com> | 2014-03-26 22:00:57 +1100 |
---|---|---|
committer | Chris Ward <chris@chrisgward.com> | 2014-03-26 22:00:57 +1100 |
commit | ad0f143f8b3e1cd7db36a18f9c4611a817ecf412 (patch) | |
tree | 7648759ce74ed848bd39db9043863813e6fad09e | |
parent | 182914e40227bcac9984e584c409de9d7a83b05f (diff) | |
download | Essentials-ad0f143f8b3e1cd7db36a18f9c4611a817ecf412.tar Essentials-ad0f143f8b3e1cd7db36a18f9c4611a817ecf412.tar.gz Essentials-ad0f143f8b3e1cd7db36a18f9c4611a817ecf412.tar.lz Essentials-ad0f143f8b3e1cd7db36a18f9c4611a817ecf412.tar.xz Essentials-ad0f143f8b3e1cd7db36a18f9c4611a817ecf412.zip |
Do not allow a block with an Essentials Sign attached to it to be pulled with a sticky piston
-rw-r--r-- | Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java index 225965c2b..55b05a0e1 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java @@ -1,16 +1,17 @@ package com.earth2me.essentials; +import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.utils.LocationUtil; import java.util.Locale; import net.ess3.api.IEssentials; import org.bukkit.GameMode; import org.bukkit.Material; -import org.bukkit.block.BlockState; -import org.bukkit.block.CreatureSpawner; +import org.bukkit.block.*; import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; @@ -68,4 +69,26 @@ public class EssentialsBlockListener implements Listener }); } } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onBlockPistonRetract(BlockPistonRetractEvent event) + { + final Block block = event.getRetractLocation().getBlock(); + for (BlockFace face : new BlockFace[] { BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST, BlockFace.SOUTH, BlockFace.UP }) + { + final Block search = block.getRelative(face, 1); + final Material type = search.getType(); + if (type == Material.SIGN || type == Material.SIGN_POST) + { + final Sign sign = (Sign)(search.getState()); + for (final EssentialsSign esign : ess.getSettings().enabledSigns()) + { + if (sign.getLine(0).equalsIgnoreCase(esign.getSuccessName())) + { + event.setCancelled(true); + } + } + } + } + } } |