setGamemode() 공개 메소드

Sets the gamemode, and if needed, kicks the Player.
public setGamemode ( integer $gm ) : boolean
$gm integer
리턴 boolean
예제 #1
15
 private function checkInVIP(Player $player)
 {
     //if ($player->getLevel ()->getName () === $this->plugin->vipLevelName) {
     if (isset($this->vips[$player->getName()])) {
         $this->plugin->log("[HG] VIPPlayerListener->VIPCheck-IN: " . $player->getName());
         return true;
     } else {
         $vip = $this->plugin->profileManager->isPlayerVIP($player->getName());
         if (!$vip) {
             return false;
         }
         if (!$player->isOp()) {
             if (!$player->isSurvival()) {
                 $player->setGamemode(Player::SURVIVAL);
             }
         }
         $this->vips[$player->getName()] = $player->getName();
         $this->plugin->log("[HG] VIPPlayerListener->VIPCheck-IN: " . $player->getName());
         return true;
     }
     //}
     return false;
 }
예제 #2
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()]);
     }
 }
예제 #3
0
 public function participate(Player $player)
 {
     $soldier = new soldier($player);
     if ($player->isCreative()) {
         $player->setGamemode(0);
     }
     if (count($this->redteam->soldiers) < count($this->blueteam->soldiers)) {
         $soldier->setTeam($this->redteam);
         $color = TextFormat::RED;
     } else {
         $soldier->setTeam($this->blueteam);
         $color = TextFormat::BLUE;
     }
     $soldier->getTeam()->soldiers[$player->getName()] = $soldier;
     $rank = RankProvider::getInstance()->getRank($player);
     $prefix = $color . $soldier->getTeam()->getTeamName() . TextFormat::GOLD;
     $rank->addPrefixs([$prefix]);
     $rank->setPrefix($prefix);
     $player->teleport($soldier->getTeam()->getSpawnPoint());
     $this->eventlistener->giveRandomItem($player);
     $this->soldiers[$player->getName()] = $soldier;
 }
예제 #4
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.");
     }
 }
예제 #5
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());
 }
예제 #6
0
 public function giveItemAndEffect(Player $player)
 {
     $player->setGamemode(2);
     $player->getInventory()->addItem(new Item(Item::MUSHROOM_STEW, 0, 1));
     $this->giveEffect($player);
 }
예제 #7
-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);
 }