
倒计时
一个管理服务器关闭和重启的多功能工具
查看大图T-Minus
T-Minus 是一款轻量级、稳健且高度可定制的服务端实用工具,用于管理服务器重启与关闭。无论您是运行一个小型私人服务器,还是一个大型公共网络,T-Minus 都能确保您计划的维护和手动重启无缝进行,并让您的玩家全程了解最新动态。
与旧版重启工具不同,T-Minus 采用了经过优化的非阻塞式调度器,可以提前数小时广播低调的倒计时公告,而不会锁定服务器指令或引起提前卡顿。
主要特点
- 灵活的调度引擎: 可在每天特定时间或指定日期(YYYY-MM-DD)安排关闭或重启。
- 时区支持: 使用标准时区(如 UTC 偏移量 +3、-5 或 0)来定义您的计划任务,轻松与全球玩家协调。
- 智能公告: 为小时、分钟和秒创建自定义公告间隔(例如,在 10 小时、2 小时、30 分钟、5 分钟时提醒玩家,然后在最后 10 秒每秒倒计时一次)。
- 多种输出模式: 直接将倒计时广播到玩家聊天栏、操作栏(快捷栏上方)以提高可见性,或两者兼有。
- 完全可定制的消息: 可修改每个前缀、警告、错误、踢出界面和原因。完全支持标准 Minecraft 颜色格式代码(
§)。 - 实时配置重载: 调整设置、修改即将进行的计划,或本地化消息文本,然后实时重载配置,无需重启服务器。
- 操作员级别安全: 设置所需的操作员(OP)权限级别(从 1 到 4),以限制可以管理服务器循环的人员。
命令与用法
所有命令都需要操作员权限(通过配置文件中的 opLevel 设置)。
/tminus status - 显示模组的当前状态、所需操作员级别、广播输出模式,并列出即将进行的计划关闭和重启及其精确剩余时间。

/tminus reload - 实时重载配置文件(config/tminus.toml)。适用于快速更新计划或消息。

/tminus stop <seconds> [reason] - 使用自定义倒计时启动手动关闭流程。如果未指定原因,则默认为配置中的备用关闭原因。
('/tminus stop 120 gn yall'):

/tminus restart <seconds> [reason] - 使用自定义倒计时启动手动重启流程。如果未指定原因,则默认为配置中的备用重启原因。
('/tminus restart 460 im bored'):

/tminus cancel - 立即停止任何进行中的倒计时(手动或计划),并通知玩家该流程已取消。


