/* * Internal method to execute tab auto-completion. */ @Override public List<String> onTabComplete( CommandSender sender, Command command, String label, String[] originalArgs) { if (originalArgs.length == 1) { // Searching for a subcommand List<String> matches = new ArrayList<String>(); for (BaseCommand baseCommand : plugin.getCommands().getRegistrations()) { if (StringUtil.startsWithIgnoreCase(baseCommand.getName(), originalArgs[0]) && baseCommand.hasPermission(sender)) { matches.add(baseCommand.getName()); } } return matches; } else if (originalArgs.length > 1) { // Searching in a subcommand BaseCommand baseCommand = plugin.getCommands().getRegistration(originalArgs[0]); if (baseCommand != null && baseCommand.hasPermission(sender)) { String[] args = new String[originalArgs.length - 1]; System.arraycopy(originalArgs, 1, args, 0, originalArgs.length - 1); return baseCommand.autoComplete(sender, args); } } return Collections.emptyList(); }
public BetterEnderCommandManager(BetterEnderChest plugin) { this.plugin = plugin; Registry<BaseCommand> commands = plugin.getCommands(); commands.register(new DeleteInvCommand(plugin)); commands.register(new GiveCommand(plugin)); commands.register(new ListCommand(plugin)); commands.register(new OpenInvCommand(plugin)); commands.register(new ReloadCommand(plugin)); commands.register(new SwapInvCommand(plugin)); commands.register(new ViewInvCommand(plugin)); }
/* * Internal method to execute the command. */ @Override public boolean onCommand( CommandSender sender, Command bukkitCommand, String label, String[] originalArgs) { // Handle the /betterenderchest command if (originalArgs.length == 0) { showHelp(sender, label); return true; } String name = originalArgs[0]; // Copy to new array, move all arguments one postion // So ["give","Notch","GOLDEN_APPLE","64"] gets // ["Notch","GOLDEN_APPLE","64"] String[] args = new String[originalArgs.length - 1]; for (int i = 1; i < originalArgs.length; i++) { args[i - 1] = originalArgs[i]; } BaseCommand command = plugin.getCommands().getRegistration(originalArgs[0]); if (command == null) { sender.sendMessage(ChatColor.RED + "Command " + name + " not found... Available commands:"); showHelp(sender, label); return true; } if (!command.hasPermission(sender)) { sender.sendMessage("" + ChatColor.RED + Translations.NO_PERMISSION); return true; } if (!command.execute(sender, args)) { sender.sendMessage(ChatColor.RED + "Wrong command usage! Correct usage:"); sender.sendMessage(ChatColor.RED + "/" + label + " " + name + " " + command.getUsage()); return true; } return true; }
/* * Internal method to show a list of commands along with their usage. */ private void showHelp(CommandSender sender, String label) { Collection<BaseCommand> commands = plugin.getCommands().getRegistrations(); int commandCount = 0; // Counts available commands for (BaseCommand command : commands) { if (command.hasPermission(sender)) { if (!command.getUsage().equals("")) { // Only display usage message if it has one sender.sendMessage( ChatColor.GOLD + "/" + label + " " + command.getName() + " " + command.getUsage() + ": " + ChatColor.WHITE + command.getHelpText()); } else { sender.sendMessage( ChatColor.GOLD + "/" + label + " " + command.getName() + ": " + ChatColor.WHITE + command.getHelpText()); } commandCount++; } } if (commandCount == 0) { sender.sendMessage(ChatColor.GOLD + "Sorry, no available commands for your rank."); } }