diff --git a/src/pocketmine/network/mcpe/RakLibInterface.php b/src/pocketmine/network/mcpe/RakLibInterface.php index 73f812d01..9bffb4338 100644 --- a/src/pocketmine/network/mcpe/RakLibInterface.php +++ b/src/pocketmine/network/mcpe/RakLibInterface.php @@ -27,7 +27,6 @@ use pocketmine\event\player\PlayerCreationEvent; use pocketmine\network\AdvancedSourceInterface; use pocketmine\network\mcpe\protocol\BatchPacket; use pocketmine\network\mcpe\protocol\DataPacket; -use pocketmine\network\mcpe\protocol\PacketPool; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\Network; use pocketmine\Player; @@ -166,7 +165,7 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{ $address = $player->getAddress(); try{ if($packet->buffer !== ""){ - $pk = PacketPool::getPacket($packet->buffer); + $pk = new BatchPacket($packet->buffer); $player->handleDataPacket($pk); } }catch(\Throwable $e){ diff --git a/src/pocketmine/network/mcpe/protocol/PacketPool.php b/src/pocketmine/network/mcpe/protocol/PacketPool.php index 4949d8fb7..d870b7ed4 100644 --- a/src/pocketmine/network/mcpe/protocol/PacketPool.php +++ b/src/pocketmine/network/mcpe/protocol/PacketPool.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\protocol; -use function ord; +use pocketmine\utils\Binary; class PacketPool{ /** @var \SplFixedArray */ @@ -32,7 +32,6 @@ class PacketPool{ public static function init(){ static::$pool = new \SplFixedArray(256); - //Normal packets static::registerPacket(new LoginPacket()); static::registerPacket(new PlayStatusPacket()); static::registerPacket(new ServerToClientHandshakePacket()); @@ -158,8 +157,6 @@ class PacketPool{ static::registerPacket(new VideoStreamConnectPacket()); static::registerPacket(new MapCreateLockedCopyPacket()); static::registerPacket(new OnScreenTextureAnimationPacket()); - - static::registerPacket(new BatchPacket()); } /** @@ -184,10 +181,10 @@ class PacketPool{ * @return DataPacket */ public static function getPacket(string $buffer) : DataPacket{ - $pk = static::getPacketById(ord($buffer{0})); - $pk->setBuffer($buffer); + $offset = 0; + $pk = static::getPacketById(Binary::readUnsignedVarInt($buffer, $offset)); + $pk->setBuffer($buffer, $offset); return $pk; } - }