Edited some things

This commit is contained in:
Aaron Brock 2015-07-05 18:49:42 -04:00
parent 2c249e37b5
commit bac505f2cd
3 changed files with 47 additions and 20 deletions

View File

@ -9,6 +9,8 @@ use mineplex\plugin\core\updater\Updater;
use pocketmine\event\Listener; use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent; use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerLoginEvent; use pocketmine\event\player\PlayerLoginEvent;
use pocketmine\level\Position;
use pocketmine\math\Vector3;
use pocketmine\plugin\PluginBase; use pocketmine\plugin\PluginBase;
use mineplex\plugin\bench\arenas\Arena; use mineplex\plugin\bench\arenas\Arena;
use pocketmine\Server; use pocketmine\Server;
@ -24,9 +26,7 @@ class Main extends PluginBase implements Listener
$this->arena = new MultiGameArena($this, new TestGameFactory()); $this->arena = new MultiGameArena($this, new TestGameFactory());
Server::getInstance()->getPluginManager()->registerEvents($this, $this); Server::getInstance()->getPluginManager()->registerEvents($this, $this);
$this->test = new WorldComponent($this->arena); //$this->test = new WorldComponent($this->arena);
//$this->getServer()->getPluginManager()->registerEvents($this, $this);
new Updater($this); new Updater($this);
} }

View File

@ -11,6 +11,7 @@ namespace mineplex\plugin\bench\game\components\lobby;
use mineplex\plugin\bench\arenas\Arena; use mineplex\plugin\bench\arenas\Arena;
use mineplex\plugin\bench\arenas\events\ArenaEndEvent; use mineplex\plugin\bench\arenas\events\ArenaEndEvent;
use mineplex\plugin\bench\arenas\events\ArenaJoinEvent;
use mineplex\plugin\bench\game\components\feature\Feature; use mineplex\plugin\bench\game\components\feature\Feature;
use mineplex\plugin\bench\game\components\gamestate\events\GameStateChangeEvent; use mineplex\plugin\bench\game\components\gamestate\events\GameStateChangeEvent;
use mineplex\plugin\bench\game\components\gamestate\GameState; use mineplex\plugin\bench\game\components\gamestate\GameState;
@ -21,17 +22,20 @@ use pocketmine\event\HandlerList;
use pocketmine\event\inventory\InventoryPickupItemEvent; use pocketmine\event\inventory\InventoryPickupItemEvent;
use pocketmine\event\Listener; use pocketmine\event\Listener;
use pocketmine\event\player\PlayerDropItemEvent; use pocketmine\event\player\PlayerDropItemEvent;
use pocketmine\Server;
use pocketmine\level\Level; use pocketmine\level\Level;
use pocketmine\level\Position;
use pocketmine\Player;
use pocketmine\Server;
class LobbyComponent implements Listener { class LobbyComponent implements Listener
{
/** @var Arena */ /** @var Arena */
private $arena; private $arena;
/** @var String */ /** @var String */
private $worldName; public $worldName;
private $duringLobbyGameState; private $duringLobbyGameState;
@ -41,7 +45,6 @@ class LobbyComponent implements Listener {
*/ */
public function __construct(Arena $arena, $world = null) public function __construct(Arena $arena, $world = null)
{ {
if ($world == null) if ($world == null)
$world = Server::getInstance()->getDefaultLevel(); $world = Server::getInstance()->getDefaultLevel();
@ -51,7 +54,7 @@ class LobbyComponent implements Listener {
$this->worldName = $world->getName(); $this->worldName = $world->getName();
$this->arena = $arena; $this->arena = $arena;
$this->duringLobbyGameState = new DuringLobbyGameState($arena); $this->duringLobbyGameState = new DuringLobbyGameState($arena, $world);
Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin()); Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin());
} }
@ -70,15 +73,11 @@ class LobbyComponent implements Listener {
return; return;
if ($event->getToGameState() == GameState::LOBBY) { if ($event->getToGameState() == GameState::LOBBY) {
if (!$this->duringLobbyGameState->isEnabled()) if (!$this->duringLobbyGameState->isEnabled()) {
{
$this->duringLobbyGameState->enable(); $this->duringLobbyGameState->enable();
} }
} } elseif ($event->getFromGameState() == GameState::LOBBY) {
elseif ($event->getFromGameState() == GameState::LOBBY) if ($this->duringLobbyGameState->isEnabled()) {
{
if ($this->duringLobbyGameState->isEnabled())
{
$this->duringLobbyGameState->disable(); $this->duringLobbyGameState->disable();
} }
} }
@ -96,16 +95,20 @@ class LobbyComponent implements Listener {
} }
} }
class DuringLobbyGameState implements Feature, Listener { class DuringLobbyGameState implements Feature, Listener
{
private $arena; private $arena;
private $spawn;
/** @var bool */ /** @var bool */
private $enabled = false; private $enabled = false;
public function __construct(Arena $arena) public function __construct(Arena $arena, Level $world)
{ {
$this->arena = $arena; $this->arena = $arena;
$this->spawn = new Position(0, 103, 0, $world);
} }
@ -140,6 +143,28 @@ class DuringLobbyGameState implements Feature, Listener {
$event->setCancelled(); $event->setCancelled();
} }
function onJoin(ArenaJoinEvent $event)
{
if ($this->arena !== $event->getArena())
return;
$this->sendToSpawn($event->getPlayer());
}
function sendToSpawn(Player $player)
{
$player->getInventory()->clearAll();
$player->removeAllEffects();
$player->setHealth($player->getMaxHealth());
$player->resetFallDistance();
$pos = $this->spawn->add(rand(-4, 4), 0, rand(-4, 4));
$player->teleport($pos);
}
function isEnabled() function isEnabled()
{ {
return $this->enabled; return $this->enabled;
@ -147,14 +172,15 @@ class DuringLobbyGameState implements Feature, Listener {
function enable() function enable()
{ {
Server::getInstance()->broadcastMessage("Enabled!"); foreach ($this->arena->getPlayers() as $player) {
$this->sendToSpawn($player);
}
$this->enabled = true; $this->enabled = true;
Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin()); Server::getInstance()->getPluginManager()->registerEvents($this, $this->arena->getPlugin());
} }
function disable() function disable()
{ {
Server::getInstance()->broadcastMessage("Disabled!");
$this->enabled = false; $this->enabled = false;
HandlerList::unregisterAll($this); HandlerList::unregisterAll($this);
} }

View File

@ -15,6 +15,7 @@ use pocketmine\scheduler\PluginTask;
class Updater extends PluginTask class Updater extends PluginTask
{ {
private $plugin; private $plugin;
/** @var UpdateType[] */
private $updateTypes; private $updateTypes;
public function __construct(PluginBase $host) public function __construct(PluginBase $host)
@ -51,7 +52,7 @@ class Updater extends PluginTask
{ {
if ($updateType->canTrigger()) if ($updateType->canTrigger())
{ {
$updateTypes[$updateType] = 1; $updateTypes[$updateType->time] = 1;
} }
} }
//Call Event //Call Event