# AntiPieRay - 高级 PieRay 利用保护
**使用智能数据包过滤和视线检测来保护您的服务器免受 PieRay 利用。**
## 🛡️ 什么是 PieRay 利用?
PieRay 利用允许玩家使用 Minecraft 的 F3 调试饼图穿透墙壁和实体块来检测隐藏的方块实体(箱子、信标、旗帜等)。这完全破坏了底层安全,因为它会暴露应隐藏的存储位置,从而在 PvP 和生存游戏中造成不公平的优势。
## ✨ 功能
### 🎯 **智能数据包过滤**
- 在网络层拦截方块实体数据包
- 执行实时视线计算
- 只允许合法可见的方块实体到达客户端
### ⚙️ **高度可配置**
- 选择要保护的方块类型(箱子、信标、生成器等)
- 可调整的距离限制和精度设置
- 在不重启服务器的情况下热重载配置
- 支持模组方块实体
### 🚀 **性能优化**
- 高级缓存系统,带 LRU 淘汰
- 可配置的光线投射精度
- 基于距离的提前终止
- 最小化服务器影响(< 5% CPU,< 50MB RAM)
### 🔧 **管理工具**
- 全面的命令系统,带有自动补全
- 实时性能指标和监控
- 调试模式用于故障排除
- 玩家特定的状态检查
### 🔒 **权限系统**
- 所有功能的细粒度权限节点
- 工作人员的绕过权限
- 与所有主要权限插件集成
- 安全的默认设置,仅限操作员管理员访问
### 🌐 **多版本支持**
- 自动 NMS 版本检测
- 对于不支持的版本,提供优雅降级
- 在出现兼容性问题时运行安全模式
- 为新的 Minecraft 版本而设计的未来架构
## 📋 要求
- **Minecraft**: 1.21+ (Paper/Spigot/Bukkit)
- **Java**: 17 或更高版本
- **内存**: 最小的额外使用量
## 🚀 快速开始
1. **安装**: 将 JAR 文件放入您的 `plugins` 文件夹
2. **重启**: 重启您的服务器
3. **配置**: 编辑 `plugins/AntiPieRay/config.yml` 以满足您的需求
4. **重新加载**: 使用 `/antipieray reload` 应用更改
## 📖 命令
| 命令 | 描述 | 权限 |
|---------|-------------|------------|
| `/antipieray` | 显示插件信息和命令 | `antipieray.use` |
| `/antipieray reload` | 重新加载配置 | `antipieray.admin` |
| `/antipieray status ` | 检查玩家数据包处理程序状态 | `antipieray.admin` |
| `/antipieray debug [on/off]` | 切换调试日志记录 | `antipieray.debug` |
| `/antipieray metrics` | 查看性能统计信息 | `antipieray.admin` |
| `/antipieray version` | 显示版本和兼容性信息 | 所有人 |
**别名**: `/apr`, `/pieray`
## 🔑 关键权限
- `antipieray.admin` - 全面管理访问权限(默认:op)
- `antipieray.bypass` - 跳过所有过滤(默认:false)
- `antipieray.debug` - 访问调试功能(默认:op)
- `antipieray.*` - 所有权限(默认:false)
## ⚡ 性能指标
使用内置指标监控您的服务器性能:
- 数据包处理时间和吞吐量
- 缓存命中率和内存使用情况
- 自动性能警报和建议
- GC 优化和内存管理
## 🛠️ 配置示例
```yaml
# 保护这些方块类型
checked-block-entity-types:
- "minecraft:chest"
- "minecraft:trapped_chest"
- "minecraft:ender_chest"
- "minecraft:shulker_box"
- "minecraft:beacon"
- "minecraft:mob_spawner"
# 性能设置
max-check-distance: 64.0 # 最大可见性检查范围
always-view-distance: 8.0 # 在此范围内始终可见
cache-expiration-time: 5000 # 缓存持续时间(毫秒)
ray-cast-precision: 0.5 # 光线投射步长
# 启用指标收集
metrics-enabled: true
debug-enabled: false
```
## 🔍 工作原理
1. **数据包拦截**: 使用 Netty 钩入玩家网络管道
2. **类型过滤**: 检查方块实体类型是否已配置为进行保护
3. **距离检查**: 应用距离限制以进行性能优化
4. **视线**: 从玩家视线到方块中心进行光线投射
5. **缓存**: 存储结果以避免重复计算
6. **决策**: 根据可见性允许或取消数据包
## 🎮 服务器兼容性
### ✅ **支持的平台**
- Paper(推荐)
- Spigot
- Bukkit
- Purpur
### ✅ **测试版本**
- Minecraft 1.21.x
- Java 17, 18, 19, 20, 21
### ✅ **插件兼容性**
- 与所有主要插件配合使用
- 不与其他安全插件冲突
- 与权限管理器兼容(LuckPerms、PermissionsEx 等)
## 📊 为什么选择 AntiPieRay?
### 🏆 **卓越技术**
- 数据包级别过滤(而不仅仅是方块隐藏)
- 实时视线计算
- 高级缓存以获得最佳性能
### 🔧 **易于使用**
- 基本保护无需配置
- 直观的命令和权限
- 全面的文档和支持
### 🛡️ **经过实战考验**
- 在生产服务器上进行了广泛测试
- 能处理边缘情况和错误条件
- 持续更新和维护
### 📈 **性能为中心**
- 最小化服务器影响
- 智能优化策略
- 内置性能监控
## 🐛 故障排除
### 常见问题
- **高处理时间**: 减少 `max-check-distance` 或增加 `ray-cast-precision`
- **内存使用**: 降低 `max-cache-size` 或 `cache-expiration-time`
- **仍然看到隐藏的方块**: 检查方块类型配置和玩家权限
### 调试模式
使用 `/antipieray debug on` 启用以获取详细的日志记录和故障排除信息。~~~~
## 📄 许可
此插件发布在 MIT 许可下。 参阅 GitHub 仓库以获取完整许可详情。
---
**立即保护您的服务器! 下载 AntiPieRay 并彻底停止 PieRay 利用。**
*与 Minecraft 1.21+ 兼容 • 需要 Java 17+ • 与 Paper/Spigot/Bukkit 配合使用*