teleport() public method

public teleport ( Vector3 $pos, float $yaw = null, float $pitch = null ) : boolean
$pos pocketmine\math\Vector3
$yaw float
$pitch float
return boolean
Esempio n. 1
1
 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()]);
     }
 }
Esempio n. 3
1
 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.";
 }
Esempio n. 6
0
 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()]);
     }
 }
Esempio n. 7
0
 /**
  * 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;
 }
Esempio n. 8
0
 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!");
     			}
     		}*/
 }
Esempio n. 9
0
 /**
  *
  * @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;
 }
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
 public function teleportPlayer(Player $player, Position $pos)
 {
     $player->teleport($pos, $player->getYaw(), $player->getPitch());
     $player->sendMessage("Teleported!");
 }
Esempio n. 12
0
 public function delayRespawn(Player $player, Position $position)
 {
     $player->teleport($position);
 }
Esempio n. 13
0
 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()));
     }
 }
Esempio n. 14
0
 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;
 }
Esempio n. 15
0
 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.");
     }
 }
Esempio n. 16
0
 /**
  *
  * 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);
 }
Esempio n. 18
0
 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);
 }
Esempio n. 20
0
 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());
     }
 }
Esempio n. 21
0
 public function ReSpawn(Player $player)
 {
     $pos = new Position($this->x, $this->y + 3, $this->z, $player->getLevel());
     $player->teleport($pos);
 }
Esempio n. 22
0
 /**
  * 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 해당 위치로 워프되었습니다 !
 }
Esempio n. 23
0
 public function teleport(Player $player, Position $pos)
 {
     $player->teleport($pos);
 }
Esempio n. 24
0
 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());
 }
Esempio n. 25
0
 /**
  * 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;
 }
Esempio n. 26
0
 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...");
     }
 }
Esempio n. 27
0
 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;
     }
 }
Esempio n. 28
0
 /**
  *
  * @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()]);
                 }
             }
         }
     }
 }
Esempio n. 29
-1
 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;
 }
Esempio n. 30
-6
 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);
 }