diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index b529d60ae0..e98e5e9ce5 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2099,10 +2099,10 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ */ public function close($message = "", $reason = "generic reason"){ if($this->connected === true){ + parent::close(); if($this->username != ""){ $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message)); if($this->loggedIn === true){ - parent::close(); $this->save(); } } diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index b3300330b2..1a3a416544 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -1042,6 +1042,7 @@ abstract class Entity extends Position implements Metadatable{ public function close(){ if($this->closed === false){ + $this->server->getPluginManager()->callEvent(new EntityDespawnEvent($this)); $this->closed = true; unset(Entity::$needUpdate[$this->id]); if($this->chunk instanceof FullChunk){ @@ -1049,7 +1050,6 @@ abstract class Entity extends Position implements Metadatable{ } $this->getLevel()->removeEntity($this); $this->despawnFromAll(); - $this->server->getPluginManager()->callEvent(new EntityDespawnEvent($this)); } }