Fixed crashes due to adding players 'online' far too early, fixed some Player save logic

This commit is contained in:
Dylan K. Taylor 2017-03-31 13:45:28 +01:00
parent b5f473a3df
commit 7f838a8c36

View File

@ -1797,7 +1797,6 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$this->sendPlayStatus(PlayStatusPacket::LOGIN_SUCCESS); $this->sendPlayStatus(PlayStatusPacket::LOGIN_SUCCESS);
$this->loggedIn = true; $this->loggedIn = true;
$this->server->addOnlinePlayer($this);
$pk = new ResourcePacksInfoPacket(); $pk = new ResourcePacksInfoPacket();
$manager = $this->server->getResourceManager(); $manager = $this->server->getResourceManager();
@ -1876,6 +1875,8 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$this->forceMovement = $this->teleportPosition = $this->getPosition(); $this->forceMovement = $this->teleportPosition = $this->getPosition();
$this->server->addOnlinePlayer($this);
$this->server->onPlayerLogin($this); $this->server->onPlayerLogin($this);
} }
@ -3637,14 +3638,16 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
} }
parent::saveNBT(); parent::saveNBT();
if($this->getLevel() instanceof Level){
if($this->isValid()){
$this->namedtag->Level = new StringTag("Level", $this->level->getFolderName()); $this->namedtag->Level = new StringTag("Level", $this->level->getFolderName());
if($this->hasValidSpawnPosition()){ }
$this->namedtag["SpawnLevel"] = $this->spawnPosition->getLevel()->getFolderName();
$this->namedtag["SpawnX"] = (int) $this->spawnPosition->x; if($this->hasValidSpawnPosition()){
$this->namedtag["SpawnY"] = (int) $this->spawnPosition->y; $this->namedtag["SpawnLevel"] = $this->spawnPosition->getLevel()->getFolderName();
$this->namedtag["SpawnZ"] = (int) $this->spawnPosition->z; $this->namedtag["SpawnX"] = (int) $this->spawnPosition->x;
} $this->namedtag["SpawnY"] = (int) $this->spawnPosition->y;
$this->namedtag["SpawnZ"] = (int) $this->spawnPosition->z;
} }
foreach($this->achievements as $achievement => $status){ foreach($this->achievements as $achievement => $status){