summaryrefslogtreecommitdiffstats
path: root/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
diff options
context:
space:
mode:
Diffstat (limited to 'EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java')
-rw-r--r--EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java32
1 files changed, 20 insertions, 12 deletions
diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
index 3f0c4c233..6d2613a40 100644
--- a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
+++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
@@ -8,12 +8,12 @@ public abstract class AbstractState
{
private transient boolean abortion = false;
private final transient StateMap stateMap;
-
+
public AbstractState(final StateMap stateMap)
{
this.stateMap = stateMap;
}
-
+
public <T extends AbstractState> T getState(final Class<? extends T> stateClass)
{
if (!stateMap.containsKey(stateClass))
@@ -35,7 +35,7 @@ public abstract class AbstractState
}
return (T)stateMap.get(stateClass);
}
-
+
public abstract AbstractState getNextState();
/**
@@ -60,7 +60,7 @@ public abstract class AbstractState
* @return true, if the answer could be recognized as a valid answer
*/
public abstract boolean reactOnAnswer(String answer);
-
+
public final AbstractState reactOnAnswer(final Player sender, final String answer)
{
final String trimmedAnswer = answer.trim();
@@ -71,16 +71,24 @@ public abstract class AbstractState
abort();
return null;
}
- final boolean found = reactOnAnswer(trimmedAnswer);
- if (found)
+ try
{
- return getNextState();
+ final boolean found = reactOnAnswer(trimmedAnswer);
+ if (found)
+ {
+ return getNextState();
+ }
+ else
+ {
+ sender.sendMessage("Answer not recognized.");
+ return this;
+ }
}
- else
+ catch (RuntimeException ex)
{
- sender.sendMessage("Answer not recognized.");
+ sender.sendMessage(ex.toString());
return this;
- }
+ }
}
/**
@@ -90,12 +98,12 @@ public abstract class AbstractState
{
listener.onWorkDone();
}
-
+
public boolean isAbortion()
{
return abortion;
}
-
+
protected void abort()
{
abortion = true;