Package org.bukkit.conversations

# Class ConversationFactory

java.lang.Object
org.bukkit.conversations.ConversationFactory

public class ConversationFactory extends Object
A ConversationFactory is responsible for creating a `Conversation` from a predefined template. A ConversationFactory is typically created when a plugin is instantiated and builds a Conversation each time a user initiates a conversation with the plugin. Each Conversation maintains its own state and calls back as needed into the plugin.

The ConversationFactory implements a fluid API, allowing parameters to be set as an extension to the constructor.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected List<ConversationAbandonedListener>`
`abandonedListeners`
`protected List<ConversationCanceller>`
`cancellers`
`protected Prompt`
`firstPrompt`
`protected Map<Object,Object>`
`initialSessionData`
`protected boolean`
`isModal`
`protected boolean`
`localEchoEnabled`
`protected String`
`playerOnlyMessage`
`protected Plugin`
`plugin`
`protected ConversationPrefix`
`prefix`

## Constructor Summary

Constructors
Constructor
Description
`ConversationFactory(@NotNull Plugin plugin)`
Constructs a ConversationFactory.

## Method Summary

Modifier and Type
Method
Description
`@NotNull ConversationFactory`
`addConversationAbandonedListener(@NotNull ConversationAbandonedListener listener)`
Adds a `ConversationAbandonedListener` to all conversations constructed by this factory.
`@NotNull Conversation`
`buildConversation(@NotNull Conversable forWhom)`
Constructs a `Conversation` in accordance with the defaults set for this factory.
`@NotNull ConversationFactory`
`thatExcludesNonPlayersWithMessage(@Nullable String playerOnlyMessage)`
Prevents this factory from creating a conversation for non-player `Conversable` objects.
`@NotNull ConversationFactory`
`withConversationCanceller(@NotNull ConversationCanceller canceller)`
Adds a `ConversationCanceller` to constructed conversations.
`@NotNull ConversationFactory`
`withEscapeSequence(@NotNull String escapeSequence)`
Sets the player input that, when received, will immediately terminate the conversation.
`@NotNull ConversationFactory`
`withFirstPrompt(@Nullable Prompt firstPrompt)`
Sets the first prompt to use in all generated conversations.
`@NotNull ConversationFactory`
`withInitialSessionData(@NotNull Map<Object,Object> initialSessionData)`
Sets any initial data with which to populate the conversation context sessionData map.
`@NotNull ConversationFactory`
`withLocalEcho(boolean localEchoEnabled)`
Sets the local echo status for all `Conversation`s created by this factory.
`@NotNull ConversationFactory`
`withModality(boolean modal)`
Sets the modality of all `Conversation`s created by this factory.
`@NotNull ConversationFactory`
`withPrefix(@NotNull ConversationPrefix prefix)`
Sets the `ConversationPrefix` that prepends all output from all generated conversations.
`@NotNull ConversationFactory`
`withTimeout(int timeoutSeconds)`
Sets the number of inactive seconds to wait before automatically abandoning all generated conversations.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### plugin

protected Plugin plugin

### isModal

protected boolean isModal

### localEchoEnabled

protected boolean localEchoEnabled

### prefix

protected ConversationPrefix prefix

### firstPrompt

protected Prompt firstPrompt

### initialSessionData

protected Map<Object,Object> initialSessionData

### playerOnlyMessage

protected String playerOnlyMessage

### cancellers

protected List<ConversationCanceller> cancellers

### abandonedListeners

protected List<ConversationAbandonedListener> abandonedListeners

## Constructor Details

### ConversationFactory

public ConversationFactory(@NotNull @NotNull Plugin plugin)
Constructs a ConversationFactory.

Parameters:
  `plugin` - The plugin that owns the factory.

## Method Details

### withModality

@NotNull public @NotNull ConversationFactory withModality(boolean modal)
Sets the modality of all `Conversation`s created by this factory. If a conversation is modal, all messages directed to the player are suppressed for the duration of the conversation.

The default is True.

Parameters:
  `modal` - The modality of all conversations to be created.
Returns:
  This object.

### withLocalEcho

@NotNull public @NotNull ConversationFactory withLocalEcho(boolean localEchoEnabled)
Sets the local echo status for all `Conversation`s created by this factory. 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.
Returns:
  This object.

### withPrefix

@NotNull public @NotNull ConversationFactory withPrefix(@NotNull @NotNull ConversationPrefix prefix)
Sets the `ConversationPrefix` that prepends all output from all generated conversations.

The default is a `NullConversationPrefix`;

Parameters:
  `prefix` - The ConversationPrefix to use.
Returns:
  This object.

### withTimeout

@NotNull public @NotNull ConversationFactory withTimeout(int timeoutSeconds)
Sets the number of inactive seconds to wait before automatically abandoning all generated conversations.

The default is 600 seconds (5 minutes).

Parameters:
  `timeoutSeconds` - The number of seconds to wait.
Returns:
  This object.

### withFirstPrompt

@NotNull public @NotNull ConversationFactory withFirstPrompt(@Nullable @Nullable Prompt firstPrompt)
Sets the first prompt to use in all generated conversations.

The default is Prompt.END_OF_CONVERSATION.

Parameters:
  `firstPrompt` - The first prompt.
Returns:
  This object.

### withInitialSessionData

@NotNull public @NotNull ConversationFactory withInitialSessionData(@NotNull @NotNull Map<Object,Object> initialSessionData)
Sets any initial data with which to populate the conversation context sessionData map.

Parameters:
  `initialSessionData` - The conversation context's initial sessionData.
Returns:
  This object.

### withEscapeSequence

@NotNull public @NotNull ConversationFactory withEscapeSequence(@NotNull @NotNull String escapeSequence)
Sets the player input that, when received, will immediately terminate the conversation.

Parameters:
  `escapeSequence` - Input to terminate the conversation.
Returns:
  This object.

### withConversationCanceller

@NotNull public @NotNull ConversationFactory withConversationCanceller(@NotNull @NotNull ConversationCanceller canceller)
Adds a `ConversationCanceller` to constructed conversations.

Parameters:
  `canceller` - The `ConversationCanceller` to add.
Returns:
  This object.

### thatExcludesNonPlayersWithMessage

@NotNull public @NotNull ConversationFactory thatExcludesNonPlayersWithMessage(@Nullable @Nullable String playerOnlyMessage)
Prevents this factory from creating a conversation for non-player `Conversable` objects.

Parameters:
  `playerOnlyMessage` - The message to return to a non-play in lieu of starting a conversation.
Returns:
  This object.

### addConversationAbandonedListener

@NotNull public @NotNull ConversationFactory addConversationAbandonedListener(@NotNull @NotNull ConversationAbandonedListener listener)
Adds a `ConversationAbandonedListener` to all conversations constructed by this factory.

Parameters:
  `listener` - The listener to add.
Returns:
  This object.

### buildConversation

@NotNull public @NotNull Conversation buildConversation(@NotNull @NotNull Conversable forWhom)
Constructs a `Conversation` in accordance with the defaults set for this factory.

Parameters:
  `forWhom` - The entity for whom the new conversation is mediating.
Returns:
  A new conversation.