Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / challengesettingsguis / MLGSettingsGui.java
@fanta fanta on 13 May 2024 4 KB Move GuiUtils to CubesideUtils
package de.fanta.challenges.guis.challengesettingsguis;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.guis.settingsgui.ChallengesGui;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.Config;
import de.fanta.challenges.utils.ItemUtils;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
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 org.bukkit.inventory.meta.ItemMeta;

public class MLGSettingsGui extends AbstractWindow {
    private static final Challenges plugin = Challenges.getPlugin();
    private static final int RANDOM_BLOCK_INDEX = 1;
    private static final int ADD_TIME_INDEX = 2;
    private static final int TIME_INDEX = 5;
    private static final int REMOVE_TIME_INDEX = 8;

    private static final int BACK_INDEX = 6;

    public MLGSettingsGui(Player player) {
        super(player, Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> MLG Settings"));
    }

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

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

        int slot = event.getSlot();
        int time = Config.getInt("mlg.maxtime");
        switch (slot) {
            case RANDOM_BLOCK_INDEX -> {
                if (Config.getBoolean("mlg.randommlgblock")) {
                    Config.setValue("mlg.randommlgblock", false);
                    ChatUtil.sendTitleToAll("MLG Challenge", "Wassereimer MLG", ChatUtil.GREEN);
                } else {
                    Config.setValue("mlg.randommlgblock", true);
                    ChatUtil.sendTitleToAll("MLG Challenge", "Zufälliger MLG Block", ChatUtil.GREEN);
                }
                rebuildInventory();
            }
            case ADD_TIME_INDEX -> {
                if (event.isShiftClick()) {
                    time = time + 10;
                } else {
                    time = time + 100;
                }
                Config.setValue("mlg.maxtime", time);
                rebuildInventory();
            }
            case REMOVE_TIME_INDEX -> {
                if (event.isShiftClick()) {
                    time = time - 10;
                } else {
                    time = time - 100;
                }
                if (time > 1) {
                    Config.setValue("mlg.maxtime", time);
                    rebuildInventory();
                }
            }
            case BACK_INDEX -> new ChallengesGui(getPlayer()).open();
            default -> {
            }
        }
    }

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack item;
            int time = Config.getInt("mlg.maxtime");
            switch (i) {
                case RANDOM_BLOCK_INDEX -> {
                    if (Config.getBoolean("mlg.randommlgblock")) {
                        item = ItemUtils.createGuiItem(Material.SLIME_BLOCK, ChatUtil.GREEN + "Zufälliger MLG Block", true, ChatUtil.GREEN + "Du bekommst ein Zufälligen Block.");
                    } else {
                        item = ItemUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "Wasser MLG", true, ChatUtil.GREEN + "Du bekommst einen Wassereimer.");
                    }
                }
                case ADD_TIME_INDEX ->
                        item = CustomHeads.RAINBOW_ARROW_UP.getHead(ChatUtil.GREEN + "Zeit hinzufügen", ChatUtil.GREEN + "Klick = +100 Sekunden", ChatUtil.GREEN + "Shift + Klick = +10 Sekunden");
                case REMOVE_TIME_INDEX ->
                        item = CustomHeads.RAINBOW_ARROW_DOWN.getHead(ChatUtil.RED + "Zeit entfernen", ChatUtil.RED + "Klick = -100 Sekunden", ChatUtil.RED + "Shift + Klick = -10 Sekunden");

                case TIME_INDEX -> {
                    ItemStack stack = new ItemStack(Material.CLOCK, Math.min(time, 64));
                    ItemMeta meta = stack.getItemMeta();
                    meta.setDisplayName("" + ChatUtil.BLUE + time + " Sekunden");
                    stack.setItemMeta(meta);
                    item = stack;
                }
                case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück");
                default -> item = ItemUtils.EMPTY_ICON;
            }
            this.getInventory().setItem(i, item);
        }
    }
}