diff --git a/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java index 9446222f..5b39a934 100644 --- a/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java +++ b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java @@ -24,6 +24,7 @@ public class LimboPlayer { private final float flySpeed; private MyScheduledTask timeoutTask = null; private MessageTask messageTask = null; + private MyScheduledTask inter; private LimboPlayerState state = LimboPlayerState.PASSWORD_REQUIRED; @@ -113,18 +114,20 @@ public class LimboPlayer { * * @param messageTask The message task to set */ - public void setMessageTask(MessageTask messageTask) { - if (this.messageTask != null) { + public void setMessageTask(MessageTask messageTask, MyScheduledTask inter) { + if (this.messageTask != null && this.inter != null) { this.messageTask.cancel(); + this.inter.cancel(); } this.messageTask = messageTask; + this.inter = inter; } /** * Clears all tasks associated to the player. */ public void clearTasks() { - setMessageTask(null); + setMessageTask(null, null); setTimeoutTask(null); } diff --git a/src/main/java/fr/xephi/authme/data/limbo/LimboPlayerTaskManager.java b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayerTaskManager.java index ca5eaa1f..f6a970b3 100644 --- a/src/main/java/fr/xephi/authme/data/limbo/LimboPlayerTaskManager.java +++ b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayerTaskManager.java @@ -53,8 +53,8 @@ class LimboPlayerTaskManager { if (interval > 0) { String[] joinMessage = messages.retrieveSingle(player, result.messageKey, result.args).split("\n"); MessageTask messageTask = new MessageTask(player, joinMessage); - bukkitService.runTaskTimer(messageTask, 2 * TICKS_PER_SECOND, (long) interval * TICKS_PER_SECOND); - limbo.setMessageTask(messageTask); + MyScheduledTask task = bukkitService.runTaskTimer(messageTask, 2 * TICKS_PER_SECOND, (long) interval * TICKS_PER_SECOND); + limbo.setMessageTask(messageTask, task); } }