001 package org.bukkit.command; 002 003 import java.util.List; 004 005 public interface CommandMap { 006 007 /** 008 * Registers all the commands belonging to a certain plugin. 009 * <p> 010 * Caller can use:- 011 * <ul> 012 * <li>command.getName() to determine the label registered for this 013 * command 014 * <li>command.getAliases() to determine the aliases which where 015 * registered 016 * </ul> 017 * 018 * @param fallbackPrefix a prefix which is prepended to each command with 019 * a ':' one or more times to make the command unique 020 * @param commands a list of commands to register 021 */ 022 public void registerAll(String fallbackPrefix, List<Command> commands); 023 024 /** 025 * Registers a command. Returns true on success; false if name is already 026 * taken and fallback had to be used. 027 * <p> 028 * Caller can use:- 029 * <ul> 030 * <li>command.getName() to determine the label registered for this 031 * command 032 * <li>command.getAliases() to determine the aliases which where 033 * registered 034 * </ul> 035 * 036 * @param label the label of the command, without the '/'-prefix. 037 * @param fallbackPrefix a prefix which is prepended to the command with a 038 * ':' one or more times to make the command unique 039 * @param command the command to register 040 * @return true if command was registered with the passed in label, false 041 * otherwise, which indicates the fallbackPrefix was used one or more 042 * times 043 */ 044 public boolean register(String label, String fallbackPrefix, Command command); 045 046 /** 047 * Registers a command. Returns true on success; false if name is already 048 * taken and fallback had to be used. 049 * <p> 050 * Caller can use:- 051 * <ul> 052 * <li>command.getName() to determine the label registered for this 053 * command 054 * <li>command.getAliases() to determine the aliases which where 055 * registered 056 * </ul> 057 * 058 * @param fallbackPrefix a prefix which is prepended to the command with a 059 * ':' one or more times to make the command unique 060 * @param command the command to register, from which label is determined 061 * from the command name 062 * @return true if command was registered with the passed in label, false 063 * otherwise, which indicates the fallbackPrefix was used one or more 064 * times 065 */ 066 public boolean register(String fallbackPrefix, Command command); 067 068 /** 069 * Looks for the requested command and executes it if found. 070 * 071 * @param sender The command's sender 072 * @param cmdLine command + arguments. Example: "/test abc 123" 073 * @return returns false if no target is found, true otherwise. 074 * @throws CommandException Thrown when the executor for the given command 075 * fails with an unhandled exception 076 */ 077 public boolean dispatch(CommandSender sender, String cmdLine) throws CommandException; 078 079 /** 080 * Clears all registered commands. 081 */ 082 public void clearCommands(); 083 084 /** 085 * Gets the command registered to the specified name 086 * 087 * @param name Name of the command to retrieve 088 * @return Command with the specified name or null if a command with that 089 * label doesn't exist 090 */ 091 public Command getCommand(String name); 092 093 094 /** 095 * Looks for the requested command and executes an appropriate 096 * tab-completer if found. This method will also tab-complete partial 097 * commands. 098 * 099 * @param sender The command's sender. 100 * @param cmdLine The entire command string to tab-complete, excluding 101 * initial slash. 102 * @return a list of possible tab-completions. This list may be immutable. 103 * Will be null if no matching command of which sender has permission. 104 * @throws CommandException Thrown when the tab-completer for the given 105 * command fails with an unhandled exception 106 * @throws IllegalArgumentException if either sender or cmdLine are null 107 */ 108 public List<String> tabComplete(CommandSender sender, String cmdLine) throws IllegalArgumentException; 109 }