예제 #1
0
 /**
  * handle player presence
  *
  * @param Player $player        	
  * @param Position $from        	
  */
 public function npcHandlePlayerPresence(Player $player, Position $from)
 {
     foreach ($this->npcs as $xnpc) {
         $statuePos = $xnpc->position;
         $pp = new Vector2(round($player->x), round($player->z));
         $npc = new Vector2($statuePos->x, $statuePos->z);
         $dff = abs(round($pp->distance($npc)));
         if ($dff < 4 || $dff == 0) {
             $x = round($from->x);
             $y = round($from->y);
             $z = round($from->z);
             if (round($player->x) != $x || round($player->y) != $y || round($player->z) != $z) {
                 $posKey = round($statuePos->x) . "." . round($statuePos->y) . "." . round($statuePos->z);
                 if (isset($this->npcsPositions[$posKey])) {
                     $npc = $this->npcsPositions[$posKey];
                     $block = Item::get(Item::GLASS);
                     $direct = false;
                     $update = true;
                     $player->level->setBlock($statuePos, $block->getBlock(), $direct, $update);
                     StatueBuilder::refreshNPCEquipments($player, $npc);
                 }
             }
         }
     }
 }