package me.km.snuviscript;

import me.hammerle.snuviscript.code.ScriptManager;
import me.km.databank.DataBank;
import me.km.events.CustomEventCaller;
import me.km.permissions.ModCommandManager;
import me.km.permissions.Permissions;
import me.km.playerbank.IPlayerBank;
import me.km.plots.WorldPlotMap;
import me.km.scheduler.SnuviScheduler;
import net.minecraft.server.MinecraftServer;
import me.km.snuviscript.commands.*;

public class MinecraftFunctions {
    public static void registerFunctions(ScriptManager sm, Scripts scripts, Permissions perms, SnuviScheduler scheduler, 
            MinecraftServer server, IPlayerBank playerBank, CustomEventCaller cec, IScriptBank scriptBank, 
            DataBank dataBank, WorldPlotMap plots, ModCommandManager commands) {
        CommandCommands.registerFunctions(sm, scripts, perms, server, commands);        
        PermissionCommands.registerFunctions(sm, perms);
        TableCommands.registerFunctions(sm);
        TitleCommands.registerFunctions(sm);
        PlayerCommands.registerFunctions(sm, scripts, perms, scheduler, server, playerBank);
        WorldCommands.registerFunctions(sm, server);
        ItemCommands.registerFunctions(sm);
        LocationCommands.registerFunctions(sm);
        BlockCommands.registerFunctions(sm);
        EventCommands.registerFunctions(sm, cec);
        DamageCommands.registerFunctions(sm);
        EntityCommands.registerFunctions(sm, scheduler);
        LivingCommands.registerFunctions(sm);
        HumanCommands.registerFunctions(sm);
        DeprecatedCommands.registerFunctions(sm, scripts, perms, scheduler, server, playerBank, cec, scriptBank, dataBank, plots, commands);
        DatabankCommands.registerFunctions(sm, scheduler, dataBank);      
        PlotCommands.registerFunctions(sm, plots);
        ScriptCommands.registerFunctions(sm, scripts, server);
        ScoreboardCommands.registerFunctions(sm, scripts, perms, server);
        DisplayCommands.registerFunctions(sm, scripts, perms, server);
        StatusCommands.registerFunctions(sm, scripts, perms, server);
        ItemStackDisplayCommands.registerFunctions(sm, scripts, perms, server);
        HeadCommands.registerFunctions(sm, scripts, perms, server);     
        ParticleCommands.registerFunctions(sm);
        SoundCommands.registerFunctions(sm);
        InventoryCommands.registerFunctions(sm);
        DataCommands.registerFunctions(sm, scheduler);
        ReadCommands.registerFunctions(sm, server);
        TextCommands.registerFunctions(sm);       
        BanCommands.registerFunctions(sm, server);
        ShopCommands.registerFunctions(sm);
        ErrorCommands.registerFunctions(sm);
        EnchantmentCommands.registerFunctions(sm);
        ItemEntityCommands.registerFunctions(sm);
        LimitCommands.registerFunctions(sm, scripts);
        Commands.registerFunctions(sm, scripts, perms, scheduler, server, commands);
    }
}
