Add ability to click helmet slot to equip item. #960

This commit is contained in:
md678685 2016-11-06 10:54:49 +00:00 committed by Ali Moghnieh
parent 51f2a04958
commit 7958cd0b88
No known key found for this signature in database
GPG Key ID: F09D3A1BAF2E6D70
4 changed files with 29 additions and 0 deletions

View File

@ -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) {

View File

@ -283,4 +283,6 @@ public interface ISettings extends IConf {
int getNotifyPlayerOfMailCooldown();
int getMotdDelay();
boolean isDirectHatAllowed();
}

View File

@ -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);
}
}

View File

@ -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 | #