package net.bitjump.bukkit.bitlib.commands;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class CommandManager implements CommandExecutor
{
private JavaPlugin plugin;
private String commandPrefix;
private List<Subcommand> commands = new ArrayList<Subcommand>();
private static List<CommandManager> managers = new ArrayList<CommandManager>();
public CommandManager(JavaPlugin plugin)
{
this.plugin = plugin;
addCommandManager(this);
}
public void registerCommand(Subcommand command)
{
commands.add(command);
}
public void setCommandPrefix(String commandPrefix)
{
this.commandPrefix = commandPrefix;
plugin.getCommand(commandPrefix).setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
List<String> argsList = new ArrayList<String>();
if (args.length > 0)
{
String commandName = args[0].toLowerCase();
for (int i = 1; i < args.length; i++)
{
argsList.add(args[i]);
}
for (Subcommand command : commands)
{
if (command.getName().equals(commandName) || command.getAliases().contains(commandName))
{
command.execute(sender, argsList.toArray(new String[argsList.size()]));
return true;
}
}
}
else
{
Bukkit.dispatchCommand(sender, commandPrefix + " help");
}
return true;
}
public String getCommandPrefix()
{
return commandPrefix;
}
public List<Subcommand> getCommands()
{
return commands;
}
public static CommandManager getCommandManager(String prefix)
{
for(CommandManager m : managers)
{
if(m.commandPrefix.equals(prefix))
{
return m;
}
}
return null;
}
public static void addCommandManager(CommandManager m)
{
managers.add(m);
}
public static void removeCommandManager(CommandManager m)
{
managers.remove(m);
}
}