Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / TimerGui.java
@fanta fanta on 21 May 2022 4 KB Fix Guis
package de.fanta.challenges.guis;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.ServerType;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.GameRule;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
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;

public class TimerGui implements Listener {

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

    public static final int INVENTORY_SIZE = 27;
    public static final Inventory TIMER_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Timer");

    private static final int SHOWTIMER_INDEX = 13;

    public static void createTimerGUI(Player p) {

        if (plugin.getTimer().isReverse()) {
            TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatUtil.BLUE + "Timer Richtung - rückwärts"));
        } else {
            TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatUtil.GREEN + "Timer Richtung - vorwärts"));
        }
        if (plugin.getConfig().getBoolean("showtimer")) {
            TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatUtil.GREEN + "Timer wird angezeigt!", true));
        } else {
            TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatUtil.RED + "Timer wird nicht angezeigt!", false));
        }
        if (plugin.getTimer().isRunning()) {
            TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "Timer gestartet", true));
        } else {
            TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.RED + "Timer pausiert"));
        }
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            if (TIMER_GUI.getItem(i) == null || TIMER_GUI.getItem(i).getType() == Material.AIR) {
                TIMER_GUI.setItem(i, GUIUtils.EMPTY_ICON);
            }
        }
        p.openInventory(TIMER_GUI);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        if (e.getInventory() == TIMER_GUI) {
            int slot = e.getRawSlot();
            World world = Bukkit.getWorld("world");
            Player p = (Player) e.getWhoClicked();
            if (slot == 15) {
                if (plugin.getTimer().isRunning()) {
                    plugin.getTimer().stopTimer();
                    if (plugin.getServerType() != ServerType.ADVENTURE) {
                        world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
                    }
                    ChatUtil.sendTitleToAll("Timer", ChatUtil.RED + "Der Timer wurde pausiert.", ChatUtil.BLUE, 10, 60, 10, true);
                } else {
                    plugin.getTimer().startTimer();
                    if (plugin.getServerType() != ServerType.ADVENTURE) {
                        world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true);
                    }
                    ChatUtil.sendTitleToAll("Timer", ChatUtil.GREEN + "Der Timer wurde gestartet.", ChatUtil.BLUE, 10, 60, 10, true);
                }
                p.closeInventory();
            } else if  (slot == 11) {
                if (plugin.getTimer().isReverse()) {
                    plugin.getTimer().reverseTimer();
                    GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt vorwärts.", ChatUtil.GREEN);
                } else {
                    plugin.getTimer().reverseTimer();
                    GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt rückwärts.", ChatUtil.BLUE);
                }
                p.closeInventory();
            } else if (slot == SHOWTIMER_INDEX) {
                if (plugin.getConfig().getBoolean("showtimer")) {
                    plugin.getConfig().set("showtimer", false);
                    GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt nicht mehr angezeigt!", ChatUtil.RED);
                } else {
                    plugin.getConfig().set("showtimer", true);
                    GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt wieder angezeigt!", ChatUtil.GREEN);
                }
                plugin.saveConfig();
                createTimerGUI(p);
            }
            e.setCancelled(true);
        }
    }
}