配置
MCDR 的配置文件是 config.yml
。它位于,也应位于 MCDR 的工作目录中
在启动时,MCDR 将尝试加载配置文件,并将缺失的选项(如果有)添加到你的配置文件末尾。如果配置文件不存在,MCDR 则将生成默认配置文件并退出
配置文件使用 YAML 格式
当 MCDR 运行时,你可以使用 !!MCDR reload config
命令(或其缩写 !!MCDR r cfg
)来重载配置文件
参见
热重载 指令章节中更多与热重载相关的指令
配置项列表
基础配置
language
MCDR 用于输出信息的语言
选项类型:string
默认值:
en_us
可用选项:
en_us
,zh_cn
working_directory
服务端的工作目录。你应该将所有与服务器相关的文件放入此目录
选项类型:string
默认值:
server
start_command
启动服务器的控制台命令
一些例子:
如果你想要启动一个 Minecraft 服务端,你可以
start_command: java -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar nogui
如果 working directory 中已存在启动脚本,你可以:
start_command: start.bat
start_command: ./start.sh
如果指令中存在一些 YAML 不喜欢的字符(如 "
、\
),你可以从以下解决方案中任选一个:
# use "" to wrap the command and escape " and \
start_command: "\"C:\\Program Files\\Java\\jdk-17.0.3.1\\bin\\java.exe\" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar"
# use '' to wrap the command
start_command: '"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar'
# use multi-line string
start_command: |-
"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar
# use "" to wrap the command and escape " and \
start_command: "\"/path/to my/java\" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar"
# use '' to wrap the command
start_command: '"/path/to my/java" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar'
# use multi-line string
start_command: |-
"/path/to my/java" -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar
备注
对于 Minecraft 服务器,你可能希望在 -jar
参数前面加一个 -Dfile.encoding=UTF-8
JVM 属性,如上面的例子所示
见 encoding / decoding 小节以了解更多 Minecraft 服务器中与 UTF-8 编码相关的信息
选项类型:string
默认值:
java -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar nogui
handler
不同服务端有着截然不同的输出和指令。服务端处理器是用于在各种服务器之间进行处理的模块,也是 MCDR 控制服务端的接入点
处理器确定解析服务器标准输出文本的特定方法,并使用正确的命令控制服务端
内置的处理器及其适用的服务端如下表所示:
处理器 |
兼容的服务端类型 |
---|---|
vanilla_handler |
用于 原版 / Carpet / Fabric 服务端 |
beta18_handler |
用于低版本的原版服务端,如 MC < 1.7 的低版本,甚至到 beta1.8 版本。只在 1.6.4 和 beta 1.8.1 版本中进行了测试 |
bukkit_handler |
用于 1.14 版本以下的 Bukkit / Spigot 服务器,以及所有版本的 Paper / Mohistmc 服务器 |
bukkit14_handler |
用于 1.14 或以上版本的 Bukkit / Spigot 服务端 |
forge_handler |
用于 Forge 服务端 |
cat_server_handler |
适用于 CatServer 服务端 |
arclight_handler |
For Arclight server. Tested with arclight-forge-1.20.1-1.0.1.jar |
bungeecord_handler |
用于 BungeeCord 服务端。请在启动命令的 |
waterfall_handler |
用于 WaterFall 服务端 |
velocity_handler |
用于 Velocity 服务端 |
basic_handler |
不进行任何分析并返回原始文本的处理器。 除非你想使用 MCDR 启动非 Minecraft 相关的服务器,否则无需使用 |
选项类型:string
默认值:
vanilla_handler
encoding / decoding
用于编码消息至服务端标准输入 / 从服务端标准输出解码消息时,所用的编码 / 解码格式
留空以让 MCDR 使用系统编码。如果它不起作用(例如控制台中出现了乱码),你需要根据服务端的编解码方式手动配置这两个选项
对于 Minecraft 服务端,如果你的操作系统默认的字符集并非 UTF-8,强烈建议确保所有的编码 / 解码都使用 UTF-8 字符集,原因如下:
Python 3 使用 UTF-8 存储字符串
Minecraft 服务端始终使用 UTF-8 读取 stdin
Minecraft 服务器使用操作系统的默认字符集写入 stdout / stderr / 日志文件
你的操作系统使用的字符集可能不是 UTF-8,比如中文 Windows 可能使用 GBK 作为默认字符集
非 UTF-8 字符集在编解码过程中可能会引起烦人的编解码问题,导致 MCDR 无法与服务端正常通信
为了让与服务端相关的一切编解码都用上 UTF-8,你可以参照如下方法:
让 MCDR 使用 UTF-8 与 Minecraft 服务器通信,即在 MCDR 配置中将
encoding
和decoding
设置为 utf8encoding: utf8 decoding: utf8
确保启动 Minecraft 的 JVM 也使用 UTF-8 作为默认字符集。你可以通过以下任一操作来实现:
(推荐)修改服务器的启动命令。在
-jar
参数之前添加一个-Dfile.encoding=UTF-8
JVM 属性,就像 start_command 部分中的示例那样start_command: java -Xms1G -Xmx2G -Dfile.encoding=UTF-8 -jar minecraft_server.jar ^^^^^^^^^^^^^^^^^^^^^
将
-Dfile.encoding=UTF-8
插入环境变量JAVA_TOOL_OPTIONS
中
然后,Minecraft 服务器在运行时就会使用 UTF-8 作为其标准 IO 流的字符集,同时 MCDR 将能完美地与服务器通信
当然,如果你确定你的操作系统使用的默认字符集是 UTF-8,那你什么都不需要做。你甚至可以将这两个 encoding
/ decoding
选项留空来使用默认的系统字符集。
选项类型:string 或 null
默认值:
空
Examples:
utf8
,gbk
plugin_directories
MCDR 搜索将要加载插件的目录列表
选项类型:list[str]
默认值:
plugin_directories:
- plugins
例如:
plugin_directories:
- plugins
- path/to/my/plugin/directory
- another/plugin/directory
rcon
rcon 设置。若启用 rcon,则在 Minecraft rcon 服务端启动后,MCDR将自动连接到 rcon 服务端。这样插件就可以通过 rcon 向服务端发送命令
rcon.enable
rcon 开关
选项类型:boolean
默认值:
false
rcon.address
用于 rcon 连接的地址
选项类型:string
默认值:
127.0.0.1
rcon.port
用于 rcon 连接的端口
选项类型:integer
默认值:
25575
rcon.password
用于 rcon 连接的密码
选项类型:string
默认值:
password
check_update
如果设置为 true,MCDR将会每隔24小时执行一次更新检测
选项类型:boolean
默认值:
true
advanced_console
高级控制台的开关,基于 prompt-toolkit
如果你需要重定向 MCDR 的标准输入/输出,或者仅仅是不喜欢这个高级控制台,把它设置为 false
选项类型:boolean
默认值:
true
高级配置
为进阶用户提供的选项
disable_console_thread
设置为 true 时,MCDR 将不会启动控制台线程来处理控制台命令输入
请保持默认值,除非你清楚地知道这是什么
选项类型:boolean
默认值:
false
disable_console_color
设置为 true 时,MCDR 将在所有消息打印到控制台之前删除所有控制台字体格式化程序代码
选项类型:boolean
默认值:
false
custom_handlers
自定义 服务端处理器 类所组成的列表。这些类应当是 AbstractServerHandler
的子类
这样你就可以在 handler 选项中通过处理器的名称指派其解析标准输出文本
处理器名称通过 get_name()
方法定义
选项类型:list[str] 或 null
默认值:
custom_handlers:
例如:
custom_handlers:
- handlers.my_handler.MyHandler
下面这个例子中,handlers.my_handler
是包路径,MyHandler
是类名
custom_info_reactors
用于处理 info 对象的自定义 Info 响应器 类所组成的列表。这些类应当是 AbstractInfoReactor
的子类
所有自定义 info 响应器都将注册到反应堆列表中,以处理来自服务器的信息
选项类型:list[str] 或 null
默认值:
custom_info_reactors:
例如:
custom_info_reactors:
- my.customize.reactor.MyInfoReactor
下面这个例子中,my.custom.reactor
是包路径,MyInfoReactor
是类名
watchdog_threshold
使得 看门狗 认为任务执行者 (task executor) 线程已经未响应所需的时间间隔。将其设为 0 以禁用 看门狗
选项类型:int 或 float
默认值:
watchdog_threshold: 10
handler_detection
在默认情况下,MCDR 会在启动时弃用服务端处理器正确性检测,并运行一段时间,用于检测可能出现的 服务端处理器 配置错误
将其设为 false 以禁用服务端处理器检测逻辑,以减少部分 MCDR 开始运行时的性能损耗。这主要在性能分析 MCDR 时使用
选项类型:boolean
默认值:
handler_detection: true
debug
调试日志模式开关。将 all
设置为 true
以启用所有的调试输出。也可以打开部分选项,以启用某些调试输出
默认值:
debug:
all: false
mcdr: false
handler: false
reactor: false
plugin: false
permission: false
command: false