package net.brennholz.gui;

import me.wolfyscript.utilities.api.inventory.GuiHandler;
import me.wolfyscript.utilities.api.inventory.GuiUpdateEvent;
import me.wolfyscript.utilities.api.inventory.GuiWindow;
import me.wolfyscript.utilities.api.inventory.InventoryAPI;
import me.wolfyscript.utilities.api.inventory.button.ButtonActionRender;
import me.wolfyscript.utilities.api.inventory.button.ButtonState;
import me.wolfyscript.utilities.api.inventory.button.buttons.ActionButton;
import me.wolfyscript.utilities.api.inventory.button.buttons.ToggleButton;
import me.wolfyscript.utilities.api.utils.item_builder.ItemBuilder;
import net.brennholz.challenges.Challenges;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class SettingsGui extends GuiWindow {

    private Challenges challenges = Challenges.getplugin();

    public SettingsGui(InventoryAPI inventoryAPI) {
        super("settings", inventoryAPI, 54);
    }

    @Override
    public void onInit() {
        registerButton(new SettingButton("craftingtable", Material.CRAFTING_TABLE, "Erlaube Crafting"));
        registerButton(new SettingButton("allowtrading", Material.EMERALD, "Erlaube Handeln"));
        registerButton(new SettingButton("deathonfall", Material.BONE, "Tod bei Fallschaden", ChatColor.RED + "Spieler stirbt bei Fallschaden"));
        registerButton(new SettingButton("damageonsneak", Material.MAGMA_BLOCK, "Schaden bei Schleichen",ChatColor.RED + "Spieler erhält " + challenges.getConfig().getInt("sneakdmg") + " Schaden bei Schleichen"));
        registerButton(new SettingButton("rnddrops", Material.DIAMOND_PICKAXE, "Drops", ChatColor.RED + "Random Drops"));
        registerButton(new SettingButton("sharedmg", Material.GLISTERING_MELON_SLICE, "Geteilter Schaden",ChatColor.RED + "Alle Spieler erhalten den gleichen Schaden"));
        registerButton(new SettingButton("respawn", Material.TOTEM_OF_UNDYING, "Respawn"));
        registerButton(new SettingButton("onelife", Material.POPPY, "Ein Leben für alle", ChatColor.RED + "Stirbt ein Spieler ist die",ChatColor.RED + "Challenge fehlgeschlagen"));
        registerButton(new SettingButton("dmginchat", Material.BOOK, "Schaden in Chat", ChatColor.RED + "Zeigt Spielerschaden im Chat an"));
        registerButton(new SettingButton("deathonsprint", Material.DIAMOND_BOOTS, "Tod bei Sprinten", ChatColor.RED + "Spieler Stirbt beim Sprinten"));
        registerButton(new SettingButton("deathonjump", Material.LEATHER_BOOTS, "Tod bei Springen", ChatColor.RED + "Spieler Stirbt beim Springen"));
        registerButton(new SettingButton("clinvdmg", Material.BARRIER, "Inv Löschen bei DMG",ChatColor.RED + "Löscht das Inventar von allen wenn ein Spieler schaden bekommt!"));
        registerButton(new SettingButton("tntdeath", Material.TNT, "Sterben durch TnT",ChatColor.RED + "Tötet dich mit tnt bei der nicht Springen Schleichen und Jumpen Challenge"));

        //TODO Gamerules
    }

    @EventHandler
    public void onUpdate(GuiUpdateEvent event) {
        event.setButton(0, "craftingtable");
        event.setButton(1, "allowtrading");
        event.setButton(2, "deathonfall");
        event.setButton(3, "damageonsneak");
        event.setButton(4, "rnddrops");
        event.setButton(5, "sharedmg");
        event.setButton(6, "respawn");
        event.setButton(7, "onelife");
        event.setButton(8, "dmginchat");
        event.setButton(9, "deathonsprint");
        event.setButton(10, "deathonjump");
        event.setButton(11, "clinvdmg");
        event.setButton(12, "tntdeath");
    }

    @Override
    protected String getInventoryName() {
        return ChatColor.GREEN+"Settings";
    }

    @Override
    public List<String> getHelpInformation() {
        return new ArrayList<>();
    }
}
