一个面向 Minecraft 服务端的 Forge 1.20.1 模组:当服务器没有玩家在线、且空闲时长达到设定阈值时,自动执行外部关机脚本,帮你节省服务器资源。
本项目由 Codex + deepseek-v4-flash(high) 辅助生成,使用前请自行审查代码并评估风险。
- 最后一名玩家下线后开始空闲倒计时,倒计时结束仍无玩家在线时自动执行外部脚本
- 倒计时期间只要有玩家登录,立即取消关机
- 配置支持热重载,修改后无需重启服务器即可生效
- 支持在游戏内/控制台查看状态、强制关机
- 仅服务端生效(Dedicated Server)
- 最后一名玩家下线时,模组开始
idleShutdownDelaySeconds秒的倒计时 - 倒计时期间任意玩家登录,倒计时取消
- 倒计时结束且服务器仍为空时,通过
setsid独立执行shutdownScriptPath指向的脚本 - 脚本输出重定向到
/var/log/idleexecutor-run-sh.log,不会阻塞服务器进程
配置文件位于 defaultconfigs/idleexecutor-server.toml(服务端专用配置,第一次启动时自动生成)。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
idleShutdownDelaySeconds |
int | 300 |
服务器空闲多少秒后触发关机(无玩家在线开始计时),范围 10 ~ 86400 秒 |
shutdownScriptPath |
string | /root/auto_stop_and_shutdown.sh |
关机脚本路径,支持相对路径和绝对路径 |
示例:
idleShutdownDelaySeconds = 300
shutdownScriptPath = "/root/auto_stop_and_shutdown.sh"修改配置后执行 /idleexecutor reload 即可热重载并立即生效。
所有指令需要 OP 权限,仅在专用服务器上可用。
| 指令 | 权限等级 | 说明 |
|---|---|---|
/idleexecutor reload |
2 | 从磁盘热重载配置;若关机倒计时正在运行,会按新的延迟重新开始 |
/idleexecutor status |
2 | 查看当前生效的配置与关机倒计时状态 |
/idleexecutor shutdown |
4 | 立即强制执行关机脚本(会先取消未完成的倒计时) |
- 将构建出的 jar 放入服务端的
mods/目录 - 启动服务器,配置文件会在
defaultconfigs/下自动生成 - 按需修改配置,并确保
shutdownScriptPath指向的脚本存在且有执行权限 - 可在服务端控制台使用
/idleexecutor status验证是否生效
构建很简单,详见构建指南:IDEA 导入并完成同步后,运行 Gradle 的 jar 任务,等待构建完成,产物会出现在 build/libs/ 目录。
本项目使用 MIT 许可。