package me.km.api;

import me.km.KajetansMod;
import me.km.permissions.Permissions;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;

public class CommandOverloader 
{
    public static void overloadCommands(FMLServerStartingEvent e, Module m)
    {
        KajetansMod.server.commandManager.getCommands().values().stream()
                // Overload only vanilla commands
                .filter(command -> !(command instanceof ModuleCommand))
                // Prevent overloading of already overloaded commands (summon, ...)
                .filter(command -> m.getCommand(command.getName()) == null) 
                .forEach(command -> 
        {
            Permissions perm;
            try
            {
                if(command.getClass().getName().startsWith("com.sk89q."))
                {
                    m.registerCommand(e, new WorldEditCommand(command, m));
                    m.sendToConsole(command.getName() + " wurde überschrieben.");
                    return;
                }
                else
                {
                    perm = Permissions.valueOf(command.getName());
                }
            }
            catch(IllegalArgumentException ex)
            {
                m.sendWarningToConsole("Ungültige Permission für Command-Name: " + command.getName());
                perm = Permissions.VANILLA;
            }
            m.registerCommand(e, new VanillaModuleCommand(command, m, perm));
            m.sendToConsole(command.getName() + " wurde überschrieben.");
        });
        m.sendToConsole("Alle Commands wurden überschrieben.");
    }
}