def _print_plugin_operation_result_if_no_error(self, source: CommandSource, ret: FunctionCallResult): if ret.no_error: source.reply( self.mcdr_server.plugin_manager.last_operation_result.to_rtext( show_path=source.has_permission( PermissionLevel.PHYSICAL_SERVER_CONTROL_LEVEL)))
def on_mcdr_command_unknown_argument(self, source: CommandSource, error: CommandError): if source.has_permission(PermissionLevel.MCDR_CONTROL_LEVEL): command = error.get_parsed_command().rstrip(' ') source.reply( RText(self.tr('mcdr_command.command_not_found', command)).h( self.tr('mcdr_command.command_not_found_suggest', command)).c(RAction.run_command, command)) else: self.on_mcdr_command_permission_denied(source, error)
def reload_all_plugin(self, source: CommandSource): ret = self.function_call( source, self.mcdr_server.plugin_manager.refresh_all_plugins, 'reload_all_plugin', log_success=False) if ret.no_error: source.reply( self.mcdr_server.plugin_manager.last_operation_result.to_rtext( show_path=source.has_permission( PermissionLevel.PHYSICAL_SERVER_CONTROL_LEVEL)))
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))
def remove_player_permission(self, source: CommandSource, player: str): if not Validator.player_name(player): source.reply(self.tr('mcdr_command.invalid_player_name')) else: if not source.has_permission( 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.remove_player(player) source.reply( self.tr( 'mcdr_command.remove_player_permission.player_removed', player))
def process_help_command(self, source: CommandSource, context: CommandContext): page = context.get('page') source.reply(self.tr('mcdr_command.help_message.title')) matched = [] # type: List[HelpMessage] for msg in self.mcdr_server.plugin_manager.registry_storage.help_messages: # type: HelpMessage if source.has_permission(msg.permission): matched.append(msg) matched_count = len(matched) if page is not None: left, right = ( page - 1) * HELP_MESSAGE_PER_PAGE, page * HELP_MESSAGE_PER_PAGE else: left, right = 0, matched_count for i in range(left, right): if 0 <= i < matched_count: msg = matched[i] source.reply( RTextList( RText(msg.prefix, color=RColor.gray).c(RAction.suggest_command, msg.prefix), ': ', translation_util.translate_from_dict( msg.message, self.server_interface.get_mcdr_language(), default=''))) if page is not None: has_prev = 0 < left < matched_count has_next = 0 < right < matched_count color = {False: RColor.dark_gray, True: RColor.gray} prev_page = RText('<-', color=color[has_prev]) if has_prev: prev_page.c(RAction.run_command, '{} {}'.format( self.help_command_prefix, page - 1)).h( self.tr( 'mcdr_command.help_message.previous_page_hover')) next_page = RText('->', color=color[has_next]) if has_next: next_page.c(RAction.run_command, '{} {}'.format( self.help_command_prefix, page + 1)).h( self.tr('mcdr_command.help_message.next_page_hover')) source.reply( RTextList( prev_page, ' {} '.format( self.tr('mcdr_command.help_message.page_number', page)), next_page))
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))
def print_mcdr_status(self, source: CommandSource): def bool_formatter(bl: bool) -> RText: return RText(bl, RColor.green if bl else RColor.red) rcon_status_dict = { True: self.tr('mcdr_command.print_mcdr_status.online'), False: self.tr('mcdr_command.print_mcdr_status.offline') } source.reply( RText( self.tr('mcdr_command.print_mcdr_status.line1', core_constant.NAME, core_constant.VERSION)).c( RAction.open_url, core_constant.GITHUB_URL).h( RText(core_constant.GITHUB_URL, styles=RStyle.underlined, color=RColor.blue))) if not source.has_permission(PermissionLevel.MCDR_CONTROL_LEVEL): return source.reply( RText.join('\n', [ RText( self.tr('mcdr_command.print_mcdr_status.line2', self.tr(self.mcdr_server.mcdr_state.value))), RText( self.tr('mcdr_command.print_mcdr_status.line3', self.tr(self.mcdr_server.server_state.value))), RText( self.tr( 'mcdr_command.print_mcdr_status.line4', bool_formatter(self.mcdr_server.is_server_startup()))), RText( self.tr( 'mcdr_command.print_mcdr_status.line5', bool_formatter( self.mcdr_server.should_exit_after_stop()))), RText( self.tr( 'mcdr_command.print_mcdr_status.line6', rcon_status_dict[ self.server_interface.is_rcon_running()])), RText( self. tr('mcdr_command.print_mcdr_status.line7', self.mcdr_server.plugin_manager.get_plugin_amount())).c( RAction.suggest_command, '!!MCDR plugin list') ])) if not source.has_permission( PermissionLevel.PHYSICAL_SERVER_CONTROL_LEVEL): return source.reply( RText.join('\n', [ self.tr( 'mcdr_command.print_mcdr_status.extra_line1', self.mcdr_server.process.pid if self.mcdr_server.process is not None else '§rN/A§r'), self.tr('mcdr_command.print_mcdr_status.extra_line2', self.mcdr_server.task_executor.task_queue.qsize(), core_constant.MAX_TASK_QUEUE_SIZE), self.tr('mcdr_command.print_mcdr_status.extra_line3', threading.active_count()) ])) thread_pool_counts = 0 for thread in threading.enumerate(): name = thread.getName() if not name.startswith('ThreadPoolExecutor-'): source.reply(' §7-§r {}'.format(name)) else: thread_pool_counts += 1 if thread_pool_counts > 0: source.reply(' §7-§r ThreadPoolExecutor thread x{}'.format( thread_pool_counts))
def print_mcdr_status(self, source: CommandSource): def bool_formatter(bl): return '{}{}§r'.format('§a' if bl else '§7', bl) rcon_status_dict = { True: self.tr('mcdr_command.print_mcdr_status.online'), False: self.tr('mcdr_command.print_mcdr_status.offline') } source.reply( RTextList( RText( self.tr('mcdr_command.print_mcdr_status.line1', core_constant.NAME, core_constant.VERSION)).c( RAction.open_url, core_constant.GITHUB_URL).h( RText(core_constant.GITHUB_URL, styles=RStyle.underlined, color=RColor.blue)), '\n', RText( self.tr('mcdr_command.print_mcdr_status.line2', self.tr(self.mcdr_server.mcdr_state.value))), '\n', RText( self.tr('mcdr_command.print_mcdr_status.line3', self.tr(self.mcdr_server.server_state.value))), '\n', RText( self.tr( 'mcdr_command.print_mcdr_status.line4', bool_formatter(self.mcdr_server.is_server_startup()))), '\n', RText( self.tr( 'mcdr_command.print_mcdr_status.line5', bool_formatter( self.mcdr_server.should_exit_after_stop()))), '\n', RText( self.tr( 'mcdr_command.print_mcdr_status.line6', rcon_status_dict[ self.server_interface.is_rcon_running()])), '\n', RText( self. tr('mcdr_command.print_mcdr_status.line7', self.mcdr_server.plugin_manager.get_plugin_amount())).c( RAction.suggest_command, '!!MCDR plugin list'))) if source.has_permission( PermissionLevel.PHYSICAL_SERVER_CONTROL_LEVEL): source.reply( RTextList( self.tr( 'mcdr_command.print_mcdr_status.extra_line1', self.mcdr_server.process.pid if self.mcdr_server.process is not None else '§rN/A§r'), '\n', self.tr('mcdr_command.print_mcdr_status.extra_line2', self.mcdr_server.task_executor.task_queue.qsize(), core_constant.MAX_TASK_QUEUE_SIZE), '\n', self.tr('mcdr_command.print_mcdr_status.extra_line3', threading.active_count()))) for thread in threading.enumerate(): source.reply(' §r-§r {}'.format(thread.getName()))
def process_mcdr_command(self, source: CommandSource): if source.has_permission(PermissionLevel.MCDR_CONTROL_LEVEL): source.reply( self.get_help_message(source, 'mcdr_command.help_message')) else: self.command_status.print_mcdr_status(source)
def process_help_command(self, source: CommandSource): for msg in self.mcdr_server.plugin_manager.registry_storage.help_messages: # type: HelpMessage if source.has_permission(msg.permission): source.reply( RText('§7{}§r: '.format(msg.prefix)).c( RAction.suggest_command, msg.prefix) + msg.message)