pocketmine\event\entity\EntityGenerateEvent::getPosition PHP Method

getPosition() public method

public getPosition ( ) : Position
return pocketmine\level\Position
    public function getPosition()
    {
        return $this->position;
    }

Usage Example

Exemplo n.º 1
0
 /**
  * 刷僵尸计时器
  */
 public function MobGenerate()
 {
     foreach ($this->getServer()->getOnlinePlayers() as $p) {
         //$this->server->getLogger()->info("准备生成僵尸");
         $level = $p->getLevel();
         $max = 15;
         //if ($level->getTime() >= 13500) {  //是夜晚
         //$this->server->getLogger()->info("时间OK");
         $v3 = new Vector3($p->getX() + mt_rand(-$this->birth_r, $this->birth_r), $p->getY(), $p->getZ() + mt_rand(-$this->birth_r, $this->birth_r));
         for ($y0 = $p->getY() - 10; $y0 <= $p->getY() + 10; $y0++) {
             $v3->y = $y0;
             if ($this->whatBlock($level, $v3) == "block") {
                 //$this->server->getLogger()->info("方块OK");
                 $v3_1 = $v3;
                 $v3_1->y = $y0 + 1;
                 $v3_2 = $v3;
                 $v3_2->y = $y0 + 2;
                 $random = mt_rand(0, 1);
                 if ($level->getBlock($v3_1)->getID() == 0 and $level->getBlock($v3_2)->getID() == 0) {
                     //找到地面
                     /** @var Entity[] $zoC */
                     $zoC = [];
                     /** @var Entity[] $cowc */
                     $cowc = [];
                     foreach ($level->getEntities() as $zo) {
                         if ($zo instanceof Zombie) {
                             $zoC[] = $zo;
                         }
                         if ($zo instanceof Cow) {
                             $cowc[] = $zo;
                         }
                     }
                     if (count($zoC) > $max) {
                         for ($i = 0; $i < count($zoC) - $max; $i++) {
                             $zoC[$i]->kill();
                         }
                     } elseif ($random == 0 && $level->getTime() >= 13500) {
                         $pos = new Position($v3->x, $v3->y, $v3->z, $level);
                         $this->server->getPluginManager()->callEvent($ev = new EntityGenerateEvent($pos, Zombie::NETWORK_ID, EntityGenerateEvent::CAUSE_AI_HOLDER));
                         if (!$ev->isCancelled()) {
                             $this->spawnZombie($ev->getPosition());
                         }
                         //$this->server->getLogger()->info("生成1僵尸");
                     }
                     if (count($cowc) > $max) {
                         for ($i = 0; $i < count($cowc) - $max; $i++) {
                             $cowc[$i]->kill();
                         }
                     } elseif ($random == 1) {
                         $pos = new Position($v3->x, $v3->y, $v3->z, $level);
                         $this->server->getPluginManager()->callEvent($ev = new EntityGenerateEvent($pos, Cow::NETWORK_ID, EntityGenerateEvent::CAUSE_AI_HOLDER));
                         if (!$ev->isCancelled()) {
                             $this->spawnCow($ev->getPosition());
                         }
                         //$this->server->getLogger()->info("生成1牛");
                     }
                     break;
                 }
             }
         }
     }
 }