Exemplo n.º 1
0
 public function onUpdate($type)
 {
     if ($type === Level::BLOCK_UPDATE_RANDOM) {
         $block = $this;
         #$lightLvl = $this->getLevel()->getBlockLightAt($this->x, $this->y + 1, $this->z);
         $lightLvl = $this->fakeLightLvl($block);
         //TODO: REMOVE THIS HACK
         if ($lightLvl < 4) {
             Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Dirt()));
             if (!$ev->isCancelled()) {
                 $this->getLevel()->setBlock($block, $ev->getNewState());
             }
         } elseif ($lightLvl >= 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->getSide(1) instanceof Liquid && $this->fakeLightLvl($this->getLevel()->getBlock(new Vector3($x, $y, $z))) >= 4) {
                     //TODO: replace this hack with $this->getLevel()->getBlockLightAt($x, $y + 1, $z) >= 4
                     Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass()));
                     if (!$ev->isCancelled()) {
                         $this->getLevel()->setBlock($block, $ev->getNewState());
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 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 Mycelium()));
                 if (!$ev->isCancelled()) {
                     $this->getLevel()->setBlock($block, $ev->getNewState());
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
 public function onUpdate($type)
 {
     if ($type === Level::BLOCK_UPDATE_RANDOM) {
         $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() === 0xf && $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());
                     }
                 }
             }
         }
     }
 }