AdventureRule
规则同意系统 — 玩家必须阅读并同意服务器规则后才能游玩
这是什么?
AdventureRule 是一个服务器规则同意插件。新玩家加入时必须阅读并签署规则书,同意后才能正常游戏。未同意规则的玩家将被限制移动、交互、聊天等行为,并显示视觉提示效果。支持多规则、过期重签、AuthMe / AuthMeAnvilLogin (铁砧登录) 兼容、虚空保护等功能。
核心功能
安装与依赖
环境要求
| 项目 | 要求 |
|---|---|
| 服务端 | Paper / Purpur 1.21+ |
| Java | Java 21+ |
| 可选依赖 | AuthMe (登录插件兼容) |
| 可选依赖 | AuthMeAnvilLogin (铁砧登录插件,自动检测) |
| 可选依赖 | AdventureManage |
安装步骤
- 将
AdventureRule.jar放入plugins/ - 重启服务器,生成默认配置
- 编辑
config.yml,按需配置规则、效果和限制 - 准备规则书内容(原版书与笔写好后放入规则书文件夹)
- 执行
/ar reload
文件结构
plugins/AdventureRule/
├── config.yml # 主配置
├── messages.yml # 消息配置
├── rules/ # 规则书目录
│ └── default.yml # 默认规则书内容
└── data/ # 玩家同意数据
规则书系统
工作原理
- 新玩家加入(或规则过期后重新加入)触发规则检查
- 插件向玩家发放规则书并自动打开
- 玩家阅读完毕关闭规则书,视为同意
- 同意后解除所有行为限制和视觉效果
多规则支持
支持配置多个规则 ID,每个规则有独立的规则书内容和过期策略。玩家需要全部同意才能正常游戏。
规则书配置
# config.yml
rule-check:
enabled: true
check-on-join: true # 登录时检查
first-rule: "default" # 首次触发的规则ID
expire-days: 0 # 过期天数 (0=永不过期)
auto-open-book: true # 自动打开规则书
delay-ticks: 20 # 延迟几tick后打开
使用原版"书与笔"写好规则内容,然后在游戏中手持书执行配置中指定的命令将书保存到插件目录。
视觉效果
药水效果
未同意规则的玩家会被施加药水效果作为视觉提示:
effects:
enabled: true
potion-effects:
- type: BLINDNESS
amplifier: 0
duration: 999999 # 极长时间 (同意后移除)
- type: SLOWNESS
amplifier: 255 # 极高等级 = 无法移动
duration: 999999
提醒消息
reminder:
enabled: true
interval-ticks: 100 # 提醒间隔 (tick)
title:
enabled: true
title: "&c请先阅读服务器规则"
subtitle: "&7输入 /rule 打开规则书"
sound:
enabled: true
sound: ENTITY_EXPERIENCE_ORB_PICKUP
volume: 1.0
pitch: 1.0
行为限制
限制配置
未同意规则的玩家以下行为将被完全禁止:
restrictions:
block-move: true # 禁止移动
block-chat: true # 禁止聊天
block-command: true # 禁止执行命令
block-interact: true # 禁止交互
block-attack: true # 禁止攻击
block-break: true # 禁止破坏方块
block-place: true # 禁止放置方块
block-drop: true # 禁止丢弃物品
block-pickup: true # 禁止拾取物品
allowed-commands: # 白名单命令 (即使block-command=true)
- "/rule"
- "/login"
- "/register"
- "/l"
allowed-commands 中的命令即使在禁止命令状态下也可以执行,确保玩家可以使用 /rule 和登录命令。
AuthMe / 铁砧登录兼容
工作原理
当服务器安装了 AuthMe 登录插件时,AdventureRule 会等待玩家完成 登录或注册 后再触发规则书检查,避免与登录流程冲突。
AuthMe 模式
监听 AuthMe 的 LoginEvent 和 RegisterEvent,玩家登录或注册成功后延迟触发规则书。内置去重机制防止注册自动登录时重复触发。
AuthMeAnvilLogin (铁砧登录) 兼容 v1.2.0
AuthMeAnvilLogin 是一个使用铁砧界面作为登录注册 UI 的插件。它通过 AuthMe API 的 forceLogin() / forceRegister() 完成认证,会自动触发 AuthMe 事件。
AdventureRule 自动检测 AuthMeAnvilLogin 插件:
- 检测到 AuthMeAnvilLogin 时,即使
authme.enabled: false,也会自动启用 AuthMe 挂钩模式 - 玩家在铁砧 GUI 中完成登录/注册后,自动弹出规则书
- 建议将
delay-after-login设为40-60,等待铁砧 GUI 完全关闭
配置
# config.yml
settings:
authme:
# 手动启用 AuthMe 挂钩 (检测到 AuthMeAnvilLogin 时自动启用)
enabled: false
# 登录/注册成功后延迟触发 (tick)
# 使用 AuthMeAnvilLogin 时建议 40-60
delay-after-login: 40
如果服务器同时安装了 AuthMe 和 AuthMeAnvilLogin,无需手动设置 enabled: true,插件会自动启用挂钩模式并在控制台显示:已挂钩 AuthMe + AuthMeAnvilLogin (铁砧登录),将在玩家登录/注册后触发规则书。
确保 allowed-commands 中包含 AuthMe 的登录命令(/login, /register, /l, /reg),否则玩家在规则书打开前无法登录。
流程图
玩家加入服务器
└─ AuthMeAnvilLogin 打开铁砧 GUI
└─ 玩家输入密码 → 登录/注册成功
└─ AuthMe 触发 LoginEvent / RegisterEvent
└─ AdventureRule 监听到事件
└─ 延迟 40 tick 后弹出规则书
出生点配置
概览
可配置未同意规则的玩家强制传送到指定出生点,防止玩家在受限状态下走失。
配置
spawn:
enabled: false
world: "world"
x: 0.0
y: 64.0
z: 0.0
yaw: 0.0
pitch: 0.0
teleport-on-join: true # 未同意时每次登录传送
虚空保护
概览
未同意规则的玩家掉入虚空时,自动传送回出生点,防止死亡循环。
配置
void-protection:
enabled: true
min-y: -64 # 低于此 Y 坐标触发保护
config.yml 完整配置
完整参考
# AdventureRule v1.1.5 主配置
rule-check:
enabled: true
check-on-join: true
first-rule: "default"
expire-days: 0
auto-open-book: true
delay-ticks: 20
effects:
enabled: true
potion-effects:
- type: BLINDNESS
amplifier: 0
duration: 999999
- type: SLOWNESS
amplifier: 255
duration: 999999
restrictions:
block-move: true
block-chat: true
block-command: true
block-interact: true
block-attack: true
block-break: true
block-place: true
block-drop: true
block-pickup: true
allowed-commands:
- "/rule"
- "/login"
- "/register"
- "/l"
reminder:
enabled: true
interval-ticks: 100
title:
enabled: true
title: "&c请先阅读服务器规则"
subtitle: "&7输入 /rule 打开规则书"
sound:
enabled: true
sound: ENTITY_EXPERIENCE_ORB_PICKUP
spawn:
enabled: false
world: "world"
x: 0.0
y: 64.0
z: 0.0
void-protection:
enabled: true
min-y: -64
database:
type: sqlite
mysql:
host: localhost
port: 3306
database: adventurerule
username: root
password: ""
table-prefix: "ar_"
expiry-task:
interval-minutes: 30
消息配置
消息文件
所有玩家可见的文本都在 messages.yml 中配置,支持颜色代码和变量:
# messages.yml (部分)
prefix: "&8[&cRule&8] "
consent-success: "&a你已成功同意服务器规则!祝你游戏愉快!"
consent-expired: "&c你的规则同意已过期,请重新阅读规则。"
rule-not-agreed: "&c你尚未同意服务器规则,请先阅读规则书。"
block-chat: "&c请先同意规则后再聊天。"
block-command: "&c请先同意规则后再使用命令。"
block-interact: "&c请先同意规则。"
数据库
存储类型
database:
type: sqlite # sqlite / mysql
mysql:
host: localhost
port: 3306
database: adventurerule
username: root
password: ""
table-prefix: "ar_"
数据清理
expiry-task:
interval-minutes: 30 # 定时清理过期记录
命令列表
玩家命令
| 命令 | 说明 | 权限 |
|---|---|---|
/rule | 打开规则书 | adventurerule.use |
管理员命令
| 命令 | 说明 | 权限 |
|---|---|---|
/ar trigger <玩家> [规则ID] | 对玩家触发规则书 | adventurerule.admin |
/ar list [规则ID] [页码] | 列出规则同意记录 | adventurerule.admin |
/ar check <玩家> | 查看玩家同意状态 | adventurerule.admin |
/ar reset <玩家> [规则ID] | 重置玩家同意状态 | adventurerule.admin |
/ar reload | 重载配置文件 | adventurerule.admin |
使用示例
# 对玩家触发默认规则
/ar trigger Steve
# 对玩家触发指定规则
/ar trigger Steve privacy_policy
# 查看玩家是否已同意所有规则
/ar check Steve
# 重置玩家的某个规则(要求重新同意)
/ar reset Steve default
# 重置玩家所有规则
/ar reset Steve
权限节点
| 权限 | 说明 | 默认 |
|---|---|---|
adventurerule.use | 使用 /rule 命令 | 所有人 |
adventurerule.bypass | 跳过规则检查 | OP |
adventurerule.admin | 管理员命令 | OP |
更新日志
v1.2.0 LATEST
- NEW AuthMeAnvilLogin 铁砧登录兼容 — 自动检测插件,铁砧登录/注册后弹出规则书
- NEW AuthMe 注册事件 — 同时监听 LoginEvent + RegisterEvent,内置去重机制
- IMPROVED 自动挂钩 — 检测到 AuthMeAnvilLogin 时自动启用 AuthMe 模式,无需手动配置
- CONFIG delay-after-login — 默认值调整为 40 tick,适配铁砧 GUI
v1.1.5
- IMPROVED 虚空保护 — 可自定义触发 Y 坐标
- IMPROVED 过期清理 — 定时任务自动清理过期记录
- CONFIG softdepend — 新增 AdventureManage
v1.1.0
- NEW 多规则支持 — 可配置多个独立规则 ID
- NEW 过期重签 — 规则同意可设有效期
- NEW MySQL 支持 — 跨服数据共享
v1.0.0
- NEW 初始版本 — 规则书、行为限制、视觉效果、AuthMe 兼容