mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-27 21:59:52 +00:00
Player: guard against repeated resource pack sequence
this can happen because of the client being super broken in 1.12 close #3036
This commit is contained in:
parent
4e060bc13f
commit
562b47a1e5
@ -261,6 +261,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
/** @var bool */
|
/** @var bool */
|
||||||
public $loggedIn = false;
|
public $loggedIn = false;
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
private $resourcePacksDone = false;
|
||||||
|
|
||||||
/** @var bool */
|
/** @var bool */
|
||||||
public $spawned = false;
|
public $spawned = false;
|
||||||
|
|
||||||
@ -2056,6 +2059,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function handleResourcePackClientResponse(ResourcePackClientResponsePacket $packet) : bool{
|
public function handleResourcePackClientResponse(ResourcePackClientResponsePacket $packet) : bool{
|
||||||
|
if($this->resourcePacksDone){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch($packet->status){
|
switch($packet->status){
|
||||||
case ResourcePackClientResponsePacket::STATUS_REFUSED:
|
case ResourcePackClientResponsePacket::STATUS_REFUSED:
|
||||||
//TODO: add lang strings for this
|
//TODO: add lang strings for this
|
||||||
@ -2097,6 +2103,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
$this->dataPacket($pk);
|
$this->dataPacket($pk);
|
||||||
break;
|
break;
|
||||||
case ResourcePackClientResponsePacket::STATUS_COMPLETED:
|
case ResourcePackClientResponsePacket::STATUS_COMPLETED:
|
||||||
|
$this->resourcePacksDone = true;
|
||||||
$this->completeLoginSequence();
|
$this->completeLoginSequence();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -3049,6 +3056,9 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function handleResourcePackChunkRequest(ResourcePackChunkRequestPacket $packet) : bool{
|
public function handleResourcePackChunkRequest(ResourcePackChunkRequestPacket $packet) : bool{
|
||||||
|
if($this->resourcePacksDone){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$manager = $this->server->getResourcePackManager();
|
$manager = $this->server->getResourcePackManager();
|
||||||
$pack = $manager->getPackById($packet->packId);
|
$pack = $manager->getPackById($packet->packId);
|
||||||
if(!($pack instanceof ResourcePack)){
|
if(!($pack instanceof ResourcePack)){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user