Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / settingsgui / MainGui.java
@fanta fanta on 31 May 2024 3 KB components :')
package de.fanta.challenges.guis.settingsgui;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.ServerType;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.ItemUtils;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;

public class MainGui extends AbstractWindow {

    private static final Challenges plugin = Challenges.getPlugin();

    public static final int WINDOW_SIZE = 27;

    private static final int CLOSE_IDEX = 8;
    private static final int CHALLENGES_INDEX = 10;
    private static final int OTHER_SETTINGS_INDEX = 13;
    private static final int SERVER_SETTINGS_INDEX = 16;

    public MainGui(Player player) {
        super(player, Bukkit.createInventory(null, WINDOW_SIZE, plugin.getGuiPrefix().append(Component.text(" >> Settings"))));
    }

    @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 CHALLENGES_INDEX -> {
                if (plugin.getServerType() != ServerType.ADVENTURE) {
                    new ChallengesGui(player).open();
                }
            }
            case OTHER_SETTINGS_INDEX -> new OtherSettingsGui(player).open();
            case SERVER_SETTINGS_INDEX -> new ServerSettingsGui(player).open();
            case CLOSE_IDEX -> player.closeInventory();
            default -> {
            }
        }
    }

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < WINDOW_SIZE; i++) {
            ItemStack item;
            switch (i) {
                case CHALLENGES_INDEX -> {
                    if (plugin.getServerType() != ServerType.ADVENTURE) {
                        item = ItemUtils.createGuiItem(Material.REPEATER, Component.text("Challenges", ChatUtil.GREEN));
                    } else {
                        item = ItemUtils.createGuiItem(Material.BARRIER, Component.text("Challenges sind nur bei /tt challenge verfügbar", ChatUtil.RED));
                    }
                }
                case OTHER_SETTINGS_INDEX ->
                        item = ItemUtils.createGuiItem(Material.COMPARATOR, Component.text("Andere Einstellungen", ChatUtil.GREEN));
                case SERVER_SETTINGS_INDEX ->
                        item = ItemUtils.createGuiItem(Material.COMMAND_BLOCK, Component.text("Server Einstellungen", ChatUtil.GREEN));
                case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(Component.text("Menü verlassen", ChatUtil.RED));
                default -> item = ItemUtils.EMPTY_ICON;
            }
            this.getInventory().setItem(i, item);
        }
    }
}