package de.fanta.challenges.guis.settingsgui;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.challenges.AllItemsChallenge;
import de.fanta.challenges.challenges.WorldBorderLevelChallenge;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.guiutils.AbstractWindow;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class ChallengesGui extends AbstractWindow {

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

    public static final int WINDOW_SIZE = 54;

    private static final int GOAL_INDEX = 0;
    private static final int SHUFFLE_RANDOM_DROP_INDEX = 1;

    private static final int BACK_INDEX = 7;
    private static final int CLOSE_IDEX = 8;

    private static final int SHARED_DAMAGE_INDEX = 19;
    private static final int FLOOR_IS_LAVA_INDEX = 20;
    private static final int CHUNK_RANDOM_EFFECT_INDEX = 21;
    private static final int BEDROCK_WALL_INDEX = 22;
    private static final int MLG_INDEX = 23;
    private static final int WORLD_BORDER_LEVEL_INDEX = 24;
    private static final int ALL_ITEMS_INDEX = 25;

    private static final int DEATH_ON_XP_INDEX = 28;
    private static final int DEATH_ON_FALLDAMAGE_INDEX = 29;
    private static final int DEATH_ON_SPRINT_INDEX = 30;
    private static final int DEATH_ON_JUMP_INDEX = 31;
    private static final int CLEAR_INVENTAR_ON_DAMAGE_INDEX = 32;
    private static final int ICE_RUNNER_INDEX = 33;
    private static final int RANDOM_MOBS_INDEX = 34;

    private static final int RANDOM_DROPS_INDEX = 37;
    private static final int DAMAGE_ON_SNEAK_INDEX = 38;
    private static final int TIED_TOGETHER_INDEX = 39;

    public ChallengesGui(Player player) {
        super(player, Bukkit.createInventory(player, WINDOW_SIZE, plugin.getGUIPREFIX() + " >> Challenges"));
    }

    @Override
    public void onItemClicked(InventoryClickEvent event) {
        Player player = getPlayer();
        if (!mayAffectThisInventory(event)) {
            return;
        }

        event.setCancelled(true);
        if (!getInventory().equals(event.getClickedInventory())) {
            return;
        }

        int slot = event.getSlot();
        switch (slot) {
            case GOAL_INDEX -> {
                EntityType entityType = EntityType.valueOf(plugin.getConfig().getString("goal").toUpperCase());
                if (entityType == EntityType.ENDER_DRAGON) {
                    GUIUtils.setConfig("goal", EntityType.WITHER.getName());
                    GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatUtil.GREEN);
                } else if (entityType == EntityType.WITHER) {
                    GUIUtils.setConfig("goal", EntityType.WARDEN.getName());
                    GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Warden", ChatUtil.GREEN);
                } else if (entityType == EntityType.WARDEN) {
                    GUIUtils.setConfig("goal", EntityType.ENDER_DRAGON.getName());
                    GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatUtil.GREEN);
                }
            }
            case SHUFFLE_RANDOM_DROP_INDEX -> {
                plugin.rndDrops.shuffleItems();
                plugin.rndDrops.saveItems();
                GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatUtil.GREEN);
            }

            case SHARED_DAMAGE_INDEX -> {
                if (plugin.getConfig().getBoolean("sharedmg")) {
                    GUIUtils.setConfig("sharedmg", false);
                    GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("sharedmg", true);
                    GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatUtil.GREEN);
                }
            }
            case FLOOR_IS_LAVA_INDEX -> {
                if (plugin.getConfig().getBoolean("lavafloor")) {
                    GUIUtils.setConfig("lavafloor", false);
                    GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("lavafloor", true);
                    GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava aktiviert", ChatUtil.GREEN);
                }
            }
            case CHUNK_RANDOM_EFFECT_INDEX -> {
                if (plugin.getConfig().getBoolean("randomeffect")) {
                    GUIUtils.setConfig("randomeffect", false);
                    GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("randomeffect", true);
                    GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt aktiviert", ChatUtil.GREEN);
                }
            }
            case BEDROCK_WALL_INDEX -> {
                if (plugin.getConfig().getBoolean("bedrockwall")) {
                    GUIUtils.setConfig("bedrockwall", false);
                    GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("bedrockwall", true);
                    GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatUtil.GREEN);
                }
            }
            case MLG_INDEX -> {
                if (plugin.getConfig().getBoolean("mlg.enabled")) {
                    GUIUtils.setConfig("mlg.enabled", false);
                    GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("mlg.enabled", true);
                }
            }
            case WORLD_BORDER_LEVEL_INDEX -> {
                if (plugin.getProtocolVersion() < 759) {
                    return;
                }
                if (plugin.getConfig().getBoolean("worldborderlevel")) {
                    GUIUtils.setConfig("worldborderlevel", false);
                    for (Player pp : Bukkit.getOnlinePlayers()) {
                        if (pp.getWorldBorder() != null) {
                            pp.getWorldBorder().reset();
                        }
                    }
                    GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("worldborderlevel", true);
                    new WorldBorderLevelChallenge();
                    WorldBorderLevelChallenge.borderSync();
                    for (Player pp : Bukkit.getOnlinePlayers()) {
                        pp.teleport(pp.getWorld().getSpawnLocation());
                    }
                    GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN);
                }
            }
            case ALL_ITEMS_INDEX -> {
                if (plugin.getConfig().getBoolean("allitems")) {
                    GUIUtils.setConfig("allitems", false);
                    GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("allitems", true);
                    GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN);
                    AllItemsChallenge.start();
                }
            }

            case DEATH_ON_XP_INDEX -> {
                if (plugin.getConfig().getBoolean("xpdeath")) {
                    GUIUtils.setConfig("xpdeath", false);
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("xpdeath", true);
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatUtil.GREEN);
                }
            }
            case DEATH_ON_FALLDAMAGE_INDEX -> {
                if (plugin.getConfig().getBoolean("deathonfall")) {
                    GUIUtils.setConfig("deathonfall", false);
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("deathonfall", true);
                }
            }
            case DEATH_ON_SPRINT_INDEX -> {
                if (plugin.getConfig().getBoolean("deathonsprint")) {
                    GUIUtils.setConfig("deathonsprint", false);
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("deathonsprint", true);
                }
            }
            case DEATH_ON_JUMP_INDEX -> {
                if (plugin.getConfig().getBoolean("deathonjump")) {
                    GUIUtils.setConfig("deathonjump", false);
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("deathonjump", true);
                }
            }
            case CLEAR_INVENTAR_ON_DAMAGE_INDEX -> {
                if (plugin.getConfig().getBoolean("clinvdmg")) {
                    GUIUtils.setConfig("clinvdmg", false);
                    GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("clinvdmg", true);
                }
            }
            case ICE_RUNNER_INDEX -> {
                if (plugin.getConfig().getBoolean("icerunner")) {
                    GUIUtils.setConfig("icerunner", false);
                    GUIUtils.sendTitleToAll("Challenge", "Ice-Runner deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("icerunner", true);
                    GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatUtil.GREEN);
                }
            }
            case RANDOM_MOBS_INDEX -> {
                if (plugin.getConfig().getBoolean("randommobs")) {
                    GUIUtils.setConfig("randommobs", false);
                    GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("randommobs", true);
                    GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatUtil.GREEN);
                }
            }

            case RANDOM_DROPS_INDEX -> {
                if (plugin.getConfig().getBoolean("rnddrops")) {
                    GUIUtils.setConfig("rnddrops", false);
                    GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("rnddrops", true);
                }
            }
            case DAMAGE_ON_SNEAK_INDEX -> {
                if (plugin.getConfig().getBoolean("damageonsneak")) {
                    if (event.isRightClick()) {
                        //TODO: INV ÖFFNEN
                    }
                    GUIUtils.setConfig("damageonsneak", false);
                    GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatUtil.GREEN);
                    GUIUtils.setConfig("damageonsneak", true);
                }
            }
            case TIED_TOGETHER_INDEX -> {
                if (plugin.getConfig().getBoolean("tiedtogether")) {
                    GUIUtils.setConfig("tiedtogether", false);
                    GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden deaktiviert", ChatUtil.RED);
                } else {
                    GUIUtils.setConfig("tiedtogether", true);
                    GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden aktiviert", ChatUtil.GREEN);
                }
            }
            default -> {
            }
        }
        new ChallengesGui(player).open();

        switch (slot) {
            case BACK_INDEX -> new MainGui(player).open();
            case CLOSE_IDEX -> player.closeInventory();
        }
    }

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < WINDOW_SIZE; i++) {
            ItemStack item;
            switch (i) {
                case GOAL_INDEX -> {
                    EntityType entityType = EntityType.valueOf(plugin.getConfig().getString("goal").toUpperCase());
                    if (entityType == EntityType.ENDER_DRAGON) {
                        item = GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten");
                    } else if (entityType == EntityType.WITHER) {
                        item = GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatUtil.GREEN + "Ziel: Wither töten");
                    } else if (entityType == EntityType.WARDEN) {
                        item = GUIUtils.createGuiItem(Material.SCULK_SHRIEKER, ChatUtil.GREEN + "Ziel: Warden töten");
                    } else {
                        item = GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten");
                    }
                }
                case SHUFFLE_RANDOM_DROP_INDEX ->
                        item = GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen");

                case BACK_INDEX -> {
                    item = CustomHeads.QUARTZ_ARROW_LEFT.getHead();
                    ItemMeta quartzArrowLeftMeta = item.getItemMeta();
                    quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Zurück");
                    item.setItemMeta(quartzArrowLeftMeta);
                }
                case CLOSE_IDEX -> {
                    item = CustomHeads.QUARTZ_X.getHead();
                    ItemMeta quartzArrowLeftMeta = item.getItemMeta();
                    quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Menü verlassen");
                    item.setItemMeta(quartzArrowLeftMeta);
                }

                case SHARED_DAMAGE_INDEX -> {
                    if (plugin.getConfig().getBoolean("sharedmg")) {
                        item = GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.GREEN + "Geteilter Schaden aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.RED + "Geteilter Schaden deaktiviert");
                    }
                }
                case FLOOR_IS_LAVA_INDEX -> {
                    if (plugin.getConfig().getBoolean("lavafloor")) {
                        item = GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.GREEN + "Der Boden ist Lava aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.RED + "Der Boden ist Lava deaktiviert");
                    }
                }
                case CHUNK_RANDOM_EFFECT_INDEX -> {
                    if (plugin.getConfig().getBoolean("randomeffect")) {
                        item = GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.GREEN + "Chunk Random Effekt aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.RED + "Chunk Random Effekt deaktiviert");
                    }
                }
                case BEDROCK_WALL_INDEX -> {
                    if (plugin.getConfig().getBoolean("bedrockwall")) {
                        item = GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.GREEN + "Bedrock Wand aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.RED + "Bedrock Wand deaktiviert");
                    }
                }
                case MLG_INDEX -> {
                    if (plugin.getConfig().getBoolean("mlg.enabled")) {
                        item = GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "MLG aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.RED + "MLG deaktiviert");
                    }
                }
                case WORLD_BORDER_LEVEL_INDEX -> {
                    if (plugin.getConfig().getBoolean("worldborderlevel")) {
                        item = GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.GREEN + "World Border Level aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert");
                    }
                }
                case ALL_ITEMS_INDEX -> {
                    if (plugin.getConfig().getBoolean("allitems")) {
                        item = GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen");
                    } else {
                        item = GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen");
                    }
                }

                case DEATH_ON_XP_INDEX -> {
                    if (plugin.getConfig().getBoolean("xpdeath")) {
                        item = GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "Sterben durch XP aktiviert", true, ChatUtil.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben");
                    } else {
                        item = GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "Sterben durch XP deaktiviert", ChatUtil.RED + "Wenn ein Spieler XP einsammelt wird er sterben");
                    }
                }
                case DEATH_ON_FALLDAMAGE_INDEX -> {
                    if (plugin.getConfig().getBoolean("deathonfall")) {
                        item = GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.GREEN + "Tod bei Fallschaden aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.RED + "Tod bei Fallschaden deaktiviert");
                    }
                }
                case DEATH_ON_SPRINT_INDEX -> {
                    if (plugin.getConfig().getBoolean("deathonsprint")) {
                        item = GUIUtils.createGuiItem(Material.POTION, ChatUtil.GREEN + "Tod beim Sprinten aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatUtil.RED + "Tod beim Sprinten deaktiviert");
                    }
                }
                case DEATH_ON_JUMP_INDEX -> {
                    if (plugin.getConfig().getBoolean("deathonjump")) {
                        item = GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.GREEN + "Tod beim Springen aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.RED + "Tod beim Springen deaktiviert");
                    }
                }
                case CLEAR_INVENTAR_ON_DAMAGE_INDEX -> {
                    if (plugin.getConfig().getBoolean("clinvdmg")) {
                        item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert");
                    }
                }
                case ICE_RUNNER_INDEX -> {
                    if (plugin.getConfig().getBoolean("icerunner")) {
                        item = GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.GREEN + "Ice-Runner aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.RED + "Ice-Runner deaktiviert");
                    }
                }
                case RANDOM_MOBS_INDEX -> {
                    if (plugin.getConfig().getBoolean("randommobs")) {
                        item = GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.GREEN + "Random Mobs aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.RED + "Random Mobs deaktiviert");
                    }
                }

                case RANDOM_DROPS_INDEX -> {
                    if (plugin.getConfig().getBoolean("rnddrops")) {
                        item = GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.GREEN + "Zufällige Drops aktiviert", true);
                    } else {
                        item = GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.RED + "Zufällige Drops deaktiviert");
                    }
                }
                case DAMAGE_ON_SNEAK_INDEX -> {
                    if (plugin.getConfig().getBoolean("damageonsneak")) {
                        item = GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.GREEN + "Schaden beim Schleichen aktiviert", true, ChatUtil.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg"), ChatUtil.GREEN + "Rechtsklick zum Bearbeiten");

                    } else {
                        item = GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.RED + "Schaden beim Schleichen deaktiviert");
                    }
                }
                case TIED_TOGETHER_INDEX -> {
                    if (plugin.getConfig().getBoolean("tiedtogether")) {
                        item = GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Zusammengebunden aktiviert", true, ChatUtil.GREEN + "Maximale Entfernung der Spieler: " + plugin.getConfig().getDouble("playerrange"), ChatUtil.GREEN + "Rechtsklick zum Bearbeiten");
                    } else {
                        item = GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Zusammengebunden deaktiviert");
                    }
                }
                default -> item = GUIUtils.EMPTY_ICON;
            }
            this.getInventory().setItem(i, item);
        }
    }
}

