ElySecurity
一个功能强大的 Nukkit-MOT 服务器安全插件
支持调用插件API进行内容审核(包含百度AI内容审核)
玩家OP二次验证
高效能反刷屏
🚀 功能特性
🔒 核心安全功能
-
OP权限管理 - 数据库/文件双重存储模式
-
权限状态同步 - 实时检测并同步玩家权限
-
内容安全检测 - 支持本地和百度API双重检测
🛡️ 反违规机制
-
智能刷屏检测 - 基于消息间隔、相似度、信息熵的多维度检测
-
违禁词过滤 - 本地词库 + 百度AI内容审核
-
多种惩罚方式 - 警告、踢出、禁言等可配置惩罚
⚙️ 技术特性
-
双存储模式 - 可选择MySQL数据库或YAML文件存储
-
Redis缓存支持 - 高性能缓存加速
-
多语言支持 - 中英文界面
-
异步检测 - 不阻塞服务器主线程
📦 安装要求
环境要求
-
Nukkit API: 1.0.10+
-
Java: 8+
-
可选: MySQL 5.7+ / Redis 5+
依赖
-
必须: Nukkit 服务器
-
可选: MySQL驱动、Redis客户端
⚡ 快速开始
1. 安装插件
将 ElySecurity.jar 放入 plugins/ 目录并重启服务器。
2. 基础配置
编辑 plugins/ElySecurity/config.yml:
# 基本设置
language: "zh_CN" # 语言: zh_CN / en_US
# 存储模式选择
mysql:
enabled: false # 关闭MySQL,使用文件存储
3. 添加管理员
在控制台执行:
op add 你的游戏ID
🛠️ 配置说明
存储模式配置
方案A:使用文件存储(简单)
mysql:
enabled: false
OP列表将保存在:plugins/ElySecurity/admin.yml
方案B:使用数据库存储(推荐)
mysql:
enabled: true
host: "localhost"
port: 3306
database: "elysecurity"
username: "root"
password: "your_password"
安全功能配置
反刷屏设置
anti-spam:
enabled: true
message-interval: 1000 # 消息间隔(ms)
similarity-threshold: 0.8 # 相似度阈值
punishment: "kick" # 惩罚方式: warning/kick
违禁词设置
prohibited-words:
enabled: true
mode: "local" # local/baidu/both
punishment: "mute" # 惩罚方式: warning/kick/mute
mute-duration: 300 # 禁言时长(秒)
📋 命令列表
| 命令 | 权限 | 描述 | 使用示例 |
|------|------|------|----------|
| /op add <玩家> | elysecurity.op | 添加OP权限 | /op add Steve |
| /op remove <玩家> | elysecurity.op | 移除OP权限 | /op remove Alex |
⚠️ 注意:OP命令只能在服务器控制台执行
📁 文件结构
plugins/ElySecurity/
├── config.yml # 主配置文件
├── admin.yml # OP列表(文件模式)
├── prohibited-words.yml # 违禁词库
└── lang/
├── zh_CN.yml # 中文语言文件
└── en_US.yml # 英文语言文件
🔧 高级功能
Redis缓存加速
redis:
enabled: true
host: "localhost"
port: 6379
password: ""
百度AI内容审核
baidu-api:
enabled: true
api-key: "your_api_key"
secret-key: "your_secret_key"
自定义违禁词
编辑 prohibited-words.yml:
local-words:
- "违规词1"
- "违规词2"
- "违规词3"
❓ 常见问题
Q1: 插件无法加载?
-
检查Nukkit版本是否≥1.0.10
-
检查Java版本是否≥8
-
查看服务器日志获取详细错误信息
Q2: OP权限不同步?
-
确保存储模式配置正确
-
检查数据库连接(如果使用MySQL)
-
尝试重新执行OP命令
Q3: 如何备份OP列表?
-
文件模式: 备份
admin.yml -
数据库模式: 备份MySQL的
ops表
Q4: 如何更新插件?
-
备份配置文件
-
替换插件JAR文件
-
重启服务器
-
检查配置兼容性
📊 性能优化建议
-
小规模服务器: 使用文件存储模式
-
中大型服务器: 使用MySQL+Redis组合
-
调整检测阈值: 根据服务器负载调整检测灵敏度
-
定期清理缓存: 长时间运行后重启释放内存
🤝 贡献与支持
问题反馈
遇到问题请提供:
-
Nukkit版本
-
插件版本
-
错误日志截图
-
复现步骤
功能建议
欢迎通过GitHub Issues提交功能建议。
📄 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
🔌 API 调用
百度内容审核 API
其他插件可以通过以下方式调用本插件的百度内容审核功能:
// 获取ElySecurity插件实例
PluginBase elySecurity = getServer().getPluginManager().getPlugin("ElySecurity");
// 检查内容是否违规
if (elySecurity instanceof cn.ElysianArena.ElySecurity.Main) {
cn.ElysianArena.ElySecurity.Main main = (cn.ElysianArena.ElySecurity.Main) elySecurity;
cn.ElysianArena.ElySecurity.security.ViolationResult result = main.getProhibitedWords().checkContent(playerName, content);
if (result.isViolated()) {
// 处理违规内容
String source = result.getSource(); // 违规来源 (local/baidu)
List<String> details = result.getViolationDetails(); // 违规详情
double confidence = result.getConfidence(); // 置信度
}
}
返回的ViolationResult对象包含以下字段:
-
violated: 是否违规 -
violationType: 违规类型ID -
subType: 子类型 -
violationDetails: 违规详情(如命中的关键词) -
source: 检测来源 (local/baidu) -
confidence: 置信度 -
message: 附加消息
✨ 更新日志
v1.0.0
-
✅ OP权限管理
-
✅ 反刷屏系统
-
✅ 违禁词过滤
-
✅ 双存储模式支持
-
✅ 多语言界面
没有评论