游戏模式检测器

游戏模式检测器

客户端Fabric模组,当玩家切换游戏模式时通知你,显示他们已在该模式下停留的时间,并通过/checkgamemode和/gamemodelog记录每位玩家的切换历史。

游戏模式检测器

你是否曾好奇,你所在的 SMP 服务器的管理员是否在悄悄切换到创造模式或旁观模式?游戏模式检测器会在后台监视每个玩家的游戏模式,并在其发生变化时立即通知你——无需服务器权限,纯客户端运行。

功能简介

  • 自动聊天/快捷栏提醒——每当被追踪的玩家切换游戏模式时,都会收到提醒,包括他们在切换前处于之前模式的时间。
  • /checkgamemode [玩家名] ——实时显示玩家的当前游戏模式及其已保持该模式的时间。
  • /gamemodelog [玩家名] ——显示该玩家最近的游戏模式切换记录(从旧到新,默认最多 50 条),让你看到完整的模式变化,而不仅仅是最近一次切换。
  • /gamemodelog help ——列出所有可用命令。
  • 持久化日志文件 ——每一次切换、首次发现、加入和离开都会写入 config/gamemodedetector/gamemode-log.txt。与聊天记录不同,此文件没有数量限制,并在游戏重启后依然保留,因此是查找完整历史记录的地方。
  • 通过 ModMenu + Cloth Config 完全可配置:启用/禁用提醒,切换快捷栏或聊天提醒,自定义每条消息模板并支持占位符(%player%、%gamemode%、%previous%、%duration%、%time%),设置每个玩家记住的过去切换次数,以及开关文件日志记录。

日志文件内容

每一行都记录了日期和时间、你处于单人游戏还是多人游戏(若为多人游戏,则包含服务器名称/地址)、玩家名称以及发生的事件:

[2026-08-08 00:14:02] [单人游戏] 166f 在你连接时已在线上,当前处于生存模式

[2026-08-08 00:20:41] [多人游戏: MyServer (play.example.net)] Foo 刚刚加入服务器,当前处于生存模式

[2026-08-08 00:31:05] [多人游戏: MyServer (play.example.net)] Foo (加入时间: 2026-08-08 00:20:41): 生存模式 -> 旁观模式 (经过 10分24秒)

[2026-08-08 00:45:12] [多人游戏: MyServer (play.example.net)] Foo 离开了服务器 (在旁观模式中持续了 5分8秒,加入时间: 2026-08-08 00:20:41)

注意:由于游戏协议不会告知客户端已在服务器上的玩家实际加入时间,因此当你连接时已存在的玩家会被记录为“已在线上”,而不是赋予一个虚假的加入时间。

工作原理

Minecraft 服务器已经会向每个连接的客户端发送所有在线玩家的游戏模式(这就是 Tab 列表能显示每位玩家正确图标/名称样式的原因)。游戏模式检测器只是每 tick 监听这些现有数据,与上次看到的内容进行比较,并在发生变化时做出反应——它不需要任何特殊权限、插件或服务器端安装。

这仅使用服务器已向所有人广播的数据来追踪游戏模式变化。它无法揭示你加入时已隐藏为旁观者的玩家(原版游戏有意在网络层面将旁观者从生存/冒险玩家中隐藏)——它只是在变化发生时告诉你何时发生了变化。

前置要求

  • Fabric Loader
  • Fabric API
  • Cloth Config API
  • ModMenu(可选,用于游戏内设置界面)

建议在大型公共服务器上禁用聊天提醒(或减少使用频率),因为这些服务器上游戏模式切换频繁,以避免聊天刷屏。