Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / savegui / ChallengeSaveConfirmGui.java
@fanta fanta on 7 Nov 2022 2 KB Save more Maps with VIP
package de.fanta.challenges.guis.savegui;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.SaveSlot;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.SaveWorldUtils;
import de.fanta.challenges.utils.guiutils.AbstractWindow;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;

import java.util.HashMap;
import java.util.UUID;

public class ChallengeSaveConfirmGui extends AbstractWindow {
    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;

    private static final int INVENTORY_SIZE = 5;
    private static final HashMap<UUID, ItemStack> playerItemList = new HashMap<>();
    private static final HashMap<UUID, UUID> savePlayerList = new HashMap<>();
    private static final HashMap<UUID, SaveSlot> saveSlotList = new HashMap<>();

    public ChallengeSaveConfirmGui(Player player, UUID savePlayerID, SaveSlot saveSlot, ItemStack displayItem) {
        super(player, Bukkit.createInventory(player, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> Save überschreiben?"));
        playerItemList.put(player.getUniqueId(), displayItem);
        savePlayerList.put(player.getUniqueId(), savePlayerID);
        saveSlotList.put(player.getUniqueId(), saveSlot);
    }

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            ItemStack item;
            switch (i) {
                case JA_INDEX -> item = GUIUtils.createGuiItem(Material.LIME_CONCRETE, ChatUtil.GREEN + "Ja", true);
                case ITEM_INDEX -> item = playerItemList.get(getPlayer().getUniqueId());
                case NEIN_INDEX -> item = GUIUtils.createGuiItem(Material.RED_CONCRETE, ChatUtil.RED + "Nein", true);
                default -> item = GUIUtils.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 -> {
                getPlayer().closeInventory();
                SaveWorldUtils.saveWorld(player, savePlayerList.get(player.getUniqueId()).toString(), saveSlotList.get(player.getUniqueId()));
            }
            case NEIN_INDEX -> getPlayer().closeInventory();
            default -> {
            }
        }
    }
}