The work process is done async to the server loop.

This commit is contained in:
snowleo 2011-10-26 19:54:38 +02:00
parent 5641b1173c
commit 36fa05f3a6

View file

@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
public class StateMachine extends WorkListener public class StateMachine extends WorkListener implements Runnable
{ {
public enum MachineResult public enum MachineResult
{ {
@ -92,18 +92,26 @@ public class StateMachine extends WorkListener
public void startWork() public void startWork()
{ {
iterator = states.values().iterator(); iterator = states.values().iterator();
callStateWork(); Bukkit.getScheduler().scheduleAsyncDelayedTask(getPlugin(), this);
} }
private void callStateWork() @Override
public void run()
{ {
if (!iterator.hasNext()) if (!iterator.hasNext())
{ {
if (player.isOnline()) Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable()
{ {
player.sendMessage("Installation done."); @Override
} public void run()
finish(); {
if (StateMachine.this.player.isOnline())
{
StateMachine.this.player.sendMessage("Installation done.");
}
finish();
}
});
return; return;
} }
final AbstractState state = iterator.next(); final AbstractState state = iterator.next();
@ -139,7 +147,7 @@ public class StateMachine extends WorkListener
{ {
StateMachine.this.player.sendMessage(message); StateMachine.this.player.sendMessage(message);
} }
StateMachine.this.callStateWork(); Bukkit.getScheduler().scheduleAsyncDelayedTask(getPlugin(), StateMachine.this);
} }
}); });
} }