diff --git a/composer.lock b/composer.lock index afd6b5d1f..df46acfb4 100644 --- a/composer.lock +++ b/composer.lock @@ -233,16 +233,16 @@ }, { "name": "pocketmine/binaryutils", - "version": "0.1.3", + "version": "0.1.4", "source": { "type": "git", "url": "https://github.com/pmmp/BinaryUtils.git", - "reference": "925001c8eff97a36519b16bbd095964b0fc52772" + "reference": "8c559e8c437aa56143e1a9231debf734b4de481c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/925001c8eff97a36519b16bbd095964b0fc52772", - "reference": "925001c8eff97a36519b16bbd095964b0fc52772", + "url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/8c559e8c437aa56143e1a9231debf734b4de481c", + "reference": "8c559e8c437aa56143e1a9231debf734b4de481c", "shasum": "" }, "require": { @@ -260,10 +260,10 @@ ], "description": "Classes and methods for conveniently handling binary data", "support": { - "source": "https://github.com/pmmp/BinaryUtils/tree/0.1.3", + "source": "https://github.com/pmmp/BinaryUtils/tree/master", "issues": "https://github.com/pmmp/BinaryUtils/issues" }, - "time": "2018-12-30T12:17:51+00:00" + "time": "2019-01-01T15:58:16+00:00" }, { "name": "pocketmine/math", diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 0e829841f..a3e43be23 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1900,7 +1900,7 @@ class Server{ $stream->putPacket($packet); } - if(NetworkCompression::$THRESHOLD < 0 or strlen($stream->buffer) < NetworkCompression::$THRESHOLD){ + if(NetworkCompression::$THRESHOLD < 0 or strlen($stream->getBuffer()) < NetworkCompression::$THRESHOLD){ foreach($targets as $target){ foreach($ev->getPackets() as $pk){ $target->addToSendBuffer($pk); @@ -1929,17 +1929,18 @@ class Server{ Timings::$playerNetworkSendCompressTimer->startTiming(); $compressionLevel = NetworkCompression::$LEVEL; - if(NetworkCompression::$THRESHOLD < 0 or strlen($stream->buffer) < NetworkCompression::$THRESHOLD){ + $buffer = $stream->getBuffer(); + if(NetworkCompression::$THRESHOLD < 0 or strlen($buffer) < NetworkCompression::$THRESHOLD){ $compressionLevel = 0; //Do not compress packets under the threshold $forceSync = true; } $promise = new CompressBatchPromise(); if(!$forceSync and $this->networkCompressionAsync){ - $task = new CompressBatchTask($stream, $compressionLevel, $promise); + $task = new CompressBatchTask($buffer, $compressionLevel, $promise); $this->asyncPool->submitTask($task); }else{ - $promise->resolve(NetworkCompression::compress($stream->buffer, $compressionLevel)); + $promise->resolve(NetworkCompression::compress($buffer, $compressionLevel)); } return $promise; diff --git a/src/pocketmine/inventory/CraftingManager.php b/src/pocketmine/inventory/CraftingManager.php index f8aa119c4..976b25ffe 100644 --- a/src/pocketmine/inventory/CraftingManager.php +++ b/src/pocketmine/inventory/CraftingManager.php @@ -105,7 +105,7 @@ class CraftingManager{ $batch->putPacket($pk); $this->craftingDataCache = new CompressBatchPromise(); - $this->craftingDataCache->resolve(NetworkCompression::compress($batch->buffer)); + $this->craftingDataCache->resolve(NetworkCompression::compress($batch->getBuffer())); Timings::$craftingDataCacheRebuildTimer->stopTiming(); } diff --git a/src/pocketmine/network/mcpe/ChunkRequestTask.php b/src/pocketmine/network/mcpe/ChunkRequestTask.php index 82141f480..4053dd6c5 100644 --- a/src/pocketmine/network/mcpe/ChunkRequestTask.php +++ b/src/pocketmine/network/mcpe/ChunkRequestTask.php @@ -56,7 +56,7 @@ class ChunkRequestTask extends AsyncTask{ $stream = new PacketStream(); $stream->putPacket($pk); - $this->setResult(NetworkCompression::compress($stream->buffer, $this->compressionLevel)); + $this->setResult(NetworkCompression::compress($stream->getBuffer(), $this->compressionLevel)); } public function onCompletion() : void{ diff --git a/src/pocketmine/network/mcpe/CompressBatchTask.php b/src/pocketmine/network/mcpe/CompressBatchTask.php index ffd8048a7..41498ec9b 100644 --- a/src/pocketmine/network/mcpe/CompressBatchTask.php +++ b/src/pocketmine/network/mcpe/CompressBatchTask.php @@ -31,12 +31,12 @@ class CompressBatchTask extends AsyncTask{ private $data; /** - * @param PacketStream $stream + * @param string $data * @param int $compressionLevel * @param CompressBatchPromise $promise */ - public function __construct(PacketStream $stream, int $compressionLevel, CompressBatchPromise $promise){ - $this->data = $stream->buffer; + public function __construct(string $data, int $compressionLevel, CompressBatchPromise $promise){ + $this->data = $data; $this->level = $compressionLevel; $this->storeLocal($promise); } diff --git a/src/pocketmine/network/mcpe/NetworkSession.php b/src/pocketmine/network/mcpe/NetworkSession.php index fd7a78a34..c0854520a 100644 --- a/src/pocketmine/network/mcpe/NetworkSession.php +++ b/src/pocketmine/network/mcpe/NetworkSession.php @@ -198,14 +198,14 @@ class NetworkSession{ $packet->decode(); if(!$packet->feof() and !$packet->mayHaveUnreadBytes()){ - $remains = substr($packet->buffer, $packet->offset); + $remains = substr($packet->getBuffer(), $packet->getOffset()); $this->server->getLogger()->debug("Still " . strlen($remains) . " bytes unread in " . $packet->getName() . ": 0x" . bin2hex($remains)); } $ev = new DataPacketReceiveEvent($this->player, $packet); $ev->call(); if(!$ev->isCancelled() and !$packet->handle($this->handler)){ - $this->server->getLogger()->debug("Unhandled " . $packet->getName() . " received from " . $this->player->getName() . ": 0x" . bin2hex($packet->buffer)); + $this->server->getLogger()->debug("Unhandled " . $packet->getName() . " received from " . $this->player->getName() . ": 0x" . bin2hex($packet->getBuffer())); } $timings->stopTiming(); diff --git a/src/pocketmine/network/mcpe/PacketStream.php b/src/pocketmine/network/mcpe/PacketStream.php index 9a0f4e977..f22dc6e20 100644 --- a/src/pocketmine/network/mcpe/PacketStream.php +++ b/src/pocketmine/network/mcpe/PacketStream.php @@ -32,7 +32,7 @@ class PacketStream extends NetworkBinaryStream{ if(!$packet->isEncoded){ $packet->encode(); } - $this->putString($packet->buffer); + $this->putString($packet->getBuffer()); } public function getPacket() : DataPacket{ diff --git a/src/pocketmine/network/mcpe/protocol/DataPacket.php b/src/pocketmine/network/mcpe/protocol/DataPacket.php index 18c1e3715..a21de3fb1 100644 --- a/src/pocketmine/network/mcpe/protocol/DataPacket.php +++ b/src/pocketmine/network/mcpe/protocol/DataPacket.php @@ -62,7 +62,7 @@ abstract class DataPacket extends NetworkBinaryStream{ } public function decode() : void{ - $this->offset = 0; + $this->rewind(); $this->decodeHeader(); $this->decodePayload(); } diff --git a/src/pocketmine/network/mcpe/protocol/StartGamePacket.php b/src/pocketmine/network/mcpe/protocol/StartGamePacket.php index 3a612e254..1d438a2b5 100644 --- a/src/pocketmine/network/mcpe/protocol/StartGamePacket.php +++ b/src/pocketmine/network/mcpe/protocol/StartGamePacket.php @@ -262,7 +262,7 @@ class StartGamePacket extends DataPacket{ $stream->putString($v["name"]); $stream->putLShort($v["data"]); } - self::$runtimeIdTable = $stream->buffer; + self::$runtimeIdTable = $stream->getBuffer(); } $this->put(self::$runtimeIdTable);