Add buffering for non-immediate priority packets to reduce compression overhead

This commit is contained in:
Dylan K. Taylor 2017-09-27 14:06:42 +01:00
parent 8f63117dac
commit 2162675b64

View File

@ -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){