/** * 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); } } } } }