A special thanks goes to @aerouk for almost all of the changes found here. By: Wesley Wolfe <weswolf@aol.com>
79 lines
2.8 KiB
Java
79 lines
2.8 KiB
Java
package org.bukkit.conversations;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
/**
|
|
* ValidatingPrompt is the base class for any prompt that requires validation.
|
|
* ValidatingPrompt will keep replaying the prompt text until the user enters
|
|
* a valid response.
|
|
*/
|
|
public abstract class ValidatingPrompt implements Prompt {
|
|
public ValidatingPrompt() {
|
|
super();
|
|
}
|
|
|
|
/**
|
|
* Accepts and processes input from the user and validates it. If
|
|
* validation fails, this prompt is returned for re-execution, otherwise
|
|
* the next Prompt in the prompt graph is returned.
|
|
*
|
|
* @param context Context information about the conversation.
|
|
* @param input The input text from the user.
|
|
* @return This prompt or the next Prompt in the prompt graph.
|
|
*/
|
|
public Prompt acceptInput(ConversationContext context, String input) {
|
|
if (isInputValid(context, input)) {
|
|
return acceptValidatedInput(context, input);
|
|
} else {
|
|
String failPrompt = getFailedValidationText(context, input);
|
|
if (failPrompt != null) {
|
|
context.getForWhom().sendRawMessage(ChatColor.RED + failPrompt);
|
|
}
|
|
// Redisplay this prompt to the user to re-collect input
|
|
return this;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Ensures that the prompt waits for the user to provide input.
|
|
*
|
|
* @param context Context information about the conversation.
|
|
* @return True.
|
|
*/
|
|
public boolean blocksForInput(ConversationContext context) {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Override this method to check the validity of the player's input.
|
|
*
|
|
* @param context Context information about the conversation.
|
|
* @param input The player's raw console input.
|
|
* @return True or false depending on the validity of the input.
|
|
*/
|
|
protected abstract boolean isInputValid(ConversationContext context, String input);
|
|
|
|
/**
|
|
* Override this method to accept and processes the validated input from
|
|
* the user. Using the input, the next Prompt in the prompt graph should
|
|
* be returned.
|
|
*
|
|
* @param context Context information about the conversation.
|
|
* @param input The validated input text from the user.
|
|
* @return The next Prompt in the prompt graph.
|
|
*/
|
|
protected abstract Prompt acceptValidatedInput(ConversationContext context, String input);
|
|
|
|
/**
|
|
* Optionally override this method to display an additional message if the
|
|
* user enters an invalid input.
|
|
*
|
|
* @param context Context information about the conversation.
|
|
* @param invalidInput The invalid input provided by the user.
|
|
* @return A message explaining how to correct the input.
|
|
*/
|
|
protected String getFailedValidationText(ConversationContext context, String invalidInput) {
|
|
return null;
|
|
}
|
|
}
|