TimeManager - 时间管理大师
增加或减少速度,同步世界,设置并显示实际时间和日期……
Bukkit / Spigot
作者 ArVdC
支持版本 1.9 - 1.21
服务器使用量
160
服务玩家数
378
下载量
13,784
插件详细介绍
TimeManager 是一款功能强大的 Spigot 插件,用于精细控制和管理服务器中各个世界的时间流速、显示与睡眠机制。它提供了高度可定制的时间系统,支持多语言、占位符、计划命令等功能,并能与 PlaceholderAPI 等插件集成。
核心功能
时间管理
- 为每个世界定义独立的起始时间和速度倍率。
- 时间流速最高可加速或减速至 20 倍,或设置为与现实 UTC 时间同步(可附加本地偏移)。
- 可为白天和夜晚分别设置不同的速度倍率,适用于 RPG 或小游戏场景。
- 服务器启动或重载时,世界列表和时间器会自动更新并同步。
- 支持通过游戏内命令修改时间与速度,或在手动修改配置文件后重载生效。
- 可为每位玩家设置特定的时间偏移。
睡眠管理
- 管理睡眠所需玩家数量、跳过夜晚时的动画效果、世界间的唤醒同步等。
- 可设置睡眠为允许、禁止,或与其他世界“链接”同步。
- 支持基于玩家个体的权限控制。
计划命令
- TimeManager 可以按照
cmds.yml文件中的设定,在指定时间执行命令。 - 计划命令可以使用下文列出的占位符(
{tm_player}除外)。
命令覆写
- 本插件覆写了原版的
/time命令。 - 改变单个世界时间的命令是
/tm set time [ticks|daypart|HH:mm:ss] [world]。
玩家命令 /now
格式
/now <display> <world>功能
- 使用单一命令,通过自定义消息显示时间、日期、已过去的天数或周数等信息。
- 消息支持使用占位符,并可通过
lang.yml文件实现多语言自动适配玩家语言环境。 - 通过权限节点,可以控制玩家是否能选择
display参数和/或world参数。 - 下界和末地世界可以拥有特定的显示消息。
- YAML 配置文件中支持使用十六进制颜色代码。
参数说明
<display>:显示方式,可选值:msg:在聊天栏显示。title:在屏幕标题显示。actionbar:在快捷栏上方显示。<world>:指定要查看时间的世界。
可用占位符
以下占位符区分大小写,可用于 lang.yml、cmds.yml 文件,以及告示牌、书、聊天消息和命令中。
- 玩家与世界
{tm_player}:玩家名称。{tm_world}:世界名称。
- 时间与时刻
{tm_tick}:当前游戏刻。{tm_time12}:当前时间 (hh:mm:ss,12小时制,1→12)。{tm_time24}:当前时间 (HH:mm:ss,24小时制,0→23)。{tm_hours12}:当前小时 (2位数,12小时制,1→12)。{tm_hours24}:当前小时 (2位数,24小时制,0→23)。{tm_minutes}:当前分钟 (2位数)。{tm_seconds}:当前秒数 (2位数)。{tm_ampm}:当前是 AM 或 PM。{tm_daypart}:当前时段名称(根据语言文件显示四个时段之一)。
- 日期与日历
{tm_currentday}:当前天数 (1 → ∞)。{tm_elapseddays}:已过去的天数 (0 → ∞)。{tm_dayname}:当前日期名称(基于lang.yml文件)。{tm_yearday}:一年中的第几天 (1 → 365)。{tm_yearweek}:一年中的第几周 (1 → 52)。{tm_week}:已过去的周数 (1 → ∞)。{tm_monthname}:当前月份名称(基于lang.yml文件)。{tm_dd}:日期中的“日”部分 (2位数)。{tm_mm}:日期中的“月”部分 (2位数)。{tm_yy}:日期中的“年”部分 (2位数)。{tm_yyyy}:日期中的“年”部分 (4位数)。
依赖与集成
TimeManager 可以通过以下插件显示其占位符:
只需将对应的 API 插件放入插件文件夹,并在 TimeManager 的 config.yml 文件中将相关节点设置为 true 即可。
管理员命令 /tm
检查与信息类
/tm checkConfig:管理员和后台可查看config.yml和lang.yml文件的摘要。/tm checkSql:根据config.yml中的配置检查 MySQL 服务器的可用性(仅检查 IP 地址和端口)。/tm checkTime [all|server|world]:显示调试/管理信息,包括服务器启动时间、当前服务器时间,以及特定世界(或所有世界)的当前时间、起始时间和速度。/tm checkUpdate [bukkit|spigot|github]:检查所选更新源是否有插件新版本(仅限 MC 1.8.8+)。/tm help [cmd] [<subCmd>]:显示目标命令和子命令的正确用法及简短描述。
操作与执行类
/tm now [msg|title|actionbar] [player|all|world]:向特定玩家、特定世界所有玩家或所有在线玩家发送/now消息(聊天、标题或快捷栏上方)。/tm reload [all|config|lang|cmds]:在手动修改 YAML 文件后重新加载数据。所有时间器将立即重新同步。/tm resync [all|world]:基于服务器启动时间、已过去时间和当前速度倍率,重新同步单个或所有世界的时间器。
设置类 (`/tm set ...`)
- 日期与时间
date [today|yyyy-mm-dd] [all|world]:为指定世界(或所有世界)设置当前日期。可以是today或任意yyyy-mm-dd日期。月份长度与现实对应,但二月固定为 28 天,因此一年总是 365 天。time [ticks|daypart|HH:mm:ss] [all|world]:为指定世界(或所有世界)设置当前时间。建议使用此命令代替原版/time命令。Tab 补全提供便捷预设,如 “day”、“noon”、“night”、“midnight” 等。elapsedDays [0 → ∞] [all|world]:为指定世界(或所有世界)设置已过去的天数。设为0将使世界回到第一天。initialTick [ticks|HH:mm:ss]:修改服务器的初始游戏刻。
- 速度与时长
speed [0.0 → 10.0] [all|world]:用小数倍率设置世界速度。0.0冻结时间,0.1到0.9减速,1.0正常速度,1.1到10.0加速。设为24.0或realtime可使世界时间与现实时间同步。speedDay [0.0 → 10.0] [all|world]与speedNight [0.0 → 10.0] [all|world]:分别为白天和夜晚设置不同的速度倍率。duration [00d-00h-00m-00s] [all|world]:通过期望的时长(而非速度倍率)来设置世界速度。durationDay [00d-00h-00m-00s] [all|world]与durationNight [00d-00h-00m-00s] [all|world]:分别为白天和夜晚设置不同的时长。
- 起始与同步
start [ticks|daypart|HH:mm:ss|timeShift] [all|world]:定义指定世界(或所有世界)在服务器启动时的时间。默认所有世界从第 0 刻开始。时间器将立即重新同步。若世界使用现实时间速度,此值将决定 UTC 时间偏移,可接受如+1或-1的值。firstStartTime [default|previous|start] [all|world]:强制世界在服务器启动时的起始时间。default为通常的启动同步,start强制使用世界配置中start节点的时间,previous恢复服务器关闭前的时间。sync [true|false] [all|world]:定义速度调整方式是增减世界的实际游戏刻,还是根据服务器时间拟合理论刻值。默认所有世界为false。基于现实时间或冻结的世界不使用此选项。
- 玩家特定
playerOffset [-23999 → 23999] [all|player]:为玩家客户端定义相对于世界时间的特定偏移(世界速度仍然生效)。设为0可取消。playerTime [ticks|daypart|HH:mm:ss|reset] [all|player]:为玩家客户端定义特定时间(世界速度仍然生效)。使用reset参数可取消。
- 功能与杂项
sleep [true|false|linked] [all|world]:定义玩家在指定世界(或所有世界)是否可以睡眠至次日。默认所有世界为true,除非其时间器设置为现实时间(此时必须为false)。linked功能允许多个世界组共同度过夜晚,保持时间同步。refreshRate [ticks]:设置更新速度拉伸/压缩效果的延迟(单位:游戏刻)。必须是2到20之间的整数。默认值为10,请注意过小的值可能导致服务器卡顿。multiLang [true|false]:设置是否为/now命令使用自动翻译。defLang [lg_LG]:选择当玩家语言环境在lang.yml中不存在或useMultiLang为false时使用的翻译。useCmds [true|false]:设置为true以启用自定义命令调度器。详见cmds.yml文件。update [none|bukkit|spigot|github]:定义检查更新的源服务器(仅限 MC 1.8.8+)。debugMode [true|false]:设置为true可在控制台启用彩色详细消息,有助于理解插件机制。
命令速查
玩家命令
/now <msg|title|actionbar> <world>
管理员命令 (`/tm`)
checkConfigcheckSqlcheckTime [all|world]checkUpdate [bukkit|spigot|github]help [cmd] [<subCmd>]now [msg|title|actionbar] [player|all|world]reload [all|config|lang|cmds]resync [all|world]set date [today|yyyy-mm-dd] [all|world]set debugMode [true|false]set defLang [lg_LG]set duration [00d-00h-00m-00s] [all|world]set durationDay [00d-00h-00m-00s] [all|world]set durationNight [00d-00h-00m-00s] [all|world]set elapsedDays [0 → ∞] [all|world]set firstStartTime [default|previous|start] [all|world]set initialTick [ticks|HH:mm:ss]set multiLang [true|false]set playerOffset [-23999 → 23999] [all|player]set playerTime [ticks|daypart|HH:mm:ss|reset] [all|player]set refreshRate [ticks]set sleep [true|false|linked] [all|world]set speed [multiplier] [all|world]set speedDay [multiplier] [all|world]set speedNight [multiplier] [all|world]set start [ticks|daypart|HH:mm:ss] [all|world]set sync [true|false] [all|world]set time [ticks|daypart|HH:mm:ss] [all|world]set update [none|bukkit|spigot|github]set useCmds [true|false]
权限节点
timemanager.*:所有权限。timemanager.admin:提供或拒绝访问所有/tm命令及其参数。timemanager.now.*:所有/now相关权限。timemanager.now.cmd:提供或拒绝访问/now命令(可限制可用参数)。timemanager.now.display:允许选择display参数。timemanager.now.world:允许选择world参数。timemanager.placeholders:允许在聊天中使用占位符。timemanager.sleep.*:所有睡眠相关权限。timemanager.sleep.allowed:指定玩家是否被允许上床睡觉(但仍可设置重生点)。timemanager.sleep.counted:指定玩家是否被计入跳过夜晚所需的人数。
配置文件 (YAML)
各文件的详细说明可在文件头部找到。
config.yml
主要包含每个世界的信息以及通用选项,如参考游戏刻、SQL 数据库使用、占位符激活等。
lang.yml
包含不同的翻译文本。可以修改现有翻译或添加新语言。还可以根据每个玩家的语言环境激活自动翻译。
cmds.yml
允许您在特定的时间和日期调度执行命令,并可根据选择的周期重复执行。参考时间和日期可以是任何世界的时间,也可以是实际时间。
开发者 API
虽然本插件并非专为作为 API 设计,但您仍可以通过导入 PlaceholdersHandler 类在 Java 代码中使用各种占位符:
import net.vdcraft.arvdc.timemanager.mainclass.PlaceholdersHandler;然后使用以下方法之一来替换字符串中的占位符
String replaceAllPlaceholders (String msg, String world, String lang, Player p)String replaceAllPlaceholders (String msg, String world, String lang)String replaceAllPlaceholders (String msg, World w, String lang, Player p)String replaceAllPlaceholders (String msg, World w, String lang)
要获取客户端语言,可导入以下类
import net.vdcraft.arvdc.timemanager.mainclass.PlayerLangHandler;然后使用以下方法之一
String setLangToUse (CommandSender sender)String setLangToUse (Player p)
兼容性
- v1.10.0 版本:兼容 MC 1.9.4 至 1.21.3。
如果您有特定的功能建议或遇到任何错误,请在 GitHub 上提交 Issue。
测试支持版本
版本分布
基本信息
插件名称
TimeManager
作者
ArVdC
平台
Bukkit / Spigot
支持版本
1.9 - 1.21
点赞数
11
Modrinth 下载
857
最近版本
1.10.2
46
2.1.0
38
2.0.0
15
1.8.2
12
1.10.1
9
1.9.1
5
1.12.3
5
1.7.1
3
1.6.0
3
1.12.2
3
1.10.0
3
1.6.1
2