From 1c49cedc8cc378a8a1cc62cd25ef33efa7110bbc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Dec 2020 15:49:35 +0000 Subject: [PATCH] World: disallow block placement and breaking in unloaded, ungenerated and locked chunks --- src/world/World.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/world/World.php b/src/world/World.php index 0f403dc2d2..8200010aa5 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1509,6 +1509,13 @@ class World implements ChunkManager{ */ public function useBreakOn(Vector3 $vector, Item &$item = null, ?Player $player = null, bool $createParticles = false) : bool{ $vector = $vector->floor(); + + $chunkX = $vector->getFloorX() >> 4; + $chunkZ = $vector->getFloorZ() >> 4; + if(!$this->isChunkLoaded($chunkX, $chunkZ) || !$this->isChunkGenerated($chunkX, $chunkZ) || $this->isChunkLocked($chunkX, $chunkZ)){ + return false; + } + $target = $this->getBlock($vector); $affectedBlocks = $target->getAffectedBlocks(); @@ -1614,6 +1621,11 @@ class World implements ChunkManager{ //TODO: build height limit messages for custom world heights and mcregion cap return false; } + $chunkX = $blockReplace->getPos()->getFloorX() >> 4; + $chunkZ = $blockReplace->getPos()->getFloorZ() >> 4; + if(!$this->isChunkLoaded($chunkX, $chunkZ) || !$this->isChunkGenerated($chunkX, $chunkZ) || $this->isChunkLocked($chunkX, $chunkZ)){ + return false; + } if($blockClicked->getId() === BlockLegacyIds::AIR){ return false;