package de.fanta.challenges.guis.eventgui;
import de.fanta.challenges.challenges.Bingo;
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 Challenges plugin = Challenges.getPlugin();
public static final String TITLE = Challenges.GUIPREFIX + " >> Event Items";
private static final Inventory event_items = Bukkit.createInventory(null, InventoryType.DISPENSER, TITLE);
private static 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, Challenges.GUIPREFIX + " >> Bingo");
Bingo bingo = plugin.getBingo();
List<Material> playerMaterials = bingo.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>());
bingo.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) {
if (e.getClickedInventory() == null)
return;
Player player = (Player) e.getWhoClicked();
UUID uuid = player.getUniqueId();
if (playerInvs.get(uuid) == null)
return;
if (playerInvs.get(uuid).equals(e.getClickedInventory())) {
e.setCancelled(true);
}
}
}