From 68da4b5b39a010d907e47fb532941b475969c76e Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sun, 7 Dec 2014 18:26:59 +0100 Subject: [PATCH] Collect unallocated chunks from the Level provider --- src/pocketmine/level/Level.php | 6 ++++++ src/pocketmine/level/format/LevelProvider.php | 2 +- src/pocketmine/level/format/generic/BaseChunk.php | 2 +- src/pocketmine/level/format/generic/BaseFullChunk.php | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 935e26076..c2ad562ca 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -2206,6 +2206,12 @@ class Level implements ChunkManager, Metadatable{ } } + foreach($this->provider->getLoadedChunks() as $chunk){ + if(!isset($this->chunks[Level::chunkHash($chunk->getX(), $chunk->getZ())])){ + $this->provider->unloadChunk($chunk->getX(), $chunk->getZ(), false); + } + } + $this->timings->doChunkGC->stopTiming(); } diff --git a/src/pocketmine/level/format/LevelProvider.php b/src/pocketmine/level/format/LevelProvider.php index bce3f4a10..9fe83866e 100644 --- a/src/pocketmine/level/format/LevelProvider.php +++ b/src/pocketmine/level/format/LevelProvider.php @@ -214,7 +214,7 @@ interface LevelProvider{ public function setSpawn(Vector3 $pos); /** - * @return Chunk + * @return Chunk[] */ public function getLoadedChunks(); diff --git a/src/pocketmine/level/format/generic/BaseChunk.php b/src/pocketmine/level/format/generic/BaseChunk.php index a0a324ea8..35b5a51c6 100644 --- a/src/pocketmine/level/format/generic/BaseChunk.php +++ b/src/pocketmine/level/format/generic/BaseChunk.php @@ -77,7 +77,7 @@ abstract class BaseChunk extends BaseFullChunk implements Chunk{ } if(count($heightMap) === 256){ - $this->heightMap = 256; + $this->heightMap = $heightMap; }else{ $this->heightMap = array_fill(0, 256, 127); } diff --git a/src/pocketmine/level/format/generic/BaseFullChunk.php b/src/pocketmine/level/format/generic/BaseFullChunk.php index 0d850b07f..18a2fd1a6 100644 --- a/src/pocketmine/level/format/generic/BaseFullChunk.php +++ b/src/pocketmine/level/format/generic/BaseFullChunk.php @@ -105,7 +105,7 @@ abstract class BaseFullChunk implements FullChunk{ } if(count($heightMap) === 256){ - $this->heightMap = 256; + $this->heightMap = $heightMap; }else{ $this->heightMap = array_fill(0, 256, 127); }