Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / CheckItemsGUI.java
package de.fanta.challenges.guis;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemStack;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CheckItemsGUI implements Listener {
    private static final Challenges plugin = Challenges.getPlugin();

    private static final int JA_INDEX = 0;
    private static final int ITEM_INDEX = 2;
    private static final int NEIN_INDEX = 4;

    public static final int INVENTORY_SIZE = 5;

    private static final Map<Player, Inventory> InventoryperPlayer = new HashMap<>();

    public static void createCheckItemGUI(Player p) {
        if (plugin.getMaterials().isEmpty()) {
            p.closeInventory();
            ChatUtil.sendNormalMessage(p, "Lol fertig :>");
            return;
        }
        Inventory TEMP_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> geht das?? (" + plugin.getMaterials().size() + ")");
        InventoryperPlayer.put(p, TEMP_GUI);
        ItemStack stack = new ItemStack(plugin.getMaterials().get(0));
        try {
            TEMP_GUI.setItem(JA_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE, "Ja",true));

            Bukkit.getLogger().info("" + stack);
            TEMP_GUI.setItem(ITEM_INDEX, GUIUtils.createGuiItem(stack.getType(), stack.getI18NDisplayName(),false));
            TEMP_GUI.setItem(NEIN_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE, "Nein",true));
            for (int i = 0; i < INVENTORY_SIZE; i++) {
                ItemStack item = TEMP_GUI.getItem(i);
                if (item == null || item.getType() == Material.AIR) {
                    TEMP_GUI.setItem(i, GUIUtils.EMPTY_ICON);
                }
            }
            p.openInventory(TEMP_GUI);
        } catch (Exception e) {
            Bukkit.getLogger().info("Skip " + stack);
            plugin.getMaterials().remove(stack.getType());
            addItem(stack.getType());
            createCheckItemGUI(p);
        }


    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        Player player = (Player) e.getWhoClicked();
        if (InventoryperPlayer.get(player).equals(e.getClickedInventory())) {
            int slot = e.getRawSlot();
            if (slot == JA_INDEX) {
                plugin.getMaterials().remove(e.getClickedInventory().getItem(ITEM_INDEX).getType());
                player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
                createCheckItemGUI(player);
            }
            if (slot == NEIN_INDEX) {
                Material material = e.getClickedInventory().getItem(ITEM_INDEX).getType();
                addItem(material);
                plugin.getMaterials().remove(material);
                player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1.0F, 2.0F);
                createCheckItemGUI(player);
            }
            e.setCancelled(true);
        }
    }

    public static void addItem(Material material) {
        FileConfiguration config = Challenges.getPlugin().getItemConfig();
        List<String> list = config.getStringList("items");
        list.add(material.name());
        config.set("items", list);
        try {
            Challenges.getPlugin().ItemConfig.save(Challenges.getPlugin().ItemConfigFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}