Newer
Older
ChallengeSystem / Challenge / src / main / java / de / fanta / challenge / guis / CheckItemsGUI.java
@fanta fanta on 20 Jun 2024 3 KB components :,)
package de.fanta.challenge.guis;

import de.fanta.challenge.Challenge;
import de.fanta.challengeutils.ItemUtils;
import de.fanta.challengeutils.Color;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import net.kyori.adventure.text.Component;
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.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;

import java.io.IOException;
import java.util.List;
import java.util.logging.Level;

public class CheckItemsGUI extends AbstractWindow {
    private static final Challenge plugin = Challenge.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;

    public CheckItemsGUI(Player player) {
        super(player, Bukkit.createInventory(player, InventoryType.HOPPER, plugin.getGuiPrefix().append(Component.text(" >> geht das?? (" + plugin.getMaterials().size() + ")"))));
    }


    @Override
    protected void rebuildInventory() {
        if (plugin.getMaterials().isEmpty()) {
            getPlayer().closeInventory();
            plugin.getComponentUtil().sendNormalMessage(getPlayer(), "Lol fertig :>");
            return;
        }
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            ItemStack item;
            ItemStack stack = new ItemStack(plugin.getMaterials().getFirst());
            switch (i) {
                case JA_INDEX ->
                        item = ItemUtils.createGuiItem(Material.LIME_CONCRETE, Component.text("Ja", Color.GREEN), true);
                case ITEM_INDEX -> item = stack;
                case NEIN_INDEX ->
                        item = ItemUtils.createGuiItem(Material.RED_CONCRETE, Component.text("Nein", Color.RED), true);
                default -> item = ItemUtils.EMPTY_ICON;
            }
            this.getInventory().setItem(i, item);
        }
    }

    @Override
    public void onItemClicked(InventoryClickEvent event) {
        Player player = getPlayer();
        if (!mayAffectThisInventory(event)) {
            return;
        }

        event.setCancelled(true);
        if (!getInventory().equals(event.getClickedInventory())) {
            return;
        }

        int slot = event.getSlot();
        switch (slot) {
            case JA_INDEX -> {
                plugin.getMaterials().remove(getInventory().getItem(ITEM_INDEX).getType());
                player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
            }
            case NEIN_INDEX -> {
                Material material = getInventory().getItem(ITEM_INDEX).getType();
                addItem(material);
                plugin.getMaterials().remove(material);
                player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1.0F, 2.0F);
            }
            default -> {
            }
        }
        rebuildInventory();
    }

    public static void addItem(Material material) {
        FileConfiguration config = Challenge.getPlugin().getItemConfig();
        List<String> list = config.getStringList("items");
        list.add(material.name());
        config.set("items", list);
        try {
            Challenge.getPlugin().ItemConfig.save(Challenge.getPlugin().ItemConfigFile);
        } catch (IOException e) {
            plugin.getLogger().log(Level.SEVERE, "Error while saving item Config", e);
        }
    }
}