Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / guis / settingsgui / OtherSettingsGui.java
@fanta fanta on 2 Jun 2024 10 KB component version checks.....
package de.fanta.challenges.guis.settingsgui;

import de.fanta.challenges.Challenges;
import de.fanta.challenges.guis.challengesettingsguis.BackPackSettingsGui;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.Config;
import de.fanta.challenges.utils.ItemUtils;
import de.iani.cubesideutils.bukkit.MinecraftVersion;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;

public class OtherSettingsGui extends AbstractWindow {

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

    public static final int INVENTORY_SIZE = 45;

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

    private static final int VILLAGER_TRADE_LIMITS_INDEX = 19;
    private static final int DAMAGE_IN_CHAT_INDEX = 20;
    private static final int TELEPORT_COMMAND_INDEX = 21;
    private static final int HP_ON_TAB_INDEX = 22;
    private static final int SMELT_ORES_ON_BREAK_INDEX = 23;
    private static final int FAST_FURNACE_INDEX = 24; //TODO: SPEED SETTING
    private static final int BACKPACK_INDEX = 25;

    private static final int GRAVESTONE_INDEX = 28;

    public OtherSettingsGui(Player player) {
        super(player, Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGuiPrefix().append(Component.text(" >> Other Settings"))));
    }

    @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 VILLAGER_TRADE_LIMITS_INDEX -> {
                if (Config.getBoolean("disablevillagertradelimits")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Villager Trade Limits aktiviert", ChatUtil.RED));
                    Config.setValue("disablevillagertradelimits", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Villager Trade Limits deaktiviert (Default)", ChatUtil.GREEN));
                    Config.setValue("disablevillagertradelimits", true);
                }
            }
            case DAMAGE_IN_CHAT_INDEX -> {
                if (Config.getBoolean("dmginchat")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Schaden im Chat anzeigen deaktiviert", ChatUtil.RED));
                    Config.setValue("dmginchat", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Schaden im Chat anzeigen aktiviert", ChatUtil.GREEN));
                    Config.setValue("dmginchat", true);
                }
            }
            case TELEPORT_COMMAND_INDEX -> {
                if (Config.getBoolean("teleportcommand")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Teleport Command deaktiviert", ChatUtil.RED));
                    Config.setValue("teleportcommand", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Teleport Command aktiviert", ChatUtil.GREEN));
                    Config.setValue("teleportcommand", true);
                }
            }
            case HP_ON_TAB_INDEX -> {
                if (Config.getBoolean("tabhp")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Herzen in der Tablist anzeigen deaktiviert", ChatUtil.RED));
                    Config.setValue("tabhp", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Herzen in der Tablist anzeigen aktiviert", ChatUtil.GREEN));
                    Config.setValue("tabhp", true);
                }
                plugin.getSBManager().updateTabHP();
            }
            case SMELT_ORES_ON_BREAK_INDEX -> {
                if (Config.getBoolean("silkore")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Abgebaute Erze droppen Barren deaktiviert", ChatUtil.RED));
                    Config.setValue("silkore", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Abgebaute Erze droppen Barren aktiviert", ChatUtil.GREEN));
                    Config.setValue("silkore", true);
                }
            }
            case FAST_FURNACE_INDEX -> {
                if (Config.getBoolean("speedfurnace")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Schneller Ofen deaktiviert", ChatUtil.RED));
                    Config.setValue("speedfurnace", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Schneller Ofen aktiviert", ChatUtil.GREEN));
                    Config.setValue("speedfurnace", true);
                }
            }
            case BACKPACK_INDEX -> {
                if (event.isRightClick()) {
                    new BackPackSettingsGui(player).open();
                }
            }

            case GRAVESTONE_INDEX -> {
                if (Config.getBoolean("gravestone")) {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Grabsteine deaktiviert", ChatUtil.RED));
                    Config.setValue("gravestone", false);
                } else {
                    ChatUtil.sendTitleToAll(Component.text("Einstellungen"), Component.text("Grabsteine aktiviert", ChatUtil.GREEN));
                    Config.setValue("gravestone", true);
                }
            }
            default -> {
            }
        }
        rebuildInventory();

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

    @Override
    protected void rebuildInventory() {
        for (int i = 0; i < INVENTORY_SIZE; i++) {
            ItemStack item;
            switch (i) {
                case BACK_INDEX ->
                        item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(Component.text("Zurück", ChatUtil.RED));
                case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(Component.text("Menü verlassen", ChatUtil.RED));

                case VILLAGER_TRADE_LIMITS_INDEX -> {
                    if (Config.getBoolean("disablevillagertradelimits")) {
                        item = ItemUtils.createGuiItem(Material.EMERALD, Component.text("Villager Trade Limits aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.EMERALD, Component.text("Villager Trade Limits deaktiviert (Default)", ChatUtil.RED));
                    }
                }
                case DAMAGE_IN_CHAT_INDEX -> {
                    if (Config.getBoolean("dmginchat")) {
                        item = ItemUtils.createGuiItem(Material.PAPER, Component.text("Schaden im Chat anzeigen aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.PAPER, Component.text("Schaden im Chat anzeigen deaktiviert", ChatUtil.RED));
                    }
                }
                case TELEPORT_COMMAND_INDEX -> {
                    if (Config.getBoolean("teleportcommand")) {
                        item = ItemUtils.createGuiItem(Material.ENDER_PEARL, Component.text("Teleport Command aktiviert", ChatUtil.GREEN), true, Component.text("Deaktiviert den \"/challenges tp\" command", ChatUtil.GREEN));
                    } else {
                        item = ItemUtils.createGuiItem(Material.ENDER_PEARL, Component.text("Teleport Command deaktiviert", ChatUtil.RED), Component.text("Aktiviert den \"/challenges tp\" command", ChatUtil.RED));
                    }
                }
                case HP_ON_TAB_INDEX -> {
                    if (Config.getBoolean("tabhp")) {
                        item = ItemUtils.createGuiItem(Material.HEART_OF_THE_SEA, Component.text("Herzen in der Tablist anzeigen aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.HEART_OF_THE_SEA, Component.text("Herzen in der Tablist anzeigen deaktiviert", ChatUtil.RED));
                    }
                }
                case SMELT_ORES_ON_BREAK_INDEX -> {
                    if (Config.getBoolean("silkore")) {
                        item = ItemUtils.createGuiItem(Material.IRON_INGOT, Component.text("Abgebaute Erze droppen Barren aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.IRON_INGOT, Component.text("Abgebaute Erze droppen Barren deaktiviert", ChatUtil.RED));
                    }
                }
                case FAST_FURNACE_INDEX -> {
                    if (Config.getBoolean("speedfurnace")) {
                        item = ItemUtils.createGuiItem(Material.FURNACE, Component.text("Schneller Ofen aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.FURNACE, Component.text("Schneller Ofen deaktiviert", ChatUtil.RED));
                    }
                }
                case BACKPACK_INDEX -> {
                    if (MinecraftVersion.isAboveOrEqual(1, 16, 5)) {
                        item = ItemUtils.createGuiItem(Material.BUNDLE, Component.text("Rucksack Größe: " + plugin.getBackpack().getSize() / 9 + "/6", ChatUtil.GREEN), Component.text("Rechtsklick = Einstellungen", ChatUtil.GREEN));
                    } else {
                        item = ItemUtils.createGuiItem(Material.CHEST, Component.text("Rucksack Größe: " + plugin.getBackpack().getSize() / 9 + "/6", ChatUtil.GREEN), Component.text("Rechtsklick = Einstellungen", ChatUtil.GREEN));
                    }

                }

                case GRAVESTONE_INDEX -> {
                    if (Config.getBoolean("gravestone")) {
                        item = ItemUtils.createGuiItem(Material.HOPPER, Component.text("Grabstein aktiviert", ChatUtil.GREEN), true);
                    } else {
                        item = ItemUtils.createGuiItem(Material.HOPPER, Component.text("Grabstein deaktiviert", ChatUtil.RED));
                    }
                }
                default -> item = ItemUtils.EMPTY_ICON;
            }
            this.getInventory().setItem(i, item);
        }
    }
}