📋 概述
AdventureBan 是一款功能全面的跨服封禁管理插件,灵感来源于 LiteBans。支持 Spigot/Paper/Purpur 后端服务器和 Velocity 代理端,提供统一的惩罚管理体验。
🔨
多类型惩罚
封禁、禁言、警告、踢出、IP封禁、IP禁言
🌐
跨服同步
通过数据库同步表实现惩罚在多个服务器间实时生效
📋
模板系统
自定义惩罚阶梯,累犯自动升级处罚等级
🔍
关联账号检测
IP关联检测,自动通知管理员已封禁玩家的小号
🗄️
数据库支持
支持 H2 (内嵌) 和 MySQL / MariaDB 数据库
📡
Discord 通知
通过 Webhook 将惩罚信息实时推送到 Discord 频道
✨ 功能特性
惩罚类型
| 类型 | 描述 | 效果 |
|---|---|---|
BAN | 封禁 | 禁止登录服务器 |
MUTE | 禁言 | 禁止聊天和指定命令 |
WARN | 警告 | 记录警告,登录时提示 |
KICK | 踢出 | 立即踢出服务器 |
IP_BAN | IP封禁 | 封禁IP地址,影响所有关联账号 |
IP_MUTE | IP禁言 | 禁言IP地址,影响所有关联账号 |
命令标记 (Flags)
| 标记 | 描述 |
|---|---|
-s | 静默执行 - 不广播给普通玩家 |
-g | 全局范围 - 在所有服务器上生效 |
-I | IP模式 - 同时封禁/禁言IP |
-d | 删除模式 - 删除而非撤销 |
server:<名称> | 指定服务器范围 |
时长格式
支持灵活的时长表达,可组合使用:
30s- 30 秒10m- 10 分钟2h- 2 小时7d- 7 天2w- 2 周1mo- 1 个月1y- 1 年1d12h30m- 1天12小时30分钟 (组合)permanent- 永久
📦 安装
Spigot / Paper / Purpur 端
- 将
AdventureBan-Spigot-1.0.0.jar放入服务器的plugins/目录 - 启动服务器,插件会自动生成默认配置文件
- 编辑
plugins/AdventureBan/config.yml,设置数据库和服务器名称 - 使用
/adventureban reload重载配置
Velocity 代理端
- 将
AdventureBan-Velocity-1.0.0.jar放入 Velocity 的plugins/目录 - 启动代理服务器,自动生成
config.json和messages.json - 编辑配置文件,确保数据库设置与 Spigot 端一致
- 重启代理服务器
跨服配置要点
- 所有服务器必须连接同一数据库(推荐 MySQL)
- 每个服务器需要设置唯一的
server-name - 同步通过数据库
adventureban_sync表自动完成 - 可选:在 Velocity 端部署以实现代理级别拦截
⚡ 命令
惩罚命令
| 命令 | 描述 | 用法 |
|---|---|---|
| /ban | 永久封禁 | /ban <玩家> [时长] [标记] [原因] |
| /tempban | 临时封禁 | /tempban <玩家> <时长> [标记] [原因] |
| /mute | 永久禁言 | /mute <玩家> [时长] [标记] [原因] |
| /tempmute | 临时禁言 | /tempmute <玩家> <时长> [标记] [原因] |
| /warn | 警告玩家 | /warn <玩家> [标记] [原因] |
| /kick | 踢出玩家 | /kick <玩家> [标记] [原因] |
| /ipban | IP封禁 | /ipban <玩家|IP> [时长] [原因] |
| /ipmute | IP禁言 | /ipmute <玩家|IP> [时长] [原因] |
撤销命令
| 命令 | 描述 | 用法 |
|---|---|---|
| /unban | 解除封禁 | /unban <玩家> [原因] |
| /unmute | 解除禁言 | /unmute <玩家> [原因] |
| /unwarn | 撤销警告 | /unwarn <玩家> [原因] |
查询命令
| 命令 | 描述 | 用法 |
|---|---|---|
| /checkban | 检查封禁状态 | /checkban <玩家> |
| /checkmute | 检查禁言状态 | /checkmute <玩家> |
| /warnings | 查看警告列表 | /warnings [玩家] |
| /history | 惩罚历史 | /history <玩家> [页码] |
| /staffhistory | 员工执行记录 | /staffhistory <执行者> [页码] |
| /banlist | 封禁列表 | /banlist [页码] |
| /mutelist | 禁言列表 | /mutelist [页码] |
| /dupeip | 关联账号查询 | /dupeip <玩家|IP> |
管理命令
| 命令 | 描述 | 用法 |
|---|---|---|
| /staffrollback | 回滚员工操作 | /staffrollback <执行者> [时长] |
| /lockdown | 锁定服务器 | /lockdown [end] [server:名称] |
| /adventureban reload | 重载配置 | /adventureban reload |
| /adventureban info | 查看数据库信息 | /adventureban info |
命令使用示例
# 永久封禁并广播
/ban Steve 使用外挂
# 临时封禁 7 天并静默执行
/tempban Steve 7d -s 使用 X-Ray
# 全局禁言 1 小时
/mute Steve 1h -g 刷屏
# 使用模板 (自动阶梯升级)
/ban Steve cheating
# 指定服务器范围
/ban Steve 30d server:survival 滥用Bug
# IP 封禁
/ipban Steve 30d 使用外挂 (IP封禁)
# 关联账号查询
/dupeip Steve
/dupeip 192.168.1.100
🔑 权限
命令权限
| 权限 | 描述 | 默认 |
|---|---|---|
| adventureban.admin | 管理员权限 | OP |
| adventureban.ban | 封禁权限 | OP |
| adventureban.mute | 禁言权限 | OP |
| adventureban.warn | 警告权限 | OP |
| adventureban.kick | 踢人权限 | OP |
| adventureban.ipban | IP封禁权限 | OP |
| adventureban.ipmute | IP禁言权限 | OP |
| adventureban.unban | 解封权限 | OP |
| adventureban.unmute | 解除禁言权限 | OP |
| adventureban.unwarn | 撤销警告权限 | OP |
| adventureban.check | 检查惩罚状态 | OP |
| adventureban.history | 查看历史 | OP |
| adventureban.staffhistory | 查看员工记录 | OP |
| adventureban.warnings | 查看警告 | 全部 |
| adventureban.banlist | 查看封禁列表 | OP |
| adventureban.mutelist | 查看禁言列表 | OP |
| adventureban.dupeip | 查看关联账号 | OP |
| adventureban.staffrollback | 员工回滚 | OP |
| adventureban.lockdown | 锁服权限 | OP |
通知权限
| 权限 | 描述 | 默认 |
|---|---|---|
| adventureban.notify.broadcast | 接收惩罚广播 | 全部 |
| adventureban.notify.silent | 查看静默惩罚 | OP |
| adventureban.notify.alts | 接收关联账号通知 | OP |
豁免 / 绕过权限
| 权限 | 描述 | 默认 |
|---|---|---|
| adventureban.exempt.ban | 免疫封禁 | 无 |
| adventureban.exempt.mute | 免疫禁言 | 无 |
| adventureban.exempt.warn | 免疫警告 | 无 |
| adventureban.exempt.kick | 免疫踢出 | 无 |
| adventureban.bypass.mute | 绕过禁言 | 无 |
| adventureban.lockdown.bypass | 锁服绕过 | OP |
⚙️ 配置文件
config.yml
# 当前服务器名称 (跨服同步标识)
server-name: "lobby"
# 数据库配置
database:
type: h2 # h2 或 mysql
mysql:
host: localhost
port: 3306
database: adventureban
username: root
password: ""
ssl: false
# 跨服同步轮询间隔 (ticks)
sync:
interval-ticks: 40
# 默认行为
defaults:
silent: false
# 关联账号检测
alt-detection:
notify: true # 加入时通知管理员
auto-ban: false # 自动封禁关联账号
# 禁言时屏蔽的命令
mute:
blocked-commands:
- msg
- tell
- whisper
- r
- reply
- me
- say
# 锁服设置
lockdown:
bypass-op: true
messages.yml (部分)
prefix: "&6[AdventureBan] "
# 封禁踢出界面 (支持 \n 换行)
ban-screen: "&c&l你已被封禁\n\n&7原因: &f$reason\n..."
# 广播消息
broadcast-ban: "&c$player &7被 &e$executor &7封禁了..."
# 禁言提示
muted-message: "&c你已被禁言! &7剩余: &f$remaining..."
# 变量: $player, $executor, $reason, $duration, $remaining, $date, $id, $server, $type
📋 惩罚模板
模板系统允许创建自动升级的惩罚阶梯。使用 /ban 玩家 模板ID 即可触发,系统自动根据历史违规次数选择对应等级。
模板示例 - templates.yml
templates:
cheating:
type: ban # 惩罚类型
tiers:
- duration: 7d # 第一次: 7天封禁
reason: "作弊行为 (第一次)"
- duration: 30d # 第二次: 30天封禁
reason: "作弊行为 (第二次)"
- duration: permanent # 第三次: 永久封禁
reason: "作弊行为 (永久封禁)"
toxic:
type: mute
group: chat-offense # 组名 (同组共享进度)
tiers:
- duration: 1h
reason: "辱骂 (第一次)"
- duration: 1d
reason: "辱骂 (第二次)"
- duration: permanent
reason: "辱骂 (永久禁言)"
rule-break:
type: warn
tiers:
- reason: "违反规则 (警告)"
- reason: "再次违规"
commands: # 触发附加命令
- "tempban $player 1d 多次违规"
# 模板组 (同组模板共享违规计数)
groups:
chat-offense:
- toxic
- spam
工作原理
- 执行
/ban Steve cheating - 系统查找名为
cheating的模板 - 计算 Steve 在该模板(及同组模板)中的历史违规次数
- 根据违规次数选择对应的 Tier(等级)
- 自动使用 Tier 中定义的时长和原因执行惩罚
- 如果 Tier 中定义了 commands,自动执行附加命令
🏷️ PlaceholderAPI
需要安装 PlaceholderAPI 插件,变量前缀为 %adventureban_
| 变量 | 描述 |
|---|---|
%adventureban_is_banned% | 是否被封禁 (true/false) |
%adventureban_is_muted% | 是否被禁言 (true/false) |
%adventureban_ban_reason% | 封禁原因 |
%adventureban_ban_remaining% | 封禁剩余时间 |
%adventureban_ban_executor% | 封禁执行者 |
%adventureban_mute_reason% | 禁言原因 |
%adventureban_mute_remaining% | 禁言剩余时间 |
%adventureban_warning_count% | 活跃警告数量 |
📡 Discord Webhook
在 webhooks.yml 中配置 Discord Webhook,自动将惩罚信息推送到频道。
discord:
enabled: true
url: "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"
username: "AdventureBan"
每种惩罚类型使用不同的颜色:
- 封禁/IP封禁 - 🔴 红色
- 禁言/IP禁言 - 🟠 橙色
- 警告 - 🟡 黄色
- 踢出 - 🔵 蓝色
🏗️ 项目架构
AdventureBan/
├── common/ # 共享模块
│ ├── model/ # Punishment, PunishmentType, PlayerRecord
│ ├── database/ # DatabaseManager (H2/MySQL, HikariCP)
│ ├── template/ # Template, TemplateManager
│ └── util/ # DurationParser, UUIDUtil, CommandFlagParser
├── spigot/ # Spigot/Paper 端
│ ├── command/ # MainCommand (所有命令)
│ ├── listener/ # Login, Join, Chat, CommandBlock 监听
│ ├── manager/ # PunishmentManager, TemplateManager, SyncService
│ ├── config/ # ConfigManager, Messages
│ └── hook/ # PlaceholderAPIHook, DiscordWebhook
└── velocity/ # Velocity 代理端
├── command/ # VelocityBanCommand, VelocityAdminCommand
├── listener/ # VelocityLoginListener, VelocityChatListener
├── manager/ # VelocitySyncService
└── config/ # VelocityConfig
📝 更新日志
v1.0.0 - 初始版本
- 完整的惩罚系统: 封禁、禁言、警告、踢出、IP封禁、IP禁言
- 跨服同步 (通过数据库同步表)
- 模板/阶梯惩罚系统
- 关联账号 (Alt) 检测和通知
- 数据库: H2 内嵌 + MySQL/MariaDB
- PlaceholderAPI 集成
- Discord Webhook 通知
- Velocity 代理端完整支持
- 员工回滚 (staffrollback)
- 服务器锁定 (lockdown)
- 完整的权限系统 (命令/通知/豁免/绕过)
- 自定义消息和踢出界面
- 命令标记: 静默、全局、IP、删除、服务器范围