**先进、可定制的 Minecraft 插件,用于通过品牌分析和频道监控检测客户端欺骗**



# 反欺骗 - 高级客户端欺骗检测
**先进、可定制的 Minecraft 插件,用于通过品牌分析和频道监控检测客户端欺骗**



---
## 📋 目录
- [主要特性](#key-features)
- [下载选项](#download-options)
- [反欺骗能做什么](#what-antispoof-can-do)
- [反欺骗不能做什么](#what-antispoof-cannot-do)
- [为什么反欺骗是最佳解决方案](#why-antispoof-is-the-best-solution)
- [设计理念](#design-philosophy)
- [安装](#installation)
- [命令与权限](#commands--permissions)
- [PlaceholderAPI 集成](#placeholderapi-integration)
- [配置](#configuration)
- [工作原理](#how-it-works)
- [故障排除](#troubleshooting)
- [常见问题解答](#frequently-asked-questions)
- [支持与开发](#support--development)
- [完整的配置示例](#complete-configuration-example)
- [许可证](#license)
---
## 🌟 主要特性
### 客户端品牌分析
- **品牌过滤**: 屏蔽/允许特定客户端品牌(Fabric、Forge、Lunar Client 等)
- **模式匹配**: 使用正则表达式识别可疑品牌模式
- **Geyser 验证**: 检测冒充 Bedrock 客户端的 Java 玩家
### 频道监控
- **原版验证**: 标记声称使用插件频道的玩家
- **频道控制**: 允许或禁止特定插件频道
- **严格匹配**: 对特定客户端类型执行精确频道要求
### Bedrock 玩家集成
- **Floodgate 集成**: 无缝支持 Floodgate API
- **前缀验证**: 通过用户名前缀识别 Bedrock 玩家
- **特殊处理**: 为合法的 Bedrock 用户配置排除或忽略模式
### 高级检测
- **多种检查模式**: 自定义哪些检查处于活动状态及其严重程度
- **可配置的操作**: 为每种违规类型定义自定义惩罚命令
- **实时警报**: 检测到可疑活动时通知工作人员
### 诊断工具
- **玩家检查**: 检查任何玩家的详细客户端信息
- **品牌分析**: 实时查看和验证客户端品牌
- **频道列表**: 检查任何玩家已注册的插件频道
### Discord 集成
- **Webhook 支持**: 将警报发送到您的 Discord 服务器
- **可定制的嵌入**: 配置颜色、字段和格式
- **综合数据**: 包括玩家详细信息、违规原因等
### PlaceholderAPI 支持
- **客户端信息**: 从其他插件访问玩家客户端详细信息
- **检测状态**: 检查玩家是否使用修改后的客户端
- **Bedrock 集成**: 验证 Bedrock 玩家状态
### 丰富的彩色消息
* **混合格式化引擎** – 一个字符串可以混合
* MiniMessage 标记 `Hello `
* 传统 `&` 颜色/样式代码 `&aGreen &lBold`
* 十六进制颜色 `FFAA00` 或 `&x&F&F&A&A&0&0`
* 采用新的 `MessageUtil.miniMessage()` 辅助工具,因此每个可配置的警报、Discord 嵌入或命令输出都可以使用渐变、粗体、斜体、模糊文本等。
---
## 📦 下载选项
反欺骗提供两个版本,以适应不同的服务器设置:
### 完整版(推荐给大多数用户)
- **一站式软件包**,包含 PacketEvents
- 不需要额外的插件
- 简单的即插即用安装
- 文件较大,但设置更简单
### 精简版(适用于高级设置)
- **需要外部 [PacketEvents 2.7.1+](https://github.com/retrooper/packetevents) 安装**
- 文件显著减小
- 避免重复的 PacketEvents 实例
- 非常适合已经使用依赖于 PacketEvents 的插件的服务器
- 对拥有多个基于 PacketEvents 的插件的服务器的性能更好
两个版本都提供相同的功能 – 唯一的区别在于 PacketEvents 是否包含在 JAR 文件中,或者需要单独安装。
---
## 🎯 反欺骗能做什么
反欺骗旨在捕获绝大多数不正确欺骗品牌或频道信息的作弊者:
### 1. 检测明显的欺骗者
大多数破解客户端(如 Wurst、Meteor、Impact、LiquidBounce 等)不会正确欺骗其品牌或频道。 它们的修改通常会留下明显的迹象,反欺骗可以轻松检测到。
### 2. 强制仅原版策略
识别声称使用“原版”但已注册插件频道的玩家(对于真正的原版客户端来说这在技术上是不可能的)。
### 3. 阻止或允许特定客户端
使用强大的正则表达式模式来控制服务器上允许的确切品牌和频道,从而为您提供对允许修改的精细控制。
### 4. 保护免受 Geyser 欺骗
检测试图将自己伪装成 Bedrock 玩家以绕过安全措施的 Java 玩家。
### 5. 创建自定义安全策略
灵活的配置系统允许您根据服务器的特定需求定制插件,从极其严格(仅限原版)到更宽松(允许某些模组)。
---
## ⚠️ 反欺骗不能做什么
由于 Minecraft 的固有限制,反欺骗有一些它无法检测到的事情:
### 1. 停止复杂的欺骗者
一个决心欺骗的玩家可以使用自定义客户端欺骗其客户端品牌和频道,以完美模仿原版客户端。 但是,这种复杂的欺骗非常罕见,并且需要大量的技术知识。
### 2. 检测 VPN 或备用帐户
反欺骗侧重于客户端端检测,并且不包括基于 IP 或基于帐户的检查。 对于这些保护,您需要其他安全插件。
### 3. 替换完整的反作弊程序
反欺骗并非设计用于检测游戏中的作弊,例如飞行黑客、杀戮光环或其他移动/战斗作弊。 它补充了传统的反作弊插件,但不能替代它们。
### 4. 保证 100% 的保护
没有反作弊解决方案可以提供绝对的保护。 反欺骗是您安全堆栈中的一个强大层,但与结合使用其他保护措施时效果最佳。
---
## 💪 为什么反欺骗是最佳解决方案
尽管存在局限性,但反欺骗仍然是检测修改客户端最有效的工具之一:
### 1. 捕获 95% 的欺骗作弊者
大多数作弊者不使用复杂的欺骗技术。 反欺骗可以轻松地捕获这些玩家,从而在产生少量误报的情况下阻止大多数破解客户端。
### 2. 高度可定制
每个服务器都有不同的需求。 反欺骗广泛的配置选项允许您精确地调整插件以满足您的要求,从非常严格到更宽松。
### 3. 专门用途
无论您想完全阻止非原版客户端、执行特定的模组策略,还是仅仅保护免受 Geyser 欺骗,反欺骗都能覆盖您需求的目标检测方法。
### 4. 现实的期望
反欺骗承认 Minecraft 的局限性,并侧重于可以有效完成的事情,而不是做出不切实际的承诺。 这种坦诚和透明是服务器所有者信任它的原因。
### 5. 轻量级和高效
反欺骗的设计考虑了性能,对服务器资源的冲击最小,同时提供了强大的保护。
---
## 🧠 设计理念
反欺骗在设计时考虑了几个核心原则:
### 对客户端类型进行粒度控制
与传统的黑名单/白名单方法不同,反欺骗实施了一种复杂的按品牌配置系统。 这可以让服务器管理员:
- 定义特定客户端的精确检测标准
- 设置不同的客户端类型自定义策略
- 创建定制的响应来处理各种违规行为
### 纵深防御
该插件使用多个检测层来捕获不同类型的欺骗:
- 客户端品牌验证
- 频道模式分析
- 频道注册监控
- Bedrock 身份验证检查
这种分层方法确保即使一个检查被绕过,其他检查仍然可以检测到可疑活动。
### 在安全性和可用性之间取得平衡
反欺骗在以下几个方面取得谨慎的平衡:
- 强大的安全措施以捕获恶意客户端
- 允许合法客户端修改的灵活性
- 工作人员清晰、可操作的警报
- 避免错误地标记真实玩家的最低误报
### 透明操作
该插件旨在为插件的工作方式提供清晰的可见性:
- 全面的调试日志记录选项
- 用于工作人员的详细检查命令
- 明确的违规消息
- 用户友好的配置格式
这种透明度有助于管理员了解插件的工作方式并调整其安全策略。
---
## 🔧 安装
### 要求
- Java 21 或更高版本
- Spigot、Paper 或兼容的分叉版本(1.20.4+)
- 安装插件所需的服务器权限
### 可选依赖项
- **Floodgate**(更好地检测 Bedrock 玩家)
- **PlaceholderAPI**(其他插件中的占位符)
- **ViaVersion/ViaBackwards**(版本兼容性信息)
- **PacketEvents 2.7.1+**(仅限精简版)
### 安装完整版
1. 从 [releases 页面](https://github.com/GigaZelensky/AntiSpoof/releases) 下载最新的 `antispoof-[version].jar`
2. 将 JAR 文件放入服务器的 `plugins` 文件夹中
3. 重新启动服务器
4. 通过生成的 `plugins/AntiSpoof/config.yml` 文件配置插件
5. 使用 `/antispoof reload` 应用更改
### 安装精简版
1. 首先,确保安装了 PacketEvents 2.7.1+:
- 从 [PacketEvents 2.7.1+](https://github.com/retrooper/packetevents/releases) 下载
- 将 PacketEvents JAR 放入服务器的 `plugins` 文件夹中
2. 从 [releases 页面](https://github.com/GigaZelensky/AntiSpoof/releases) 下载最新的 `antispoof-lite-[version].jar`
3. 将 AntiSpoof Lite JAR 放入服务器的 `plugins` 文件夹中
4. 重新启动服务器
5. 通过生成的 `plugins/AntiSpoof/config.yml` 文件配置插件
6. 使用 `/antispoof reload` 应用更改
---
## 🔍 命令与权限
### 命令参考
| 命令 | 描述 | 权限 |
|---------|-------------|------------|
| `/antispoof check [玩家]` | 检查玩家是否欺骗(为空以检查所有在线玩家) | `antispoof.command` |
| `/antispoof runcheck [玩家]` | 重新分析玩家数据并再次运行检测检查 | `antispoof.admin` |
| `/antispoof channels <玩家>` | 查看玩家已注册的插件频道 | `antispoof.command` |
| `/antispoof brand <玩家>` | 显示玩家的客户端品牌 | `antispoof.command` |
| `/antispoof reload` | 重新加载配置 | `antispoof.admin` |
| `/antispoof blockedchannels` | 显示当前的频道白名单/黑名单配置 | `antispoof.admin` |
| `/antispoof blockedbrands` | 显示当前的品牌白名单/黑名单配置 | `antispoof.admin` |
| `/antispoof help` | 显示包含所有命令的帮助消息 | `antispoof.command` |
### 权限节点
| 权限 | 描述 | 默认 |
|------------|-------------|---------|
| `antispoof.command` | 访问基本的反欺骗命令 | op |
| `antispoof.admin` | 访问管理员命令,例如重新加载 | op |
| `antispoof.alerts` | 在检测到欺骗时收到游戏内警报 | op |
| `antispoof.bypass` | 绕过所有欺骗检查 | false |
---
## 🔄 PlaceholderAPI 集成
反欺骗与 PlaceholderAPI 集成,以提供其他插件的有用占位符。 这允许您在得分板插件、标签列表插件、聊天格式化插件中显示客户端信息。
### 可用占位符
| 占位符 | 描述 | 示例输出 |
|-------------|-------------|----------------|
| `%antispoof_brand%` | 显示玩家的客户端品牌 | "vanilla", "fabric", "lunarclient:v1.8.9-10b0" |
| `%antispoof_channels%` | 显示玩家已注册的逗号分隔的频道列表 | "minecraft:brand, fabric:registry/sync, fabric:screen-handler-api" |
| `%antispoof_channels_count%` | 显示已注册频道的数量 | "5" |
| `%antispoof_is_spoofing%` | 返回玩家是否被检测为欺骗 | "true" 或 "false" |
| `%antispoof_is_bedrock%` | 返回玩家是否被检测为 Bedrock 玩家 | "true" 或 "false" |
### 使用示例
以下是一些使用这些占位符的示例:
#### 聊天格式(使用聊天插件)
```
[%antispoof_brand%] %player_name%: %message%
```
#### 欢迎消息(使用 essentials 插件)
```
&a欢迎! &7你正在使用 &e%antispoof_brand%&7,带有 &e%antispoof_channels_count%&7 个插件频道。
```
#### 自定义分数板
```
&6═════ &b服务器信息 &6═════
&7客户端: &e%antispoof_brand%
&7频道: &e%antispoof_channels_count%
&7Bedrock: &e%antispoof_is_bedrock%
&6════════════════════
```
### 安装说明
1. 确保您的服务器上安装了 PlaceholderAPI
2. 无需额外的设置 - 反欺骗会自动注册其占位符
3. 在任何 PlaceholderAPI 兼容插件中使用占位符
---
## ⚙️ 配置
配置文件 (`config.yml`) 具有详细的注释,解释了每个选项。 这是一个关键部分的分解:
### 核心设置
- **delay-in-seconds**: 在检查玩家欺骗之前等待的时间(默认:1)
- **debug**: 启用详细日志记录以进行故障排除(默认:false)
### 检测方法
1. **原版欺骗检查**: 检测声称使用原版的玩家但拥有插件频道
2. **非原版检查**: 可选地阻止所有非原版客户端
3. **频道过滤**: 使用正则表达式屏蔽或允许特定频道
4. **品牌过滤**: 使用正则表达式屏蔽或允许特定客户端品牌
5. **Bedrock 处理**: 为合法的 Bedrock 玩家进行特殊处理
6. **Geyser 欺骗检测**: 识别冒充 Bedrock 玩家的 Java 玩家
### 客户端品牌配置系统
`client-brands` 部分允许对不同类型的客户端进行细粒度控制。 每个品牌配置都包括:
- **识别**: 用于识别特定客户端品牌的正则表达式模式
- **标志/警报设置**: 是否标记、警报或发送到 Discord
- **自定义消息**: 此品牌特定的警报消息
- **惩罚控制**: 是否惩罚以及运行哪些命令
- **所需频道**: 合法客户端实例必须存在的频道
- **特殊处理**: 例如修改后的原版客户端的严格检查
品牌配置示例:
```yaml
lunar:
enabled: true
values:
- "^lunarclient:v\\d+\\.\\d+\\.\\d+-\\d{4}$"
# 是否将玩家计算为反欺骗的标记
flag: false
# 是否发送游戏内警报
alert: true
# 是否发送 Discord 警报
discord-alert: false
# 此品牌特定的自定义警报消息
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &9Lunar Client &7版本: &b%brand%"
console-alert-message: "%player% 使用 Lunar Client: %brand%"
# 是否惩罚使用此品牌的玩家
punish: false
# 如果 punish 为 true,将执行的惩罚命令
punishments: []
# 此品牌合法存在时必须存在的频道
required-channels:
- "lunar.*" # 必须至少有一个 lunar 频道
# 如果没有频道,是否惩罚玩家?设置为 false 以仅发出警报。
required-channels-punish: false
required-channels-punishments:
- "kick %player% &cLunar 客户端欺骗检测"
```
该系统允许您为每种客户端类型创建定制策略,而不是一刀切的方法。
### 操作配置
对于每种检测方法,您可以配置:
- 是否启用
- 自定义警报消息
- 违规是否触发惩罚
- 自定义惩罚命令和占位符
### Discord 集成
- Webhook URL 和格式化选项
- 可定制的嵌入内容
- 警报过滤选项
`config.yml` 已得到充分记录,并附有示例和说明。 要获得完整的示例,请参阅插件包含的默认配置。
---
## 🔬 工作原理
反欺骗使用多种检测技术来识别尝试绕过安全措施的客户端:
### 1. 客户端品牌分析
当玩家加入时,他们会发送其客户端品牌作为数据包 (例如,"vanilla"、"forge"、"fabric")。 反欺骗捕获此信息并将其与您的配置的白名单或黑名单进行比较。
### 2. 插件频道注册
修改后的客户端会注册插件频道以与服务器通信。 真正的原版客户端没有插件频道,因此任何声称使用“原版”但注册频道的客户端都在欺骗。
### 3. 模式匹配
高级正则表达式模式匹配允许反欺骗识别特定的客户端类型或阻止某些模式,即使客户端试图伪装自己。
### 4. Bedrock 身份验证
对于 Geyser/Floodgate 设置,反欺骗会通过 Floodgate API 或检查用户名前缀来验证 Bedrock 玩家,从而防止 Java 玩家伪装成 Bedrock 用户。
### 5. 动态检查
在初始注册之后,反欺骗会继续监控频道注册,从而允许检测稍后在会话中尝试添加可疑频道的客户端。
---
## 🔧 故障排除
### 常见问题
#### 玩家被错误地标记
1. **问题**: 合法的玩家被标记为欺骗者
- **解决方案**: 检查您的白名单/黑名单设置。 您可能阻止了合法的客户端品牌。 启用调试模式以查看触发标记的内容。
#### 没有发送任何警报
1. **问题**: 玩家正在欺骗,但没有出现任何警报
- **解决方案**: 确保工作人员具有 `antispoof.alerts` 权限并验证插件是否已正确启用。
#### Discord Webhook 没有工作
1. **问题**: 警报无法发送到 Discord
- **解决方案**: 检查您的 webhook URL,确保其格式正确,并验证将 `discord.enabled` 设置为 `true`。
#### 性能问题
1. **问题**: 安装反欺骗后服务器滞后
- **解决方案**: 该插件非常轻量级,但尝试增加 `delay-in-seconds` 值以分散检查,或禁用 `debug` 模式。
### 调试模式
在配置文件的 `config.yml` 文件中启用调试模式以获取有关检测到的品牌和频道的详细信息:
```yaml
debug: true
```
这将把所有客户端品牌和频道注册信息记录到您的控制台,帮助您识别触发标记的原因并调整您的配置。
---
## ❓ 常见问题解答
### 一般问题
**Q: 我应该使用哪个版本 - 完整版还是精简版?**
A: 完整版适用于简单起见。 如果您已经拥有其他使用 PacketEvents 的插件,可以使用精简版以避免库重复。
**Q: 反欺骗如何处理 Bedrock 玩家?**
A: 当 Floodgate 可用时,它会使用 Floodgate API,并在没有 Floodgate 的情况下使用用户名前缀回退。您可以在配置中设置为“忽略”或“排除”模式。
**Q: 什么是原版客户端?**
A: 根据 Minecraft 的定义,原版客户端是来自 Mojang 的未修改的游戏客户端,它将自身品牌报告为“vanilla”且没有注册任何插件频道。
**Q: 反欺骗能阻止所有作弊者吗?**
A: 不可能,但它可以阻止高达 95% 的作弊者,具体取决于设置。 复杂的欺骗很少见。
**Q: 此插件与 ViaVersion 兼容吗?**
A: 是的!反欺骗与 ViaVersion 完全兼容,甚至可以使用 ViaVersion 的信息来增强其检测能力。
**Q: 反欺骗会阻止所有修改后的客户端吗?**
A: 这取决于您的配置。 你可以将它设置为阻止所有非原版客户端,或者你可以白名单允许的特定客户端品牌(例如 Lunar Client 或 Badlion)。
**Q: 这与传统的反作弊插件有什么比较?**
A: 反欺骗专门关注客户端品牌和频道检测,这与检测移动/战斗黑客的方法不同。 它最好与传统的反作弊插件一起使用,以获得完整的保护。
**Q: `/antispoof runcheck` 命令的功能是什么?**
A: 此命令重新分析现有玩家数据并重新对玩家或所有在线玩家运行检测检查。 当您更新配置并希望在玩家重新加入之前根据新规则检查玩家时,这很有用。
### 技术问题
**Q: 玩家可以绕过此插件吗?**
A: 具有自定义客户端的熟练黑客可能能够绕过任何检测方法。 但是,大多数作弊者不会采取这种做法。
**Q: 反欺骗与 Velocity/BungeeCord/Waterfall 协同工作吗?**
A: 反欺骗专为 Spigot/Paper 服务器设计。 虽然它可以在代理环境中工作,但它应该安装在后端服务器上,而不是代理本身。
**Q: 插件频道是什么?**
A: 插件频道是模组和插件用来在客户端和服务器之间交换数据的通信通道。 它们是大多数模组实现其功能的方式。
**Q: 我如何添加自定义正则表达式模式?**
A: 将模式添加到 `blocked-brands` 或 `blocked-channels` 下的 `values` 列表中。 例如,要阻止所有 Fabric 模组,您可以添加 `"(?i).*fabric.*"`。
**Q: 性能方面的影响如何?**
A: 反欺骗非常轻量级。 检查仅在玩家加入时以及发送频道注册数据包时运行,这很少发生。
---
## 🤝 支持与开发
### 获取帮助
- **GitHub 问题**: 在我们的 [问题跟踪器](https://github.com/GigaZelensky/AntiSpoof/issues) 上报告错误或建议功能
- **Discord**: 通过 Discord 发送给我直接支持 (GigaZelensky)
### 贡献
欢迎贡献! 要贡献:
1. 为仓库分叉
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开拉取请求
### 开发指南
- 确保与 Java 21+ 兼容
- 遵循现有的代码风格和架构
- 为新功能添加适当的文档
- 尽可能保持向后兼容
---
## 📋 完整的配置示例
```yaml
# ___ __ _ _____ ____
# / | ____ / /_(_) ___/____ ____ ____ / __/
# / /| | / __ \/ __/ /\__ \/ __ \/ __ \/ __ \/ /_
# / ___ |/ / / / /_/ /___/ / /_/ / /_/ / /_/ / __/
# /_/ |_/_/ /_/\__/_//____/ .___/\____/\____/_/
# /_/
# 由 GigaZelensky 创建
# ──────────────────────────────────────────────────────────
# 反欺骗配置
# ──────────────────────────────────────────────────────────
# 欢迎使用反欺骗。 此插件可帮助服务器管理员通过分析玩家发送的客户端信息来检测和管理客户端端修改。
#
# ⚠️ 请注意:虽然此插件可以增强安全性,但它不是万无一失的。
# 熟练的用户可以(讽刺地)欺骗他们的客户端详细信息来绕过检测。
#
# 默认情况下,该插件仅验证声称使用“原版”但注册了插件频道的玩家,
# 对真正的原版客户端来说这在技术上是不可能的。
# ──────────────────────────────────────────────────────────
# ⏳ 检查客户端欺骗前的延迟(以秒为单位)。
# 设置为 0 以在玩家登录后立即进行检查(不可靠)。 (默认:1)
delay-in-seconds: 1
# 调试模式
# 如果启用,当玩家登录时,会在控制台中记录客户端频道和品牌详细信息。
debug: false
# ──────────────────────────────────────────────────────────
# 核心检测设置
# ──────────────────────────────────────────────────────────
# 原版欺骗检测
# 检测到玩家声称使用原版但拥有注册插件频道的情况
vanillaspoof-check:
# 是否检查玩家是否声称使用原版但拥有插件频道
enabled: true
# 是否向 Discord 发送此违规类型的警报
discord-alert: true
# 此特定违规的自定义警报消息
alert-message: "&8[&cAntiSpoof&8] &e%player% 被标记! &c原版客户端拥有插件频道"
console-alert-message: "%player% 被标记! 原版客户端拥有插件频道"
# 是否在检测到结果为正时惩罚玩家
punish: false
# 要执行的惩罚操作
# 可用占位符:%player%、%reason%、%brand%、%channel%
punishments:
- "踢出 %player% &c检测到原版欺骗:%reason%"
# - "ban %player% &c检测到原版客户端欺骗"
# 超级严格模式(不推荐)
# 阻止所有不符合以下条件 Players:
# - 不具备“原版”客户端,或者
# - 拥有已注册的插件频道(表明有模组/插件)
# ⚠️ 这是一种非常严格的模式,可能阻止合法的玩家
non-vanilla-check:
# 是否启用此严格检查
enabled: false
# 是否向 Discord 发送此违规类型的警报
discord-alert: false
# 此特定违规的自定义警报消息
alert-message: "&8[&cAntiSpoof&8] &e%player% 被标记! &c检测到客户端修改"
console-alert-message: "%player% 被标记! 检测到客户端修改"
# 是否在检测到结果为正时惩罚玩家
punish: false
# 要执行的惩罚操作
# 可用占位符:%player%、%reason%、%brand%、%channel%
punishments:
- "踢出 %player% &c检测到非原版客户端及其频道"
# - "tempban %player% 1h &c使用修改后的客户端"
# ──────────────────────────────────────────────────────────
# No Brand 检测设置
# ──────────────────────────────────────────────────────────
# 有些破解客户端会避免检测,方法是不发送客户端品牌
# 此检查会标记不提供任何品牌信息的玩家
no-brand-check:
# 是否标记未发送客户端品牌的玩家
enabled: true
# 是否向 Discord 发送此违规类型的警报
discord-alert: true
# 此特定违规的自定义警报消息
alert-message: "&8[&cAntiSpoof&8] &e%player% 被标记! &c未检测到客户端品牌"
console-alert-message: "%player% 被标记! 未检测到客户端品牌"
# 是否在检测到结果为正时惩罚玩家
punish: false
# 要执行的惩罚操作
# 可用占位符:%player%、%reason%
punishments:
- "踢出 %player% &c未检测到客户端品牌"
# - "ban %player% &c检测到可疑客户端(无品牌)"
# ──────────────────────────────────────────────────────────
# 频道检测设置
# ──────────────────────────────────────────────────────────
blocked-channels:
# 使频道检测功能启用
enabled: false
# 是否向 Discord 发送有关阻止频道违规的警报
discord-alert: false
# ⚪ 白名单模式
# - FALSE:阻止列出的频道。
# - SIMPLE:仅允许具有至少一个白名单频道。
# - STRICT:仅允许完全匹配白名单且没有其他频道的玩家。
whitelist-mode: FALSE
# 要阻止/白名单的频道列表
values:
- "^fabric-screen-handler-api-v1:open_screen$"
# 在此处添加更多频道以阻止
# - "another:blocked:channel"
# - "(?i).*litematica.*"
# - "(?i).*fabric.*"
# 此特定违规的自定义警报消息
alert-message: "&8[&cAntiSpoof&8] &e%player% 被标记! &c正在使用阻止的频道: &f%channel%"
console-alert-message: "%player% 正在使用阻止的频道: %channel%"
# 当玩家的插件频道发生修改时发送警报
modifiedchannels:
enabled: true
# 是否向 Discord 发送有关修改频道警报
discord-alert: false
alert-message: "&8[&cAntiSpoof&8] &e%player% 修改了频道: &f%channel%"
console-alert-message: "%player% 修改了频道: %channel%"
# 检测到结果为正时是否惩罚玩家
punish: false
# 要执行的惩罚操作
# 可用占位符:%player%、%reason%、%brand%、%channel%
punishments:
- "踢出 %player% &c检测到阻止的频道: %channel%"
# - "tempban %player% 1d &c使用阻止的模组频道"
# ──────────────────────────────────────────────────────────
# 客户端品牌配置
# ──────────────────────────────────────────────────────────
# 此部分允许对不同类型的客户端进行细粒度控制。
# 每个品牌可以具有自己的检测模式、警报消息、
# 惩罚和特殊排除。
client-brands:
# 客户端品牌系统的总体开关
enabled: true
# 默认设置适用于未明确配置的品牌
default:
flag: true
alert: true
discord-alert: false
punish: false
# 如果未对品牌指定,则使用的默认警报消息
alert-message: "&8[&cAntiSpoof&8] &7%player% 使用 &e未知客户端: &b%brand%"
console-alert-message: "%player% 使用未知客户端: %brand%"
# 品牌特定的配置
brands:
# Lunar Client 配置
lunar:
enabled: true
values:
- "^lunarclient:v\\d+\\.\\d+\\.\\d+-\\d{4}$"
# 是否将玩家视为反欺骗的标记
flag: false
# 是否发送游戏内警报
alert: true
# 是否发送 Discord 警报
discord-alert: false
# 此品牌特定的自定义警报消息
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &9Lunar Client &7版本: &b%brand%"
console-alert-message: "%player% 使用 Lunar Client: %brand%"
# 是否惩罚使用此品牌的玩家
punish: false
# 如果 punish 为 true,将执行的惩罚命令
punishments: []
# 此品牌合法存在时必须存在的频道
required-channels:
- "lunar.*" # 必须至少有一个 lunar 频道
# 如果没有频道,是否惩罚玩家?设置为 false 以仅发出警报。
required-channels-punish: false
required-channels-punishments:
- "kick %player% &cLunar 客户端欺骗检测"
# Badlion Client 配置
badlion:
enabled: true
values:
- "^badlion.*"
- "^BLC.*"
flag: false
alert: true
discord-alert: false
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &b%brand%"
console-alert-message: "%player% 使用 Badlion Client: %brand%"
punish: false
punishments: []
required-channels: []
required-channels-punish: false
required-channels-punishments:
- "kick %player% &cLunar 客户端欺骗检测"
# Forge 配置
forge:
enabled: true
values:
- "^fml,forge.*"
- "^forge.*"
flag: false
alert: true
discord-alert: false
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &b%brand%"
console-alert-message: "%player% 使用 Forge: %brand%"
punish: false
punishments: []
required-channels:
- "(?i).*forge.*"
required-channels-punish: false
required-channels-punishments:
- "kick %player% &c频道欺骗检测"
# Fabric 配置
fabric:
enabled: true
values:
- "^fabric$"
flag: false
alert: true
discord-alert: false
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &b%brand%"
console-alert-message: "%player% 使用 Fabric: %brand%"
punish: false
punishments: []
required-channels:
- "(?i).*fabric.*" # 匹配包含“fabric”的所有频道(不区分大小写)
required-channels-punish: false
required-channels-punishments:
- "kick %player% &c频道欺骗检测"
# LabyMod 配置
labymod:
enabled: true
values:
- "^labymod.*"
flag: false
alert: true
discord-alert: false
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &b%brand%"
console-alert-message: "%player% 使用 %brand%"
punish: false
punishments: []
required-channels: []
required-channels-punish: false
required-channels-punishments:
- "kick %player% &c频道欺骗检测"
# 破解客户端配置
hacked:
enabled: true
values:
- "(?i).*wurst.*"
- "(?i).*impact.*"
- "(?i).*aristois.*"
- "(?i).*future.*"
- "(?i).*meteor.*"
- "(?i).*inertia.*"
- "(?i).*sigma.*"
- "(?i).*liquidbounce.*"
flag: true
alert: true
discord-alert: true
alert-message: "&8[&cAntiSpoof&8] &e%player% 使用 &c&l已知破解客户端: &f%brand%"
console-alert-message: "警报! %player% 使用已知破解客户端: %brand%"
punish: true
punishments:
- "kick %player% &c检测到破解客户端: %brand%"
# - "ban %player% &c检测到使用破解客户端"
# 原版配置
vanilla:
enabled: true
values:
- "^vanilla$"
flag: false # 只有当检测到欺骗时才标记
alert: false # 默认情况下不为原版客户端发送警报
discord-alert: false
alert-message: "&8[&eAntiSpoof&8] &7%player% 使用 &d%brand%"
console-alert-message: "%player% 使用 %brand%"
punish: false
punishments: []
# 特殊设置用于原版
# "严格检查" 如果客户端没有“vanilla” 会标记
# 您可以将此 "strict-check" 添加到任何客户端品牌,然后之前的 "vanillaspoof-check" 会处理它。
strict-check: true # 启用对原版的严格检查(必须没有频道)
vanilla-variation: # 当一个客户端显示 "Vanilla" 或 "vAnilla2" 但不是 "vanilla" 时
enabled: true
values:
- "^(?!vanilla$).*?(?i)vanilla.*"
flag: true
alert: true
discord-alert: true
alert-message: "&8[&cAntiSpoof&8] &e%player% 使用假 Vanilla: &c%brand%"
console-alert-message: "%player% 使用假 Vanilla: %brand%"
punish: false
punishments: []
strict-check: true
blankbrand: # 当客户端发送空白品牌频道时
enabled: true
values:
- "^$" # 空白/空白品牌的正则表达式
flag: true
alert: true
discord-alert: true
alert-message: "&8[&eAntiSpoof&8] &7%player% &e正在使用空白品牌"
console-alert-message: "%player% 正在使用空白品牌"
punish: false
punishments: []
# ──────────────────────────────────────────────────────────
# Bedrock 处理设置
# ──────────────────────────────────────────────────────────
bedrock-handling:
# 选择如何处理 Bedrock 玩家。
# 选项:
# - "IGNORE": 完全忽略这些玩家;像普通玩家一样处理它们。
# - "EXEMPT": 处理它们,但不因失败的检查而惩罚它们。
#
# 无论如何,Bedrock 玩家不会接受反欺骗处理。
# "EXEMPT" 模式强烈建议,因为 "IGNORE" 很容易错误地惩罚 Bedrock 玩家。
mode: "EXEMPT"
# Geyser 欺骗检测
# 检测声称是 Geyser 客户端而未通过 Floodgate API 验证为 Bedrock 玩家的玩家
geyser-spoof:
# 是否启用 Geyser 欺骗检测
enabled: true
# 是否向 Discord 发送 Geyser 欺骗违规的警报
discord-alert: true
# 此特定违规的自定义警报消息
alert-message: "&8[&cAntiSpoof&8] &e%player% 被标记! &cGeyser 客户端欺骗"
console-alert-message: "%player% 被标记! Geyser 客户端欺骗,品牌: %brand%"
# 是否在检测到结果为正时惩罚玩家
punish: false
# 要执行的惩罚操作
# 可用占位符: %player%、%reason%、%brand%
punishments:
- "踢出 %player% &c检测到 Geyser 客户端欺骗"
# - "ban %player% &cGeyser 客户端欺骗"
# 检查玩家前缀:
# 此选项检查玩家是否被验证为 Bedrock 玩家,方法是验证其前缀。
# 启用此选项后,系统将验证玩家的用户名或标识符是否以指定的前缀开头。
# 默认前缀为 ".", 如果玩家的客户端品牌包含 "geyser" 的任何变体,且不匹配
# 预期的前缀,他们将被标记。
prefix-check:
enabled: true
# 用于标识 Bedrock 玩家的前缀。
prefix: "."
# ──────────────────────────────────────────────────────────
# Discord Webhook 设置
# ──────────────────────────────────────────────────────────
discord:
enabled: false
webhook: ""
embed-title: "**反欺骗警报**"
embed-color: "#2AB7CA"
violation-content:
- "**玩家**: %player%"
- "**违规**:%violations%"
- "**Viaversion 版本**:%viaversion_version%" # 需要 PlaceholderAPI
- "**品牌**: %brand%"
- "**频道**:"
- "%channel%" # 垂直频道列表
# 所有警报的全局设置(用作默认值)
# 这些设置控制是否向 Discord 发送加入消息,即使玩家没有触发任何违规行为
global-alerts:
# 是否在玩家加入时发送警报到 Discord
join-brand-alerts: false
# 是否在玩家注册初始频道时发送警报到 Discord
initial-channels-alerts: false
# ──────────────────────────────────────────────────────────
# 更新检查器设置
# ──────────────────────────────────────────────────────────
# 服务器启动时检查 GitHub 的更新
update-checker:
# 是否在启动时检查更新
enabled: true
# 当他们加入时是否通知管理员
notify-on-join: true
# ──────────────────────────────────────────────────────────
# 传统惩罚设置
# ──────────────────────────────────────────────────────────
# 传统全局惩罚系统(用于向后兼容)
# 这些惩罚将在特定的检查设置为 “true” 但没有定义自己的惩罚时使用
# 可用占位符:%player%、%reason%、%brand%、%channel%
punishments:
- "kick %player% &c检测到可疑客户端!"
# - "ban %player% &c检测到客户端欺骗"
# ──────────────────────────────────────────────────────────
# 传统警报消息
# ──────────────────────────────────────────────────────────
# 传统全局警报系统(用于向后兼容)
# 这些消息将在特定的检查启用
# 但没有定义自己的警报时使用
# 发送给具有 `antispoof.alerts` 权限的玩家的消息,
# 当检测到欺骗尝试时
# 显示在控制台 (不需要颜色代码)
messages:
# 向玩家发送的消息
alert: "&8[&cAntiSpoof&8] &e%player% 被标记! &c%reason%"
# 控制台消息 (不需要颜色代码)
console-alert: "%player% 被标记! %reason%"
# 多重违规的消息
multiple-flags: "&8[&cAntiSpoof&8] &e%player% 有多个违规行为: &c%reasons%"
# 控制台中的多重违规
console-multiple-flags: "%player% 有多个违规行为: %reasons%"
```
**先进、可定制的 Minecraft 插件,用于通过品牌分析和频道监控检测客户端欺骗**


