AntiAFK - The Performance AFK Solution

AntiAFK是一款下一代防空闲工具。它通过行为分析、宏检测和验证码测试,拦截最复杂的机器人和漏洞利用。其高性能设计在不给服务器带来过载的情况下,提供公平的保护。

资源图片
AntiAFK Banner ## 智能、注重性能且全面的空闲管理系统 ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![Java: 8+](https://img.shields.io/badge/Java-8+-blue.svg) ![API: Spigot 1.13+](https://img.shields.io/badge/API-Spigot_1.13+-orange.svg)
---
**AntiAFK** 是下一代管理工具,专为现代 Minecraft 服务器设计,在标准空闲计时器不足的情况下使用。 它的主要目标不仅是检测空闲玩家,而且是主动防止最复杂的机器人和利用空闲检测的企图。 它采用以服务器性能为优先的设计,即使在最繁忙的服务器上也能悄无声息地运行。
视觉效果 轨道检测系统(行为分析)
轨道检测系统视觉效果。 轨道检测系统 1 轨道检测系统 2
重复在同一方块内不断进行无意义的移动(无意义活动分析)
无意义活动系统视觉效果。 无意义活动系统 1 无意义活动系统 2
GUI 显示:
GUI 系统图像。 GUI 系统
---
# ✨ 关键特性 ✨
### **🧠 “学习模式”:智能模式识别** AntiAFK 利用机器学习原理,检测和对抗遵循预定义移动模式或路线的复杂空闲机器人。 此系统不仅限于简单的活动检查,而是分析玩家的移动方式随时间的变化。 一个高度优化的异步任务持续将所有在线玩家的近期移动与已知机器人模式的库进行比较,使用动态时间弯曲 (DTW) 算法,该算法即使以不同的速度执行,也能有效地比较两个运动序列。 * **异步模式分析:** 一项自定义的任务完全在服务器主线程之外运行,以执行计算密集型的 DTW 比较,从而确保零服务器延迟。 * **高性能设计:** 实施对象池(Apache Commons Pool2)以显著减少垃圾回收开销,并使用无锁队列安全地在线程之间传递数据。 * **全面的模式管理:** 一套新的命令 `/antiafk pattern` 赋予您完全控制来记录、列出和管理机器人模式。 * **双重序列化格式:** 模式可以保存为人类可读的 JSON(用于调试)或一种高度有效的二进制 Kryo 格式,以获得最佳性能。 ### **多层检测架构** AntiAFK 采用四层分析来检测空闲行为和模仿它的机器人: * **第 1 层:经典活动监控:** 监控 10 多个基本操作,包括移动、聊天、物品栏和世界互动。 * **第 2 层:无意义行为分析:** 计算玩家在同一方块坐标系中重复的非移动操作。 当阈值超过时,这些操作将不再重置空闲计时器。 * **第 3 层:宏和漏洞检测:** 检测点击模式,其一致性过高,无法由人类完成(自动点击器)以及通过传送门/命令使用非常快速的位置变化的漏洞。 * **第 4 层:异步行为分析:** 异步分析玩家的移动轨迹,从而捕捉到遵循特定路线的最复杂轨迹的机器人。 ### **“图灵测试”(验证码保护)** 当检测到可疑行为时,AntiAFK 会向玩家发出挑战: * **智能触发:** 自动激活基于可疑轨迹重复或无意义动作计数。 * **灵活的问答系统:** 从 `questions.yml` 中随机向玩家提问以验证他们是否是人类。 支持每个问题的多个正确答案。 * **可疑模式:** 测试活动期间,机器人的移动或点击将无法重置空闲计时器,使其不可能让机器人绕过测试。 * **可定制的惩罚:** 您可以定义自定义命令(如 `kick` 或 `ban`)来惩罚未能通过测试的玩家。 ### **分级惩罚和记录系统** 提供公平有效的惩罚系统: * **持久数据存储(SQLite):** 永久存储服务器上玩家的整个空闲历史记录(惩罚数量、总空闲时间、验证码统计数据)。 * **分级惩罚:** 对于重复的空闲行为,您可以配置(警告、踢出、临时禁令等)逐渐增加严重程度的行动,基于惩罚数量。 * **自动惩罚重置:** 在很长一段时间内没有造成问题的玩家记录将自动清除。 ### **🌍 全面国际化 (i18n) 支持** AntiAFK 现在会说您的语言! 整个插件都经过了全面改造,以提供真正的多语言体验。 * **所有消息都可以翻译:** 每一个单独的消息,包括系统日志、错误消息和游戏内的命令,都由语言系统管理。 * **全局语言设置:** 使用 `config.yml` 文件中的 `lang` 设置,直接在控制台中设置所有控制台输出的全局语言。 * **多种支持的语言:** 具有对 **土耳其语、英语、西班牙语、德语、法语、俄语和波兰语** 的全面支持。 * **轻松翻译:** 要更改玩家面对的信息语言,只需将您的 `messages.yml` 文件替换为提供的语言文件之一。 您可以在此处找到所有官方翻译 here。 ### **全面的管理和配置** 为服务器所有者提供完全控制: * **管理员命令:** 通过单个主命令 (`/antiafk`) 提供对所有管理工具的访问。 * **panel**: 在游戏中打开一个功能齐全的 GUI 以管理插件。 * **reload**: 重新加载所有配置文件。 * **check **: 查询玩家的详细记录和当前状态。 * **top **: 显示空闲排行榜。 * **list**: 列出当前空闲的玩家。 * **pattern **: 管理“学习模式”机器人检测模式。 * **灵活配置:** 所有文本、命令、公告、惩罚和检测机制都可以通过 `config.yml`、`messages.yml` 和 `questions.yml` 文件进行详细配置。 ---
## 🚀 性能
AntiAFK 使用最现代的技术开发,以最大限度地减少其对服务器性能的影响: * **异步操作:** 计算密集型操作,如行为和模式分析(DTW 算法)和所有数据库交互,完全在服务器主线程之外执行。 这可防止磁盘 I/O 或集中的 CPU 使用率影响服务器的滴答率 (TPS)。 * **智能缓存 (Caffeine):** 频繁访问的数据(玩家统计信息、配置值)存储在高性能缓存中,以最大限度地减少数据库查询和文件读取。 * **分布式负载:** 定期任务将其操作在 20 个滴答时间内均匀地分布在一个时间段内,从而防止在玩家数量众多时出现服务器上的突发性能高峰。
性能分析 (Spark 分析) **测试环境:** Paper 1.19.4,1 名在线玩家,标准服务器负载。 ``` // 服务器的整体空闲率(越高越好) Server thread: 100.00% └── net.minecraft.server.MinecraftServer.waitUntilNextTick(): 85.37% // 插件对主线程的总影响 AntiAFK (v1.0.2) └── Server thread: 0.24% ├── com.bentahsin.antiafk.tasks.AFKCheckTask.run(): 0.18% ├── com.bentahsin.antiafk.listeners.handlers.PlayerMovementListener.onPlayerMove(): 0.04% └── Other (Commands, GUI, Captcha): 0.02% ``` **分析:** * 服务器花费 **超过 85% 的时间处于空闲状态** 的事实表明该插件不会对服务器的整体健康状况产生负面影响。 * 所有插件组件对主线程的总影响仅为 **~0.24%**。 这是一种统计上可以忽略的值,证实它不会在最繁忙的服务器上对 TPS 产生明显的负面影响。
---
## 🔗 集成和安装
**集成:** * **WorldGuard:** 允许您为特定区域(竞技场、市场、空闲室等)定义完全不同的空闲持续时间和惩罚动作。(可选) * **PlaceholderAPI:** 与其他插件共享动态数据,例如 `%antiafk_tag%`、`%antiafk_reason%`。(可选) * **ProtocolLib:** 为功能(如 GUI 中的文本输入)提供更先进的用户体验。(可选) **安装:** 1. 从 [这里](https://github.com/bentahsin/antiafk/releases) 下载最新版本。 2. 将 `.jar` 文件放入服务器的 `plugins` 文件夹中。 3. 启动服务器以生成默认的配置文件 (`config.yml`、`messages.yml`、`questions.yml`、`playerdata.db`)。 4. 根据需要自定义配置文件,然后使用 `/antiafk reload` 命令。
如果您在使用插件时遇到任何问题或有功能建议,请使用 GitHub Issues 页面。
GitHub 页面 | 报告一个问题