Skip to content

Repository files navigation

IdleExecutor

一个面向 Minecraft 服务端的 Forge 1.20.1 模组:当服务器没有玩家在线、且空闲时长达到设定阈值时,自动执行外部关机脚本,帮你节省服务器资源。

警告

本项目由 Codex + deepseek-v4-flash(high) 辅助生成,使用前请自行审查代码并评估风险。

功能特性

  • 最后一名玩家下线后开始空闲倒计时,倒计时结束仍无玩家在线时自动执行外部脚本
  • 倒计时期间只要有玩家登录,立即取消关机
  • 配置支持热重载,修改后无需重启服务器即可生效
  • 支持在游戏内/控制台查看状态、强制关机
  • 仅服务端生效(Dedicated Server)

工作原理

  1. 最后一名玩家下线时,模组开始 idleShutdownDelaySeconds 秒的倒计时
  2. 倒计时期间任意玩家登录,倒计时取消
  3. 倒计时结束且服务器仍为空时,通过 setsid 独立执行 shutdownScriptPath 指向的脚本
  4. 脚本输出重定向到 /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 立即强制执行关机脚本(会先取消未完成的倒计时)

安装使用

  1. 将构建出的 jar 放入服务端的 mods/ 目录
  2. 启动服务器,配置文件会在 defaultconfigs/ 下自动生成
  3. 按需修改配置,并确保 shutdownScriptPath 指向的脚本存在且有执行权限
  4. 可在服务端控制台使用 /idleexecutor status 验证是否生效

构建

构建很简单,详见构建指南:IDEA 导入并完成同步后,运行 Gradle 的 jar 任务,等待构建完成,产物会出现在 build/libs/ 目录。

许可

本项目使用 MIT 许可。

About

Minecraft Forge 1.20.1 服务端模组:服务器无玩家在线且空闲达到设定阈值时,自动执行外部关机脚本。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages