コード例 #1
0
	def add_player(self, player: str, level_name: Optional[str] = None) -> int:
		"""
		Add a new player with permission level level_name
		If level_name is not set use default level
		Then save the permission data to file

		:param player: the name of the player
		:param level_name: the permission level name
		:return: the permission of the player after operation done
		"""
		if level_name is None:
			level_name = self.get_default_permission_level()
		PermissionLevel.from_value(level_name)  # validity check
		self.get_permission_group_list(level_name).append(player)
		self.mcdr_server.logger.debug('Added player {} with permission level {}'.format(player, level_name), option=DebugOption.PERMISSION)
		self.save()
		return PermissionLevel.from_value(level_name).level
コード例 #2
0
    def get_permission_group_list(self, value):
        """
		Return the list of the player who has permission level <level>
		Example return value: ['Steve', 'Alex']

		:param str or int value: a permission related object
		:rtype: list[str]
		"""
        level_name = PermissionLevel.from_value(value).name
        if self._data[level_name] is None:
            self._data[level_name] = []
        return self._data[level_name]
コード例 #3
0
 def set_default_permission(self, source: CommandSource, value: str):
     permission_level = PermissionLevel.get_level(value)
     if permission_level is None:
         source.reply(self.tr('mcdr_command.invalid_permission_level'))
     elif not source.has_permission(permission_level.level):
         source.reply(self.tr('mcdr_command.permission_not_enough'))
     else:
         self.mcdr_server.permission_manager.set_default_permission_level(
             permission_level)
         if source.is_player:
             source.reply(
                 self.tr(
                     'permission_manager.set_default_permission_level.done',
                     permission_level.name))
コード例 #4
0
 def query_player_permission(self, source: CommandSource,
                             player: Optional[str]):
     if player is None:
         level = source.get_permission_level()
         source.reply(
             self.tr('mcdr_command.query_player_permission.self',
                     PermissionLevel.from_value(level)))
     else:
         if not Validator.player_name(player):
             source.reply(self.tr('mcdr_command.invalid_player_name'))
             return
         else:
             level = self.mcdr_server.permission_manager.get_player_permission_level(
                 player, auto_add=False)
             if level is not None:
                 source.reply(
                     self.tr('mcdr_command.query_player_permission.player',
                             player, PermissionLevel.from_value(level)))
             else:
                 source.reply(
                     self.tr(
                         'mcdr_command.query_player_permission.player_unknown',
                         player))
コード例 #5
0
 def list_permission(self, source: CommandSource,
                     target_value: Optional[str]):
     specified_level = PermissionLevel.get_level(target_value)
     if specified_level is None:
         # show default level information if target permission not specified
         source.reply(
             RText(
                 self.tr(
                     'mcdr_command.list_permission.show_default',
                     self.mcdr_server.permission_manager.
                     get_default_permission_level())).c(
                         RAction.suggest_command,
                         '{} permission setdefault '.format(
                             self.control_command_prefix)).
             h(self.tr('mcdr_command.list_permission.suggest_setdefault')))
     for permission_level in PermissionLevel.INSTANCES:
         if specified_level is None or permission_level == specified_level:
             source.reply(
                 RText('§7[§e{}§7]§r'.format(permission_level.name)).c(
                     RAction.run_command, '{} permission list {}'.format(
                         self.control_command_prefix, permission_level.name)
                 ).h(
                     self.tr('mcdr_command.list_permission.suggest_list',
                             permission_level.name)))
             for player in self.mcdr_server.permission_manager.get_permission_group_list(
                     permission_level.name):
                 texts = RText('§7-§r {}'.format(player))
                 if self.can_see_rtext(source):
                     texts += RTextList(
                         RText(' [✎]', color=RColor.gray).c(
                             RAction.suggest_command,
                             '{} permission set {} '.format(
                                 self.control_command_prefix,
                                 string_util.auto_quotes(player))).
                         h(
                             self.tr(
                                 'mcdr_command.list_permission.suggest_set',
                                 player)),
                         RText(' [×]', color=RColor.gray).c(
                             RAction.suggest_command,
                             '{} permission remove {}'.format(
                                 self.control_command_prefix,
                                 string_util.auto_quotes(player))).
                         h(
                             self.tr(
                                 'mcdr_command.list_permission.suggest_disable',
                                 player)),
                     )
                 source.reply(texts)
