package me.arasple.mc.trmenu.display; import me.arasple.mc.trmenu.action.TrAction; import me.arasple.mc.trmenu.action.base.AbstractAction; import me.arasple.mc.trmenu.data.ArgsCache; import me.arasple.mc.trmenu.utils.Notifys; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * @author Arasple * @date 2019/10/4 14:10 */ public class Icon { private int priority; private String requirement; private Item item; private HashMap<ClickType, List<AbstractAction>> actions; public Icon(int priority, String requirement, Item item, HashMap<ClickType, List<AbstractAction>> actions) { this.priority = priority; this.requirement = requirement; this.item = item; this.actions = actions; } public int getPriority() { return priority; } public String getRequirement() { return requirement; } public Item getItem() { return item; } public void setPriority(int priority) { this.priority = priority; } public void setRequirement(String requirement) { this.requirement = requirement; } public HashMap<ClickType, List<AbstractAction>> getActions() { return actions; } public void onClick(Player player, Button button, ClickType clickType, InventoryClickEvent event) { List<AbstractAction> actions = getActions().getOrDefault(clickType, new ArrayList<>()); Notifys.debug(player, "ClickType: {0}, Actions: {1}. &8{2}", clickType.name(), actions.size(), actions); ArgsCache.getEvent().put(player.getUniqueId(), event); ArgsCache.getClickedItem().put(player.getUniqueId(), item); ArgsCache.getClickedButtons().put(player.getUniqueId(), button); TrAction.runActions(actions, player); if (getActions().get(null) != null) { TrAction.runActions(getActions().get(null), player); } ArgsCache.clear(player); button.refreshConditionalIcon(player, event); } }