From 3cdf808da1d5dfcbf3baa8432a685cd9fbedaafb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 17 Jun 2020 13:55:29 +0100 Subject: [PATCH] NetworkNbtSerializer: do not assume that this format is related to the disk little-endian format --- .../serializer/NetworkNbtSerializer.php | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/network/mcpe/protocol/serializer/NetworkNbtSerializer.php b/src/network/mcpe/protocol/serializer/NetworkNbtSerializer.php index 91a679323f..e3949444fc 100644 --- a/src/network/mcpe/protocol/serializer/NetworkNbtSerializer.php +++ b/src/network/mcpe/protocol/serializer/NetworkNbtSerializer.php @@ -23,11 +23,23 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\protocol\serializer; -use pocketmine\nbt\LittleEndianNbtSerializer; +use pocketmine\nbt\BaseNbtSerializer; use function count; use function strlen; -class NetworkNbtSerializer extends LittleEndianNbtSerializer{ +class NetworkNbtSerializer extends BaseNbtSerializer{ + + public function readShort() : int{ + return $this->buffer->getLShort(); + } + + public function readSignedShort() : int{ + return $this->buffer->getSignedLShort(); + } + + public function writeShort(int $v) : void{ + $this->buffer->putLShort($v); + } public function readInt() : int{ return $this->buffer->getVarInt(); @@ -54,6 +66,22 @@ class NetworkNbtSerializer extends LittleEndianNbtSerializer{ $this->buffer->put($v); } + public function readFloat() : float{ + return $this->buffer->getLFloat(); + } + + public function writeFloat(float $v) : void{ + $this->buffer->putLFloat($v); + } + + public function readDouble() : float{ + return $this->buffer->getLDouble(); + } + + public function writeDouble(float $v) : void{ + $this->buffer->putLDouble($v); + } + public function readIntArray() : array{ $len = $this->readInt(); //varint $ret = [];