PocketMine-MP 5.19.1 git-5cc1068cd43264d3363295eb8d6901e02f467897
Mycelium.php
1<?php
2
3/*
4 *
5 * ____ _ _ __ __ _ __ __ ____
6 * | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7 * | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8 * | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9 * |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10 *
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * @author PocketMine Team
17 * @link http://www.pocketmine.net/
18 *
19 *
20 */
21
22declare(strict_types=1);
23
24namespace pocketmine\block;
25
27use pocketmine\block\utils\DirtType;
30use function mt_rand;
31
32class Mycelium extends Opaque{
33
34 public function getDropsForCompatibleTool(Item $item) : array{
35 return [
36 VanillaBlocks::DIRT()->asItem()
37 ];
38 }
39
40 public function isAffectedBySilkTouch() : bool{
41 return true;
42 }
43
44 public function ticksRandomly() : bool{
45 return true;
46 }
47
48 public function onRandomTick() : void{
49 //TODO: light levels
50 $x = mt_rand($this->position->x - 1, $this->position->x + 1);
51 $y = mt_rand($this->position->y - 2, $this->position->y + 2);
52 $z = mt_rand($this->position->z - 1, $this->position->z + 1);
53 $world = $this->position->getWorld();
54 $block = $world->getBlockAt($x, $y, $z);
55 if($block instanceof Dirt && $block->getDirtType() === DirtType::NORMAL){
56 if($block->getSide(Facing::UP) instanceof Transparent){
57 BlockEventHelper::spread($block, VanillaBlocks::MYCELIUM(), $this);
58 }
59 }
60 }
61}
getDropsForCompatibleTool(Item $item)
Definition: Mycelium.php:34