指令

指令是用户与 MCDR 交互的最常见方式。 MCDR 将来自服务器的所有控制台输入和玩家聊天信息视为用户输入。对于这类输入,MCDR 将尝试将其视为指令并进行解析

指令可以由 MCDR 本身和插件注册。本页面只介绍来自 MCDR 的指令。关于为 MCDR 插件注册指令的方法,请在 此处 查看

!!MCDR 指令

!!MCDR 指令是用户在控制台或游戏中控制 MCDR 的方式。 这些指令至少需要权限级别 3 (admin) 才能执行

若你已经有控制 MCDR 的权限,那么你可以在控制台或游戏聊天框中输入 !!MCDR,你将会看到 MCDR 指令的帮助消息

如果你仅拥有权限级别 1 (user),则 !!MCDR 指令将展示 MCDR 的版本

状态显示

!!MCDR status 指令将返回 MCDR 的当前状态。它包括如下内容:

  • MCDR 的版本

  • MCDR 的状态

  • 服务端的状态

  • 如果服务器已启动则显示的标志

  • MCDR 是否会在服务端停止后关闭,也即服务器是自然关闭的还是被 MCDR 停止/杀死

  • Rcon 的连接状态

  • 已加载插件数量

以下状态只能由具有权限 4 (owner) 的用户查看

  • 服务端 PID。注意,此 PID 是正在运行服务端的终端程序的 PID。除此之外,MCDR 将显示出 PID 树,你可以借此了解你的服务端的进程结构

  • 信息处理队列的负载。若服务端正在刷屏,则该队列可能被填满

  • 当前的线程列表

热重载

!!MCDR reload 子指令可以热重载 MCDR。它也可以缩写为 !!MCDR r。 执行指令 !!MCDR reload 即可获取热重载指令的帮助信息

以下是一个展示相关指令的表格

指令

缩写

功能

!!MCDR reload

!!MCDR r

显示重载指令的帮助信息

!!MCDR reload plugin

!!MCDR r plg

重载所有 有变化 的插件

!!MCDR reload config

!!MCDR r cfg

重新载入配置文件

!!MCDR reload permission

!!MCDR r perm

重新载入权限文件

!!MCDR reload all

!!MCDR r all

重载上述所有

权限管理

!!MCDR permission 子指令用于操作玩家权限。它的缩写是 !!MCDR perm。 执行指令 !!MCDR perm 将显示权限操作指令的帮助信息

以下是一个展示相关指令的表格

指令

缩写

功能

!!MCDR permission

!!MCDR perm

显示权限指令帮助信息

!!MCDR permission list [<level>]

!!MCDR perm list [<level>]

列出所有玩家的权限。在设置了 [<level>] 时,仅列出拥有 [<level>] 权限的玩家

!!MCDR permission set <player> <level>

!!MCDR perm set <player> <level>

设置 <player> 的权限级别为 <level>

!!MCDR permission query <player>

!!MCDR perm q [<player>]

查询 <player> 的权限级别。如果没有设置 <player>,查询指令发送者的权限级别

!!MCDR permission remove <player>

!!MCDR perm remove <player>

从权限数据库中删除 <player>

!!MCDR permission setdefault <level>

!!MCDR perm setd <level>

设置默认权限级别为 <level>

其中,<player> 参数应为一个玩家名

<level> 参数应该是一个表示权限等级的字符串或整数。它可以是权限全名或表示权限等级的整数

例如:

  • !!MCDR perm list 4:列出所有权限级别为 4 (owner) 的玩家

  • !!MCDR permission set Steve admin:将玩家 Steve 的权限级别设置为 3 (admin)

  • !!MCDR permission q Steve:查询玩家 Steve 的权限级别。其值应为上一条示例设置的 3 (admin)

查看 权限 文档以获取更多关于 MCDR 权限系统的信息

插件管理

!!MCDR plugin 是插件操作指令。它的缩写是 !!MCDR plg。 执行指令 !!MCDR plg 将显示该指令的帮助信息

以下是一个展示相关指令的表格

指令

缩写

功能

!!MCDR plugin list

!!MCDR plg list

列出所有插件

!!MCDR plugin info <plugin_id>

!!MCDR plg info <plugin_id>

显示ID为 <plugin_id> 的插件信息

!!MCDR plugin load <file_name>

!!MCDR plg load <file_name>

加载文件名为 <file_name> 的插件

!!MCDR plugin enable <file_name>

!!MCDR plg enable <file_name>

启用文件名为 <file_name> 的插件

!!MCDR plugin reload <plugin_id>

!!MCDR plg reload <plugin_id>

重载 ID 为 <plugin_id> 的插件

!!MCDR plugin unload <plugin_id>

!!MCDR plg unload <plugin_id>

卸载 ID 为 <plugin_id> 的插件

!!MCDR plugin disable <plugin_id>

