ElySecurity适合Nukkit-MOT的先进安全插件
管理
基岩版
112025/12/29 15:26:17

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: 如何更新插件?

  1. 备份配置文件

  2. 替换插件JAR文件

  3. 重启服务器

  4. 检查配置兼容性

📊 性能优化建议

  1. 小规模服务器: 使用文件存储模式

  2. 中大型服务器: 使用MySQL+Redis组合

  3. 调整检测阈值: 根据服务器负载调整检测灵敏度

  4. 定期清理缓存: 长时间运行后重启释放内存

🤝 贡献与支持

问题反馈

遇到问题请提供:

  1. Nukkit版本

  2. 插件版本

  3. 错误日志截图

  4. 复现步骤

功能建议

欢迎通过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权限管理

  • ✅ 反刷屏系统

  • ✅ 违禁词过滤

  • ✅ 双存储模式支持

  • ✅ 多语言界面

支持作者,获得更多创作动力!

讨论
评测
版本列表 2 个版本
推荐版本
R
1.0.7
Nukkit
其他最新版本
R
1.0.1
Nukkit
资源信息
授权协议
作者保留所有权利或有特别声明
发布时间
2025/12/18 15:50:48
最后更新
2025/12/29 15:26:17
加载时间比预期的要久,也许需要刷新一下?