- 版权类型
- 原创
- 插件中文名称
- 防玩家属性崩服
- 插件英文名称
- AntiCrashProtector
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
[MD]
# AntiCrashProtector [1.21.x]
**AntiCrashProtector** 是一款专为 Minecraft 服务器设计的轻量级安全防护插件。它能有效拦截非法数据包攻击、修复异常玩家属性、防止由于坐标溢出或非法药水等级导致的服务端崩溃(Crash)。
它主要解决玩家在传送或移动过程中,由于核心属性(坐标、生命值、速度、药水等级等)异常错误导致的服务端崩溃(Crash)或心跳停止(Ticking Exception)问题。
---
## 🆘 解决以下崩溃/报错 (Crash Keywords)
如果你的后台出现以下报错,本插件可以帮你解决:
* `net.minecraft.ReportedException: Ticking player` 或 `Exception ticking world`
* `java.lang.NullPointerException` (在 ServerPlayer.doTick 或 ClientboundUpdateAttributesPacket 中触发)
* `Cannot invoke "it.unimi.dsi.fastutil.objects.ObjectArrayList.get(int)" because "this.wrapped" is null`
* `Failed to handle packet for /xxx.xxx.xxx.xxx:xxxxx`
* `Negative index in crash report handler`
* `Internal server error` (导致玩家断开连接或服务器关闭)
* 由于 `NaN` 坐标、非法属性值、超限药水等级导致的各种主线程挂起。
---
## ✨ 核心功能
* 🛡️ **全属性扫描**:遍历并检查玩家身上所有 30+ 种属性,发现非法值(NaN/Infinity)或属性丢失立即拦截。
* 🚀 **指令安全拦截**:在执行 `/back`、`/tp`、`/home` 等高风险传送指令前,先进行“全身安检”,确保数据正常后再放行。
* ⚖️ **分级修复机制**:针对不同异常采用不同策略。轻微异常(属性/药水)原地修复,不影响玩家操作;严重异常(坐标损坏)安全传送至出生点。
* ⏲️ **异步负载分摊**:自动监控任务采用分摊 tick 策略,每 tick 仅检查少量玩家,即便百人服也毫无压力。
* 💊 **药水/坐标/载具校准**:自动清理等级异常(如 32767 级)的药水效果,纠正越界坐标,**v1.1.2 新增**载具状态完整性检查。
* 📝 **黑匣子日志记录**:所有的拦截行为与检测细节(包括异常坐标、非法属性值、药水等级等)都会同时同步到控制台及插件专属日志文件。服主只需查看日志即可精准排查问题根源。
* 🌍 **全中文自定义**:支持完整的提示语自定义,包括异常诊断报告与修复建议。
* 🛡️ **Fail-Safe 默认值保底**:**v1.1.2 优化**!采用主流的 Fail-Safe 模式,即使配置文件缺失某项设置,插件也会自动使用安全的默认值继续工作,确保防御永不中断。
---
## 🎯 适用场景与技术边界 (Scope & Boundaries)
为了确保插件在论坛发布后的口碑,请知悉以下技术说明:
1. **防护重心**:本插件主要针对由“玩家数据(属性、坐标、药水、载具)”异常引发的**主线程挂起或发包 NPE 崩溃**。
2. **非防护范围**:本插件无法解决由插件冲突、模组逻辑错误(如模组实体本身的 Ticking 报错)、内存溢出 (OOM) 或网络攻击 (DDoS) 导致的服务器关闭。
3. **兼容性说明**:支持 1.21.x 及以上版本的 Paper/Purpur/Spigot 服务端。由于高版本属性系统变化较大,建议始终使用最新版插件以获得最佳兼容性。
4. **修复逻辑**:插件遵循“数据安全第一”原则。如果数据无法通过常规手段修复且服主开启了 `kick-if-unrepairable`,插件会踢出该玩家以保护服务端不被该异常数据持续拖垮。
---
## 🛠️ 管理命令
| 命令 | 描述 | 权限 |
| :--- | :--- | :--- |
| `/anticrash status` | 查看插件当前的防御状态和检查项 | `anticrash.admin` |
| `/anticrash reload` | 重载配置文件 | `anticrash.admin` |
| `/anticrash safety` | 一键切换指令拦截功能的开启/关闭 | `anticrash.admin` |
| `/anticrash check` | 手动强制触发一次全服玩家深度扫描 | `anticrash.admin` |
| `/anticrash repair` | 手动修复自己当前的数据状态 | `anticrash.admin` |
---
## ⚙️ 配置文件 (config.yml)
```yaml
# AntiCrashProtector 配置文件
# 版本: 1.1.2
config-version: 1
# 基本设置
enabled: true
debug-mode: false
# 监控设置
monitoring:
enabled: true
# 检查项开关
checks:
location: true # 坐标有效性
attributes: true # 核心属性(防止NPE崩服的关键)
effects: true # 药水效果
inventory: true # 物品栏
vehicle: true # 载具状态 (防止非法实体导致崩溃)
# 修复阈值
repair:
thresholds:
# 坐标范围
coordinate-max: 30000000.0
y-min: -64
y-max: 320
# 属性范围 (健康/速度/攻击力)
health-max: 2048.0
health-min: 0.1
speed-max: 1.0
speed-min: 0.0
damage-max: 2048.0
damage-min: 0.0
```
---
## 📥 安装说明
1. 将 `AntiCrashProtector-1.1.2.jar` 放入服务器的 `plugins` 文件夹。
2. 重启服务器。
3. 使用 `/anticrash status` 确认所有检查项(生命值、坐标、载具、属性等)已生效。
---
## 📋 更新日志
- **v1.1.2**:
- **黑匣子日志记录**:重构了日志系统,异常检测详情(坐标、属性、药水等)现在会同步输出到控制台与专用日志文件,支持精准排障。
- **Fail-Safe 模式**:回归主流风格,使用默认值保底逻辑替代了繁琐的显式配置检查,代码更稳健,用户配置更自由。
- **属性阈值全开放**:现在生命值、移动速度、攻击伤害的最小/最大阈值均可通过 `config.yml` 自由配置。
- **载具状态监控**:新增非法载具状态检查开关,防止玩家骑乘不存在或损坏的实体导致服务端心跳异常。
- **代码架构优化**:清理了冗余的配置校验代码,提升了指令处理器的运行效率。
- **v1.1.1**:
- **全功能热重载**:现在指令名单、冷却时间、监控频率等所有配置均支持 `/anticrash reload` 即时生效。
- **指令防御增强**:新增 `tpaccept`、`tpahere`、`tpyes` 等传送接受指令的自动拦截保护。
- **状态详情升级**:重构了 `/anticrash status` 指令,直观查看拦截器、冷却、延迟等信息。
- **死亡判定修复**:修复了玩家死亡时会被错误识别为异常数据的 Bug。
- **v1.1.0**:
- **分级修复系统**:轻度异常原地修复,不再强制传送。
- **配置自动升级**:支持新旧版本配置文件平滑过渡。
---
[/MD]