/*public class ChallengesGui implements Listener {

    public static final int INVENTORY_SIZE = 54;
    private static final Challenges plugin = Challenges.getPlugin();
    public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Challenges");

    private static final int CRAFTING_TABLE_INDEX = 0;
    private static final int TRADING_INDEX = 9;

    private static final int CLOSE_GUI_INDEX = 53;
    private static final int BACK_BUTTON_INDEX = 45;

    private static final int XP_DEATH_INDEX = 37;
    private static final int DEATH_ON_FALL_INDEX = 38;
    private static final int DEATH_ON_SPRINT_INDEX = 39;
    private static final int DEATH_ON_JUMP_INDEX = 40;
    private static final int CLEANR_INV_BY_DAMAGE_INDEX = 41;
    private static final int MLG_INDEX = 32;
    private static final int RANDOM_DROP_INDEX = 8;
    private static final int SHUFFLE_RANDOM_DROP_INDEX = 17;
    private static final int TARGET_INDEX = 4;
    private static final int SHARE_DMG_INDEX = 28;
    private static final int LAVA_FLOOR_INDEX = 29;
    private static final int CHUNK_RANDOM_EFFEKT_INDEX = 30;

    private static final int TIED_TOGETHER_INDEX = 16;
    private static final int RANGE_ON_TIED_TOGETHER_ADD_INDEX = 7;
    private static final int RANGE_ON_TIED_TOGETHER_REMOVE_INDEX = 25;

    private static final int DMG_ON_SNEAK_INDEX = 15;
    private static final int DMG_ON_SNEAK_ADD_INDEX = 6;
    private static final int DMG_ON_SNEAK_REMOVE_INDEX = 24;

    private static final int ICE_RUNNER_INDEX = 42;
    private static final int RANDOM_MOB_INDEX = 43;
    private static final int BEDROCK_WALL_INDEX = 31;
    private static final int WORLD_BORDER_LEVEL_INDEX = 33;
    private static final int ALL_ITEMS_INDEX = 34;

    public static void createSettingsGUI(Player p) {
        if (plugin.getConfig().getBoolean("craftingtable")) {
            SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.GREEN + "Werkbank aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.RED + "Werkbank deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("allowtrading")) {
            SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.GREEN + "Handeln aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.RED + "Handeln deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("xpdeath")) {
            SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "Sterben durch XP aktiviert", true, ChatUtil.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben"));
        } else {
            SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "Sterben durch XP deaktiviert", ChatUtil.RED + "Wenn ein Spieler XP einsammelt wird er sterben"));
        }
        if (plugin.getConfig().getBoolean("deathonfall")) {
            SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.GREEN + "Tod bei Fallschaden aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.RED + "Tod bei Fallschaden deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("rnddrops")) {
            SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.GREEN + "Zufällige Drops aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.RED + "Zufällige Drops deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("deathonsprint")) {
            SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.POTION, ChatUtil.GREEN + "Tod beim Sprinten aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatUtil.RED + "Tod beim Sprinten deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("deathonjump")) {
            SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.GREEN + "Tod beim Springen aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.RED + "Tod beim Springen deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("target")) {
            SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten"));
        } else {
            SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatUtil.GREEN + "Ziel: Wither töten"));
        }
        if (plugin.getConfig().getBoolean("clinvdmg")) {
            SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("damageonsneak")) {
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.GREEN + "Schaden beim Schleichen aktiviert", true, ChatUtil.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg")));
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead());
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead());

        } else {
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.RED + "Schaden beim Schleichen deaktiviert"));
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, GUIUtils.EMPTY_ICON);
            SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, GUIUtils.EMPTY_ICON);
        }
        if (plugin.getConfig().getBoolean("mlg.enabled")) {
            SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "MLG aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.RED + "MLG deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("sharedmg")) {
            SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.GREEN + "Geteilter Schaden aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.RED + "Geteilter Schaden deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("lavafloor")) {
            SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.GREEN + "Der Boden ist Lava aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.RED + "Der Boden ist Lava deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("randomeffect")) {
            SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.GREEN + "Chunk Random Effekt aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.RED + "Chunk Random Effekt deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("tiedtogether")) {
            SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Zusammengebunden aktiviert", true, ChatUtil.GREEN + "Maximale Entfernung der Spieler: " + plugin.getConfig().getDouble("playerrange")));
            SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead());
            SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead());
        } else {
            SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Zusammengebunden deaktiviert"));
            SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, GUIUtils.EMPTY_ICON);
            SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, GUIUtils.EMPTY_ICON);
        }
        if (plugin.getConfig().getBoolean("icerunner")) {
            SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.GREEN + "Ice-Runner aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.RED + "Ice-Runner deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("randommobs")) {
            SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.GREEN + "Random Mobs aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.RED + "Random Mobs deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("bedrockwall")) {
            SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.GREEN + "Bedrock Wand aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.RED + "Bedrock Wand deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("worldborderlevel")) {
            SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.GREEN + "World Border Level aktiviert", true));
        } else {
            SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert"));
        }
        if (plugin.getConfig().getBoolean("allitems")) {
            SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!"));
        } else {
            SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!"));
        }
        SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen"));
        SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!"));
        SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück"));
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            if (SETTINGS_GUI.getItem(i) == null || SETTINGS_GUI.getItem(i).getType() == Material.AIR) {
                SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON);
            }
        }
        p.openInventory(SETTINGS_GUI);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        if (e.getInventory() == SETTINGS_GUI) {
            int slot = e.getRawSlot();
            Player p = (Player) e.getWhoClicked();
            switch (slot) {
                case CRAFTING_TABLE_INDEX:
                    if (plugin.getConfig().getBoolean("craftingtable")) {
                        GUIUtils.setConfig("craftingtable", false);
                        GUIUtils.sendTitleToAll("Challenge", "Werkbank deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("craftingtable", true);
                        GUIUtils.sendTitleToAll("Challenge", "Werkbank aktiviert", ChatUtil.GREEN);
                    }
                    break;

                case TRADING_INDEX:
                    if (plugin.getConfig().getBoolean("allowtrading")) {
                        GUIUtils.setConfig("allowtrading", false);
                        GUIUtils.sendTitleToAll("Challenge", "Handeln deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("allowtrading", true);
                        GUIUtils.sendTitleToAll("Challenge", "Handeln aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case XP_DEATH_INDEX:
                    if (plugin.getConfig().getBoolean("xpdeath")) {
                        GUIUtils.setConfig("xpdeath", false);
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("xpdeath", true);
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case DEATH_ON_FALL_INDEX:
                    if (plugin.getConfig().getBoolean("deathonfall")) {
                        GUIUtils.setConfig("deathonfall", false);
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("deathonfall", true);
                    }
                    break;
                case RANDOM_DROP_INDEX:
                    if (plugin.getConfig().getBoolean("rnddrops")) {
                        GUIUtils.setConfig("rnddrops", false);
                        GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("rnddrops", true);
                    }
                    break;
                case SHUFFLE_RANDOM_DROP_INDEX:
                    plugin.rndDrops.shuffleItems();
                    plugin.rndDrops.saveItems();
                    GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatUtil.GREEN);
                    break;
                case DEATH_ON_SPRINT_INDEX:
                    if (plugin.getConfig().getBoolean("deathonsprint")) {
                        GUIUtils.setConfig("deathonsprint", false);
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("deathonsprint", true);
                    }
                    break;
                case DEATH_ON_JUMP_INDEX:
                    if (plugin.getConfig().getBoolean("deathonjump")) {
                        GUIUtils.setConfig("deathonjump", false);
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("deathonjump", true);
                    }
                    break;
                case TARGET_INDEX:
                    if (plugin.getConfig().getBoolean("target")) {
                        GUIUtils.setConfig("target", false);
                        GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatUtil.GREEN);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatUtil.GREEN);
                        GUIUtils.setConfig("target", true);
                    }
                    break;
                case CLEANR_INV_BY_DAMAGE_INDEX:
                    if (plugin.getConfig().getBoolean("clinvdmg")) {
                        GUIUtils.setConfig("clinvdmg", false);
                        GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("clinvdmg", true);
                    }
                    break;
                case DMG_ON_SNEAK_INDEX:
                    if (plugin.getConfig().getBoolean("damageonsneak")) {
                        GUIUtils.setConfig("damageonsneak", false);
                        GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("damageonsneak", true);
                    }
                    break;
                case MLG_INDEX:
                    if (plugin.getConfig().getBoolean("mlg.enabled")) {
                        GUIUtils.setConfig("mlg.enabled", false);
                        GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatUtil.GREEN);
                        GUIUtils.setConfig("mlg.enabled", true);
                    }
                    break;
                case DMG_ON_SNEAK_ADD_INDEX:
                    GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") + 0.5);
                    break;
                case DMG_ON_SNEAK_REMOVE_INDEX:
                    if (plugin.getConfig().getDouble("sneakdmg") > 0) {
                        GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") - 0.5);
                    }
                    break;
                case SHARE_DMG_INDEX:
                    if (plugin.getConfig().getBoolean("sharedmg")) {
                        GUIUtils.setConfig("sharedmg", false);
                        GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("sharedmg", true);
                        GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case LAVA_FLOOR_INDEX:
                    if (plugin.getConfig().getBoolean("lavafloor")) {
                        GUIUtils.setConfig("lavafloor", false);
                        GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("lavafloor", true);
                        GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case CHUNK_RANDOM_EFFEKT_INDEX:
                    if (plugin.getConfig().getBoolean("randomeffect")) {
                        GUIUtils.setConfig("randomeffect", false);
                        GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("randomeffect", true);
                        GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case TIED_TOGETHER_INDEX:
                    if (plugin.getConfig().getBoolean("tiedtogether")) {
                        GUIUtils.setConfig("tiedtogether", false);
                        GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("tiedtogether", true);
                        GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case RANGE_ON_TIED_TOGETHER_ADD_INDEX:
                    GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") + 1);
                    break;
                case RANGE_ON_TIED_TOGETHER_REMOVE_INDEX:
                    if (plugin.getConfig().getDouble("playerrange") > 0) {
                        GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") - 1);
                    }
                    break;
                case ICE_RUNNER_INDEX:
                    if (plugin.getConfig().getBoolean("icerunner")) {
                        GUIUtils.setConfig("icerunner", false);
                        GUIUtils.sendTitleToAll("Challenge", "Ice-Runner deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("icerunner", true);
                        GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case RANDOM_MOB_INDEX:
                    if (plugin.getConfig().getBoolean("randommobs")) {
                        GUIUtils.setConfig("randommobs", false);
                        GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("randommobs", true);
                        GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case BEDROCK_WALL_INDEX:
                    if (plugin.getConfig().getBoolean("bedrockwall")) {
                        GUIUtils.setConfig("bedrockwall", false);
                        GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("bedrockwall", true);
                        GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case WORLD_BORDER_LEVEL_INDEX:
                    if (plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class) == null) {
                        return;
                    }
                    RegisteredServiceProvider<WorldBorderApi> worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class);
                    if (worldBorderAPI == null) {
                        return;
                    }
                    if (plugin.getConfig().getBoolean("worldborderlevel")) {
                        GUIUtils.setConfig("worldborderlevel", false);
                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            worldBorderAPI.getProvider().resetWorldBorderToGlobal(pp);
                        }
                        GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("worldborderlevel", true);
                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            worldBorderAPI.getProvider().setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation());
                        }

                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            pp.teleport(pp.getWorld().getSpawnLocation());
                        }
                        GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN);
                    }
                    break;
                case ALL_ITEMS_INDEX:
                    if (plugin.getConfig().getBoolean("allitems")) {
                        GUIUtils.setConfig("allitems", false);
                        GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED);
                    } else {
                        GUIUtils.setConfig("allitems", true);
                        GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN);
                        AllItemsChallenge.start();
                    }
                    break;
                default:
                    break;
            }
            createSettingsGUI(p);
            switch (slot) {
                case CLOSE_GUI_INDEX -> p.closeInventory();
                case BACK_BUTTON_INDEX -> new MainGui(p).open();
            }
            e.setCancelled(true);
        }
    }
}*/