diff --git a/src/Server.php b/src/Server.php index 5280bb482b..c3ea14a129 100644 --- a/src/Server.php +++ b/src/Server.php @@ -576,20 +576,16 @@ class Server{ } } - public function createPlayer(NetworkSession $session, PlayerInfo $playerInfo, bool $authenticated) : Player{ + public function createPlayer(NetworkSession $session, PlayerInfo $playerInfo, bool $authenticated, ?CompoundTag $offlinePlayerData) : Player{ $ev = new PlayerCreationEvent($session); $ev->call(); $class = $ev->getPlayerClass(); - //TODO: make this async - //TODO: what about allowing this to be provided by PlayerCreationEvent? - $namedtag = $this->getOfflinePlayerData($playerInfo->getUsername()); - /** * @see Player::__construct() * @var Player $player */ - $player = new $class($this, $session, $playerInfo, $authenticated, $namedtag); + $player = new $class($this, $session, $playerInfo, $authenticated, $offlinePlayerData); return $player; } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 800869ba90..80d4420499 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -229,7 +229,11 @@ class NetworkSession{ } protected function createPlayer() : void{ - $this->player = $this->server->createPlayer($this, $this->info, $this->authenticated); + //TODO: make this async + //TODO: what about allowing this to be provided by PlayerCreationEvent? + $offlinePlayerData = $this->server->getOfflinePlayerData($this->info->getUsername()); + + $this->player = $this->server->createPlayer($this, $this->info, $this->authenticated, $offlinePlayerData); $this->invManager = new InventoryManager($this->player, $this);