From f35db4a1838d5f8e290a0dadea4200cff7d5d799 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 20 Nov 2015 13:01:28 +0100 Subject: [PATCH 1/2] Fixed commit #3595 See https://github.com/PocketMine/PocketMine-MP/pull/3595 --- src/pocketmine/block/Grass.php | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/pocketmine/block/Grass.php b/src/pocketmine/block/Grass.php index bb6f63eb7..db027adaf 100644 --- a/src/pocketmine/block/Grass.php +++ b/src/pocketmine/block/Grass.php @@ -63,16 +63,21 @@ class Grass extends Solid{ public function onUpdate($type){ if($type === Level::BLOCK_UPDATE_RANDOM){ - //TODO: light levels - $x = mt_rand($this->x - 1, $this->x + 1); - $y = mt_rand($this->y - 2, $this->y + 2); - $z = mt_rand($this->z - 1, $this->z + 1); - $block = $this->getLevel()->getBlock(new Vector3($x, $y, $z)); - if($block->getId() === Block::DIRT){ - if($block->getSide(1) instanceof Transparent){ - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass())); - if(!$ev->isCancelled()){ - $this->getLevel()->setBlock($block, $ev->getNewState()); + $block = $this->getLevel()->getBlock(new Vector3($this->x, $this->y, $this->z)); + if($block->getSide(1)->getLightLevel() < 4){ + Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Dirt())); + } + elseif($block->getSide(1)->getLightLevel() >= 9){ + for($l = 0; $l < 4; ++$l){ + $x = mt_rand($this->x - 1, $this->x + 1); + $y = mt_rand($this->y - 2, $this->y + 2); + $z = mt_rand($this->z - 1, $this->z + 1); + $block = $this->getLevel()->getBlock(new Vector3($x, $y, $z)); + if($block->getId() === Block::DIRT && $block->getDamage() === 0x0F && $block->getSide(1)->getLightLevel() >= 4 && $block->z <= 2){ + Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass())); + if(!$ev->isCancelled()){ + $this->getLevel()->setBlock($block, $ev->getNewState()); + } } } } @@ -99,4 +104,4 @@ class Grass extends Solid{ return false; } -} \ No newline at end of file +} From 35f0f3652482e7ed95b8842563e65cbd6cfaf8e8 Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 24 Feb 2016 12:06:28 +0100 Subject: [PATCH 2/2] Update Grass.php @PEMapModder is that all correct now? --- src/pocketmine/block/Grass.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pocketmine/block/Grass.php b/src/pocketmine/block/Grass.php index db027adaf..366cdf7e9 100644 --- a/src/pocketmine/block/Grass.php +++ b/src/pocketmine/block/Grass.php @@ -66,8 +66,7 @@ class Grass extends Solid{ $block = $this->getLevel()->getBlock(new Vector3($this->x, $this->y, $this->z)); if($block->getSide(1)->getLightLevel() < 4){ Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Dirt())); - } - elseif($block->getSide(1)->getLightLevel() >= 9){ + }elseif($block->getSide(1)->getLightLevel() >= 9){ for($l = 0; $l < 4; ++$l){ $x = mt_rand($this->x - 1, $this->x + 1); $y = mt_rand($this->y - 2, $this->y + 2);