From 2162675b6400807cf650f6fc7ad236c52fa99c01 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 27 Sep 2017 14:06:42 +0100 Subject: [PATCH] Add buffering for non-immediate priority packets to reduce compression overhead --- src/pocketmine/Player.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 1272af1a2..8a5e97f10 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1067,6 +1067,10 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ return false; } + if(!$packet->canBeBatched()){ + throw new \InvalidArgumentException(get_class($packet) . " cannot be added to batch buffer"); + } + $timings = Timings::getSendDataPacketTimings($packet); $timings->startTiming(); $this->server->getPluginManager()->callEvent($ev = new DataPacketSendEvent($this, $packet)); @@ -1125,6 +1129,12 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ return false; } + if(!$needACK and !$immediate and $packet->canBeBatched()){ + $this->batchedPackets[] = clone $packet; + + return true; + } + $identifier = $this->interface->putPacket($this, $packet, $needACK, $immediate); if($needACK and $identifier !== null){