!!MCDR plg disable <plugin_id>

禁用 ID 为 <plugin_id> 的插件

!!MCDR plugin reloadall

!!MCDR plg ra

加载 / 重载 / 卸载 所有 未禁用的插件

<plugin_id> 参数应为操作目标的插件 ID

<file_name> 参数应为要加载或启用插件的文件名

例子:

假设现在有一个 Id 为 my_plugin 的插件已被加载,一个路径为 plugins/another_plugin.py.disabled 的插件被 ID 为 another_plugin 的插件禁用

于是你可以执行以下指令:

!!MCDR plg info my_plugin
!!MCDR plugin reload my_plugin
!!MCDR plugin enable another_plugin.py.disabled
!!MCDR plugin unload another_plugin
!!MCDR plugin load another_plugin.py

这些指令将执行以下操作:

  1. 查询内置插件 my_plugin 的信息;

  2. 重载 ID 为 my_plugin 的插件;

  3. 启用并加载文件名为 another_plugin.py.disable 的插件。它的 ID 为 another_plugin

  4. 卸载 ID 为 another_plugin 的插件;

  5. 加载文件名为 another_plugin.py 的插件。注意,由于此插件未加载,故你只能使用文件名来指定它

偏好设置

!!MCDR preference 子指令可用于操控 MCDR 的偏好。它仅需要权限等级 1 (user) 即可操作

以下是一个展示相关指令的表格

指令

缩写

功能

!!MCDR preference

!!MCDR pref

显示偏好指令帮助信息

!!MCDR preference list

!!MCDR pref list

显示偏好列表

!!MCDR preference <pref_name>

!!MCDR pref <pref_name>

显示偏好 <pref_name> 的详情

!!MCDR preference <pref_name> set <value>

!!MCDR pref <pref_name> set <value>

设定偏好 <pref_name> 的值为 <value>

!!MCDR preference <pref_name> reset

!!MCDR pref <pref_name> reset

将偏好 <pref_name> 重置为默认值

查看 偏好 文档以获取更多关于 MCDR 偏好的信息

例如:

  • !!MCDR pref set language zh_cn: 将偏好 language 的值设置为 zh_cn

检查更新

使用 !!MCDR checkupdate!!MCDR cu 可手动检查来自 github 的更新

它将尝试在 github 中获取最新版本,并检查它是否比当前版本更新。 如果是,它将显示 github 上的更新日志

服务端控制

!!MCDR server 子指令可用于控制被守护的服务端

以下是一个展示相关指令的表格

指令

功能

!!MCDR server

显示服务端控制指令的帮助信息

!!MCDR server start

启动服务端

!!MCDR server stop

关闭服务端,且 MCDR 会继续运行

!!MCDR server stop_exit

关闭服务端并退出MCDR

!!MCDR server exit

退出 MCDR。服务端应已关闭

!!MCDR server restart

重启服务端

!!MCDR server kill

杀死服务端,以及其所有子进程

这些指令同时也是 服务端接口 API 的一部分

调试

!!MCDR debug 包含了不少用于调试 MCDR 或 MCDR 插件的实用工具。它们主要是为开发者设计的,因此如果你是一位 MCDR 的用户,你可以跳过这一部分

线程转储

导出所有指定线程的堆栈追踪信息。一个用于快速分析你的线程正在干什么的方式

你可以使用 #all 作为线程名来导出所有线程的信息

格式:

!!MCDR debug thread_dump #all
!!MCDR debug thread_dump <thread_name>

翻译测试

查询给定翻译键的翻译结果,或者导出以给定路径为前缀的所有翻译键

格式:

!!MCDR debug translation get <translation_key>
!!MCDR debug translation dump <json_path>

例子:

!!MCDR debug translation get one.of.my.translation.key
!!MCDR debug translation get server_interface.load_config_simple.succeed
!!MCDR debug translation dump .
!!MCDR debug translation dump mcdr_server
!!MCDR debug translation dump mcdr_server.on_server_stop

指令树展示

使用方法 print_tree() 导出指令树

你可以通过插件 id 或根节点名来过滤指令树

格式:

!!MCDR debug command_dump all
!!MCDR debug command_dump plugin <plugin_id>
!!MCDR debug command_dump node <literal_name>

例子:

!!MCDR debug command_dump plugin my_plugin
!!MCDR debug command_dump node !!MyCommand

!!help 指令

!!help 指令将显示所有指令的帮助消息。它作为着一个包含所有指令的索引

此指令的内容可以由插件注册,所以一个新的用户可以借此轻松浏览所有可用的指令

任何用户都可以使用此指令,MCDR 将列出该用户有权查看的所有指令帮助消息

在无任何插件的情况下,输入 !!help 指令后将返回如下结果:

MCDR command help message list
!!MCDR: MCDR control command
!!help: MCDR command help messages