org.bukkit.conversations
Class Conversation

java.lang.Object
  extended by org.bukkit.conversations.Conversation

public class Conversation
extends Object

The Conversation class is responsible for tracking the current state of a conversation, displaying prompts to the user, and dispatching the user's response to the appropriate place. Conversation objects are not typically instantiated directly. Instead a ConversationFactory is used to construct identical conversations on demand.

Conversation flow consists of a directed graph of Prompt objects. Each time a prompt gets input from the user, it must return the next prompt in the graph. Since each Prompt chooses the next Prompt, complex conversation trees can be implemented where the nature of the player's response directs the flow of the conversation.

Each conversation has a ConversationPrefix that prepends all output from the conversation to the player. The ConversationPrefix can be used to display the plugin name or conversation status as the conversation evolves.

Each conversation has a timeout measured in the number of inactive seconds to wait before abandoning the conversation. If the inactivity timeout is reached, the conversation is abandoned and the user's incoming and outgoing chat is returned to normal.

You should not construct a conversation manually. Instead, use the ConversationFactory for access to all available options.


Nested Class Summary
static class Conversation.ConversationState
           
 
Field Summary
protected  List<ConversationAbandonedListener> abandonedListeners
           
protected  List<ConversationCanceller> cancellers
           
protected  ConversationContext context
           
protected  Prompt currentPrompt
           
protected  boolean localEchoEnabled
           
protected  boolean modal
           
protected  ConversationPrefix prefix
           
 
Constructor Summary
Conversation(Plugin plugin, Conversable forWhom, Prompt firstPrompt)
          Initializes a new Conversation.
Conversation(Plugin plugin, Conversable forWhom, Prompt firstPrompt, Map<Object,Object> initialSessionData)
          Initializes a new Conversation.
 
Method Summary
 void abandon()
          Abandons and resets the current conversation.
 void abandon(ConversationAbandonedEvent details)
          Abandons and resets the current conversation.
 void acceptInput(String input)
          Passes player input into the current prompt.
 void addConversationAbandonedListener(ConversationAbandonedListener listener)
          Adds a ConversationAbandonedListener.
 void begin()
          Displays the first prompt of this conversation and begins redirecting the user's chat responses.
 List<ConversationCanceller> getCancellers()
          Gets the list of ConversationCancellers
 ConversationContext getContext()
          Returns the Conversation's ConversationContext.
 Conversable getForWhom()
          Gets the entity for whom this conversation is mediating.
 ConversationPrefix getPrefix()
          Gets the ConversationPrefix that prepends all output from this conversation.
 Conversation.ConversationState getState()
          Returns Returns the current state of the conversation.
 boolean isLocalEchoEnabled()
          Gets the status of local echo for this conversation.
 boolean isModal()
          Gets the modality of this conversation.
 void outputNextPrompt()
          Displays the next user prompt and abandons the conversation if the next prompt is null.
 void removeConversationAbandonedListener(ConversationAbandonedListener listener)
          Removes a ConversationAbandonedListener.
 void setLocalEchoEnabled(boolean localEchoEnabled)
          Sets the status of local echo for this conversation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

currentPrompt

protected Prompt currentPrompt

context

protected ConversationContext context

modal

protected boolean modal

localEchoEnabled

protected boolean localEchoEnabled

prefix

protected ConversationPrefix prefix

cancellers

protected List<ConversationCanceller> cancellers

abandonedListeners

protected List<ConversationAbandonedListener> abandonedListeners
Constructor Detail

Conversation

public Conversation(Plugin plugin,
                    Conversable forWhom,
                    Prompt firstPrompt)
Initializes a new Conversation.

Parameters:
plugin - The plugin that owns this conversation.
forWhom - The entity for whom this conversation is mediating.
firstPrompt - The first prompt in the conversation graph.

Conversation

public Conversation(Plugin plugin,
                    Conversable forWhom,
                    Prompt firstPrompt,
                    Map<Object,Object> initialSessionData)
Initializes a new Conversation.

Parameters:
plugin - The plugin that owns this conversation.
forWhom - The entity for whom this conversation is mediating.
firstPrompt - The first prompt in the conversation graph.
initialSessionData - Any initial values to put in the conversation context sessionData map.
Method Detail

getForWhom

public Conversable getForWhom()
Gets the entity for whom this conversation is mediating.

Returns:
The entity.

isModal

public boolean isModal()
Gets the modality of this conversation. If a conversation is modal, all messages directed to the player are suppressed for the duration of the conversation.

Returns:
The conversation modality.

isLocalEchoEnabled

public boolean isLocalEchoEnabled()
Gets the status of local echo for this conversation. If local echo is enabled, any text submitted to a conversation gets echoed back into the submitter's chat window.

Returns:
The status of local echo.

setLocalEchoEnabled

public void setLocalEchoEnabled(boolean localEchoEnabled)
Sets the status of local echo for this conversation. If local echo is enabled, any text submitted to a conversation gets echoed back into the submitter's chat window.

Parameters:
localEchoEnabled - The status of local echo.

getPrefix

public ConversationPrefix getPrefix()
Gets the ConversationPrefix that prepends all output from this conversation.

Returns:
The ConversationPrefix in use.

getCancellers

public List<ConversationCanceller> getCancellers()
Gets the list of ConversationCancellers

Returns:
The list.

getContext

public ConversationContext getContext()
Returns the Conversation's ConversationContext.

Returns:
The ConversationContext.

begin

public void begin()
Displays the first prompt of this conversation and begins redirecting the user's chat responses.


getState

public Conversation.ConversationState getState()
Returns Returns the current state of the conversation.

Returns:
The current state of the conversation.

acceptInput

public void acceptInput(String input)
Passes player input into the current prompt. The next prompt (as determined by the current prompt) is then displayed to the user.

Parameters:
input - The user's chat text.

addConversationAbandonedListener

public void addConversationAbandonedListener(ConversationAbandonedListener listener)
Adds a ConversationAbandonedListener.

Parameters:
listener - The listener to add.

removeConversationAbandonedListener

public void removeConversationAbandonedListener(ConversationAbandonedListener listener)
Removes a ConversationAbandonedListener.

Parameters:
listener - The listener to remove.

abandon

public void abandon()
Abandons and resets the current conversation. Restores the user's normal chat behavior.


abandon

public void abandon(ConversationAbandonedEvent details)
Abandons and resets the current conversation. Restores the user's normal chat behavior.

Parameters:
details - Details about why the conversation was abandoned

outputNextPrompt

public void outputNextPrompt()
Displays the next user prompt and abandons the conversation if the next prompt is null.



Copyright © 2014. All rights reserved.