Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / TimerGui.java
@fanta fanta on 16 Aug 2021 4 KB Zeug xD viel Zeug
package de.fanta.challenges.guis;

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.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, Challenges.GUIPREFIX + " >> 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, ChatColor.AQUA + "Timer Richtung - rückwärts"));
        } else {
            TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatColor.GREEN + "Timer Richtung - vorwärts"));
        }
        if (plugin.getConfig().getBoolean("showtimer")) {
            TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatColor.GREEN + "Timer wird angezeigt!", true));
        } else {
            TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatColor.RED + "Timer wird nicht angezeigt!", false));
        }
        if (plugin.getTimer().isRunning()) {
            TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer gestartet", true));
        } else {
            TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatColor.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) {
        int slot = e.getRawSlot();
        World world = Bukkit.getWorld("world");
        Player p = (Player) e.getWhoClicked();
        if (e.getInventory() == TIMER_GUI) {
            if (slot == 15) {
                if (plugin.getTimer().isRunning()) {
                    plugin.getTimer().stopTimer();
                    for (Player pp : Bukkit.getOnlinePlayers()) {
                        pp.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
                        world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
                        pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatColor.RED + "Der Timer wurde pausiert.", 10, 40, 10);
                    }
                } else {
                    plugin.getTimer().startTimer();
                    for (Player pp : Bukkit.getOnlinePlayers()) {
                        pp.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
                        world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true);
                        pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatColor.GREEN + "Der Timer wurde gestartet.", 10, 60, 10);
                    }
                }
                p.closeInventory();
            } else if  (slot == 11) {
                if (plugin.getTimer().isReverse()) {
                    plugin.getTimer().reverseTimer();
                    GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt vorwärts.", ChatColor.GREEN);
                } else {
                    plugin.getTimer().reverseTimer();
                    GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt rückwärts.", ChatColor.AQUA);
                }
                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!", ChatColor.RED);
                } else {
                    plugin.getConfig().set("showtimer", true);
                    GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt wieder angezeigt!", ChatColor.GREEN);
                }
                createTimerGUI(p);
            }
            e.setCancelled(true);
        }
    }
}