package de.fanta.challenges.guis.eventgui;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.challenges.DeathrunChallengeEvent;
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.inventory.Inventory;
import java.util.Objects;
public class EventGui implements Listener {
public static final int INVENTORY_SIZE = 27;
private static final Challenges plugin = Challenges.getPlugin();
public static final Inventory EVENT_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Event Settings");
private static final int NULL_EVENT_INDEX = 0;
private static final int TEAM_INDEX = 8;
private static final int BINGO_EVENT_INDEX = 10;
private static final int XP_EVENT_INDEX = 11;
private static final int BUILD_EVENT_INDEX = 12;
private static final int DEATHRUN_EVENT_INDEX = 13;
private static final int DEATH_COUNTER_INDEX = 14;
private static final int SAMMEL_FIEBER_INDEX = 15;
private static final int ORE_BATTLE_INDEX = 16;
private static final int FORCE_ITEM_INDEX = 17; //TODO muss noch schön gemacht werden.
private static final int BINGO_ITEMS_INDEX = 19;
private static final int SAMMEL_FIEBER_SETTINGS_INDEX = 24;
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, ChatUtil.GREEN + "Bingo Event", true, ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen"));
EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.createGuiItem(Material.CHEST, ChatUtil.GREEN + "Items", ChatUtil.GREEN + "Anklicken um Items Hinzuzufügen"));
} else {
EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatUtil.RED + "Bingo Event", ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.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, ChatUtil.RED + "Event beenden"));
} else {
EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.EMPTY_ICON);
}
EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.ORANGE_BED, ChatUtil.BLUE + "Team Settings"));
if (Objects.equals(plugin.getConfig().getString("event.type"), "build")) {
EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.GREEN + "Build Event", true, ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.RED + "Einen Block setzen gibt einen Minus Punkt"));
} else {
EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.RED + "Build Event", ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.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, ChatUtil.GREEN + "XP Event", true, ChatUtil.GREEN + "Sammle so viel XP wie Möglich", ChatUtil.RED + "Verzaubern zieht Level ab"));
} else {
EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "XP Event", ChatUtil.GREEN + "Sammle so viel XP wie Möglich", ChatUtil.RED + "Verzaubern zieht Level ab"));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun")) {
EVENT_GUI.setItem(DEATHRUN_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Deathrun Event", true, ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben"));
} else {
EVENT_GUI.setItem(DEATHRUN_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Deathrun Event", ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben"));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "deathcounter")) {
EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.GREEN + "Death Counter Event", true, ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden."));
} else {
EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.RED + "Death Counter Event", ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden."));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "orebattle")) {
EVENT_GUI.setItem(ORE_BATTLE_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_ORE, ChatUtil.GREEN + "Ore Battle Event", true, ChatUtil.GREEN + "Baue so viele erze ab wie möglich."));
} else {
EVENT_GUI.setItem(ORE_BATTLE_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_ORE, ChatUtil.RED + "Ore Battle Event", ChatUtil.GREEN + "Baue so viele erze ab wie möglich."));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "forceitem")) {
EVENT_GUI.setItem(FORCE_ITEM_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BLOCK, ChatUtil.GREEN + "Force Item Event", true, ChatUtil.GREEN + "Farm so viele Blöcke wie möglich."));
} else {
EVENT_GUI.setItem(FORCE_ITEM_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BLOCK, ChatUtil.RED + "Force Item Event", ChatUtil.GREEN + "Farm so viele Blöcke wie möglich."));
}
if (Objects.equals(plugin.getConfig().getString("event.type"), "sammelfieber")) {
EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Sammel Fieber Event", true, ChatUtil.GREEN + "Sammle so viel Items wie möglich!"));
EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.NETHER_STAR, ChatUtil.GREEN + "Sammel Fieber Event Settings"));
} else {
EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Sammel Fieber Event", ChatUtil.GREEN + "Sammle so viel Items wie möglich!"));
EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.EMPTY_ICON);
}
EVENT_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.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) {
if (e.getInventory() == EVENT_GUI) {
int slot = e.getRawSlot();
Player p = (Player) e.getWhoClicked();
if (plugin.getConfig().getBoolean("event.enabled")) {
switch (slot) {
case NULL_EVENT_INDEX -> {
if (!Objects.equals(plugin.getConfig().getString("event.type"), "nix")) {
plugin.getScoreManager().saveScores(p);
plugin.getScoreManager().resetScores();
GUIUtils.setConfig("event.type", "nix");
GUIUtils.sendTitleToAll("Event", "Event beendet", ChatUtil.RED);
}
}
case BUILD_EVENT_INDEX -> {
GUIUtils.setConfig("event.type", "build");
GUIUtils.sendTitleToAll("Event", "Baue die meisten Blöcke ab!", ChatUtil.GREEN);
}
case XP_EVENT_INDEX -> {
GUIUtils.setConfig("event.type", "xp");
GUIUtils.sendTitleToAll("Event", "Sammle so viel XP wie möglich ein!", ChatUtil.GREEN);
}
case BINGO_EVENT_INDEX -> {
GUIUtils.setConfig("event.type", "bingo");
GUIUtils.sendTitleToAll("Event", "Sammle Vorgegebene Items! (/bingo)", ChatUtil.GREEN);
}
case DEATHRUN_EVENT_INDEX -> {
GUIUtils.setConfig("event.type", "deathrun");
GUIUtils.sendTitleToAll("Event", "Laufe so weit wie möglich ohne zu sterben!", ChatUtil.GREEN);
DeathrunChallengeEvent.load();
}
case DEATH_COUNTER_INDEX -> {
GUIUtils.setConfig("event.type", "deathcounter");
GUIUtils.sendTitleToAll("Event", "Death Counter", ChatUtil.GREEN);
}
case SAMMEL_FIEBER_INDEX -> {
GUIUtils.setConfig("event.type", "sammelfieber");
GUIUtils.sendTitleToAll("Event", "SammelFieber", ChatUtil.GREEN);
}
case ORE_BATTLE_INDEX -> {
GUIUtils.setConfig("event.type", "orebattle");
GUIUtils.sendTitleToAll("Event", "Ore Battle", ChatUtil.GREEN);
}
case FORCE_ITEM_INDEX -> {
GUIUtils.setConfig("event.type", "forceitem");
GUIUtils.sendTitleToAll("Event", "Force Item", ChatUtil.GREEN);
}
}
createEventGUI(p);
switch (slot) {
case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p);
case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSammelFieberSettingsGUI(p);
case TEAM_INDEX -> TeamSettingsGUI.createTeamSettingsGUI(p);
case CLOSE_IDEX -> p.closeInventory();
}
}
e.setCancelled(true);
}
}
}