Tracking
概览
Tracking 会每隔固定时间记录每位玩家的位置。玩家每次加入时都会开始一个新的会话,扩展每隔几秒就向其中添加一个点(坐标、世界和时间),直到玩家离开。会话保存在一个构件中。
管理员随后可以查看某个会话。路径会以一条由尘埃粒子组成的动画轨迹围绕管理员重放;如果你使用 BlueMap,还会在网页地图上绘制为一条线,并在每个点上放置标记。这是一个很好的工具,可用来了解玩家如何穿行于你的建筑、在哪里迷路,或复查可疑的会话。
功能
- 会话记录 — 每位玩家每次登录一个会话,包含坐标、世界和时间戳。
- 可配置的间隔 — 每
pointIntervalSeconds秒记录一个点,默认 20。 - 游戏内回放 — 只有正在查看的管理员能看到的动画粒子轨迹。
- BlueMap 显示 — 路径线的颜色取自玩家,并可选择显示点标记。
- 持久化存储 — 每次变化几秒后,会话会被写入 TypeWriter 构件。
- 大小受限 — 每个会话最多保留 10,000 个点。
- 兼容 Folia — 记录和粒子循环使用区域安全的调度器。
安装
- 安装 PacketEvents,TypeWriter 本来就需要它。粒子轨迹通过它发送。
- 可选:安装 BlueMap,以便在网页地图上查看会话。
- 将 Tracking 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。
快速上手
- 在 TypeWriter 网页面板中,打开一个**清单(manifest)**页面,添加一个 Tracking Artifact。保留其
artifactId(默认为tracking_storage)。 - 添加一个 Tracking Manifest,并在
storage中链接该构件。如果没有链接构件,则不会记录任何内容。 - 设置
pointIntervalSeconds(例如10),并确认trackingEnabled已开启。 - 发布。从现在起加入的玩家会获得会话。发布时已经在线的玩家,在重新连接之前不会有会话。
- 过一段时间后,运行
/tracking sessions <player>列出某位玩家的会话 id。 - 运行
/tracking inspect <player> <session>回放某个会话。如果安装了 BlueMap,路径也会出现在地图上。 - 不带参数运行
/tracking即可停止查看。
Tracking 会存储玩家的精确坐标,且没有过期时间。如果当地法律要求,请在服务器规则中说明这一点,并在不再需要这些数据时清除构件文件。
工作原理
会话 id 是在所有玩家之间按顺序分配的数字(1、2、3……),而不是每位玩家各自编号。玩家退出时会话结束。
命令
该命令是注册为 /tracking(也可用 /typewriter:tracking)的标准服务器命令,而不是 /typewriter 的子命令。它只能由玩家使用,并需要 typewriter.tracking.inspect。
| 命令 | 说明 |
|---|---|
/tracking sessions <player> | 列出为某位玩家记录的会话 id。 |
/tracking inspect <player> | 列出某位玩家的会话 id。 |
/tracking inspect <player> <session> | 开始查看某个会话:为你显示粒子轨迹,如已启用,还会显示 BlueMap 标记。 |
/tracking | 停止你的查看,并移除其 BlueMap 标记。 |
只要服务器知道玩家的名称,你就可以查看离线玩家。
权限
| 权限 | 授予 |
|---|---|
typewriter.tracking.inspect | 所有 /tracking 命令。 |
配置
所有设置都在 Tracking Manifest 条目中。只会使用找到的第一个清单,更改会在几秒内生效。
trackingEnabled用于开启或关闭记录。关闭后将不再添加点。只有在其开启期间加入的玩家才会创建新会话。blueMapEnabled、showBlueMapPoints和showBlueMapPath控制在 BlueMap 上绘制的内容。如果两个显示选项都关闭,则不会绘制任何内容。- 轨迹只会绘制距离管理员约 30 格以内、且位于管理员所在世界的线段。
条目
2 个条目,由扩展源码生成。
构件1
- Tracking ArtifactStores player tracking sessions and points
清单1
- Tracking ManifestMaster configuration for Player Tracking
故障排查
没有记录到任何会话。 清单必须存在,trackingEnabled 必须开启,并且已链接 storage 构件。会话在玩家加入时开始,因此在你发布之前就已在线的玩家需要重新连接。
/tracking inspect 提示 "No tracking sessions found"。 该玩家还没有记录到会话,或者名称有误。请运行 /tracking sessions <player>。会话至少需要一个点才有用:第一个点会在 pointIntervalSeconds 之后记录。
看不到粒子轨迹。 你所在的世界中至少需要有 2 个点,并且你必须在路径约 30 格范围内。轨迹只对执行查看的管理员可见。
BlueMap 上没有显示。 BlueMap 必须已安装并启用,blueMapEnabled 必须开启且至少开启一个显示选项,并且这些点所在的世界必须是 BlueMap 已知的世界。运行 /tracking 时标记会被移除。
会话不再增长。 一个会话最多保留 10,000 个点。按默认间隔计算,这相当于超过 55 小时的游戏时间。
崩溃后数据丢失。 数据会在最后一次变化 5 秒后以及卸载时保存。在这个时间窗口内发生崩溃,可能会丢失最新的点。