public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		
		if (!(sender instanceof Player)) {
			MessageManager.getInstance().severe(sender, "Only players can use Battlecraft commands!");
			return true;
		}
		
		Player pl = (Player) sender;
		
		if (cmd.getName().equalsIgnoreCase("battlecraft")) {
			if (args.length == 0) {
				for (SubCommand c : commands) {
					MessageManager.getInstance().info(pl, "/battlecraft " + c.name() + "(" + aliases(c) + ")" + " - " + c.info());
				}
				return true;
			}
			
			SubCommand target = get(args[0]);
			
			if (target == null) {
				MessageManager.getInstance().severe(pl, "/battlecraft " + args[0] + " is not a valid subcommand!");
				return true;
			}
			
			ArrayList<String> a = new ArrayList<String>();
			a.addAll(Arrays.asList(args));
			a.remove(0);
			args = a.toArray(new String[a.size()]);
			
			try {
				target.onCommand(pl, args);
			}
			
			catch (Exception e) {
				MessageManager.getInstance().severe(pl, "An error has occured: " + e.getCause());
				e.printStackTrace();
			}
		}
		return true;
	}