package de.fanta.challenges.guis.eventgui;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import net.md_5.bungee.api.ChatColor;
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.inventory.Inventory;
import java.util.Objects;
public class EventGui implements Listener {
private static final Challenges plugin = Challenges.getPlugin();
public static final int INVENTORY_SIZE = 27;
public static final Inventory EVENT_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Event Settings");
private static final int NULL_EVENT_INDEX = 0;
private static final int BINGO_EVENT_INDEX = 10;
private static final int BINGO_ITEMS_INDEX = 19;
private static final int BUILD_EVENT_INDEX = 12;
private static final int XP_EVENT_INDEX = 11;
private static final int CLOSE_IDEX = 26;
public static void createEventGUI(Player p) {
if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")) {
EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatColor.GREEN + "Bingo Event", true, ChatColor.GREEN + "Sammle Vorgegebene Items", ChatColor.GREEN + "Items kann man mit /bingo sehen"));
EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.createGuiItem(Material.CHEST, ChatColor.GREEN + "Items", ChatColor.GREEN + "Anklicken um Items Hinzuzufügen"));
} else {
EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatColor.RED + "Bingo Event", ChatColor.GREEN + "Sammle Vorgegebene Items", ChatColor.GREEN + "Items kann man mit /bingo sehen"));
EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.EMPTY_ICON);
}
if (!Objects.equals(plugin.getConfig().getString("event.type"), "nix")) {
EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Event beenden"));
} else {
EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.EMPTY_ICON);
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "build")) {
EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatColor.GREEN + "Build Event", true, ChatColor.GREEN + "Baue so viele Blöcke wie möglich ab", ChatColor.RED + "Einen Block setzen gibt einen Minus Punkt"));
} else {
EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatColor.RED + "Build Event", ChatColor.GREEN + "Baue so viele Blöcke wie möglich ab", ChatColor.RED + "Einen Block setzen gibt einen Minus Punkt"));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "xp")) {
EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.GREEN + "XP Event", true, ChatColor.GREEN + "Sammle so viel XP wie Möglich", ChatColor.RED + "Verzaubern zieht Level ab"));
} else {
EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.RED + "XP Event", ChatColor.GREEN + "Sammle so viel XP wie Möglich", ChatColor.RED + "Verzaubern zieht Level ab"));
}
EVENT_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!"));
for (int i = 0; i < INVENTORY_SIZE; i++) {
if (EVENT_GUI.getItem(i) == null || EVENT_GUI.getItem(i).getType() == Material.AIR) {
EVENT_GUI.setItem(i, GUIUtils.EMPTY_ICON);
}
}
p.openInventory(EVENT_GUI);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
int slot = e.getRawSlot();
Player p = (Player) e.getWhoClicked();
if (e.getInventory() == EVENT_GUI) {
if (plugin.getConfig().getBoolean("event.enabled")) {
switch (slot) {
case NULL_EVENT_INDEX:
plugin.getScoreManager().saveScores(p);
plugin.getScoreManager().resetScores();
GUIUtils.setConfig("event.type", "nix");
GUIUtils.sendTitleToAll("Event", "Event beendet", ChatColor.RED);
break;
case BUILD_EVENT_INDEX:
GUIUtils.setConfig("event.type", "build");
GUIUtils.sendTitleToAll("Event", "Baue die meisten Blöcke ab!", ChatColor.GREEN);
break;
case XP_EVENT_INDEX:
GUIUtils.setConfig("event.type", "xp");
GUIUtils.sendTitleToAll("Event", "Sammle so viel XP wie möglich ein!", ChatColor.GREEN);
break;
case BINGO_EVENT_INDEX:
GUIUtils.setConfig("event.type", "bingo");
GUIUtils.sendTitleToAll("Event", "Sammle Vorgegebene Items! (/bingo)", ChatColor.GREEN);
}
createEventGUI(p);
switch (slot) {
case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p);
case CLOSE_IDEX -> p.closeInventory();
}
}
e.setCancelled(true);
}
}
}