From 532b12c6c0af73ad47a8e8c5c29741da047b9c31 Mon Sep 17 00:00:00 2001 From: Intyre Date: Mon, 18 Aug 2014 20:06:18 +0200 Subject: [PATCH] Mycelium spreads like grass and MonsterSpawner breaktime added --- src/pocketmine/block/MonsterSpawner.php | 21 +++++++++++++++++++++ src/pocketmine/block/Mycelium.php | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/pocketmine/block/MonsterSpawner.php b/src/pocketmine/block/MonsterSpawner.php index 1babe0bb7..54dc91b25 100644 --- a/src/pocketmine/block/MonsterSpawner.php +++ b/src/pocketmine/block/MonsterSpawner.php @@ -28,4 +28,25 @@ class MonsterSpawner extends Solid{ parent::__construct(self::MONSTER_SPAWNER, 0, "Monster Spawner"); $this->hardness = 25; } + + public function getBreakTime(Item $item){ + switch($item->isPickaxe()){ + case 5: + return 0.95; + case 4: + return 1.25; + case 3: + return 1.9; + case 2: + return 0.65; + case 1: + return 3.75; + default: + return 25; + } + } + + public function getDrops(Item $item){ + return []; + } } \ No newline at end of file diff --git a/src/pocketmine/block/Mycelium.php b/src/pocketmine/block/Mycelium.php index cecdb30a7..2d9389a30 100644 --- a/src/pocketmine/block/Mycelium.php +++ b/src/pocketmine/block/Mycelium.php @@ -28,4 +28,26 @@ class Mycelium extends Solid{ parent::__construct(self::MYCELIUM, 0, "Mycelium"); $this->hardness = 2.5; } + + public function getDrops(Item $item){ + return [ + [Item::DIRT, 0, 1], + ]; + } + + 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()->getBlockIdAt($x, $y, $z); + if($block === Block::DIRT){ + $block = $this->getLevel()->getBlock(new Vector3($x, $y, $z)); + if($block->getSide(1) instanceof Transparent){ + $this->getLevel()->setBlock($block, new Mycelium()); + } + } + } + } } \ No newline at end of file