コード例 #6
0
    def set_permission_level(self, player: str, value: Union[int,
                                                             str]) -> None:
        """
		Set the permission level of the given player
		:param player: The name of the player that you want to set his/her permission level
		:param value: The target permission level you want to set the player to. It can be an int or a str as long as
		it's related to the permission level. Available examples: 1, '1', 'user'
		:raise: TypeError if the value parameter doesn't proper represent a permission level
		"""
        level = PermissionLevel.get_level(value)
        if level is None:
            raise TypeError(
                'Parameter level needs to be a permission related value')
        self._mcdr_server.permission_manager.set_permission_level(
            player, value)
コード例 #7
0
    def set_permission_level(self, player, value):
        """
		Set the permission level of a player

		:param str player: The name of the player that you want to set his/her permission level
		:param value: The target permission level you want to set the player to. It can be an int or a str as long as
		it's related to the permission level. Available examples: 1, '1', 'user'
		:type value: int or str
		:raise: TypeError if param value is illegal
		"""
        level = PermissionLevel.get_level(value)
        if level is None:
            raise TypeError(
                'Parameter level needs to be a permission related value')
        self.__mcdr_server.permission_manager.set_permission_level(
            player, value)
コード例 #8
0
 def list_permission(self, source: CommandSource, target_value):
     specified_level = PermissionLevel.get_level(target_value)
     if specified_level is None:
         # show default level information if target permission not specified
         source.reply(
             RText(
                 self.tr(
                     'mcdr_command.list_permission.show_default',
                     self.mcdr_server.permission_manager.
                     get_default_permission_level())).c(
                         RAction.suggest_command,
                         '!!MCDR permission setdefault ').
             h(self.tr('mcdr_command.list_permission.suggest_setdefault')))
     for permission_level in PermissionLevel.INSTANCES:
         if specified_level is None or permission_level == specified_level:
             source.reply(
                 RText('§7[§e{}§7]§r'.format(permission_level.name)).c(
                     RAction.run_command, '!!MCDR permission list {}'.
                     format(permission_level.name)).h(
                         self.tr(
                             'mcdr_command.list_permission.suggest_list',
                             permission_level.name)))
             for player in self.mcdr_server.permission_manager.get_permission_group_list(
                     permission_level.name):
                 texts = RText('§7-§r {}'.format(player))
                 if self.should_display_buttons(source):
                     texts += RTextList(
                         RText(' [✎]', color=RColor.gray).c(
                             RAction.suggest_command,
                             '!!MCDR permission set {} '.format(player)).
                         h(
                             self.tr(
                                 'mcdr_command.list_permission.suggest_set',
                                 player)),
                         RText(' [×]', color=RColor.gray).c(
                             RAction.suggest_command,
                             '!!MCDR permission remove {}'.format(player)).
                         h(
                             self.tr(
                                 'mcdr_command.list_permission.suggest_disable',
                                 player)),
                     )
                 source.reply(texts)
コード例 #9
0
 def set_player_permission(self, source: CommandSource, player, value):
     permission_level = PermissionLevel.get_level(value)
     if permission_level is None:
         source.reply(self.tr('mcdr_command.invalid_permission_level'))
     elif not Validator.player_name(player):
         source.reply(self.tr('mcdr_command.invalid_player_name'))
     else:
         # Source with permission level x is allowed manipulate players/level in permission level range [0, x]
         if not source.has_permission(
                 max(
                     permission_level.level,
                     self.mcdr_server.permission_manager.
                     get_player_permission_level(player))):
             source.reply(self.tr('mcdr_command.permission_not_enough'))
         else:
             self.mcdr_server.permission_manager.set_permission_level(
                 player, permission_level)
             if source.is_player:
                 source.reply(
                     self.tr('permission_manager.set_permission_level.done',
                             player, permission_level.name))
コード例 #10
0
 def query_self_permission(self, source: CommandSource):
     source.reply(
         self.tr('mcdr_command.query_player_permission.self',
                 PermissionLevel.from_value(source.get_permission_level())))