From 2c9bdd4e2be176dd26ee1b609491dd08c94b732d Mon Sep 17 00:00:00 2001 From: Ad5001 Date: Fri, 5 Aug 2016 14:57:57 +0300 Subject: [PATCH] Whoops ! --- src/Ad5001/GameManager/Game.php | 183 ++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) diff --git a/src/Ad5001/GameManager/Game.php b/src/Ad5001/GameManager/Game.php index e69de29..5fbf2ae 100644 --- a/src/Ad5001/GameManager/Game.php +++ b/src/Ad5001/GameManager/Game.php @@ -0,0 +1,183 @@ +server = $level->getServer(); + $this->level = $level; + $this->name = $name; + $this->main = $this->server->getPluginManager()->getPlugin("GameManager"); + $this->gm = $this->main->getGameManager(); + $this->gm->backup($level); + } + + + public function getPlugin() { + return $this->main; + } + + + public function getLevel() { + return $this->level; + } + + + public function isStarted() { + return isset($this->gm->getStartedGames()[$this->level->getName()]); + } + + + abstract public function onGameStart(); + + + abstract public function onGameStop(); + + + public function stop() { + $this->gm->stopGame($this->level); + return true; + } + + + public function start() { + $this->gm->startGame($this->level); + return true; + } + + + public function onJoin(Player $player) { + if($this->getLevel()->getPlayers() >= $this->getMinPlayers() and !$this->isStarted()) { + $this->gm->startGame($this->getLevel()); + } + if($this->getLevel()->getPlayers() <= $this->getMaxPlayers() and !$this->isStarted()) { + $player->teleport($this->getServer()->getDefaultLevel()->getDefaultSpawn()); + $player->sendMessage("Too many players already in the game !"); + } + } + + + public function onQuit(Player $player) {} + + + public function getLogger() { + return $this->getPlugin()->getLogger(); + } + + + public function onInteract(\pocketmine\event\player\PlayerInteractEvent $event) {} + + + public function onChat(\pocketmine\event\player\PlayerChatEvent $event) {} + + + public function onPlayerChat(\pocketmine\event\player\PlayerChatEvent $event) {} + + + public function onPlayerCommand(\pocketmine\event\player\PlayerCommandPreprocessEvent $event) {} + + + public function onDeath(\pocketmine\event\player\PlayerDeathEvent $event) {} + + + public function onPlayerDeath(\pocketmine\event\player\PlayerDeathEvent $event) {} + + + public function onPlayerDropItem(\pocketmine\event\player\PlayerDropItemEvent $event) {} + + + public function onDrop(\pocketmine\event\player\PlayerDropItemEvent $event) {} + + + public function onPlayerMove(\pocketmine\event\player\PlayerMoveEvent $event) {} + + + public function onMove(\pocketmine\event\player\PlayerMoveEvent $event) {} + + + public function onPlayerItemConsume(\pocketmine\event\player\PlayerItemConsumeEvent $event) {} + + + public function onItemConsume(\pocketmine\event\player\PlayerItemConsumeEvent $event) {} + + + public function onPlayerItemHeld(\pocketmine\event\player\PlayerItemHeldEvent $event) {} + + + public function onItemHeld(\pocketmine\event\player\PlayerItemHeldEvent $event) {} + + + public function onDataPacketReceive(\pocketmine\event\server\DataPacketReceiveEvent $event) {} + + + public function onDataPacketSend(\pocketmine\event\server\DataPacketSendEvent $event) {} + + + public function onServerCommand(\pocketmine\event\server\ServerCommandEvent $event) {} + + + public function onBlockBreak(\pocketmine\event\block\BlockBreakEvent $event) {} + + + public function onBreak(\pocketmine\event\block\BlockBreakEvent $event) {} + + + public function onBlockPlace(\pocketmine\event\block\BlockPlaceEvent $event) {} + + + public function onPlace(\pocketmine\event\block\BlockPlaceEvent $event) {} + + + public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) {} + + + public function getConfig() { + return new Config($this->main->getDataFolder() . "games/$this->name"); + } + + + public function saveDefaultConfig() { + @mkdir($this->main->getDataFolder() . "games/" . $this->name); + file_put_contents($this->main->getDataFolder() . "games/$this->name", ""); + } + + + public function onCommand(\pocketmine\command\CommandSender $sender, \pocketmine\command\Command $cmd, $label, array $args) {} + + + abstract public function getMinPlayers() : int; + + + abstract public function getMaxPlayers() : int; + + + public function getDataFolder() { + return $this->main->getDataFolder() . "games/$this->name"; + } + + + public function registerCommand(string $cmd, string $desc, string $usage, array $aliases, string $perm = "gamemanager.command.use") { + if(!isset($this->main->cmds[$cmd])) { + $this->main->cmds[$cmd] = new GameCommand($this->main, $cmd, $desc, $usage, $aliases, $this->gm->getGames()[$this->getName()], $perm); + $this->getServer()->getCommandMap()->register($cmd, $this->main->cmds[$cmds]); + } + } + + +} \ No newline at end of file