diff options
Diffstat (limited to 'EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java')
-rw-r--r-- | EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java b/EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java new file mode 100644 index 000000000..8c6fc6899 --- /dev/null +++ b/EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java @@ -0,0 +1,67 @@ +package net.ess3.signs.listeners; + +import net.ess3.api.IEssentials; +import net.ess3.signs.EssentialsSign; +import net.ess3.signs.ISignsPlugin; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.Sign; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + + +public class SignPlayerListener implements Listener +{ + private final transient IEssentials ess; + private final transient ISignsPlugin plugin; + + public SignPlayerListener(final IEssentials ess, final ISignsPlugin plugin) + { + this.ess = ess; + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerInteract(final PlayerInteractEvent event) + { + if (plugin.getSettings().areSignsDisabled() || event.getAction() != Action.RIGHT_CLICK_BLOCK) + { + return; + } + final Block block = event.getClickedBlock(); + if (block == null) + { + return; + } + + final int mat = block.getTypeId(); + if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId()) + { + final Sign csign = (Sign)block.getState(); + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) + { + if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())) + { + sign.onSignInteract(block, event.getPlayer(), ess, plugin); + event.setCancelled(true); + return; + } + } + } + else + { + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) + { + if (sign.getBlocks().contains(block.getType()) + && !sign.onBlockInteract(block, event.getPlayer(), ess)) + { + event.setCancelled(true); + return; + } + } + } + } +} |