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

import de.fanta.challenges.Challenges;
import de.fanta.challenges.teams.TeamUtils;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.Config;
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;

public class TeamSettingsGUI extends AbstractWindow {
    private static final Challenges plugin = Challenges.getPlugin();

    private static final int TEAM_INDEX = 0;
    private static final int TEAM_SELECT_INDEX = 2;
    private static final int AUTOTEAM_BY_JOIN_INDEX = 4;

    public static final int INVENTORY_SIZE = 5;

    public TeamSettingsGUI(Player player) {
        super(player, Bukkit.createInventory(player, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> Team Settings"));
    }

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            ItemStack item;
            switch (i) {
                case TEAM_INDEX -> {
                    if (!Config.getBoolean("event.teams")) {
                        item = GUIUtils.createGuiItem(Material.RED_BED, ChatUtil.RED + "Teams deaktiviert");
                    } else {
                        item = GUIUtils.createGuiItem(Material.LIME_BED, ChatUtil.GREEN + "Teams aktiviert", true);
                    }
                }
                case TEAM_SELECT_INDEX -> {
                    if (!Config.getBoolean("event.teamselect")) {
                        item = GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, ChatUtil.RED + "Team auswahl deaktiviert");
                    } else {
                        item = GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, ChatUtil.GREEN + "Team auswahl aktiviert", true);
                    }
                }
                case AUTOTEAM_BY_JOIN_INDEX -> {
                    if (!Config.getBoolean("event.autoteams")) {
                        item = GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, ChatUtil.RED + "Autoteams by Join deaktiviert");
                    } else {
                        item = GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, ChatUtil.GREEN + "Autoteams by Join aktiviert", 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 TEAM_INDEX -> {
                if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) {
                    if (!Config.getBoolean("event.teams")) {
                        Config.setValue("event.teams", true);
                        ChatUtil.sendTitleToAll("Event", "Teams aktiviert", ChatUtil.GREEN);
                        plugin.getScoreManager().resetScores();
                        plugin.getSBManager().updateEventScoreboard();
                    } else {
                        Config.setValue("event.teams", false);
                        ChatUtil.sendTitleToAll("Event", "Teams deaktiviert", ChatUtil.RED);
                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            pp.getInventory().removeItem(TeamUtils.selctItem());
                        }
                    }
                } else {
                    ChatUtil.sendErrorMessage(player, "Du musst erst teams anlegen! /event createteams <Anzahl-Teams> <Anzahl-PlayerPerTeams>");
                }
            }
            case TEAM_SELECT_INDEX -> {
                if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) {
                    if (!Config.getBoolean("event.teamselect")) {
                        Config.setValue("event.teamselect", true);
                        ChatUtil.sendTitleToAll("Event", "Team auswahl aktiviert", ChatUtil.GREEN);
                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            plugin.getSBManager().removeScoreboard(pp);
                            pp.getInventory().setItem(8, TeamUtils.selctItem());
                        }
                    } else {
                        Config.setValue("event.teamselect", false);
                        ChatUtil.sendTitleToAll("Event", "Team auswahl deaktiviert", ChatUtil.RED);
                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            pp.getInventory().removeItem(TeamUtils.selctItem());
                        }
                    }
                } else {
                    ChatUtil.sendErrorMessage(player, "Du musst erst teams anlegen! /event createteams <Anzahl-Teams> <Anzahl-PlayerPerTeams>");
                }
            }
            case AUTOTEAM_BY_JOIN_INDEX -> {
                if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) {
                    if (Config.getBoolean("event.autoteams")) {
                        Config.setValue("event.autoteams", false);
                        ChatUtil.sendTitleToAll("Event", "Autoteams by Join deaktiviert", ChatUtil.RED);
                    } else {
                        Config.setValue("event.autoteams", true);
                        ChatUtil.sendTitleToAll("Event", "Autoteams by Join aktiviert", ChatUtil.GREEN);
                    }
                } else {
                    ChatUtil.sendErrorMessage(player, "Du musst erst teams anlegen! /event createteams <Anzahl-Teams> <Anzahl-PlayerPerTeams>");
                }
            }
            default -> {
            }
        }
        rebuildInventory();
    }
}