
游戏时长 & 最后在线
# PlayTime — Hytale 游玩时间与最后在线插件
PlayTime — Hytale 的在线时长和最后上线插件
轻量级服务器插件,可追踪玩家最后上线时间和总在线时长。采用简单的 JSON 存储,内置三种语言,并暴露两个直观的命令。
快速链接
功能特性
- 最后上线:
/seen <用户名>显示在线状态或上次断开连接的时间戳。 - 游戏时长:
/playtime <用户名> [--start=日期] [--end=日期]计算总游戏时长或指定时间范围内的时长。 - 日期解析:支持
dd/MM/yyyy-HH:mm或dd/MM/yyyy格式。 - 多语言:内置
en_us、en_fr、en_ru语言包。 - 零外部依赖:将每个玩家的 JSON 存储于
plugins/seenPlugin/data/players/目录。
命令
/seen <用户名>— 显示在线/离线状态及最后上线时间。/playtime <用户名>— 总在线时长。/playtime <用户名> --start=dd/MM/yyyy-HH:mm --end=dd/MM/yyyy-HH:mm/playtime <用户名> --start=dd/MM/yyyy --end=dd/MM/yyyy- 可能遇到的错误:
Invalid date range: start date must be before end date.Invalid start/end date: use dd/MM/yyyy-HH:mm or dd/MM/yyyy.
安装
- 从发布页下载
PlayTime.jar(或在本地构建)。 - 将
PlayTime.jar放入你的 Hytale 服务器插件目录。 - 重启服务器。
使用示例
/seen Loocik
/playtime Loocik
/playtime Loocik --start=01/03/2026 --end=09/03/2026
/playtime Loocik --start=01/03/2026-00:00 --end=09/03/2026-23:59
配置
- 默认语言在代码中设置:
Seen类内的Lang.init("en_us")。 - 切换语言:修改
Seen.setup()中的参数,或在lang/<代码>.json下添加你自己的 JSON 文件,并将Lang.init("<代码>")指向它。 - 日期/时间使用服务器时区(
ZoneId.systemDefault())。
从源码构建
需要安装了 javac 和 jar 的 JDK,并将 HytaleServer.jar 放在 classpath 中。
cd C:\Users\Loocik\Desktop\PlayTime1
if (Test-Path out) { Remove-Item out -Recurse -Force }
mkdir out
javac --release 11 -encoding UTF-8 -cp ".;com\example\plugin\HytaleServer.jar" -d out com\example\plugin\*.java
java -m jdk.jartool --create --file PlayTime.jar --manifest META-INF\MANIFEST.MF -C out . -C . lang -C . manifest.json
数据格式
玩家文件位于 plugins/seenPlugin/data/players/<用户名>.json:
{
"eventList": [
{ "timestamp": 1700000000, "connect": true },
{ "timestamp": 1700003600, "connect": false }
]
}
- 打开的会话(最后一个事件
connect:true)在运行/playtime时会计算到当前时间。
限制
- 如果服务器触发了重复的钩子,可能会出现重复的连续连接/断开事件;游戏时长计算能容忍这一点,但日志可能包含重复项。
- 删除玩家 JSON 文件会重置其追踪时间。
路线图
- 无需修改代码即可配置语言。
- 可选的 SQLite 后端。
- 按世界或按会话的细分数据。
许可证
MIT — 请参见 LICENSE 文件。
享受模组!如果遇到问题,请附上日志片段和你执行的命令来提交 issue。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。