服务端处理器

class mcdreforged.handler.abstract_server_handler.AbstractServerHandler[源代码]

服务端处理器的抽象基类

类继承树状图:

AbstractServerHandler
├── BasicHandler
├── AbstractMinecraftHandler
│   ├── VanillaHandler
│   │   ├── Beta18Handler
│   │   └── ForgeHandler
│   └── BukkitHandler
│       ├── Bukkit14Handler
│       ├── CatServerHandler
│       └── ArclightHandler
├── BungeecordHandler
│   └── WaterfallHandler
└── VelocityHandler
get_name() str[源代码]

服务端处理器的名字

这个名字作为此服务端处理器的标识符,将在 MCDR 的配置文件中用到

get_stop_command() str[源代码]

用于关闭服务端的命令

get_send_message_command(target: str, message: str | RTextBase, server_information: ServerInformation) str | None[源代码]

用于向一个目标发送一条消息的命令

get_broadcast_message_command(message: str | RTextBase, server_information: ServerInformation) str | None[源代码]

用于将一条消息广播于服务器之中的命令

pre_parse_server_stdout(text: str) str[源代码]

一个解析前的预处理器,将在任何解析操作前调用

用于在解析前删除文本中那些无用/影响解析的字符

参数:

text – 一行要被解析的服务器标准输出流字符串

classmethod parse_console_command(text: str) Info[源代码]

解析控制台输入

参数:

text – 一行要被解析的控制台输入字符串

返回:

一个作为返回值的 Info 对象

classmethod _get_server_stdout_raw_result(text: str) Info[源代码]

此方法会进行一次未处理的“解析”,并返回一个几乎未解析的 Info 对象

将其作为解析流程的第一步,或者你也可以直接把它的返回值作为最终解析结果,如果你放弃解析这个文本

classmethod get_content_parsing_formatter() str | Iterable[str][源代码]

返回一个将在方法 _content_parse() 中作解析用途的 str 或者 Iterable[str]

这些字符串会作为第一个参数传递给 parse.parse,他们应该含有至少以下的属性:

  • hour

  • min

  • sec

  • logging

  • content

首个成功的 parse.parse 调用的返回值会被用于填充 Info 对象的数据

返回值应当为一个固定值

classmethod _content_parse(info: Info)[源代码]

一个常用的方法,用于从一个未解析的 Info 对象中解析一些基础元素

期望解析出的元素包括:

参数:

info – 一个将被处理的 Info 对象

parse_server_stdout(text: str) Info[源代码]

解析的主操作。解析一条来自服务端标注输出流的字符串并输出一个解析后的信息

它可以在输入字符串格式不正确时,抛出你想要的异常

在这个默认实现中,它首先使用 _get_server_stdout_raw_result() 来获取一个未处理的 Info 对象,然后使用 _content_parse() 来向 Info 对象填充一些基础信息,最后将其作为一个简单解析的信息返回

如果服务端处理器有解析出更多信息的能力,你可以在借助 super() 调用本方法后进行更多的后续解析操作

参数:

text – 一行要被解析的服务器标准输出流字符串

返回:

一个作为返回值的 Info 对象

parse_player_joined(info: Info) str | None[源代码]

检查这条信息是否表示一条玩家加入信息

如果是,返回玩家的名字,否则返回 None

参数:

info – 将被检查的信息对象

返回:

玩家名或 None

parse_player_left(info: Info) str | None[源代码]

检查这条信息是否表示一条玩家离开信息

如果是,返回玩家的名字,否则返回 None

参数:

info – 将被检查的信息对象

返回:

玩家名或 None

parse_server_version(info: Info) str | None[源代码]

检查这条信息是否表示包含服务端版本信息

如果是,返回服务端的版本,否则返回 None

参数:

info – 将被检查的信息对象

返回:

服务端的版本或 None

parse_server_address(info: Info) Tuple[str, int] | None[源代码]

检查这条信息是否表示包含服务端监听的地址

如果是,返回服务端监听的 ip 及端口,否则返回 None

参数:

info – 将被检查的信息对象

返回:

一个包含 ip 和端口的 tuple,或 None

test_server_startup_done(info: Info) bool[源代码]

检查这条信息是否表示服务端已启动完成

参数:

info – 将被检查的信息对象

返回:

这条信息是否表示服务端已启动完成

test_rcon_started(info: Info) bool[源代码]

检查这条信息是否表示 rcon 已启动

参数:

info – 将被检查的信息对象

返回:

这条信息是否表示 rcon 已启动

test_server_stopping(info: Info) bool[源代码]

检查这条信息是否表示服务端正在关闭

参数:

info – 将被检查的信息对象

返回:

这条信息是否表示服务端正在关闭

class mcdreforged.handler.impl.BasicHandler[源代码]

基础的朴素的处理器,提供最小的解析信息

当所有其他的专用服务端处理器失败后,它将被作为后备处理器使用

class mcdreforged.handler.impl.AbstractMinecraftHandler[源代码]

一个抽象类,为 Minecraft Java 版服务端设计的服务端处理器

classmethod get_player_message_parsing_formatter() List[str][源代码]

返回一个将在方法 parse_server_stdout() 中作解析用途的 str 列表

这些字符串会作为第一个参数传递给 parse.parse,他们应该含有至少以下的属性:

  • name,玩家名

  • message,玩家的聊天内容

首个成功的 parse.parse 调用的返回值会被用于填充 Info 对象的数据

如果这些格式字符串都无法被成功地解析,那么这条信息将被视作一个非玩家信息,即 info.player 将为 None

classmethod format_message(message: str | RTextBase) str[源代码]

一个工具方法,将一条消息转换为一个合法的消息参数,这个消息参数将被用在服务端的消息发送命令中

class mcdreforged.handler.impl.VanillaHandler[源代码]

为原版 Minecraft 服务端设计的服务端处理器

class mcdreforged.handler.impl.Beta18Handler[源代码]

你没看错,一个为 beta 1.8 版本的 Minecraft 服务端设计的服务端处理器

class mcdreforged.handler.impl.ForgeHandler[源代码]

Forge Minecraft 服务端设计的服务端处理器

class mcdreforged.handler.impl.BukkitHandler[源代码]

bukkit 和类 bukkit (如 Paper) Minecraft 服务端设计的服务端处理器

class mcdreforged.handler.impl.Bukkit14Handler[源代码]

bukkit 和 spigot 的 1.14+ Minecraft 服务端设计的服务端处理器

class mcdreforged.handler.impl.CatServerHandler[源代码]

CatServer Minecraft 服务端设计的服务端处理器

CatServer 使用原版的日志格式,但是玩家加入信息的格式类似于 spigot

并且玩家离开消息拥有一些颜色代码

class mcdreforged.handler.impl.ArclightHandler[源代码]

Arclight 服务端设计的服务端处理器

class mcdreforged.handler.impl.BungeecordHandler[源代码]

Bungeecord 服务端设计的服务端处理器

class mcdreforged.handler.impl.WaterfallHandler[源代码]

Waterfall 服务端设计的服务端处理器

waterfall 服务端的日志格式为 paper 的格式(嘘~ waterfall 是 PaperMC 维护的 bungeecord 的 fork)

class mcdreforged.handler.impl.VelocityHandler[源代码]

Velocity 服务端设计的服务端处理器