public function onRun($currentTick)
 {
     if (count($this->plugin->storage->arenaList > 0)) {
         foreach ($this->plugin->storage->arenaList as $arena) {
             $loop = false;
             $block = false;
             if ($arena->gameState == ArenaState::WAITING) {
                 if (count($arena->playersInArena) >= $arena->minPlayers) {
                     $arena->gameState = ArenaState::STARTING;
                     $arena->timer = $arena->timeInLobbyUntilStart;
                     ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-" . $arena->timeInLobbyUntilStart);
                 }
             } else {
                 if ($arena->gameState == ArenaState::STARTING) {
                     $arena->timer -= 1;
                     if ($arena->timer > 0) {
                         if ($arena->timer == 60) {
                             ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-60");
                         } else {
                             if ($arena->timer == 30) {
                                 ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-30");
                             } else {
                                 if ($arena->timer == 10) {
                                     ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-10");
                                 } else {
                                     if ($arena->timer == 5) {
                                         // for (Player pl : $arena->playersInArena) {
                                         // pl.playSound(pl.getLocation(),  Sound.ORB_PICKUP, 1, 0);
                                         // }
                                         ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-5");
                                     } else {
                                         if ($arena->timer == 4) {
                                             // for (Player pl : $arena->playersInArena) {
                                             // pl.playSound(pl.getLocation(),
                                             // Sound.ORB_PICKUP, 1, 0);
                                             // }
                                             ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-4");
                                         } else {
                                             if ($arena->timer == 3) {
                                                 // for (Player pl : $arena->playersInArena) {
                                                 // pl.playSound(pl.getLocation(),
                                                 // Sound.ORB_PICKUP, 1, 1);
                                                 // }
                                                 ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-3");
                                             } else {
                                                 if ($arena->timer == 2) {
                                                     // for (Player pl : $arena->playersInArena) {
                                                     // pl.playSound(pl.getLocation(),
                                                     // Sound.ORB_PICKUP, 1, 1);
                                                     // }
                                                     ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-2");
                                                 } else {
                                                     if ($arena->timer == 1) {
                                                         // for (Player pl : $arena->playersInArena) {
                                                         // pl.playSound(pl.getLocation(),
                                                         // Sound.ORB_PICKUP, 1, 2);
                                                         // }
                                                         ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaIsStarting"], "1-1");
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     } else {
                         $arena->gameState = ArenaState::INGAME;
                         $arena->timer = $arena->gameTime;
                         ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["lobbyArenaStarted"], "secs-" . $arena->waitingTimeSeeker);
                         for ($i = $arena->amountSeekersOnStart; $i > 0; $i--) {
                             $loop = true;
                             $seeker = mt_rand(0, count($arena->playersInArena) - 1);
                             foreach ($arena->playersInArena as $playerCheck) {
                                 if ($this->plugin->storage->choosenSeeker[$playerCheck] != null) {
                                     if ($this->plugin->storage->choosenSeeker[$playerCheck]) {
                                         $seeker = $playerCheck;
                                         unset($this->plugin->storage->choosenSeeker[$playerCheck]);
                                     } else {
                                         if ($seeker == $playerCheck) {
                                             $i++;
                                             $loop = false;
                                         }
                                     }
                                 }
                             }
                             if ($loop) {
                                 if (!in_array($seeker, $arena->seekers)) {
                                     ArenaHandler::sendFMessage($arena, "%TAG%NPlayer %A%seeker%%N has been choosen as seeker!", "seeker-" . $seeker->getName());
                                     $arena->seekers[] = $seeker;
                                     $seeker->teleport($arena->seekersWarp);
                                     $seeker . getInventory()->clearAll();
                                     $this->plugin->storage->seekertime[$seeker] = $arena->waitingTimeSeeker;
                                 } else {
                                     $i++;
                                 }
                             }
                         }
                         foreach ($arena->playersInArena as $arenaPlayer) {
                             if (!in_array($arenaPlayer, $arena->seekers)) {
                                 $arenaPlayer->getInventory()->clearAll();
                                 $block = $arena->disguiseBlocks[mt_rand(0, count($arena->disguiseBlocks))];
                                 if ($this->plugin->storage->choosenBlock[$arenaPlayer] != null) {
                                     $block = $this->plugin->storage->choosenBlock[$arenaPlayer];
                                     unset($this->plugin->storage->choosenBlock[$arenaPlayer]);
                                 }
                                 DisguiseAPI::disguiseToAll($arenaPlayer, $block->getID());
                                 $arenaPlayer->teleport($arena->hidersWarp);
                                 $blockCount = Item::get(5);
                                 $blockCount->setDurability($block->getMaxDurability());
                                 $arenaPlayer . getInventory()->setItem(8, $blockCount);
                                 $arenaPlayer . getInventory()->setArmorItem(0, $block);
                                 $this->plugin->storage->pBlock[$arenaPlayer] = $block;
                                 if ($block . getDurability() != 0) {
                                     MessageM::sendFMessage($arenaPlayer, "%TAG%NYou're disguised as a(n) '%A%block%%N' block.", "block-" . block . getType()->name() . replaceAll("_", "") . replaceAll("BLOCK", "") . toLowerCase() . ":" . block . getDurability());
                                 } else {
                                     MessageM . sendFMessage($arenaPlayer, $this->plugin->storage->message->get("normal")["ingameBlock"], "block-" . $block . getType()->name() . replaceAll("_", "") . replaceAll("BLOCK", "") . toLowerCase());
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($arena->seekers as $player) {
                 if ($player->getInventory()->getItem(0) == null || $player->getInventory()->getItem(0)->getID() != Item::DIAMOND_SWORD) {
                     $player->getInventory() . setItem(0, Item::DIAMOND_SWORD);
                     $player->getInventory() . setArmorItem(0, Item::IRON_HELMET);
                     $player->getInventory() . setArmorItem(1, Item::IRON_CHESTPLATE);
                     $player->getInventory() . setArmorItem(2, Item::IRON_LEGGINGS);
                     $player->getInventory() . setArmorItem(3, Item::IRON_BOOTS);
                     //$player->playSound(player.getLocation(), Sound.ANVIL_USE, 1, 1);
                 }
                 if ($this->plugin->storage->seekertime[$player] != null) {
                     $this->plugin->storage->seekertime[$player] -= 1;
                     if ($this->plugin->storage->seekertime[$player] <= 0) {
                         $player->teleport($arena->hidersWarp);
                         unset($this->plugin->storage->seekertime[$player]);
                         ArenaHandler::sendFMessage(arena, $this->plugin->storage->message->get("normal")["ingameSeekerSpawned"], "playername-" . player . getName());
                     }
                 }
             }
             if ($arena->gameState == ArenaState::INGAME) {
                 $arena->timer -= 1;
                 if ($arena->timer > 0) {
                     if ($arena->timer == $arena->gameTime - $arena->timeUntilHidersSword) {
                         $sword = Item::WOOD_SWORD;
                         //$sword->addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);
                         foreach ($arena->playersInArena as $arenaPlayer) {
                             if (!in_array($arenaPlayer, $arena->seekers)) {
                                 $arenaPlayer->getInventory()->addItem($sword);
                                 MessageM . sendFMessage($arenaPlayer, $this->plugin->storage->message->get("normal")["ingameGivenSword"]);
                             }
                         }
                     }
                     if ($arena->timer == 190) {
                         ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-190");
                     } else {
                         if ($arena->timer == 60) {
                             ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-60");
                         } else {
                             if ($arena->timer == 30) {
                                 ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-30");
                             } else {
                                 if ($arena->timer == 10) {
                                     ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-10");
                                 } else {
                                     if ($arena->timer == 5) {
                                         //$arena->lobbyWarp.getWorld().playSound($arena->lobbyWarp, Sound.ORB_PICKUP, 1, 0);
                                         ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-5");
                                     } else {
                                         if ($arena->timer == 4) {
                                             //$arena->lobbyWarp.getWorld().playSound($arena->lobbyWarp, Sound.ORB_PICKUP, 1, 0);
                                             ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-4");
                                         } else {
                                             if ($arena->timer == 3) {
                                                 //$arena->lobbyWarp.getWorld().playSound($arena->lobbyWarp, Sound.ORB_PICKUP, 1, 1);
                                                 ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-3");
                                             } else {
                                                 if ($arena->timer == 2) {
                                                     //$arena->lobbyWarp.getWorld().playSound($arena->lobbyWarp, Sound.ORB_PICKUP, 1, 1);
                                                     ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-2");
                                                 } else {
                                                     if ($arena->timer == 1) {
                                                         $arena->lobbyWarp . getWorld() . playSound($arena->lobbyWarp, Sound . ORB_PICKUP, 1, 2);
                                                         ArenaHandler::sendFMessage($arena, $this->plugin->storage->message->get("normal")["ingameArenaEnd"], "1-1");
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     ArenaHandler::hidersWin(arena);
                     return;
                 }
                 foreach ($arena->playersInArena as $arenaPlayer) {
                     if (!$arena->seekers . contains($arenaPlayer)) {
                         $pLoc = new Position($arenaPlayer->getX() - 0.5, $arenaPlayer->getY(), $arenaPlayer->getZ() - 0.5, $arenaPlayer->getLevel());
                         $moveLoc = $this->plugin->storage->moveLoc[$arenaPlayer];
                         $block = $arenaPlayer->getInventory()->getItem(8);
                         if ($block == null && $this->plugin->storage->pBlock[$arenaPlayer] != null) {
                             $block = $this->plugin->storage->pBlock[$arenaPlayer];
                             $arenaPlayer->getInventory()->setItem(8, $block);
                         }
                         if ($moveLoc != null) {
                             if ($moveLoc->getX() == $pLoc->getX() && $moveLoc->getY() == $pLoc->getY() && $moveLoc->getZ() == $pLoc->getZ()) {
                                 if ($block->getSize() > 1) {
                                     $block->setAmount($block->getSize() - 1);
                                 } else {
                                     $pBlock = $player->getLocation()->getBlock();
                                     if ($pBlock->getType()->equals(Item::AIR) || $pBlock->getType()->equals(Item::WATER) || $pBlock->getType()->equals(Block::STILL_WATER)) {
                                         if ($pBlock->getType()->equals(Item::WATER) || $pBlock->getType()->equals(Item::STATIONARY_WATER)) {
                                             $this->plugin->storage->hiddenLocWater . put($player, true);
                                         } else {
                                             $this->plugin->storage->hiddenLocWater . put($player, false);
                                         }
                                         $arrayOfPlayer = array();
                                         if (DisguiseAPI . isDisguised($player)) {
                                             DisguiseAPI . undisguiseToAll(player);
                                             $j = count($arrayOfPlayer = $this->plugin->getServer()->getgetOnlinePlayers());
                                             for ($i = 0; $i < $j; $i++) {
                                                 $pl = $arrayOfPlayer[$i];
                                                 if ($pl->getID() != $player->getID()) {
                                                     $pl->hidePlayer($player);
                                                     $pl->sendBlockChange($pBlock->getLocation(), $block->getType(), $block->getDurability());
                                                 }
                                             }
                                             //$block->addUnsafeEnchantment(Enchantment::DURABILITY, 10);
                                             //$player->playSound($pLoc, Sound.ORB_PICKUP, 1, 1);
                                             $this->plugin->storage->hiddenLoc[$player] = $moveLoc;
                                             MessageM . sendFMessage($player, $this->plugin->storage->message->get("normal")["ingameNowSolid"], $block->toString());
                                         }
                                         $j = count($arrayOfPlayer = $this->plugin->getServer()->getgetOnlinePlayers());
                                         for ($i = 0; $i < $j; $i++) {
                                             $pl = $arrayOfPlayer[$i];
                                             if ($pl->getID() != $player->getID()) {
                                                 $pl->hidePlayer($player);
                                                 $pl->sendBlockChange($pBlock->getLocation(), $block->getType(), $block->getDurability());
                                             }
                                         }
                                     } else {
                                         MessageM . sendFMessage($player, ConfigC::warning_ingameNoSolidPlace, "");
                                     }
                                 }
                             } else {
                                 $block->setAmount(5);
                                 if (!DisguiseAPI::isDisguised($player)) {
                                     SolidBlockHandler::makePlayerUnsolid($player);
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($arena->playersInArena as $arenaPlayer) {
                 $arenaPlayer->setLevel($arena->timer);
                 $arenaPlayer->setGameMode(0);
             }
             //ScoreboardHandler::updateScoreboard($arena);
         }
         $this->plugin->signsHandler->updateSigns();
     }
 }
Esempio n. 2
0
/**
 * Action hear
 * It returns the positions that an element can smell, if these positions have an element
 *
 * @param Element Element
 *
 * @return array Positions
 */
function hear($element)
{
    $position = $element->getPosition();
    switch (get_class($element)) {
        case 'Rabbit':
            $hearRange = $_POST['hearRabbit'];
            break;
        case 'Wolf':
            $hearRange = $_POST['hearWolf'];
            break;
    }
    $rowStart = $position[0] - $hearRange;
    $colStart = $position[1] - $hearRange;
    $rowEnd = $position[0] + $hearRange;
    $colEnd = $position[1] + $hearRange;
    $numRabbit = 0;
    $numWolf = 0;
    $numCarrot = 0;
    while ($rowStart <= $rowEnd) {
        while ($colStart <= $colEnd) {
            if (!isLocked($rowStart, $colStart)) {
                if (!($rowStart == $position[0] && $colStart == $position[1]) && get_class(getWorld()[$rowStart][$colStart]) != 'Ground') {
                    $currentElement = get_class(getWorld()[$rowStart][$colStart]);
                    switch ($currentElement) {
                        case 'Rabbit':
                            $numRabbit++;
                            break;
                        case 'Wolf':
                            $numWolf++;
                            break;
                        case 'Carrot':
                            $numCarrot++;
                            break;
                    }
                }
            }
            $colStart++;
        }
        $colStart = $position[1] - $hearRange;
        $rowStart++;
    }
    writeFileCSV('Log', array(getTime(), '', get_class($element), $element->getId(), '[ ' . $position[0] . ' - ' . $position[1] . ' ]', '', 'hear', 'Rabbit (' . $numRabbit . '), Wolf (' . $numWolf . '), Carrot(' . $numCarrot . ')'));
    return array('Rabbit' => $numRabbit, 'Wolf' => $numWolf, 'Carrot' => $numCarrot);
}