From afa37bd2aa5921def6234310f5d9d81245f32854 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 1 Oct 2017 10:48:48 +0100 Subject: [PATCH] check range of valid compression values zero is not allowed because it's pointless, just raise your compression threshold if you want zero compression. Chunks will always be compressed regardless of threshold because they are huge. It doesn't make sense to allow uncompressed chunks when even compression level 1 will reduce their size 50x. The point of the last two (reverted) commits was to prevent compression level zero being used on chunks. Probably obvious that I was up late and not thinking very clearly. Revert "Reduced chunk compression level to 7" This reverts commit 49ac2555ce3d410c49eba4045ffe8a5138066346. Revert "Always use best compression for chunks" This reverts commit 42dd9d6abd4e7a66611cd171abd0f8f7969166c1. --- src/pocketmine/Server.php | 5 +++++ src/pocketmine/level/format/io/ChunkRequestTask.php | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index e8ecf5760..a246644f4 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1515,7 +1515,12 @@ class Server{ }else{ Network::$BATCH_THRESHOLD = -1; } + $this->networkCompressionLevel = $this->getProperty("network.compression-level", 7); + if($this->networkCompressionLevel < 1 or $this->networkCompressionLevel > 9){ + $this->logger->warning("Invalid network compression level $this->networkCompressionLevel set, setting to default 7"); + $this->networkCompressionLevel = 7; + } $this->networkCompressionAsync = $this->getProperty("network.async-compression", true); $this->autoTickRate = (bool) $this->getProperty("level-settings.auto-tick-rate", true); diff --git a/src/pocketmine/level/format/io/ChunkRequestTask.php b/src/pocketmine/level/format/io/ChunkRequestTask.php index d82a61230..01261ddd3 100644 --- a/src/pocketmine/level/format/io/ChunkRequestTask.php +++ b/src/pocketmine/level/format/io/ChunkRequestTask.php @@ -42,8 +42,11 @@ class ChunkRequestTask extends AsyncTask{ protected $tiles; + protected $compressionLevel; + public function __construct(Level $level, Chunk $chunk){ $this->levelId = $level->getId(); + $this->compressionLevel = $level->getServer()->networkCompressionLevel; $this->chunk = $chunk->fastSerialize(); $this->chunkX = $chunk->getX(); @@ -72,7 +75,7 @@ class ChunkRequestTask extends AsyncTask{ $batch = new BatchPacket(); $batch->addPacket($pk); - $batch->setCompressionLevel(7); + $batch->setCompressionLevel($this->compressionLevel); $batch->encode(); $this->setResult($batch->buffer, false);