setPermission(DefaultPermissionNames::COMMAND_GAMEMODE); } public function execute(CommandSender $sender, string $commandLabel, array $args){ if(!$this->testPermission($sender)){ return true; } if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } $gameMode = GameMode::fromString($args[0]); if($gameMode === null){ $sender->sendMessage("Unknown game mode"); return true; } if(isset($args[1])){ $target = $sender->getServer()->getPlayerByPrefix($args[1]); if($target === null){ $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } }elseif($sender instanceof Player){ $target = $sender; }else{ throw new InvalidCommandSyntaxException(); } $target->setGamemode($gameMode); if(!$gameMode->equals($target->getGamemode())){ $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); }else{ if($target === $sender){ Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_gamemode_success_self($gameMode->getTranslatableName())); }else{ $target->sendMessage(KnownTranslationFactory::gameMode_changed($gameMode->getTranslatableName())); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_gamemode_success_other($gameMode->getTranslatableName(), $target->getName())); } } return true; } }