插件介绍

核心目标:OP 只给“被允许的人”

任何不在白名单内的玩家一旦获得 OP(无论是玩家执行 /op 还是控制台执行),都会被插件立刻撤销 OP 并踢出。

BanOP 是一个 OP 白名单保护插件,适用于“多人管理/脚本多/权限复杂”的服务器环境,用于防止未授权 OP、误操作 OP、或被漏洞提权后造成损失。

主要功能

  • OP 白名单 —— 只允许白名单内的玩家拥有 OP
  • 监听 /op 行为 —— 玩家输入 /op xxx 或控制台 op xxx 都会被检测
  • 自动撤权 + 踢出 —— 未授权 OP 会被立刻 setOp(false) 并踢出
  • 封禁记录入库 —— 将异常记录写入 MySQL(方便追查)
  • 定时巡检 —— 定时检查在线 OP 是否全部在白名单内
  • 配置自动升级 —— 配置版本过旧时自动补全新配置项(保留数据库与白名单)

命令列表

主命令:/banop

命令说明权限
/banop add <玩家名>添加 OP 白名单banop.admin
/banop remove <玩家名>移除 OP 白名单banop.admin
/banop list查看白名单列表banop.admin
/banop reload重载配置、刷新白名单缓存、重启定时检测banop.admin
/banop unban <玩家名>解封(对 Bukkit 名单封禁执行 pardon)banop.admin

权限节点

权限说明默认
banop.admin管理权限(add/remove/list/reload/unban)OP

配置文件

配置文件路径:plugins/BanOP/config.yml

数据库配置

YAMLconfig.yml
mysql:
  host: "127.0.0.1"
  port: 3306
  database: "banop"
  username: "banop"
  password: "password"

检测与冻结

YAMLconfig.yml
check-interval: 60
freeze-duration: 60
kick-message: "服务器异常,等待解锁指令权限。"
freeze-message: "§c服务器异常,等待解锁指令权限。剩余 {time} 秒。"

OP 白名单

YAMLconfig.yml
op-whitelist:
  - "RainRainRain"
  - "NewPlayer"

工作原理

  • 命令监听 —— 监听玩家聊天命令与控制台命令中的 op <玩家>,延迟 2 tick 再检查目标是否已成为 OP
  • 白名单校验 —— 若目标不在白名单缓存中:撤销 OP、踢出、异步写入记录
  • 定时巡检 —— 按 check-interval 秒周期检查在线玩家 OP 状态

依赖插件

组件是否必须说明
MySQL 5.7+必须白名单与记录存储
Paper 1.20+必须服务端核心

常见问题

把你的游戏名加入 op-whitelist,并确保数据库白名单同步成功。
插件会读取配置里的默认白名单并同步到数据库,运行时以内存缓存/数据库为准;使用 /banop add/remove 会写入数据库并更新缓存。