public function onPlayerMove(PlayerMoveEvent $event) { $player = $event->getPlayer(); if ($player instanceof Player) { if ($player->getLevel()->getName() === $this->plugin->vipLevelName) { if (isset($this->plugin->statueManager->npcsSpawns[$player->getName()])) { return; } foreach ($this->plugin->statueManager->npcs as $xnpc) { if ($xnpc instanceof StatueModel) { if ($player->getLevel()->getName() === $xnpc->levelName) { $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 < 12 || $dff == 0) { $builder = new StatueBuilder($this->plugin); $builder->displayStatues($player, $this->plugin->statueManager->npcs); $this->plugin->statueManager->npcsSpawns[$player->getName()] = $player->getName(); } } } } } } }
private function moveStatues(GameLevelModel $lv) { $i = mt_rand(1, 16); if ($i < 5) { foreach ($this->plugin->statueManager->npcs as $npc) { $i = mt_rand(1, 12); if ($i === 2 || $i === 3 || $i === 5) { if ($npc->type === "npc") { StatueBuilder::moveStatue($npc); StatueBuilder::animateStatue($npc); } } elseif ($i === 2 || $i === 5 || $i === 7) { if ($npc instanceof StatueModel) { if ($npc->type === "npc") { if ($npc->particles != null) { MagicUtil::addParticles($lv->level, $npc->particles, new Position($npc->position->x, $npc->position->y + 1, $npc->position->z), 200); } } } } } } }
/** * 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); } } } } }
public function spawnHallOfFrameWinners() { // update podium $topWinners = $this->pgin->profileManager->retrieveTopPlayers(); $level = $this->getPlugIn()->hubLevel; $winners = []; if (count($topWinners) == 1) { $goldplayer = $topWinners[0]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer; $npos = $this->getGoldItemCasePos(); $eid = 10000; StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD); $npos->y = $npos->y - 0.25; self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET); self::spawnCaseItem($npos, $eid . "11", Item::FIRE); } if (count($topWinners) == 2) { $goldplayer = $topWinners[0]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer; $silverplayer = $topWinners[1]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["silver"] = $silverplayer; $npos = $this->getGoldItemCasePos(); $eid = 20000; StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET); self::spawnCaseItem($npos, $eid . "11", Item::FIRE); $eid = mt_rand(3000, 30000); $npos = $this->getSilverItemCasePos(); StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::GOLD_SWORD); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "2", Item::GOLD_HELMET); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "11", Item::FIRE); } if (count($topWinners) == 3) { $goldplayer = $topWinners[0]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer; $silverplayer = $topWinners[1]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["silver"] = $silverplayer; $brownseplayer = $topWinners[2]["pname"]; $this->getPlugIn()->statueManager->npcsPodium["brownse"] = $brownseplayer; $eid = 10000; $npos = $this->getGoldItemCasePos(); StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET); self::spawnCaseItem($npos, $eid . "11", Item::FIRE); $eid = 20000; $npos = $this->getSilverItemCasePos(); StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::GOLD_SWORD); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "2", Item::GOLD_HELMET); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "11", Item::FIRE); $eid = 30000; $npos = $this->getBrownseItemCasePos(); StatueBuilder::removeNPC2($eid, $npos); self::spawnCaseItem($npos, $eid, Item::BOW); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "2", Item::ARROW); $npos->x = $npos->x - 0.25; self::spawnCaseItem($npos, $eid . "11", Item::FIRE); } }