检测挂机玩家

检测挂机玩家

极高性能的AFK/空闲检测 · 玩家在移动鼠标后3分钟(可配置)未动作即视为AFK · 可通过大量插件扩展!

检测挂机玩家

根据头部旋转检测玩家非活动状态——简单、准确且快速。旨在作为数据包和服务器管理员的依赖项。

没有附加组件(以实现更好性能)时此功能有限,因此您可能也想下载其中一个附加组件。

附加组件

核心功能

  • 3分钟后将玩家标记为 afk
  • 基于头部旋转进行检测,比位置检测更准确
  • 性能显著优于其他方案
  • 模块化(附加组件见上)

要配置进入挂机状态所需的时间,请使用下面的命令。 默认情况下,该值设为 3600(即3分钟)。

/scoreboard players set .threshold afk.settings NUMBER_OF_TICKS

要允许玩家使用 /trigger afk,请使用以下命令。除非管理员启用,否则玩家无法手动进入挂机状态。

/scoreboard players enable PLAYER afk

性能

常见的挂机检测方法会检查 X/Y/Z 坐标、背包变化和方块交互——通常每 tick 都执行。而本数据包每1.5秒对每个玩家仅执行一次头部旋转 NBT 检查,相较于其他方案,计算量显著减少,有时甚至降低多达两个数量级。

头部旋转检测方法还消除了由实体交互(玩家攻击、爆炸等)以及自动防挂机机制(如水流)导致的误触发。

API

提供了两个函数标签:

  • afk:away - 玩家进入挂机状态时以该玩家身份执行
  • afk:back - 玩家回归时以该玩家身份执行

GitHub 上提供了其他文档,例如所有稳定的记分板目标及其使用方法。

示例实现:

kick-afk-players/data/afk/tags/functions/away.json
{ "values": ["afk_kick:kick"] }
kick-afk-players/data/afk_kick/functions/kick.mcfunction
kick @s AFK