From 80680f15f4071b93973bc0a605d4e4248230c44a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Apr 2020 03:31:13 +0100 Subject: [PATCH] seal up resource pack completion callback visibility --- src/network/mcpe/NetworkSession.php | 6 ++++-- .../mcpe/handler/ResourcePacksPacketHandler.php | 13 +++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index be754503f..c60fc9e1c 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -565,10 +565,12 @@ class NetworkSession{ $this->sendDataPacket(PlayStatusPacket::create(PlayStatusPacket::LOGIN_SUCCESS)); $this->logger->debug("Initiating resource packs phase"); - $this->setHandler(new ResourcePacksPacketHandler($this, $this->server->getResourcePackManager())); + $this->setHandler(new ResourcePacksPacketHandler($this, $this->server->getResourcePackManager(), function() : void{ + $this->onResourcePacksDone(); + })); } - public function onResourcePacksDone() : void{ + private function onResourcePacksDone() : void{ $this->createPlayer(); $this->setHandler(new PreSpawnPacketHandler($this->server, $this->player, $this)); diff --git a/src/network/mcpe/handler/ResourcePacksPacketHandler.php b/src/network/mcpe/handler/ResourcePacksPacketHandler.php index 51ec66cba..5a55231fd 100644 --- a/src/network/mcpe/handler/ResourcePacksPacketHandler.php +++ b/src/network/mcpe/handler/ResourcePacksPacketHandler.php @@ -53,13 +53,22 @@ class ResourcePacksPacketHandler extends PacketHandler{ private $session; /** @var ResourcePackManager */ private $resourcePackManager; + /** + * @var \Closure + * @phpstan-var \Closure() : void + */ + private $completionCallback; /** @var bool[][] uuid => [chunk index => hasSent] */ private $downloadedChunks = []; - public function __construct(NetworkSession $session, ResourcePackManager $resourcePackManager){ + /** + * @phpstan-param \Closure() : void $completionCallback + */ + public function __construct(NetworkSession $session, ResourcePackManager $resourcePackManager, \Closure $completionCallback){ $this->session = $session; $this->resourcePackManager = $resourcePackManager; + $this->completionCallback = $completionCallback; } public function setUp() : void{ @@ -124,7 +133,7 @@ class ResourcePacksPacketHandler extends PacketHandler{ break; case ResourcePackClientResponsePacket::STATUS_COMPLETED: $this->session->getLogger()->debug("Resource packs sequence completed"); - $this->session->onResourcePacksDone(); + ($this->completionCallback)(); break; default: return false;