setPermission("pocketmine.command.gamemode"); } public function execute(CommandSender $sender, string $commandLabel, array $args){ if(!$this->testPermission($sender)){ return true; } if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } try{ $gameMode = GameMode::fromString($args[0]); }catch(\InvalidArgumentException $e){ $sender->sendMessage("Unknown game mode"); return true; } $target = $sender; if(isset($args[1])){ $target = $sender->getServer()->getPlayer($args[1]); if($target === null){ $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } }elseif(!($sender instanceof Player)){ throw new InvalidCommandSyntaxException(); } $target->setGamemode($gameMode); if($gameMode !== $target->getGamemode()){ $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); }else{ if($target === $sender){ Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.self", [GameMode::toTranslation($gameMode)])); }else{ $target->sendMessage(new TranslationContainer("gameMode.changed", [GameMode::toTranslation($gameMode)])); Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.other", [GameMode::toTranslation($gameMode), $target->getName()])); } } return true; } }