可能有读者会问了,为什么会有自动关服这个需求呢?是不是我写错了怎么的。
其实不是,这是真的是自动关服。
- 下载插件 jar 包
- 放入插件目录
- 重启服务器
- 在服务器开启时,本插件会复写服务器 MOTD,并在 MOTD 的末尾添加上本次的开服时间。
- 当玩家人数从 1 变为 0 并保护 10 分钟 0 人在线的时候,本插件会自动关闭服务器。
- 当玩家人数为 1 时,若这位玩家使用指令
/autoshutdown
,则本插件会在这名玩家离开服务器后立刻关闭服务器。 - 当玩家人数为 1 时,若这位玩家使用指令
/autoshutdown
但在这名玩家离开服务器签服务器在线玩家人数超过 1,则/autoshutdown
效果取消。
看不懂,对吧?我也看不懂,我们来画一个 DFA。
+----------------+
| 服务器开始启动 |
+-------+--------+
|
| 有玩家在线
V
+-------+--------+
| 服务器正常工作 | <------------------------+----------------------------\
+-------+--------+ | |
| | |
| 玩家人数为 1 | |
V | |
+-------+------------------------+ | |
| 允许用户使用指令 /autoshutdown +--------->/ 有新的玩家进入服务器 |
+-------+-------------------+--+-+ |
| T | |
| 未使用指令 | \----------------------------\ |
| 该玩家退出游戏 | 该玩家使用指令 | |
| | +-----+------+ |
V | | 使用了指令 +---->/ 有新的玩家进入服务器
+-------+------+ | +-----+------+
| 服务器无玩家 +----------->/ 玩家人数为 1 |
+-------+------+ |
| |
| 等待十分钟 |
| |
V |
+-------+----+ V
| 服务器关闭 +----------------------------------------------/
+-------+----+
大概就是这样,主要是我用来给一个机会让群友们自己关闭服务器。 在服务器关闭后,又会被 Docker / Kubernetes 的看门狗自动重启, 这样就十分顺利地就能完成一次服务器重启了。