Save player data after PlayerQuitEvent (#1544), close #1543, close #1482

This reverses a bad solution for #1482 for level unloading on PlayerQuitEvent which caused more widespread issues with plugins doing other, more common things on player quit which directly affected the save data.
This commit is contained in:
Oreo Oreoniv 2017-11-15 14:16:02 +03:00 committed by Dylan K. Taylor
parent 2794df34ab
commit bbbed22467

View File

@ -3373,17 +3373,17 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
$this->stopSleep();
if($this->joined){
$this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, $reason));
if($ev->getQuitMessage() != ""){
$this->server->broadcastMessage($ev->getQuitMessage());
}
try{
$this->save();
}catch(\Throwable $e){
$this->server->getLogger()->critical("Failed to save player data for " . $this->getName());
$this->server->getLogger()->logException($e);
}
$this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, $reason));
if($ev->getQuitMessage() != ""){
$this->server->broadcastMessage($ev->getQuitMessage());
}
}
$this->joined = false;