From 5c150f696c973de7d381de8481946f6b6cc1491f Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Tue, 19 Aug 2014 11:31:23 +0200 Subject: [PATCH] Fixed task not being freed from player on close --- src/pocketmine/Player.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 528af74c5..66232ce8f 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -811,7 +811,8 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->updateMetadata(); }*/ $this->setSpawn($pos); - $this->server->getScheduler()->scheduleDelayedTask(new CallbackTask(array($this, "checkSleep")), 60); + $this->tasks[] = $this->server->getScheduler()->scheduleDelayedTask(new CallbackTask(array($this, "checkSleep")), 60); + return true; } @@ -2106,6 +2107,12 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ * @param string $reason Reason showed in console */ public function close($message = "", $reason = "generic reason"){ + + foreach($this->tasks as $task){ + $task->cancel(); + } + $this->tasks = []; + if($this->connected === true){ parent::close(); if($this->username != ""){ @@ -2120,10 +2127,6 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->server->removePlayer($this); $this->getLevel()->freeAllChunks($this); $this->loggedIn = false; - foreach($this->tasks as $task){ - $task->cancel(); - } - $this->tasks = []; if(isset($ev) and $this->username != "" and $this->spawned !== false and $ev->getQuitMessage() != ""){ $this->server->broadcastMessage($ev->getQuitMessage());