From 7958cd0b880205edaeaf34420bafde8d5cc1f7ed Mon Sep 17 00:00:00 2001 From: md678685 Date: Sun, 6 Nov 2016 10:54:49 +0000 Subject: [PATCH] Add ability to click helmet slot to equip item. #960 --- .../essentials/EssentialsPlayerListener.java | 19 +++++++++++++++++++ .../com/earth2me/essentials/ISettings.java | 2 ++ .../src/com/earth2me/essentials/Settings.java | 5 +++++ Essentials/src/config.yml | 3 +++ 4 files changed, 29 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 432af0302..a6336712d 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -18,6 +18,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryType; @@ -27,6 +28,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import java.io.IOException; import java.text.NumberFormat; @@ -640,6 +642,13 @@ public class EssentialsPlayerListener implements Listener { final Inventory top = event.getView().getTopInventory(); final InventoryType type = top.getType(); + final Inventory clickedInventory; + if (event.getRawSlot() < 0) { + clickedInventory = null; + } else { + clickedInventory = event.getRawSlot() < top.getSize() ? top : event.getView().getBottomInventory(); + } + if (type == InventoryType.PLAYER) { final User user = ess.getUser((Player) event.getWhoClicked()); final InventoryHolder invHolder = top.getHolder(); @@ -669,6 +678,16 @@ public class EssentialsPlayerListener implements Listener { event.setCancelled(true); refreshPlayer = user.getBase(); } + } else if (clickedInventory != null && clickedInventory.getType() == InventoryType.PLAYER) { + if (ess.getSettings().isDirectHatAllowed() && event.getClick() == ClickType.LEFT && event.getSlot() == 39 + && event.getCursor().getType() != Material.AIR && event.getCursor().getType().getMaxDurability() == 0 + && ess.getUser(event.getWhoClicked()).isAuthorized("essentials.hat")) { + event.setCancelled(true); + final PlayerInventory inv = (PlayerInventory) clickedInventory; + final ItemStack head = inv.getHelmet(); + inv.setHelmet(event.getCursor()); + event.setCursor(head); + } } if (refreshPlayer != null) { diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index bad107486..78a70e5df 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -283,4 +283,6 @@ public interface ISettings extends IConf { int getNotifyPlayerOfMailCooldown(); int getMotdDelay(); + + boolean isDirectHatAllowed(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 05f0239ac..0d58da16d 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -1421,4 +1421,9 @@ public class Settings implements net.ess3.api.ISettings { public int getMotdDelay() { return config.getInt("delay-motd", 0); } + + @Override + public boolean isDirectHatAllowed() { + return config.getBoolean("allow-direct-hat", true); + } } diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 31bfa19ad..0bd4175a2 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -583,6 +583,9 @@ sethome-multiple: # Set to 0 for no timeout. tpa-accept-cancellation: 120 +# Allow players to set hats by clicking on their helmet slot. +allow-direct-hat: true + ############################################################ # +------------------------------------------------------+ # # | EssentialsEco | #