Forge Auto Shutdown

在特定时间、运行一定时长后停止服务器,或由用户投票决定。

工具

这是一个1.12.2版本的“ForgeAutoShutdown”模组移植,原版针对1.10.2 (仓库)

该模组必须在客户端和服务器端同时安装。它不会在单人世界添加任何命令,但对本地化消息是必需的。

ForgeAutoShutdown是一个能够实现以下功能的模组:

  • 计划服务器在一天中的特定时间自动关闭,或在运行X小时和分钟后自动关闭。这允许服务器被shell脚本、Windows批处理文件或服务自动重启。
  • 允许玩家投票进行手动关闭,这样服务器卡顿时无需管理员干预。
  • 关闭或杀死挂起(停滞)或卡顿的服务器。

要求

  • 运行forge 14.23.5.2859的Minecraft Forge服务器1.12.2。
  • 一个在服务器关闭后自动重启的外壳脚本(可选,但强烈推荐)。

功能

这些功能均可在配置中禁用

计划关闭

ForgeAutoShutdown将在服务器启动时以INFO级别记录一条消息,包含下次计划关闭的日期和时间。例如:

[10:50:09] [Server thread/INFO] [ForgeAutoShutdown]: Next automatic shutdown: 08:30:00 09-June-2019

如果此消息缺失,则说明模组未正确安装或计划已在配置中禁用。如果该模组安装在Minecraft客户端上,它将在控制台记录一个ERROR,并且不执行任何功能。它不会导致客户端崩溃或禁用。

模式

默认情况下,关闭将计划在一天中的特定时间发生。这是服务器的本地时间,并且总是在服务器启动后的24小时内发生。这意味着如果服务器启动时间错过计划关闭时间(即使只有几分钟),它将计划到第二天。

或者,将Uptime设置为true意味着服务器可以在特定的小时数或分钟数后关闭。这可以允许服务器一天内重启多次,或几天后重启等。

警告

默认情况下,计划关闭将在预定时间前,每分钟向所有玩家发出警告,持续五分钟。这可以通过将Warnings设置为false来禁用。这意味着服务器将在预定时间无警告地关闭。

延迟

如果希望,并且服务器上仍有玩家,关闭可以被延迟可配置的时间量。要启用此功能,将Delay设置为true,并将DelayBy调整为要延迟的分钟数。

关闭事件将一直延迟直到服务器为空。在检查服务器是否仍有玩家时,会排除假玩家。请注意,关闭警告在配合延迟时效果不佳,如果在倒计时期间有玩家上线,待定的关闭将被取消。

投票

如果启用,玩家可以投票决定手动关闭。为此,玩家必须执行/shutdown命令。然后,所有玩家(包括发起投票者)必须使用/shutdown yes或/shutdown no进行投票。

如果no票数达到最大阈值,则投票失败。如果已经有人投票但期间有过多的玩家断开连接,则投票失败。如果投票失败,则需经过设定的分钟数后才能再次发起投票。

如果投票成功,服务器将无警告地立即关闭。如果配置了合适的自动重启方式,可以预计服务器将在几分钟内重新启动。

看门狗(实验性)

如果启用,一个看门狗线程可以定期检查服务器的响应性。默认情况下,它每10秒检查一次:

  • 服务器是否在某个游戏刻上挂起(或停滞)。
  • TPS是否在一定时间内低于某个数值。

如果检测到任何一种问题,看门狗将尝试软终止(或硬终止,如果配置了的话)。这会使服务器在关闭前尝试保存所有数据。如果软终止耗时超过十秒,看门狗将执行硬终止。