diff --git a/plugin.yml b/plugin.yml index c5d2300..51e6a91 100644 --- a/plugin.yml +++ b/plugin.yml @@ -19,7 +19,12 @@ commands: scenarios: description: Manage UHC scenarios usage: "/scenarios [add | remove | list] [scenario]" + permission: uhc.command.scenarios permissions: uhc.command.main: default: op + uhc.command.scenarios: + default: true + uhc.scenarios.modify: + default: op ... \ No newline at end of file diff --git a/src/Ad5001/UHC/Main.php b/src/Ad5001/UHC/Main.php index 23393e8..58becec 100644 --- a/src/Ad5001/UHC/Main.php +++ b/src/Ad5001/UHC/Main.php @@ -39,13 +39,13 @@ class Main extends PluginBase implements Listener{ public function onLevelChange(EntityLevelChangeEvent $event) { foreach($this->UHCManager->getLevels() as $world) { - if($event->getTarget()->getName() === $world->getName() and !isset($this->games[$world->getName()])) { + if($event->getTarget()->getName() === $world->getName() and !isset($this->UHCManager->getStartedUHCs()[$world->getName()])) { if(count($world->getLevel()->getPlayers()) > $world->maxplayers) { $event->setCancelled(); } - } elseif($event->getTarget()->getName() === $world->getName() and isset($this->games[$world->getName()]) and !isset($this->quit[$event->getEntity()])) { + } elseif($event->getTarget()->getName() === $world->getName() and isset($this->UHCManager->getStartedUHCs()[$world->getName()]) and !isset($this->quit[$event->getEntity()])) { $event->getPlayer()->setGamemode(3); - } elseif($event->getTarget()->getName() === $world->getName() and isset($this->games[$world->getName()]) and isset($this->quit[$event->getEntity()])) { + } elseif($event->getTarget()->getName() === $world->getName() and isset($this->UHCManager->getStartedUHCs()[$world->getName()]) and isset($this->quit[$event->getEntity()])) { $quit = explode("/", $this->quit[$event->getEntity()]); if($quit[3] === $world->getName()) { $event->getPlayer()->teleport(new Vector3($quit[0], $quit[1], $quit[2])); @@ -65,7 +65,7 @@ class Main extends PluginBase implements Listener{ $this->getServer()->getPluginManager()->registerEvent("Ad5001\\UHC\\event\\GameStartEvent", $this, \pocketmine\event\EventPriority::NORMAL, new \pocketmine\plugin\MethodEventExecutor("onGameStart"), $this, true); $this->getServer()->getPluginManager()->registerEvent("Ad5001\\UHC\\event\\GameStopEvent", $this, \pocketmine\event\EventPriority::NORMAL, new \pocketmine\plugin\MethodEventExecutor("onGameStop"), $this, false); $this->UHCManager = new UHCManager($this); - $this->games = []; + $this->UHCManager->getStartedUHCs() = []; $this->quit = []; } @@ -111,7 +111,7 @@ switch($cmd->getName()){ } break; case "scenarios": - if(isset($args[0]) and $sender instanceof Player) { + if(isset($args[0]) and $sender instanceof Player and $sender->hasPermission("uhc.scenarios.modify")) { if(isset($this->UHCManager->getLevels()[$sender->getLevel()->getName()]) and !isset($this->UHCManager->getStartedGames()[$sender->getLevel()->getName()])) { switch($args[0]) { case "add": diff --git a/src/Ad5001/UHC/UHCGame.php b/src/Ad5001/UHC/UHCGame.php index 69d8b98..1fb7cec 100644 --- a/src/Ad5001/UHC/UHCGame.php +++ b/src/Ad5001/UHC/UHCGame.php @@ -96,7 +96,7 @@ class UHCGame implements Listener{ public function onPlayerDeath(PlayerDeathEvent $event) { if($event->getPlayer()->getLevel()->getName() === $this->world->getName() and !$this->cancelled) { foreach($event->getPlayer()->getLevel()->getPlayers() as $p) { - $p->sendMessage(Main::PREFIX . C::YELLOW . $event->getPlayer()->getName() . " died."); + $p->sendMessage(Main::PREFIX . C::YELLOW . $event->getPlayer()->getName() . " died. " . (count($this->world->getLevel()->getPlayers) - 2)) . " players left !"); } $this->respawn[$event->getPlayer()->getName()] = true; $pls = []; @@ -138,7 +138,7 @@ class UHCGame implements Listener{ $this->m->getServer()->getPluginManager()->callEvent($event = new GameStopEvent($this, $this->world, $winner)); if(!$event->isCancelled()) { foreach($this->players as $player) { - $player->sendMessage(Main::PREFIX . C::YELLOW . $winner->getName()); + $player->sendMessage(Main::PREFIX . C::YELLOW . $winner->getName() . " won the game ! Teleporting back to lobby..."); $player->teleport($this->m->getServer()->getLevelByName($this->m->getConfig()->get("LobbyWorld"))->getSafeSpawn()); } }