MCDR Guard

服务端自动恢复,支持游戏内一键部署 MCDR 后台守护。

management

Installation command

!!MCDR plugin install mcdr_guard

Synced at

...

Last update

...

Latest version

Total downloads

19

Back to catalogue

MCDR Guard

服务端停了,自动拉起来。

MCDR Guard 每 5 秒检查一次服务端状态。服务端关闭后,约 30 秒内尝试启动,效果与 !!MCDR server start 相同。PrimeBackup 有任务时会等待,避免在回档过程中启动服务端。

需要 MCDReforged 2.15.7 或更高版本。

安装

从 Releases 下载 .mcdr 文件,放入 plugins,然后执行:

!!MCDR plugin reloadall

升级时先移除旧的插件文件,不要同时保留两个版本。

进服后输入一次:

!!guard setup

插件会自动部署后台守护,不用另外下载启动器或输入终端命令。输入 !!guard 查看版本和启用状态。以上命令需要 MCDR 管理员权限;Minecraft OP 不一定拥有该权限。

官方插件目录收录后,也可以使用以下命令安装或更新:

!!MCDR plugin install mcdr_guard
!!MCDR plugin install -U mcdr_guard

使用

安装后自动启用。以下命令需要管理员权限,控制台可以直接执行。

命令用途
!!guard显示版本和状态
!!guard setup一键部署并启用后台守护
!!guard off暂停自动恢复
!!guard on恢复自动恢复
!!guard stop暂停恢复并关闭服务端与 MCDR

计划停服用 !!guard stop。只想关闭服务端做维护,先执行 !!guard off,再执行 !!MCDR server stop,否则服务端会被重新启动。暂停状态会保留到下次启动。

PrimeBackup 的任务等待适配基于 1.12.0。无法读取任务状态时,插件会等待并提示。其他需要停服操作的插件,请先手动暂停 Guard。

恢复 MCDR 进程

!!guard setup 会接管当前 MCDR,等它完全退出后再启动新进程。重复执行不会启动多个守护进程。部署记录会保留,下次启动时会自动部署守护。同目录已有 MCDR 时,新实例会拒绝启动服务端;后台运行时直接进游戏管理即可。

检测到世界锁被其他服务端占用时,会暂停自动恢复。先正常关闭多余的服务端,确认只保留一个实例,再执行 !!guard on。不要删除 session.lock。

从 1.2.0 升级:先在游戏内执行 !!guard stop,等旧 MCDR 和后台守护退出,替换插件后手动启动一次 MCDR,再执行 !!guard setup。这样会同时更新后台启动器。

自动恢复后的 MCDR 在后台运行,控制台输出写入 .mcdr_guard/console.log,游戏内命令照常可用。每次恢复会读取原来的 config.yml,生成关闭控制台输入的运行副本,保留原配置。它不注册系统服务,不能在电脑关机后启动服务器。使用自定义 --config 或 --permission 参数的环境暂不支持一键部署。

如果希望保留终端交互,也可以从 Releases 下载 mcdr_guard_launcher.py,放到含有 config.yml 的目录,在退出原来的 MCDR 后运行:

python3 mcdr_guard_launcher.py

Windows 使用 python。启动器会执行当前环境中的 mcdreforged,退出码为 0 时也会重启。首次等待 5 秒,连续退出时逐步延长到 60 秒。运行满 5 分钟后,等待时间恢复为 5 秒。

计划停服后,先按原来的方式启动 MCDR,再输入 !!guard on;使用终端启动器时也可以运行:

python3 mcdr_guard_launcher.py --resume

不要同时运行多个启动器或其他进程守护工具。自动恢复不处理进程卡死,也不修复导致停服的磁盘、配置或存档问题。

开发

python -m pip install -r requirements-dev.txt
python -m unittest discover -s tests -v
python build.py

产物位于 dist。推送与插件版本一致的 tag(例如 v1.2.1)会运行测试并发布 Release。官方目录提交文件位于 catalogue/mcdr_guard。

MIT License.

README source: README.md