package be.isach.ultracosmetics.cosmetics.hats; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.config.MessageManager; import be.isach.ultracosmetics.config.SettingsManager; import be.isach.ultracosmetics.cosmetics.Category; import be.isach.ultracosmetics.cosmetics.Cosmetic; import be.isach.ultracosmetics.cosmetics.suits.ArmorSlot; import be.isach.ultracosmetics.cosmetics.type.HatType; import be.isach.ultracosmetics.player.UltraPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; /** * Represents an instance of a hat summoned by a player. * * @author iSach * @since 08-23-2016 */ public class Hat extends Cosmetic<HatType> { public Hat(UltraCosmetics ultraCosmetics, UltraPlayer owner, HatType type) { super(ultraCosmetics, Category.HATS, owner, type); } @Override protected void onEquip() { getOwner().removeHat(); getOwner().removeEmote(); getOwner().removeSuit(ArmorSlot.HELMET); if (getPlayer().getInventory().getHelmet() != null) { getPlayer().sendMessage(MessageManager.getMessage("Hats.Must-Remove-Hat")); return; } getPlayer().getInventory().setHelmet(getType().getItemStack()); getOwner().setCurrentHat(this); } @EventHandler public void onInventoryClick(InventoryClickEvent event) { Player player = (Player) event.getWhoClicked(); ItemStack current = event.getCurrentItem(); if (event.getSlotType().equals(InventoryType.SlotType.ARMOR) && getPlayer() != null && player.equals(getPlayer()) && current != null && current.hasItemMeta() && current.getItemMeta().hasDisplayName() && getType().getItemStack() != null && current.getItemMeta().getDisplayName().equals(getType().getItemStack().getItemMeta().getDisplayName())) { event.setCancelled(true); if (event.getAction().name().contains("DROP") && SettingsManager.getConfig().getBoolean("Remove-Gadget-With-Drop")) { clear(); } player.updateInventory(); } } @Override protected void onClear() { getPlayer().getInventory().setHelmet(null); getOwner().setCurrentHat(null); } public ItemStack getItemStack() { return getType().getItemStack(); } }