- 版权类型
- 原创
- 插件中文名称
- 冒险规则书
- 插件英文名称
- AdventureRule
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
[MD]
#
---
## 插件信息
| 项目 | 详情 |
|------|------|
| **插件名称** | AdventureRule |
| **版本** | 1.1.0 |
| **作者** | Feiyes |
| **支持版本** | Minecraft 1.21.4+(Paper / Purpur) |
| **Java 要求** | JDK 21+ |
| **存储方式** | YAML(本地) / MySQL(跨服) |
| **前置插件** | 无(可选 AuthMe) |
| **联系方式** | QQ: 823959438 |
---
## 插件简介
你是否在为以下问题烦恼?
- 玩家进服后不看规则,违规后说"我不知道有规则"
- 想让玩家必须阅读规则才能游戏,但又不想用笨重的方案
- 需要一个美观、沉浸式的规则展示系统
**AdventureRule** 就是为此而生!
本插件利用 Minecraft 原版书本界面,为玩家呈现一本精心排版的服务器规则书。玩家**必须阅读到最后一页并点击同意按钮**才能开始游戏。整个流程自然流畅,像翻阅一本真正的书一样。
---
## 功能亮点
### 沉浸式书本体验
不是弹窗,不是聊天刷屏,而是一本**真正的 Minecraft 书本**。玩家翻页阅读规则,在最后一页点击按钮做出选择。支持颜色代码、粗体、斜体等丰富样式。
### 完善的防绕过机制(全部可配置)
阅读规则期间,以下限制全部可在配置中独立开关:
- **失明 + 缓慢** 药水效果
- **禁止左键/右键** — 无法攻击、破坏、放置、使用物品
- **禁止移动** — 冻结位置(允许转头)
- **禁止 NPC/实体交互** — 无法与村民、NPC 插件交互
- **禁止执行命令** — 支持白名单(默认允许 `/login` `/register`)
- **禁止聊天** — 无法发送消息
- **禁止物品丢弃/拾取**
- **按 ESC 或完成按钮** → 实时检测并自动重新打开规则书
玩家**没有任何办法**绕过规则流程!
### AuthMe 登录兼容
服务器使用了 AuthMe 登录插件?没问题!
- 启用 `authme.enabled: true` 后,规则书将在玩家**完成 AuthMe 登录后**才触发
- 命令白名单默认包含 `/login` `/register` `/l` `/reg`,不影响登录流程
- 登录后可配置延迟再触发规则书
### 外部规则书模板(save/ 文件夹)
- 插件自动在 `plugins/AdventureRule/save/` 下生成示例模板
- 在该文件夹中放置 `.yml` 文件即可自动加载为规则书
- 无需在 `config.yml` 中重复配置,方便管理多个规则书
### 安全的按钮系统
使用 Paper 独有的 `ClickEvent.callback` 技术实现按钮点击。与传统的命令点击不同,本插件的按钮:
- 不暴露任何命令给玩家
- 无法被玩家手动输入触发
- 直接在插件内部执行逻辑
### 智能的同意/拒绝流程
**玩家同意规则后:**
- 播放升级音效
- 发送绿色成功提示
- 移除所有限制效果
- 记录同意信息到数据库
- 设定有效期(默认7天,可配置)
**玩家拒绝规则后:**
- 自动打开一本"拒绝提示书",告知玩家后果
- 拒绝提示书中有两个选择:
- 「好的,我再次阅读」→ 返回规则书
- 「我知道了,断开链接」→ 3秒后踢出服务器
- 踢出消息可自定义
### 多规则支持
可以配置**多本不同的规则书**,例如:
- `server_rule` - 服务器基本规则
- `pvp_rule` - PVP 专属规则
- `build_rule` - 建筑区规则
每本规则书可独立配置内容、按钮、音效、行为。管理员可通过命令指定让玩家阅读特定规则。
### 数据存储与群组服支持
**单服使用:** 默认 YAML 文件存储,零配置开箱即用。
**群组服使用:** 切换为 MySQL 模式,所有子服连接同一数据库,同意记录自动共享。使用 HikariCP 高性能连接池,内置内存缓存,对服务器性能影响极小。
### 自动过期机制
同意记录可设置有效期(默认7天)。过期后玩家下次登录将自动重新弹出规则书。适合需要定期让玩家重新确认规则的服务器。设置为 `0` 则永不过期。
---
## 命令与权限
### 管理员命令 `/ar`(权限:`adventurerule.admin`,默认 OP)
| 命令 | 说明 |
|------|------|
| `/ar trigger <玩家> [规则ID]` | 强制对指定玩家弹出规则书 |
| `/ar list [规则ID] [页码]` | 列出所有同意记录(分页显示) |
| `/ar check <玩家>` | 查看指定玩家的所有同意状态 |
| `/ar reset <玩家> [规则ID]` | 重置玩家同意状态(下次登录重新弹出) |
| `/ar reload` | 重载配置文件 |
| `/ar help` | 显示帮助信息 |
### 玩家命令(权限:`adventurerule.rule`,默认所有玩家)
| 命令 | 说明 |
|------|------|
| `/rule [规则ID]` | 主动查看服务器规则 |
所有命令均支持 **Tab 自动补全**。
---
## 配置文件详解
### 基础设置
```yaml
settings:
check-interval: 60 # 过期记录检查间隔(秒)
default-expire-days: 7 # 同意有效天数(0 = 永不过期)
trigger-delay: 40 # 玩家加入后延迟多少tick触发(建议40-60)
effects:
blindness: # 失明效果
enabled: true
duration: 6000 # 持续时间(tick,20tick = 1秒)
amplifier: 1 # 效果等级
slowness: # 缓慢效果
enabled: true
duration: 6000
amplifier: 1
restrictions: # 行为限制(v1.1.0 新增)
allow-left-click: false # 是否允许左键
allow-right-click: false # 是否允许右键
allow-movement: false # 是否允许移动
allow-npc-interact: false # 是否允许NPC交互
block-all-commands: true # 是否屏蔽所有命令
allowed-commands: # 命令白名单
- "/login"
- "/register"
- "/l"
- "/reg"
block-chat: true # 是否屏蔽聊天
block-item-drop: true # 是否禁止丢弃物品
block-item-pickup: true # 是否禁止拾取物品
block-command-message: "&c请先阅读并同意服务器规则后才能使用命令!"
block-action-message: "&c请先阅读并同意服务器规则!"
authme: # AuthMe 兼容(v1.1.0 新增)
enabled: false # 启用后,登录完成才触发规则书
delay-after-login: 20 # 登录后延迟tick
messages:
consent-success: "&a您已同意服务器规则,祝您游戏愉快!"
consent-fail: "&c您必须同意规则才能继续游戏!"
kick-message: "&c您拒绝了服务器规则,已被断开连接。"
read-to-last-page: "&e请阅读至最后一页"
```
### 数据库配置
```yaml
database:
type: yaml # yaml = 本地文件 / mysql = 数据库
host: localhost
port: 3306
database: adventurerule
username: root
password: ""
table-prefix: "ar_" # 表名前缀
```
### 规则书配置
每本规则书在 `rules` 节点下定义,使用唯一 ID 区分:
```yaml
rules:
my_server_rule:
title: "服务器规则" # 书本标题
author: "Server Admin" # 书本作者
pages: # 页面列表
- |
&0&l欢迎来到我们的服务器!
&0在开始游戏之前,
请仔细阅读以下规则。
&8>>> 翻页继续
- |
&0&l基本规则
&01. 尊重每一位玩家
&02. 禁止使用外挂
&03. 禁止恶意破坏
&04. 禁止刷屏/广告
&8>>> 翻页确认
- |
&0请确认您已阅读并理解
以上所有规则。
[&a&l我已阅读并同意该协议](command:ar:consent)
[&c&l我已阅读且不同意该协议](command:ar:deny)
buttons:
consent:
sound: "ENTITY_PLAYER_LEVELUP" # 同意时的音效
title: "&a&l感谢您的同意!" # 同意时的标题提示
deny:
sound: "ENTITY_VILLAGER_NO" # 拒绝时的音效
deny-book: "refuse_book" # 拒绝后打开的提示书
on-esc: "reopen" # ESC行为:reopen/ignore/kick
on-done: "title+reopen" # 完成按钮行为:reopen/title+reopen/kick/ignore
reopen-delay: 100 # 重新打开延迟(tick)
```
### 按钮格式
在页面内容中使用以下格式创建可点击按钮:
```
[按钮显示文字](command:动作名称)
```
**内置动作:**
| 动作 | 说明 |
|------|------|
| `ar:consent` | 同意规则 |
| `ar:deny` | 拒绝规则 |
| `ar:back` | 返回原规则书 |
| `ar:kick` | 踢出服务器 |
---
## 使用场景
### 场景一:新人入服引导
新玩家首次加入服务器时自动弹出规则书,必须同意后才能游戏。7天后自动过期,再次登录需要重新确认。
### 场景二:规则更新通知
服务器规则更新后,管理员通过 `/ar reset <玩家>` 重置指定玩家或所有玩家的同意状态,玩家下次登录时将重新收到规则书。
### 场景三:群组服统一规则
多个子服连接同一 MySQL 数据库,玩家在任意一个子服同意规则后,其他子服不会重复弹出。
### 场景四:特定规则触发
管理员可通过 `/ar trigger 玩家名 pvp_rule` 对特定玩家弹出 PVP 规则书,适合在玩家进入特殊区域前使用。
---
## 安装步骤
1. 确保服务端为 **Paper 1.21.4+** 或 **Purpur 1.21.4+**,Java 版本为 **21+**
2. 将 `AdventureRule-1.0.0.jar` 放入 `plugins` 文件夹
3. 启动服务器,插件自动生成默认配置
4. 编辑 `plugins/AdventureRule/config.yml`,自定义规则内容
5. 执行 `/ar reload` 重载配置
6. 完成!新玩家加入时将自动弹出规则书
---
## 常见问题
**Q: 支持 Spigot 吗?**
A: 不支持。插件使用了 Paper 专属 API(Adventure 组件 + ClickEvent.callback),仅兼容 Paper 及其分支。
**Q: 玩家能绕过规则吗?**
A: 不能。插件在阅读期间禁止了移动、交互、命令执行,按 ESC 会自动重新打开规则书。唯一的出路就是同意或被踢出。
**Q: 同意过期后怎么办?**
A: 过期后玩家下次登录会自动重新弹出规则书。设置 `default-expire-days: 0` 可以永不过期。
**Q: 可以不施加失明效果吗?**
A: 可以,在配置中将 `effects.blindness.enabled` 设为 `false` 即可。缓慢效果同理。
**Q: 群组服怎么配置?**
A: 将所有子服的 `database.type` 改为 `mysql`,配置相同的数据库连接信息即可。
**Q: 怎么让规则书更好看?**
A: 使用 `&` 颜色代码来美化文字。例如 `&a` 绿色、`&c` 红色、`&l` 粗体、`&o` 斜体。每页内容不宜过多,建议分多页展示。
**Q: 插件对性能有影响吗?**
A: 影响极小。数据库操作全部异步执行,内置内存缓存减少查询次数,事件监听仅针对有活跃会话的玩家。
**Q: 使用 AuthMe 怎么配置?**
A: 在配置中设置 `settings.authme.enabled: true`,插件会在玩家完成 AuthMe 登录后才弹出规则书。命令白名单已默认包含 `/login` `/register` 等命令。
**Q: 如何添加自定义规则书?**
A: 两种方式:1) 在 `config.yml` 的 `rules` 节点下添加;2) 在 `save/` 文件夹中创建 `.yml` 文件,参考自动生成的 `example_full.yml` 格式,插件自动加载。
---
## 更新计划
- [ ] PlaceholderAPI 支持(条件触发)
- [ ] BossBar 阅读进度提示
- [ ] 书本模板变量(如 `{player}` 显示玩家名)
- [ ] 导入/导出同意数据
- [ ] 支持更多触发条件(特定世界、特定物品等)
- [ ] Web 管理面板(可选)
---
## 更新日志
### v1.1.0
- **修复** ESC/完成按钮关闭书本后不重新打开的问题(实时 InventoryView 检测)
- **新增** 可配置行为限制(左键/右键/移动/NPC交互/命令/聊天/物品丢弃拾取)
- **新增** 命令白名单(兼容 AuthMe `/login` `/register` 等命令)
- **新增** AuthMe 登录挂钩(玩家完成登录后再触发规则书)
- **新增** `save/` 文件夹,支持外部规则书模板文件(自动加载)
- **新增** 可配置的触发延迟(`trigger-delay`)
- **改进** 默认配置展示全部功能,包含详细注释
### v1.0.0(首次发布)
- 基于 Minecraft 书本的规则展示系统
- 安全的 callback 按钮交互
- 同意 / 拒绝 / 返回 / 踢出完整流程
- YAML + MySQL 双存储方案
- HikariCP 连接池 + 内存缓存
- 完整的管理命令系统(含 Tab 补全)
- 防绕过机制(失明/缓慢/禁止移动/交互/命令)
- 多规则书支持
- 同意记录自动过期
- 高度可配置(效果、消息、音效、行为等)
---
## 反馈与支持
如果你在使用中遇到任何问题,或者有功能建议,欢迎通过以下方式联系我:
- **QQ**: 823959438
- 帖子下方留言
如果觉得插件好用,请给个好评支持一下,谢谢!
---
*AdventureRule - 让每一位玩家都认真对待服务器规则*
截图:
[/MD]