配置文件(tminus.toml)
首次启动时,模组会生成一份整洁、注释详细的配置文件,位于 config/tminus.toml。以下是展示其灵活性的配置示例:
# T-Minus Mod 配置文件启用或禁用整个模组
enabled = true
执行命令所需的操作员(OP)级别(1 至 4)
opLevel = 4
消息广播模式:
"CHAT" - 仅聊天栏
"ACTIONBAR" - 仅操作栏(快捷栏上方)
"BOTH" - 聊天栏和操作栏同时显示
outputMode = "BOTH"
所有聊天消息的前缀(支持 Minecraft 颜色代码,如 §)
textPrefix = "§r§f[服务器] §r"
关闭/重启通知的公告间隔
[announcements]
seconds = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
minutes = [30, 15, 10, 5, 1]
hours = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
分别启用/禁用计划的关闭和重启
shutdownScheduleEnabled = false
restartScheduleEnabled = false
计划的关闭
date: 可以是 "everyday" 或 具体 "YYYY-MM-DD"
time: 格式为 "HH:MM"(24小时制)
timezone: UTC 偏移量(例如 "-5"、"0"、"+3")
repeatHours:(可选)从指定日期和时间开始,每隔 N 小时重复一次
[[shutdownSchedule]]
date = "everyday"
time = "04:00"
timezone = "0"
计划的重启
[[restartSchedule]]
date = "everyday"
time = "16:00"
timezone = "0"
系统消息和短语
[messages]
shutdownInitiated = "§c服务器将在 §6%time%§c 后关闭,原因:§e%reason%§r"
shutdownCancelled = "§a管理员已取消服务器关闭!§r"
restartInitiated = "§e服务器将在 §6%time%§e 后重启,原因:§6%reason%§r"
restartCancelled = "§a管理员已取消服务器重启!§r"
countdownHours = "§c剩余时间:§6%time% 小时。§c 原因:§e%reason%§r"
countdownMinutes = "§c剩余时间:§6%time% 分钟。§c 原因:§e%reason%§r"
countdownSeconds = "§c剩余时间:§6%time% 秒!§c 原因:§e%reason%§r"
shutdownKickMessage = "§c服务器正在进行维护关闭。\n§c原因:§6%reason%§r"
restartKickMessage = "§e服务器正在重启。\n§e原因:§6%reason%§r"
noActiveTask = "§7当前没有进行中的关闭或重启进程。§r"
shutdownActive = "§6活动任务:§c关闭§r"
restartActive = "§6活动任务:§e重启§r"
waitingForTask = "§6活动任务:§7无(等待中)§r"
timeRemaining = "§c剩余时间:§6%time% 秒。§r"
currentReason = "§c原因:§e%reason%§r"
prefixRequired = "§c只有级别达到 §e%level%§c 的操作员才能使用此命令!§r"
configReloaded = "§aT-Minus 配置已成功重载!§r"
alreadyRunning = "§c已有任务在运行!请先取消它。§r"
shutdownInitiatedCommand = "§c已启动关闭,将在 §6%time% 秒后执行。§c 原因:§e%reason%§r"
restartInitiatedCommand = "§e已启动重启,将在 §6%time% 秒后执行。§e 原因:§6%reason%§r"
statusHeader = "§6--=={ §eT-Minus 状态§6 }==--§r"
statusEnabled = "§6模组状态:§a已启用§r"
statusDisabled = "§6模组状态:§c已禁用§r"
statusOpLevel = "§6所需操作员级别:§e%level%§r"
statusOutputMode = "§6输出模式:§e%mode%§r"
statusCountdownTrigger = "§6公告:秒:§e%seconds%§6 | 分钟:§e%minutes%§6 | 小时:§e%hours%§r"
statusShutdownScheduleEnabled = "§6计划关闭:§a已启用§r"
statusShutdownScheduleDisabled = "§6计划关闭:§c已禁用§r"
statusRestartScheduleEnabled = "§6计划重启:§a已启用§r"
statusRestartScheduleDisabled = "§6计划重启:§c已禁用§r"
upcomingShutdowns = "§6即将进行的计划关闭:§r"
upcomingRestarts = "§6即将进行的计划重启:§r"
noUpcomingTasks = "§7 没有即将进行的计划任务。§r"
scheduledTaskFormat = "§6 - 日期:§e%date%§6,时间:§e%time%§6 (§eUTC%timezone%)§6 -> 将在 §e%remaining%§r 后触发§r"
modDisabledError = "§7T-Minus 模组当前已在配置中§c禁用§7!§r"
errorMissingSecondsStop = "§c错误:缺少必需参数 'seconds'!用法:§6/tminus stop <seconds> [reason]§r"
errorMissingSecondsRestart = "§c错误:缺少必需参数 'seconds'!用法:§6/tminus restart <seconds> [reason]§r"
errorInvalidNumber = "§c错误:'seconds' 的数字格式无效!必须是正整数,当前输入:§6'%input%'§r"
errorNegativeNumber = "§c错误:'seconds' 必须是正整数(大于等于 1)!当前输入:§6'%input%'§r"
repeatsEveryFormat = " §6(每 §e%hours%小时§6 重复一次)§r"
scheduledRestartReason = "计划重启(%time% UTC%timezone%)§r"
scheduledShutdownReason = "计划关闭(%time% UTC%timezone%)§r"
defaultShutdownReason = "维护"
defaultRestartReason = "重启"
工作原理
与传统的、在执行前数小时就生成繁重持续任务的关闭脚本不同,T-Minus 实现了双阶段调度逻辑:
- 被动公告阶段: 只要计划事件还很遥远,模组就会运行被动的小时/分钟检查。如果时间匹配到您预设的间隔之一(例如,剩余 2 小时),就会向玩家发送一条简洁的提醒,不影响主服务器循环。
- 主动倒计时阶段: 当剩余时间降至您配置的
[announcements]时,模组会初始化实时视觉倒计时引擎,在操作栏上显示跳动的警告,并以清晰的断开连接踢出界面完成任务。
正在加载版本记录…





正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。