/**
* Contains methods common to all types of chat commands.
*
* @author lightweight
*
*/
public abstract class BaseCommand {
public final String tooltip;
public final String errorMessage;
public final int minParam;
public final int maxParam;
public BaseCommand(String tooltip) {
this(tooltip, "Undefined", 0);
}
public BaseCommand(String tooltip, String errorMessage, int minParam) {
this(tooltip, errorMessage, minParam, 0);
}
public BaseCommand(String tooltip, String errorMessage, int minParam, int maxParam) {
this.tooltip = tooltip;
this.errorMessage = errorMessage;
this.minParam = minParam;
this.maxParam = maxParam;
}
public boolean parseCommand(MessageReceiver caller, String[] parameters) {
if (parameters.length < minParam || (parameters.length > maxParam && maxParam != 0)) {
onBadSyntax(caller, parameters);
return false;
}
execute(caller, parameters);
return true;
}
public void onBadSyntax(MessageReceiver caller, String[] parameters) {
if (errorMessage != "")
caller.notify(errorMessage);
}
/**
* Executes a command. Note: should not be called directly. Use
* parseCommand() instead!
*
* @param player
* @param parameters
*/
abstract void execute(MessageReceiver caller, String[] parameters);
}