Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / eventgui / EventItemsGui.java
@fanta fanta on 25 May 2022 2 KB CleanUp
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);
        }
    }
}