From 562b47a1e5de890213422bc19d9353505259523b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 3 Oct 2019 11:19:45 +0100 Subject: [PATCH] Player: guard against repeated resource pack sequence this can happen because of the client being super broken in 1.12 close #3036 --- src/pocketmine/Player.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 0cec6e63ad..1969fc1da7 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -261,6 +261,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ /** @var bool */ public $loggedIn = false; + /** @var bool */ + private $resourcePacksDone = false; + /** @var bool */ public $spawned = false; @@ -2056,6 +2059,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ } public function handleResourcePackClientResponse(ResourcePackClientResponsePacket $packet) : bool{ + if($this->resourcePacksDone){ + return false; + } switch($packet->status){ case ResourcePackClientResponsePacket::STATUS_REFUSED: //TODO: add lang strings for this @@ -2097,6 +2103,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ $this->dataPacket($pk); break; case ResourcePackClientResponsePacket::STATUS_COMPLETED: + $this->resourcePacksDone = true; $this->completeLoginSequence(); break; default: @@ -3049,6 +3056,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ } public function handleResourcePackChunkRequest(ResourcePackChunkRequestPacket $packet) : bool{ + if($this->resourcePacksDone){ + return false; + } $manager = $this->server->getResourcePackManager(); $pack = $manager->getPackById($packet->packId); if(!($pack instanceof ResourcePack)){