Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / settingsgui / ServerSettingsGui.java
@fantahund fantahund on 21 Jul 2020 11 KB Push It To The Limit
package de.fanta.challenges.guis.settingsgui;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.guis.settingsgui.SettingsGui;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.Difficulty;
import org.bukkit.GameMode;
import org.bukkit.GameRule;
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 javax.print.attribute.standard.MediaSize;

public class ServerSettingsGui implements Listener {

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

    public static final int INVENTORY_SIZE = 27;
    public static final Inventory SERVER_SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Server Settings");

    private static final int DIFFICULTY_INDEX = 10;
    private static final int KEEP_INVENTORY_INDEX = 11;
    private static final int NATURAL_REGENERATION_INDEX = 12;
    private static final int PVP_INDEX = 16;
    private static final int BACK_INDEX = 18;
    private static final int CLOSE_INDEX = 26;
    private static final int ONE_LIFE_INDEX = 14;
    private static final int RESPAWN_INDEX = 15;

    public static void createServerSettingsGUI(Player p) {
        if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) {
            SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.IRON_SWORD, ChatColor.AQUA + "Schwierigkeitsgrad Leicht"));
        } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) {
            SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_SWORD, ChatColor.RED + "Schwierigkeitsgrad Mittel"));
        } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) {
            SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_SWORD, ChatColor.DARK_RED + "Schwierigkeitsgrad Schwer"));
        } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) {
            SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.POPPY, ChatColor.GREEN + "Schwierigkeitsgrad Friedlich"));
        }
        if (plugin.getServer().getWorld("world").getPVP()) {
            SERVER_SETTINGS_GUI.setItem(PVP_INDEX, GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatColor.GREEN + "PVP aktiviert", true));
        } else {
            SERVER_SETTINGS_GUI.setItem(PVP_INDEX, GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatColor.RED + "PVP deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("onelife")) {
            SERVER_SETTINGS_GUI.setItem(ONE_LIFE_INDEX, GUIUtils.createGuiItem(Material.SUNFLOWER, ChatColor.GREEN + "Ein Leben für alle aktiviert", true));
        } else {
            SERVER_SETTINGS_GUI.setItem(ONE_LIFE_INDEX, GUIUtils.createGuiItem(Material.SUNFLOWER, ChatColor.RED + "Ein Leben für alle deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("respawn")) {
            SERVER_SETTINGS_GUI.setItem(RESPAWN_INDEX, GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatColor.GREEN + "Wiederbeleben aktiviert", true));
        } else {
            SERVER_SETTINGS_GUI.setItem(RESPAWN_INDEX, GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatColor.RED + "Wiederbeleben deaktiviert"));
        }
        if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) {
            SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatColor.GREEN + "Keep Inventory aktiviert", true));
        } else {
            SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatColor.RED + "Keep Inventory deaktiviert"));
        }
        if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) {
            SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatColor.GREEN + "Natürliche Regeneration aktiviert", true));
        } else {
            SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatColor.RED + "Natürliche Regeneration deaktiviert"));
        }

        SERVER_SETTINGS_GUI.setItem(CLOSE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü Verlassen!"));
        SERVER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück"));
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            if (SERVER_SETTINGS_GUI.getItem(i) == null || SERVER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) {
                SERVER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON);
            }
        }
        p.openInventory(SERVER_SETTINGS_GUI);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        int slot = e.getRawSlot();
        Player p = (Player) e.getWhoClicked();
        if (e.getInventory() == SERVER_SETTINGS_GUI) {
            switch (slot) {
                case DIFFICULTY_INDEX:
                    if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) {
                        plugin.getServer().getWorld("world").setDifficulty(Difficulty.NORMAL);
                        plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.NORMAL);
                        plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.NORMAL);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Mittel", ChatColor.RED);
                    } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) {
                        plugin.getServer().getWorld("world").setDifficulty(Difficulty.HARD);
                        plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.HARD);
                        plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.HARD);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Schwer", ChatColor.DARK_RED);
                    } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) {
                        plugin.getServer().getWorld("world").setDifficulty(Difficulty.PEACEFUL);
                        plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.PEACEFUL);
                        plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.PEACEFUL);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatColor.GREEN);
                    } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) {
                        plugin.getServer().getWorld("world").setDifficulty(Difficulty.EASY);
                        plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.EASY);
                        plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.EASY);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatColor.AQUA);
                    }
                    break;
                case PVP_INDEX:
                    if (plugin.getServer().getWorld("world").getPVP()) {
                        plugin.getServer().getWorld("world").setPVP(false);
                        plugin.getServer().getWorld("world_nether").setPVP(false);
                        plugin.getServer().getWorld("world_the_end").setPVP(false);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatColor.RED);
                    } else {
                        plugin.getServer().getWorld("world").setPVP(true);
                        plugin.getServer().getWorld("world_nether").setPVP(true);
                        plugin.getServer().getWorld("world_the_end").setPVP(true);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatColor.GREEN);
                    }
                    break;
                case ONE_LIFE_INDEX:
                    if (plugin.getConfig().getBoolean("onelife")) {
                        GUIUtils.setConfig("onelife", false);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle deaktiviert", ChatColor.RED);
                    } else {
                        GUIUtils.setConfig("onelife", true);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle aktiviert", ChatColor.GREEN);
                    }
                    break;
                case RESPAWN_INDEX:
                    if (plugin.getConfig().getBoolean("respawn")) {
                        GUIUtils.setConfig("respawn", false);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben deaktiviert", ChatColor.RED);
                    } else {
                        GUIUtils.setConfig("respawn", true);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben aktiviert", ChatColor.GREEN);
                    }
                    break;
                case KEEP_INVENTORY_INDEX:
                    if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) {
                        plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, false);
                        plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, false);
                        plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, false);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory deaktiviert", ChatColor.RED);
                    } else {
                        plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, true);
                        plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, true);
                        plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, true);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatColor.GREEN);
                    }
                    break;
                case NATURAL_REGENERATION_INDEX:
                    if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) {
                        plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, false);
                        plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, false);
                        plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, false);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration aktiviert", ChatColor.GREEN);
                    } else {
                        plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, true);
                        plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, true);
                        plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, true);
                        GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration deaktiviert", ChatColor.RED);
                    }
                    break;
            }
            createServerSettingsGUI(p);

            switch (slot) {
                case BACK_INDEX:
                    MainGui.createMainGUI(p);
                    break;
                case CLOSE_INDEX:
                    p.closeInventory();
                    break;
            }
            e.setCancelled(true);
        }
    }
}