From 6facd8b50f2bd411cb911495d6dafb686e5b201b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 18 Nov 2017 12:44:18 +0000 Subject: [PATCH] Provide a way for plugins such as Specter to bypass chain verification --- src/pocketmine/Player.php | 6 +++++- src/pocketmine/network/mcpe/protocol/LoginPacket.php | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 7edcc7a13..e4ea9b2bb 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1837,7 +1837,11 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ return true; } - $this->server->getScheduler()->scheduleAsyncTask(new VerifyLoginTask($this, $packet)); + if(!$packet->skipVerification){ + $this->server->getScheduler()->scheduleAsyncTask(new VerifyLoginTask($this, $packet)); + }else{ + $this->onVerifyCompleted($packet, true, true); + } return true; } diff --git a/src/pocketmine/network/mcpe/protocol/LoginPacket.php b/src/pocketmine/network/mcpe/protocol/LoginPacket.php index a31ae5736..4ceb0e2cb 100644 --- a/src/pocketmine/network/mcpe/protocol/LoginPacket.php +++ b/src/pocketmine/network/mcpe/protocol/LoginPacket.php @@ -60,6 +60,14 @@ class LoginPacket extends DataPacket{ /** @var array decoded payload of the clientData JWT */ public $clientData = []; + /** + * This field may be used by plugins to bypass keychain verification. It should only be used for plugins such as + * Specter where passing verification would take too much time and not be worth it. + * + * @var bool + */ + public $skipVerification = false; + public function canBeSentBeforeLogin() : bool{ return true; }