package be.isach.ultracosmetics.cosmetics.emotes;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.player.UltraPlayer;
import be.isach.ultracosmetics.cosmetics.Category;
import be.isach.ultracosmetics.cosmetics.Cosmetic;
import be.isach.ultracosmetics.cosmetics.type.EmoteType;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
/**
* Represents an instance of an emote summoned by a player.
*
* @author iSach
* @since 06-17-2016
*/
public class Emote extends Cosmetic<EmoteType> {
private EmoteAnimation animation;
private ItemStack itemStack;
public Emote(UltraPlayer owner, final EmoteType emoteType, UltraCosmetics ultraCosmetics) {
super(ultraCosmetics, Category.EMOTES, owner, emoteType);
this.animation = new EmoteAnimation(getType().getTicksPerFrame(), this);
owner.setCurrentEmote(this);
}
@Override
protected void onEquip() {
animation.start();
}
@Override
protected void onClear() {
animation.stop();
getPlayer().getInventory().setHelmet(null);
}
public ItemStack getItemStack() { return itemStack; }
protected void setItemStack(ItemStack itemStack) {
this.itemStack = itemStack;
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if(event.getCurrentItem() != null && event.getCurrentItem().equals(itemStack)) {
event.setCancelled(true);
}
if(event.getCursor() != null && event.getCursor().equals(itemStack)) {
event.getWhoClicked().setItemOnCursor(new ItemStack(Material.AIR));
event.setCancelled(true);
}
}
}