public function teleport(Player $player) { if ($this->message !== null) { $player->sendMessage($this->message); } if ($this->position instanceof Position) { if ($this->position->isValid()) { if ($this->position instanceof WeakPosition) { $this->position->updateProperties(); } //Server::getInstance()->getLogger()->info($this->position->x . " : " . $this->position->y . " : " . $this->position->z); $player->teleport($this->position); } else { $player->sendMessage($this->getApi()->executeTranslationItem("level-not-loaded-warp")); } } else { $plugin = $player->getServer()->getPluginManager()->getPlugin("FastTransfer"); if ($plugin instanceof PluginBase && $plugin->isEnabled() && $plugin instanceof FastTransfer) { $plugin->transferPlayer($player, $this->address, $this->port); } else { $player->getServer()->getPluginManager()->getPlugin("SimpleWarp")->getLogger()->warning("In order to use warps tp other servers, you must install " . TextFormat::AQUA . "FastTransfer" . TextFormat::RESET . "."); $player->sendPopup(TextFormat::RED . "Warp failed!" . TextFormat::RESET); } } }
public function warpTimeout(Player $player, $warp) { if (!isset($this->timeout[$warp]["cancel"][$player->getName()])) { $player->sendMessage(TextFormat::DARK_AQUA . "[ 워프 ] [ 시간제한 ] 이전 위치로 복귀되었습니다."); $player->teleport($this->timeout[$warp][$player->getName()]); unset($this->timeout[$warp][$player->getName()]); unset($this->timeout[$warp]["cancel"][$player->getName()]); } }
private function handleLobbyFallOfFameExitSign(Player $player, $block) { $x = $this->plugin->getConfig()->get("hg_lobby_hof_sign_exit_x"); $y = $this->plugin->getConfig()->get("hg_lobby_hof_sign_exit_y"); $z = $this->plugin->getConfig()->get("hg_lobby_hof_sign_exit_z"); if (round($x) === round($block->x) && round($y) === round($block->y) && round($z) === round($block->z)) { $player->teleport($this->plugin->hubSpawnPos); } }
public function work(Player $interactedPlayer) { if (FreedomDive::getInstance()->getWorldManagerByWorldFolderName($this->worldName)->canJoinGame()) { $interactedPlayer->teleport(Server::getInstance()->getLevelByName($this->worldName)->getSpawnLocation()); FreedomDive::getInstance()->getWorldManagerByWorldFolderName($this->worldName)->onPlayerMoveToWorld($interactedPlayer); } else { $interactedPlayer->sendMessage(FreedomDive::getTranslation("CANNOT_JOIN")); } }
public function onRun(array $args, Faction $faction, Player $player) { // TODO find the correct named home if (isset($args[0])) { $home = $faction->getHome($args[0]); if ($home instanceof Position) { $player->teleport($home); return "You have been teleported to {$args['0']}."; } return "There is no such home named \"{$args['0']}\"!"; } $home = $faction->getHome(); if ($home instanceof Position) { $player->teleport($home); return "You have been teleported to your faction home."; } return "Your faction doesn't seem to have a home."; }
public function restorePlayer(Player $player) { if (isset($this->players[$player->getName()])) { $get = $this->players[$player->getName()]; $player->setGamemode($get["gamemode"]); $player->getInventory()->setContents(unserialize($get["inventory"])); $player->getInventory()->setArmorContents(unserialize($get["armor"])); $player->teleport(unserialize($get["spawn"])); unset($this->players[$player->getName()]); } }
/** * Teleport a player near a location * @param Player $player - player to be teleported * @param Position $target - location to teleport nearby * @param int $rand - how far to randomize positions * @param int|null $dist - if not null it will make sure that new location is upto $dist * @return bool - true on success, false on failure */ public static function tpNearBy(Player $player, Position $target, $rand = 3, $dist = null) { $mv = new Vector3($target->getX() + mt_rand(-$rand, $rand), $target->getY(), $target->getZ() + mt_rand(-$rand, $rand)); $pos = $target->getLevel()->getSafeSpawn($mv); if ($dist !== null) { $newdist = $pos->distance($target); if ($newdist > $dist) { return false; } // Will not get close enough! } $player->teleport($pos); return true; }
public function h_onDamage(EntityDamageEvent $event) { if ($event->getCause() === EntityDamageEvent::CAUSE_VOID) { $event->setCancelled(); $this->player->teleport($this->player->getLevel()->getSpawnLocation()); } if (!$this->isLoggedIn()) { $event->setCancelled(); $this->disableTpListener = true; $this->teleport($this->spawningPosition); $this->disableTpListener = false; } /*if($event instanceof EntityDamageByEntityEvent){ $target = $this->getPlayer(); $hitter = $event->getDamager(); if(!($hitter instanceof Player)){ return; } if((pow($hitter->x - $target->x, 2) + pow($hitter->z - $target->z, 2)) <= 2.25){ return; } $dir = $hitter // ->add(0, $hitter->getEyeHeight(), 0) ->subtract( $target // ->add(0, $target->height / 2, 0) ); $yaw = rad2deg(atan2($dir->z, $dir->x)) + 90; // if(($len = $dir->length()) === 0){ // $len = 1; // } // $pitch = rad2deg(asin($dir->y / $len)); if((180 - abs(abs($hitter->yaw - $yaw) - 180)) > 90 // or (180 - abs(abs($hitter->pitch - $pitch) - 180)) > 60 ){ $event->setCancelled(); $hitter->sendMessage("You can't attack players behind you!"); } }*/ }
/** * * @param Player $player * @param string $jail * @return boolean */ public function teleportToJail(Player $player, $jail) { $this->getServer()->getPluginManager()->callEvent($event = new PlayerTeleportToJailEvent($this, $player, $jail)); if ($event->isCancelled()) { return false; } $t = $this->data2->getAll(); $x = $t[$jail]["x"]; $y = $t[$jail]["y"]; $z = $t[$jail]["z"]; $world = $this->getServer()->getLevelByName($t[$jail]["world"]); $player->teleport(new Position($x, $y, $z, $world)); return true; }
public function cmdAccept(Player $a, Player $b) { $k = implode(":", [strtolower($b->getName()), strtolower($a->getName())]); if (!isset($this->requests[$k])) { $a->sendMessage(mc::_("No teleport request from %1%", $b->getDisplayName())); return true; } $type = $this->requests[$k]; unset($this->requests[$k]); switch ($type) { case "tpa": if (!MPMU::access($a, "gb.cmd.tpaccept.tpask")) { return true; } $a->sendMessage(mc::_("Accepted teleport request from %1%", $b->getDisplayName())); $b->sendMessage(mc::_("%1% accepted your TPASK request", $a->getDisplayName())); $b->teleport($a); return true; case "tph": if (!MPMU::access($a, "gb.cmd.tpaccept.tpahere")) { return true; } $a->sendMessage(mc::_("Accepted teleport request to %1%", $b->getDisplayName())); $b->sendMessage(mc::_("%1% accepted your TPAHERE request", $a->getDisplayName())); $a->teleport($b); return true; } $this->owner->getLogger()->error(mc::_("Invalid teleport request: %1%", $type)); return false; }
public function teleportPlayer(Player $player, Position $pos) { $player->teleport($pos, $player->getYaw(), $player->getPitch()); $player->sendMessage("Teleported!"); }
public function delayRespawn(Player $player, Position $position) { $player->teleport($position); }
public function teleportToHub_OnJoin(Player $player) { $temp = $this->getConfig()->getAll(); if (isset($temp["hub"])) { if ($player->getLevel()->getName() != $temp["hub"]["world"]) { if (Server::getInstance()->loadLevel($temp["hub"]["world"]) != false) { $player->teleport(new Vector3($temp["hub"]["X"], $temp["hub"]["Y"], $temp["hub"]["Z"], $this->getServer()->getLevelByName($temp["hub"]["world"])), $temp["hub"]["Yaw"], $temp["hub"]["Pitch"]); if ($temp["enable-hub-message"] == true && $temp["show-messages-onjoin"] == true) { $player->sendMessage($this->translateColors("&", $this->getHubMessage($player))); } } else { $player->sendMessage($this->translateColors("&", $this->getNoWorldMessage())); } } else { $player->teleport(new Vector3($temp["hub"]["X"], $temp["hub"]["Y"], $temp["hub"]["Z"]), $temp["hub"]["Yaw"], $temp["hub"]["Pitch"]); if ($temp["enable-hub-message"] == true && $temp["show-messages-onjoin"] == true) { $player->sendMessage($this->translateColors("&", $this->getHubMessage($player))); } } } else { $player->sendMessage($this->translateColors("&", $this->getNoHubMessage())); } }
private function jail(Player $player) { /*--Get player coords and ground coords--*/ $px = round($player->getX()); $py = round($player->getY()); $pz = round($player->getZ()); $gx = round($player->getFloorX()); $gy = round($player->getFloorY()); $gz = round($player->getFloorZ()); $level = $player->getLevel(); /*--Define the position of the 16 blocks around the player--*/ $pos1 = new Vector3($px + 1, $py, $pz); $pos2 = new Vector3($px + 1, $py, $pz + 1); $pos3 = new Vector3($px - 1, $py, $pz + 1); $pos4 = new Vector3($px + 1, $py, $pz - 1); $pos5 = new Vector3($px, $py, $pz + 1); $pos6 = new Vector3($px - 1, $py, $pz); $pos7 = new Vector3($px, $py, $pz - 1); $pos8 = new Vector3($px - 1, $py + 1, $pz - 1); $pos9 = new Vector3($px + 1, $py + 1, $pz); $pos10 = new Vector3($px + 1, $py + 1, $pz + 1); $pos11 = new Vector3($px - 1, $py + 1, $pz + 1); $pos12 = new Vector3($px + 1, $py + 1, $pz - 1); $pos13 = new Vector3($px, $py + 1, $pz + 1); $pos14 = new Vector3($px - 1, $py + 1, $pz); $pos15 = new Vector3($px, $py + 1, $pz - 1); $pos16 = new Vector3($px - 1, $py + 1, $pz - 1); /*--And place the blocks of bedrock--*/ $this->getServer()->getLevel($level)->setBlock($pos1, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos2, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos3, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos4, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos5, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos6, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos7, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos8, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos9, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos10, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos11, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos12, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos13, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos14, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos15, Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock($pos16, Block::get(7, 0)); /*--Place the blocks under and above the player--*/ $this->getServer()->getLevel($level)->setBlock(new Vector3($px, $py + 2, $pz), Block::get(7, 0)); $this->getServer()->getLevel($level)->setBlock(new Vector3($gx, $gy, $gz), Block::get(7, 0)); /*<--Re-Teleport the player to the original position 'cause he can escape before the blocks are placed-->*/ $tppos = new Position($px, $py, $pz, $level); $player->teleport($tppos); return true; }
public function removePlayer(Player $player) { if (isset($this->players[$player->getName()])) { unset($this->players[$player->getName()]); unset($player->arena); $player->teleport(Server::getInstance()->getDefaultLevel()->getSafeSpawn()); $player->setGamemode($player->prevGamemode); unset($player->prevGamemode); $player->getInventory()->remove($player->breakItem); unset($player->breakItem); return true; } else { $player->sendMessage("You couldn't be removed from the arena."); } }
/** * * Handle Tap On Arena Signs * * @param Player $player * @param unknown $b * @return boolean */ public function handleTapOnArenaSigns(Player $player, $b) { foreach ($this->arenas as &$arena) { if ($arena instanceof MapArenaModel) { // tap on vote sign if (!empty($arena->signVote)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($arena->signVote->x) . "." . round($arena->signVote->y) . "." . round($arena->signVote->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { if (!$arena->published) { $player->sendMessage("[HG] This map is not available yet! please try another one."); break; } $players[] = $player; $player->getLevel()->addSound(new ClickSound($player->getPosition()), $players); MagicUtil::addParticles($player->getLevel(), "reddust", $arena->signVote, 20); if ($arena->vote === 0 && isset($arena->votedPlayers[$player->getName()])) { unset($arena->votedPlayers[$player->getName()]); } if (!isset($arena->votedPlayers[$player->getName()])) { $arena->vote++; $arena->votedPlayers[$player->getName()] = $player; } else { $player->sendMessage(TextFormat::YELLOW . "[HG] Already voted! [" . $arena->displayName . "]"); } $player->sendMessage(TextFormat::GRAY . "[HG] " . $arena->displayName . " map votes [" . TextFormat::YELLOW . $arena->vote . TextFormat::GRAY . "]"); break; } } if (!empty($arena->signExit) && !empty($arena->arenaExitPos)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($arena->signExit->x) . "." . round($arena->signExit->y) . "." . round($arena->signExit->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { $players[] = $player; $player->level->addSound(new ClickSound($player->getPosition()), $players); MagicUtil::addParticles($player->getLevel(), "portal", $player->getPosition(), 100); unset($arena->joinedPlayers[$player->getName()]); unset($arena->livePlayers[$player->getName()]); $player->teleport($arena->arenaExitPos); break; } } if (!empty($arena->signJoin) && !empty($arena->arenaEnterPos)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($arena->signJoin->x) . "." . round($arena->signJoin->y) . "." . round($arena->signJoin->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { $players[] = $player; $player->level->addSound(new ClickSound($player->getPosition()), $players); MagicUtil::addParticles($player->getLevel(), "portal", $player->getPosition(), 100); MapPortal::teleportToMap($arena->levelName, $player); $player->teleport($arena->arenaEnterPos); break; } } } } }
public function onRun($t) { $this->player->teleport($this->pos); }
public function killHandler(Player $entity) { // $this->getServer()->broadcastMessage("killHandler tries to handle"); // player add deaths // $nr = $this->games[strtolower($entity->getLevel()->getName())]["players"][$entity->getName()]["deaths"] + 1; // $this->games[strtolower($entity->getLevel()->getName())]["players"][$entity->getName()]["deaths"] = $nr; // save to config.. WHY EVEN?! can't i do ranks just only by times played and wins? $this->getPlayerConfig(); $this->players->getAll()[$entity->getName()]["deaths"]++; $this->setPlayerConfig(); $entity->sendTip(TextFormat::RED . "You fell into void"); $entity->setGamemode(3); $entity->teleport($entity->getLevel()->getSpawnLocation()); $this->leaveLobby($entity, $entity->getLevel()); // if killer add kills /* * if($killer !== null){ * $players = array(); * foreach(array_keys($this->games[strtolower($killer->getLevel()->getName())]["players"]) as $player){ * array_push($players, $this->getServer()->getPlayer($player)); * } * $this->getServer()->broadcastMessage(TextFormat::RED . $killer->getDisplayName() . " killed " . $entity->getDisplayName(), $players); * $this->games[strtolower($killer->getLevel()->getName())]["players"][$killer->getName()]["kills"]++; * // add arrow * $killer->getInventory()->addItem(Item::fromString("Arrow")); * // save to config.. WHY EVEN?! can't i do ranks just only by times played and wins? * $this->getPlayerConfig(); * $this->players->getAll()[$killer->getName()]["kills"]++; * $this->setPlayerConfig(); * $killer->sendTip(TextFormat::GOLD . "Kills: " . TextFormat::GREEN . $this->games[strtolower($killer->getLevel()->getName())]["players"][$killer->getName()]["kills"] . TextFormat::LIGHT_PURPLE . " | " . TextFormat::GOLD . "Deaths: " . TextFormat::RED . $this->games[strtolower($killer->getLevel()->getName())]["players"][$killer->getName()]["deaths"]); */ if (isset($this->games[strtolower($entity->getLevel()->getName())])) { if (count(array_keys($this->games[strtolower($entity->getLevel()->getName())]["players"])) <= 1) { $this->stopGame($entity->getLevel(), $this->getServer()->getPlayer(array_keys($this->games[strtolower($entity->getLevel()->getName())]["players"])[0])); return; } // } // else{ $this->getServer()->broadcastTip(TextFormat::RED . $entity->getName() . " fell into void\n" . TextFormat::GREEN . count(array_keys($this->games[strtolower($entity->getLevel()->getName())]["players"])) . " players remaining"); } // } // end if died too often /* * if($nr >= $this->getConfig()->getNested("lobby-defaults.maxdeaths")){ * $entity->setGamemode(3); * $entity->sendMessage(TextFormat::RED . "You died too many times."); * // leave or better let the player spectate? if spectate then the player has to do /spleef leave.. but the game will run until the player will do this * } * else{ * $this->respawnPlayer($entity, strtolower($entity->getLevel()->getName())); * } */ $this->leaveLobby($entity, $entity->getLevel()); }
/** * Handle player entry to CTF game world * * @param Player $player */ public function handlePlayerEntry(Player $player) { // send player to lobby if specify if ($this->getSetup()->isEnableSpanwToLobby()) { $lobbyPos = $this->getSetup()->getLobbyPos(); $player->teleport($lobbyPos); return; } // player should be outside of arena $gameWorld = $this->getSetup()->getCTFWorldName(); if (strtolower($player->level->getName()) == strtolower($gameWorld)) { // send entry point $gameWorldPos = $this->getSetup()->getGamePos(CTFSetup::CTF_GAME_ENTRY); $player->level->getChunk($gameWorldPos->x, $gameWorldPos->z); $player->level->getBlockLightAt($gameWorldPos->x, $gameWorldPos->y, $gameWorldPos->z); $player->teleport(new Vector3($gameWorldPos->x, $gameWorldPos->y, $gameWorldPos->z)); //update signs $this->updateGameSigns($player); return; } //grant player permissions $this->grantPlayerDefaultPermissions($player); }
public function onPlayerDrown(Player $player) { if ($this->currentStatus === self::STATUS_INGAME) { $this->player[$player->getName()]["status"] = self::PLAYER_STATUS_FALLEN; $this->broadcastMessageForPlayers(FreedomDive::getTranslation("PLAYER_FALLEN", $player->getName())); $this->playerCountChange(); } else { $player->teleport(Server::getInstance()->getLevelByName($this->worldFolderName)->getSpawnLocation()); } }
public function ReSpawn(Player $player) { $pos = new Position($this->x, $this->y + 3, $this->z, $player->getLevel()); $player->teleport($pos); }
/** * Warp to the company office * * @param string $companyname * @param player $player * @return true|false */ public function visitCompany($companyname, Player $player) { $companyData = $this->getCompanyData($companyname); $officePos = explode(",", $companyData["officepos"]); if (!isset($officePos[3])) { return false; } // POS WRONG if ($player->getLevel()->getFolderName() != $officePos[3]) { if ($this->plugin instanceof Plugin) { $level = $this->plugin->getServer()->getLevelByName($officePos[3]); if ($level == null) { return false; } // LEVEL NOT EXIST $position = new Position($officePos[0], $officePos[1], $officePos[2], $level); } else { return false; // PLUGIN WRONG } } else { $position = new Vector3($officePos[0], $officePos[1], $officePos[2]); } return $player->teleport($position); // TODO 해당 위치로 워프되었습니다 ! }
public function teleport(Player $player, Position $pos) { $player->teleport($pos); }
public static final function teleportToMap($levelname, Player $player) { if (!$player->getServer()->isLevelLoaded($levelname)) { $ret = $player->getServer()->loadLevel($levelname); if (!$ret) { $player->sendMessage("[HG]Error, unable load World: " . $levelname); return; } } if (!$player->getServer()->isLevelGenerated($levelname)) { $player->sendMessage("[HG] world generation is not ready! try later."); return; } $level = $player->getServer()->getLevelByName($levelname); if (is_null($level)) { $player->sendMessage("[HG] Error, unable access world: " . $levelname); return; } $player->getLevel()->updateAllLight($player->getPosition()); $player->getLevel()->updateAround($player->getPosition()); $player->teleport($level->getSafeSpawn()); }
/** * Teleport a player to a plot * * @api * @param Player $player * @param Plot $plot * @return bool */ public function teleportPlayerToPlot(Player $player, Plot $plot) { $plotLevel = $this->getLevelSettings($plot->levelName); if ($plotLevel === null) { return false; } $pos = $this->getPlotPosition($plot); $plotSize = $plotLevel->plotSize; $pos->x += floor($plotSize / 2); $pos->z -= 1; $pos->y += 1; $player->teleport($pos); return true; }
public function joinGame(Player $player) { if ($this->gamestatus === 0) { $number = mt_rand(1, 4); $level = $this->getServer()->getLevelByName($this->setting->get("match_world_name")); $x = $this->setting->get("pos" . $number . "x"); $y = $this->setting->get("pos" . $number . "y"); $z = $this->setting->get("pos" . $number . "z"); $pos = new Position($x, $y, $z, $level); array_push($this->players, $player->getName()); $player->teleport($pos); $player->sendMessage("Joining..."); } }
public function teleportToSpawn(Player $player) { if ($this->spawnPos === null) { return; } $team = $this->players[$player->getName()][2]; switch ($team) { case self::TEAM_BLUE: $player->teleport($this->spawnPos[1]); break; default: // RED team or not decided $player->teleport($this->spawnPos[0]); break; } }
/** * * @param GameLevelModel $lv * @param Player $player * @return boolean */ public function portalEnter(HungerGamesPlugIn $plugin, GameLevelModel $lv, Player $player) { if ($player->getLevel()->getName() != $lv->levelName) { return true; } if ($lv->insideLevelEntracePortal($player->getPosition())) { if (!isset($this->joinedPlayers[$player->getName()])) { if ($plugin->storyenforceaccess && $lv->type != 1) { $w = $plugin->storyManager->hasPlayerWonLevel($player->getName(), $lv->type - 1); if (!$w) { $player->sendMessage(TextFormat::RED . "[HG Story Mode Enabled]"); $player->sendMessage(TextFormat::YELLOW . "Required " . TextFormat::GOLD . "WIN " . TextFormat::YELLOW . "previous level before play this level!"); $player->getLevel()->addSound(new LaunchSound($player->getPosition()), array($player)); if ($player->isOp()) { $player->sendMessage(TextFormat::AQUA . "[Admin BY-PASS Story Mode Checking]"); } else { $player->teleport($lv->enterpos); return; } } } $this->joinedPlayers[$player->getName()] = $player; $message = TextFormat::GRAY . "[HG] [" . TextFormat::AQUA . $player->getName() . TextFormat::GRAY . "] joined " . $lv->displayName . " [" . TextFormat::GREEN . count($lv->joinedPlayers) . TextFormat::GRAY . " |" . TextFormat::WHITE . "minimal " . TextFormat::YELLOW . $lv->minPlayers . TextFormat::GRAY . "]"; $player->getServer()->broadcastMessage($message, $this->joinedPlayers); $lv->level->addSound(new DoorSound($player->getPosition()), $lv->joinedPlayers); $effect = MagicUtil::addEffect($player, Effect::STRENGTH); if ($effect != null) { $this->playersWithEffects[$player->getName()] = $effect; } if (!$player->isOp()) { if (!$player->isSurvival()) { $player->setGamemode(Player::SURVIVAL); } } $player->sendMessage(TextFormat::YELLOW . "[HG] Please wait here"); $player->sendMessage(TextFormat::GRAY . "[HG] The game auto start with minimal players"); } } else { if (isset($this->joinedPlayers[$player->getName()])) { $message = TextFormat::GRAY . "[ " . $player->getName() . " ] left " . $lv->displayName; $player->getServer()->broadcastMessage($message, $this->joinedPlayers); $lv->level->addSound(new DoorSound($player), $lv->joinedPlayers); unset($this->joinedPlayers[$player->getName()]); if (count($this->joinedPlayers) < $lv->minPlayers) { $lv->joinDownCounter = $lv->joinDownCounterReset; } foreach ($plugin->arenaManager->arenas as &$arena) { if ($arena instanceof MapArenaModel) { if (isset($arena->votedPlayers[$player->getName()])) { unset($arena->votedPlayers[$player->getName()]); if ($arena->vote >= 1) { $arena->vote--; } break; } } } if (isset($this->playersWithEffects[$player->getName()])) { $effect = $this->playersWithEffects[$player->getName()]; if ($effect != null) { $player->removeEffect($effect->getId()); unset($this->playersWithEffects[$player->getName()]); } } } } }
public function handleTapOnGameLevelSigns(Player $player, $b) { $success = true; foreach ($this->plugin->getAvailableLevels() as &$lv) { if ($lv instanceof GameLevelModel) { if (!empty($lv->signStats)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($lv->signStats->x) . "." . round($lv->signStats->y) . "." . round($lv->signStats->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { if ($lv->status != GameLevelModel::STATUS_AVAILABLE) { $player->sendMessage("[HG] The Hunger level #1 status [" . $lv->status . "]. Please join later."); return; } if (count($lv->joinedPlayers) >= $lv->maxPlayers) { $player->sendMessage("[HG] The Hunger level is full. Please join later."); return; } $player->sendMessage(TextFormat::WHITE . "[HG] " . $lv->name . " is available!"); break; } } if (!empty($lv->signJoin)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($lv->signJoin->x) . "." . round($lv->signJoin->y) . "." . round($lv->signJoin->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { if ($lv->status != GameLevelModel::STATUS_AVAILABLE) { $player->sendMessage("[HG] The Hunger level #1 status [" . $lv->status . "]. Please join later."); return; } if (count($lv->joinedPlayers) >= $lv->maxPlayers) { $player->sendMessage("[HG] The Hunger level is full. Please join later."); return; } $player->sendMessage(TextFormat::WHITE . "[HG] " . $lv->name . " is available!"); break; } } if (!empty($lv->signJoin2)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($lv->signJoin2->x) . "." . round($lv->signJoin2->y) . "." . round($lv->signJoin2->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { $players[] = $player; $player->getLevel()->addSound(new LaunchSound($player->getPosition()), $players); if (is_null($lv->enterpos)) { $this->plugin->log("[Error] Missing Game level entrance confguration"); } else { $player->teleport($lv->enterpos); } } } if (!empty($lv->signExit) && !empty($lv->exitPos)) { $blockPosKey = round($b->x) . "." . round($b->y) . "." . round($b->z); $casePosKey = round($lv->signExit->x) . "." . round($lv->signExit->y) . "." . round($lv->signExit->z); if ($blockPosKey === $casePosKey && $blockPosKey != "0.0.0") { $player->teleport($lv->exitPos); $this->handlePlayerLeaveTheGame($player); break; } } } } return $success; }
public function TeleportToTeamSpawn(Player $p, $team, $arena) { $p->setHealth(20); $p->setFood(20); $p->setGamemode(0); $p->getInventory()->clearAll(); $p->setExpLevel(0); $config = new Config($this->getDataFolder() . "Arenas/" . $arena . ".yml", Config::YAML); $welt = $config->getNested("Spawn." . $team . ".Welt"); $x = $config->getNested("Spawn." . $team . ".X"); $y = $config->getNested("Spawn." . $team . ".Y"); $z = $config->getNested("Spawn." . $team . ".Z"); $yaw = $config->getNested("Spawn." . $team . ".Yaw"); $pitch = $config->getNested("Spawn." . $team . ".Pitch"); if ($p->getLevel() != $this->getServer()->getLevelByName($welt)) { $p->teleport($this->getServer()->getLevelByName($welt)->getSafeSpawn(), 0, 0); } $p->teleport(new Vector3($x, $y, $z), $yaw, $pitch); }