setPermissions([ DefaultPermissionNames::COMMAND_GAMEMODE_SELF, DefaultPermissionNames::COMMAND_GAMEMODE_OTHER ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } $gameMode = GameMode::fromString($args[0]); if($gameMode === null){ $sender->sendMessage(KnownTranslationFactory::pocketmine_command_gamemode_unknown($args[0])); return true; } $target = $this->fetchPermittedPlayerTarget($sender, $args[1] ?? null, DefaultPermissionNames::COMMAND_GAMEMODE_SELF, DefaultPermissionNames::COMMAND_GAMEMODE_OTHER); if($target === null){ return true; } if($target->getGamemode()->equals($gameMode)){ $sender->sendMessage(KnownTranslationFactory::pocketmine_command_gamemode_failure($target->getName())); return true; } $target->setGamemode($gameMode); if(!$gameMode->equals($target->getGamemode())){ $sender->sendMessage(KnownTranslationFactory::pocketmine_command_gamemode_failure($target->getName())); }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; } }