From 188f4d77784dfa8fc3c444b2991bc718fb9f2da0 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Thu, 4 Jun 2015 17:36:06 +0200 Subject: [PATCH] Clear chunk cache on tile change --- src/pocketmine/level/Level.php | 6 ++++++ src/pocketmine/tile/Sign.php | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index df3a88656..987e45a9a 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -800,6 +800,10 @@ class Level implements ChunkManager, Metadatable{ } + public function clearChunkCache($chunkX, $chunkZ){ + unset($this->chunkCache[Level::chunkHash($chunkX, $chunkZ)]); + } + private function tickChunks(){ if($this->chunksPerTick <= 0 or count($this->players) === 0){ $this->chunkTickList = []; @@ -2271,6 +2275,7 @@ class Level implements ChunkManager, Metadatable{ throw new LevelException("Invalid Tile level"); } $this->tiles[$tile->getId()] = $tile; + $this->clearChunkCache($tile->getX() >> 4, $tile->getZ() >> 4); } /** @@ -2285,6 +2290,7 @@ class Level implements ChunkManager, Metadatable{ unset($this->tiles[$tile->getId()]); unset($this->updateTiles[$tile->getId()]); + $this->clearChunkCache($tile->getX() >> 4, $tile->getZ() >> 4); } /** diff --git a/src/pocketmine/tile/Sign.php b/src/pocketmine/tile/Sign.php index bb23599d8..94cab70b1 100644 --- a/src/pocketmine/tile/Sign.php +++ b/src/pocketmine/tile/Sign.php @@ -57,6 +57,11 @@ class Sign extends Spawnable{ $this->namedtag->Text4 = new String("Text4", $line4); $this->spawnToAll(); + if($this->chunk){ + $this->chunk->setChanged(); + $this->level->clearChunkCache($this->chunk->getX(), $this->chunk->getZ()); + } + return true; }