From 1efd89cdb0e674de36c8cb4a4ef712c5bef4fafe Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 8 Nov 2021 15:14:21 +0100 Subject: [PATCH] Makes sure to not display portal information when placing a block --- .../stargate/listener/PlayerEventListener.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java index 845f02a..d38b117 100644 --- a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java @@ -28,6 +28,8 @@ import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; /** * This listener listens to any player-related events related to stargates @@ -186,7 +188,7 @@ public class PlayerEventListener implements Listener { } if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { - handleRightClickBlock(event, player, block); + handleRightClickBlock(event, player, block, event.getHand()); } else if (event.getAction() == Action.LEFT_CLICK_BLOCK && block.getBlockData() instanceof WallSign) { //Handle left click of a wall sign handleSignClick(event, player, block, true); @@ -259,8 +261,9 @@ public class PlayerEventListener implements Listener { * @param event

The event triggering the right-click

* @param player

The player doing the right-click

* @param block

The block the player clicked

+ * @param hand

The hand the player used to interact with the stargate

*/ - private void handleRightClickBlock(PlayerInteractEvent event, Player player, Block block) { + private void handleRightClickBlock(PlayerInteractEvent event, Player player, Block block, EquipmentSlot hand) { if (block.getBlockData() instanceof WallSign) { handleSignClick(event, player, block, false); return; @@ -272,7 +275,6 @@ public class PlayerEventListener implements Listener { } if (MaterialHelper.isButtonCompatible(block.getType())) { - Portal portal = PortalHandler.getByBlock(block); if (portal == null) { return; @@ -293,7 +295,10 @@ public class PlayerEventListener implements Listener { } } else { //Display information about the portal if it has no sign - displayPortalInfo(block, player); + ItemStack heldItem = player.getInventory().getItem(hand); + if (heldItem.getType().isAir() || !heldItem.getType().isBlock()) { + displayPortalInfo(block, player); + } } } @@ -315,9 +320,9 @@ public class PlayerEventListener implements Listener { if (portal.getOptions().hasNoSign() && !portal.getOptions().isSilent()) { MessageSender sender = Stargate.getMessageSender(); sender.sendSuccessMessage(player, ChatColor.GOLD + Stargate.getString("portalInfoTitle")); - sender.sendSuccessMessage(player, Stargate.replaceVars(Stargate.getString("portalInfoName"), + sender.sendSuccessMessage(player, Stargate.replaceVars(Stargate.getString("portalInfoName"), "%name%", portal.getName())); - sender.sendSuccessMessage(player, Stargate.replaceVars(Stargate.getString("portalInfoDestination"), + sender.sendSuccessMessage(player, Stargate.replaceVars(Stargate.getString("portalInfoDestination"), "%destination%", portal.getDestinationName())); if (portal.getOptions().isBungee()) { sender.sendSuccessMessage(player, Stargate.replaceVars(Stargate.getString("portalInfoServer"),