Info 相关

Info

class mcdreforged.info_reactor.info.Info(source: InfoSource, raw_content: str, id: int = <factory>, hour: int | None = None, min: int | None = None, sec: int | None = None, content: str | None = None, player: str | None = None, logging_level: str | None = None, action_flag: InfoActionFlag = <InfoActionFlag.send_to_server|echo_to_console|process: 7>, _Info__control_data: _InfoControlData | None = None)[源代码]

一个 Info 信息对象包含了从服务器或控制台解析的结果

source: InfoSource

一个 int(实际上是 InfoSource,一个 int 的子类),表示该信息的类型

若该信息是来自服务端的标准输出流,则为 0

若来自控制台输入,则为 1

InfoSource 以了解所有可能的取值

raw_content: str

服务器输出中未解析的原始内容

它也是将要回显到控制台标准输出的内容

id: int

一个单调递增的唯一 ID

hour: int | None = None

来自被解析文本的时间信息 - 小时

min: int | None = None

来自被解析文本的时间信息 - 分钟

sec: int | None = None

来自被解析文本的时间信息 - 秒

content: str | None = None

解析完毕的信息文本

如果该信息是玩家的聊天信息,则其值为玩家的聊天内容。否则其值为除去时间/线程名等信息后的内容

player: str | None = None

玩家名称

若信息不是来自玩家的聊天信息,则为 None

logging_level: str | None = None

该信息的 logging 级别,例如 "INFO" 或者 "WARN"

action_flag: InfoActionFlag = 7

一个用于控制 MCDR 接下来将对这个 Info 对象执行的操作的 flag 变量

参见

InfoActionFlag

property is_from_console: bool

信息源是否是 InfoSource.CONSOLE (1),即是信息否来自控制台

property is_from_server: bool

信息源是否是 InfoSource.SERVER (0),即是信息否来自服务端

property is_player: bool

信息是否来自于服务端中的玩家

property is_user: bool

信息是否来自于用户,即是否来自控制台或服务端中的玩家

get_server() ServerInterface[源代码]

返回 ServerInterface 实例

get_command_source() InfoCommandSource | None[源代码]

从此对象中提取出一个命令源对象

返回:

返回命令源实例。如果无法提取命令源,则返回 None

to_command_source() InfoCommandSource[源代码]

与方法 get_command_source() 一样,只不过它会在无法提取命令源时抛出一个 IllegalCallError

抛出:

IllegalCallError -- 如果此无法从这个对象中提取命令源

should_send_to_server() bool[源代码]

如果从控制台输入此信息,则表示 MCDR 是否应将内容发送到服务器的标准输入流

cancel_send_to_server() None[源代码]

将该信息取消发送至服务端标准输入流

class mcdreforged.info_reactor.info.InfoActionFlag(*values)[源代码]

基类:Flag

一个用于控制 MCDR 接下来将对这个 Info 对象执行的操作的 flag 变量

send_to_server = 1

将控制台标准输入内容发送到服务器的标准输入

echo_to_console = 2

将服务器输出内容回显到控制台标准输出

process = 4

允许后续的 Info 响应器处理操作,如插件事件的分发

classmethod default() InfoActionFlag[源代码]

默认的 flag set,允许后续所有操作

classmethod hidden() InfoActionFlag[源代码]

不要将服务器输出回显到控制台,静默执行后续操作

classmethod discarded() InfoActionFlag[源代码]

立即丢弃该信息对象,不再进行后续处理

class mcdreforged.info_reactor.info.InfoSource(*values)[源代码]

基类:int, Enum

一个消息(Info)对象的来源

SERVER = 0

来自服务端的标准输出流/标准错误流

CONSOLE = 1

来自控制台的输入

信息响应器

class mcdreforged.info_reactor.abstract_info_reactor.AbstractInfoReactor(mcdr_server: MCDReforgedServer)[源代码]

信息响应器的抽象基类

mcdr_server: MCDReforgedServer

MCDR 服务端对象

abstractmethod react(info: Info)[源代码]

对一个 Info 对象做出响应

它将在任务执行者 (task executor) 线程被调用

参数:

info -- 被响应的信息

on_server_start()[源代码]

在服务端启动时将被调用

on_server_stop()[源代码]

在服务端停止的时候将被调用

信息过滤器

class mcdreforged.info_reactor.info_filter.InfoFilter[源代码]
abstractmethod filter_server_info(info: Info) bool | None[源代码]

过滤一个来自服务端输出的信息对象,判断它是否应该被丢弃

若一个来自服务端输出的信息对象被丢弃,那它既不会被回显至控制台标准输出,也不会被后续的 MCDR 逻辑处理

不要影响无辜的信息对象,即不要丢弃那些可能含有重要信息的信息对象(如服务端启动/关闭的输出),否则 MCDR 可能无法正确地工作

该函数将在 MCDR 从服务器输出解析出 Info 对象后立即调用

要精确控制 MCDR 接下来应对该 info 对象执行哪些操作,可以在此函数中修改其 ~ 属性。返回 False 实际上等同于:

info.action_flag = InfoActionFlag.discarded()

参见

InfoActionFlag

参数:

info -- 用于检查的信息对象

返回:

True:什么都不做;False:丢弃这个对象