# NoFullBright
NoFullBright 是一个小型 Paper/Spigot 插件,用于检测配置世界中可能的客户端“透视(fullbright)”使用,并在玩家超过警告阈值时运行可配置的命令。
## 功能
- 定期在服务器端检查光照条件较低的情况,在这种情况下,玩家不应该能够看得清楚。
- 可配置的世界列表,其中检查处于活动状态。
- 当玩家反复处于可疑条件下时,执行配置的命令(支持占位符)。
- 轻量级和最小化:默认情况下没有命令或额外的侦听器。
## 工作原理
每个预定间隔(默认:200 滴初始延迟和 200 滴运行间隔)插件会扫描配置世界中的所有玩家并评估每个玩家:
- 如果玩家脚下附近的方块亮度水平低于 2 且玩家的 Y 坐标低于 40,则认为玩家“在黑暗中”。
- 如果玩家没有夜视或荧光药水效果,并且手中没有拿火把,插件会递增每个玩家的内部警告计数器。
注意:仅当玩家处于生存游戏模式时才会进行检查。在创造或旁观模式下的玩家将被检查忽略。
- 当警告计数器达到配置的阈值(默认 5)时,插件将执行配置的 `report-command`(带有 `%player%` 和 `%world%` 占位符),并重置该玩家的计数器。
- 如果玩家返回到安全状态,则警告计数器会随着时间推移而递减,直到达到 0。
这种方法试图通过在采取行动之前要求反复检测来减少误报。
## 配置 (`config.yml`)
插件创建的默认 `config.yml`:
```yaml
# NoFullBright configuration
# worlds: list of world names where the anti-fullbright check runs
# report-command: command executed on violation. You can use %player% and %world% placeholders.
worlds:
- hardcore
report-command: 'report %player% utilizzo della fullbright in %world%'
```
- `worlds` (列表) — 检查将运行的确切世界名称。修改此列表以包含您希望启用透视反作弊检查的所有世界。
- `report-command` (字符串) — 当玩家达到警告阈值时,服务器控制台执行的命令。插件将 `%player%` 和 `%world%` 替换为玩家的名称和世界名称。确保您的服务器上存在该命令(例如,一个模组/举报插件)。如果命令不可用,则不会发生任何致命事件,但不会采取任何有用的操作。
## 占位符
- `%player%` — 替换为玩家的名称。
- `%world%` — 替换为世界名称。
## 建议 & 调优
- 如果您的世界名称各不相同(例如 `hardcore_1`、`hardcore_2`),请相应地更新 `worlds`。
- 如果您想要不同的灵敏度,我可以添加可配置的选项:
- `light-threshold` (默认 2)
- `y-limit` (默认 40)
- `warning-count` (默认 5)
- `tick-interval` (调度器延迟/周期)
## 故障排除
- 在违规时未执行任何操作:确保在 `report-command` 中设置的命令实际存在并且服务器控制台可以执行该命令(例如,另一个插件提供的 `report` 命令)。
- 误报过多:在问题页面上告诉我
- 插件在 `/plugins` 中未显示:确认 JAR 文件名是否正确,服务器日志显示它已加载;检查 `server.log` 以查找启动错误。
## 许可证
随意使用。不提供任何保证。