Add ability to click helmet slot to equip item. #960
This commit is contained in:
parent
51f2a04958
commit
7958cd0b88
|
@ -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) {
|
||||
|
|
|
@ -283,4 +283,6 @@ public interface ISettings extends IConf {
|
|||
int getNotifyPlayerOfMailCooldown();
|
||||
|
||||
int getMotdDelay();
|
||||
|
||||
boolean isDirectHatAllowed();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 | #
|
||||
|
|
Loading…
Reference in New Issue