package de.fanta.challenges.guis.eventgui;
import de.fanta.challenges.challenges.ChallengeEvents.BingoChallengeEvent;
import de.fanta.challenges.Challenges;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
public class EventItemsGui implements Listener {
private static final Challenges plugin = Challenges.getPlugin();
public static final String TITLE = plugin.getGUIPREFIX() + " >> Event Items";
private static final Inventory event_items = Bukkit.createInventory(null, InventoryType.DISPENSER, TITLE);
private static final Map<UUID, Inventory> playerInvs = new HashMap<>();
public static void openEventGUI(Player p) {
p.openInventory(event_items);
}
public static List<Material> getEventItems() {
return Arrays.stream(event_items.getContents()).filter(itemStack -> itemStack != null && !itemStack.getType().equals(Material.AIR)).map(ItemStack::getType).collect(Collectors.toList());
}
public static Map<UUID, Inventory> getPlayerInvs() {
return playerInvs;
}
public static void openPlayerInv(Player player, Player sender) {
Inventory inventory = Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Bingo");
List<Material> playerMaterials = BingoChallengeEvent.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>());
BingoChallengeEvent.getMaterials().forEach(material -> {
ItemStack itemStack = new ItemStack(material);
if (playerMaterials.contains(material)) {
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.addEnchant(Enchantment.MENDING, 1, false);
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemStack.setItemMeta(itemMeta);
}
inventory.addItem(itemStack);
});
playerInvs.put(player.getUniqueId(), inventory);
sender.openInventory(inventory);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
UUID uuid = e.getWhoClicked().getUniqueId();
if (e.getInventory() == playerInvs.get(uuid)) {
e.setCancelled(true);
}
}
}