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.guiutils.GUIUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class TeamSettingsGUI implements Listener {

    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 static final Inventory TEAM_SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> Team Settings");

    public static void createTeamSettingsGUI(Player p) {
        if (!plugin.getConfig().getBoolean("event.teams")) {
            TEAM_SETTINGS_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.RED_BED, "Teams deaktiviert"));
        } else {
            TEAM_SETTINGS_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.LIME_BED, "Teams aktiviert", true));
        }

        if (!plugin.getConfig().getBoolean("event.teamselect")) {
            TEAM_SETTINGS_GUI.setItem(TEAM_SELECT_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, "Team auswahl deaktiviert"));
        } else {
            TEAM_SETTINGS_GUI.setItem(TEAM_SELECT_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, "Team auswahl aktiviert", true));
        }

        if (!plugin.getConfig().getBoolean("event.autoteams")) {
            TEAM_SETTINGS_GUI.setItem(AUTOTEAM_BY_JOIN_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, "Autoteams by Join deaktiviert"));
        } else {
            TEAM_SETTINGS_GUI.setItem(AUTOTEAM_BY_JOIN_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, "Autoteams by Join aktiviert", true));
        }


        for (int i = 0; i < INVENTORY_SIZE; i++) {
            ItemStack item = TEAM_SETTINGS_GUI.getItem(i);
            if (item == null || item.getType() == Material.AIR) {
                TEAM_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON);
            }
        }
        p.openInventory(TEAM_SETTINGS_GUI);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        int slot = e.getRawSlot();
        Player p = (Player) e.getWhoClicked();
        if (TEAM_SETTINGS_GUI.equals(e.getClickedInventory())) {
            switch (slot) {
                case TEAM_INDEX -> {
                    if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) {
                        if (!plugin.getConfig().getBoolean("event.teams")) {
                            GUIUtils.setConfig("event.teams", true);
                            GUIUtils.sendTitleToAll("Event", "Teams aktiviert", ChatUtil.GREEN);
                            plugin.getScoreManager().resetScores();
                            plugin.getSBManager().updateEventScoreboard();
                        } else {
                            GUIUtils.setConfig("event.teams", false);
                            GUIUtils.sendTitleToAll("Event", "Teams deaktiviert", ChatUtil.RED);
                            for (Player pp : Bukkit.getOnlinePlayers()) {
                                pp.getInventory().removeItem(TeamUtils.selctItem());
                            }
                        }
                    } else {
                        ChatUtil.sendErrorMessage(p, "Du musst erst teams anlegen! /event createteams <Anzahl-Teams> <Anzahl-PlayerPerTeams>");
                    }
                }

                case TEAM_SELECT_INDEX -> {
                    if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) {
                        if (!plugin.getConfig().getBoolean("event.teamselect")) {
                            GUIUtils.setConfig("event.teamselect", true);
                            GUIUtils.sendTitleToAll("Event", "Team auswahl aktiviert", ChatUtil.GREEN);
                            for (Player pp : Bukkit.getOnlinePlayers()) {
                                plugin.getSBManager().removeScoreboard(pp);
                                pp.getInventory().setItem(8, TeamUtils.selctItem());
                            }
                        } else {
                            GUIUtils.setConfig("event.teamselect", false);
                            GUIUtils.sendTitleToAll("Event", "Team auswahl deaktiviert", ChatUtil.RED);
                            for (Player pp : Bukkit.getOnlinePlayers()) {
                                pp.getInventory().removeItem(TeamUtils.selctItem());
                            }
                        }
                    } else {
                        ChatUtil.sendErrorMessage(p, "Du musst erst teams anlegen! /event createteams <Anzahl-Teams> <Anzahl-PlayerPerTeams>");
                    }
                }

                case AUTOTEAM_BY_JOIN_INDEX -> {
                    if (plugin.getConfig().getBoolean("event.autoteams")) {
                        GUIUtils.setConfig("event.autoteams", false);
                        GUIUtils.sendTitleToAll("Event", "Autoteams by Join deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("event.autoteams", true);
                        GUIUtils.sendTitleToAll("Event", "Autoteams by Join aktiviert", ChatUtil.GREEN);
                    }
                }
            }
            createTeamSettingsGUI(p);
            e.setCancelled(true);
        }
    }
}