package me.arasple.mc.trmenu.commands;

import io.izzel.taboolib.loader.Plugin;
import io.izzel.taboolib.module.command.base.BaseSubCommand;
import io.izzel.taboolib.module.command.base.CommandType;
import io.izzel.taboolib.util.Files;
import me.arasple.mc.trmenu.TrMenu;
import me.arasple.mc.trmenu.api.TrMenuAPI;
import me.arasple.mc.trmenu.bstats.MetricsHandler;
import me.arasple.mc.trmenu.utils.Skulls;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;

import java.io.InputStreamReader;

/**
 * @author Arasple
 * @date 2020/1/12 21:46
 */
public class CommandDebug extends BaseSubCommand {

    @Override
    public void onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) {
            Player player = (Player) sender;
            if (player.hasMetadata("TrMenu-Debug")) {
                player.removeMetadata("TrMenu-Debug", TrMenu.getPlugin());
                sender.sendMessage("§7Canceled...");
            } else {
                player.setMetadata("TrMenu-Debug", new FixedMetadataValue(TrMenu.getPlugin(), ""));
                sender.sendMessage("§aEnabled...");
            }
            return;
        }

        sender.sendMessage("§3--------------------------------------------------");
        sender.sendMessage("");
        sender.sendMessage("§2Total Menus: §6" + TrMenuAPI.getMenus().size());
        sender.sendMessage("§2Cached Skulls: §6" + Skulls.getSkulls().size());
        sender.sendMessage("§2Running Tasks: §6" + Bukkit.getScheduler().getActiveWorkers().stream().filter(t -> t.getOwner() == TrMenu.getPlugin()).count() + Bukkit.getScheduler().getPendingTasks().stream().filter(t -> t.getOwner() == TrMenu.getPlugin()).count());
        sender.sendMessage("§2Metrics: §6" + MetricsHandler.getMetrics().isEnabled());
        sender.sendMessage("§2TabooLib: §f" + Plugin.getVersion());
        sender.sendMessage("");
        sender.sendMessage("§2TrMenu Built-Time: §b" + YamlConfiguration.loadConfiguration(new InputStreamReader(Files.getResource(TrMenu.getPlugin(), "plugin.yml"))).getString("built-time", "Null"));
        sender.sendMessage("");
        sender.sendMessage("§3--------------------------------------------------");
    }

    @Override
    public CommandType getType() {
        return CommandType.ALL;
    }

}