- 版权类型
- 原创
- 插件中文名称
- 等级管理器
- 插件英文名称
- BlLevelManager
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- Leaves
- 语言支持
- 中文(简体)
- 前置组件
- MythicMobs
PlaceholderAPI
AttributePlus
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
[MD]
# ⭐BlLevelManager⭐ - 高度可配置的玩家等级与属性成长插件
**一款 多等级、经验倍率、属性联动和日志记录管理插件**
---
[URL='https://qm.qq.com/q/L0Fpe1iuUW']【点我加作者QQ购买】[/URL]
QQ:2831508831
## 🌟 插件简介
- 还在为服务器里的多套成长线、等级经验、属性奖励和每日经验上限写一堆零散逻辑吗?
- **BlLevelManager** 是一款专为 Minecraft RPG / 生存 / 养成类服务器设计的等级管理插件。
- 它支持多个独立等级配置,每个等级都可以拥有自己的升级经验、每日经验上限、经验获取公式、升级条件、升级动作和 AttributePlus 属性奖励。
- 插件还内置了 PlaceholderAPI 变量、MythicMobs 击杀经验读取、MySQL / YAML 存储、经验日志记录和完整管理命令,
- 适合用来制作玩家等级、技能等级、职业等级、武器熟练度、元素等级等成长系统。
---
## 🎯 为什么选择 BlLevelManager?
| 特性 | BlLevelManager |
|---|---|
| 多等级系统 | ✅ `levels/*.yml` 多文件配置,文件名就是等级 ID |
| 经验公式 | ✅ 支持表达式、PAPI 变量和倍率计算 |
| 每日上限 | ✅ 每个等级都可配置每日可获得经验上限 |
| 定时倍率 | ✅ 支持 `cron_multiplier/*.yml` 定时经验倍率 |
| 属性联动 | ✅ 支持 AttributePlus 属性源刷新,同 key 可叠加 |
| 怪物经验 | ✅ 支持读取 MythicMobs `Mobs/*.yml` 的 `Exp` 段 |
| 数据存储 | ✅ MySQL 批量异步保存,失败可回退 YAML |
| 日志系统 | ✅ 支持 MySQL / 本地 YAML 经验日志 |
| PAPI 变量 | ✅ 提供等级、经验、下级需求、今日经验变量 |
| 管理命令 | ✅ 支持经验、等级、重置、刷新今日经验和 reload |
| Tab 补全 | ✅ 管理命令参数位均有补全 |
---
## 📦 核心功能
### 多等级配置
插件使用 `levels/*.yml` 管理多个等级系统。
每个配置文件的文件名就是等级 ID,例如:
```text
plugins/BlLevelManager/levels/玩家等级.yml
plugins/BlLevelManager/levels/火球等级.yml
```
你可以为不同等级单独配置:
- 经验获取公式
- 等级上限
- 满级后是否继续累计经验
- 每日经验上限
- 每级所需经验
- 升级条件
- 获取经验条件
- AttributePlus 属性
- 升级动作
---
### 经验公式与每日上限
等级配置支持表达式:
```yaml
get-exp-expression: "{exp}*10*{multiplier}"
every-day-max-exp: "100+%player_level%*20"
```
表达式中可以使用:
- `{exp}`:本次基础经验
- `{level}`:玩家当前等级
- `{multiplier}`:当前命中的经验倍率
- PlaceholderAPI 变量,例如 `%player_level%`
当 PlaceholderAPI 变量无法解析为数字时,会按 0 处理,避免公式直接报错。
---
### Cron 定时经验倍率
通过 `cron_multiplier/*.yml` 可以配置定时经验倍率:
```yaml
level-id:
- 玩家等级
- 火球等级
cron: "0 0 * * 6,0"
multiplier-expression: "2"
```
适合做:
- 周末双倍经验
- 活动时间倍率
- 指定等级 ID 的限时倍率
---
### AttributePlus 属性联动
等级配置可以设置 AttributePlus 属性:
```yaml
ap-source-key: "玩家等级"
level-exp-config:
1-9:
attribute:
- "生命力: 2*{level}"
- "攻击力: 2*{level}"
- "防御力: 2*{level}"
```
玩家等级变化后,插件会刷新对应 AttributePlus 属性源。
多个等级配置使用同一个 `ap-source-key` 时,属性会合并叠加,而不是互相覆盖。
---
### MythicMobs 击杀经验
插件会读取 MythicMobs 的 `Mobs/*.yml` 中的 `Exp` 段:
```yaml
模板怪:
Type: HUSK
Display: '§b模板怪'
Health: 50
Exp:
玩家等级: 5
火球等级: 1-5 #会在1-5范围内随机
```
玩家击杀对应 MythicMobs 怪物后,会给指定等级 ID 增加基础经验。
基础经验仍会进入 BlLevelManager 的经验公式、倍率、条件和每日上限结算流程。
---
### 经验日志系统
插件支持记录经验结算日志,方便后续排查和运营统计。
日志会记录:
- 时间
- 事件类型
- 玩家 UUID
- 玩家名
- 等级 ID
- 来源类型
- 来源详情
- 结算原因
- 基础经验
- 倍率
- 公式后经验
- 实际入账经验
- 结算前后等级
- 结算前后经验
- 今日经验
- 每日上限
- 下级需求
当 MySQL 启用时,日志表默认写入同一个数据库中的:
```text
bllevelmanager_logs
```
当 MySQL 未启用或主存储回退到 YAML 时,日志会写入本地日志文件。
---
## 🎮 管理命令
主命令:
```text
/bllevel
/blm
```
命令列表:
```text
/bllevel addExp <玩家名> <等级id> <经验数量> [是否走正常公式]
/bllevel addLevel <玩家名> <等级id> <等级数量>
/bllevel setExp <玩家名> <等级id> <经验数量>
/bllevel setLevel <玩家名> <等级id> <等级数量>
/bllevel reset <玩家名> <等级id>
/bllevel refreshTodayExp <玩家名> <等级id>
/bllevel reload
```
### 命令说明
| 命令 | 说明 |
|---|---|
| `/bllevel addExp` | 给玩家指定等级增加经验,可选择是否走公式、倍率、条件和每日上限 |
| `/bllevel addLevel` | 直接给玩家指定等级增加等级 |
| `/bllevel setExp` | 设置玩家指定等级当前经验 |
| `/bllevel setLevel` | 设置玩家指定等级当前等级 |
| `/bllevel reset` | 重置玩家指定等级 |
| `/bllevel refreshTodayExp` | 清空玩家指定等级今日已获取经验 |
| `/bllevel reload` | 重载配置、消息、倍率、存储连接,并重新载入在线玩家数据 |
`addExp` 即使没有实际入账,也会给出明确原因,例如:
- 今日经验上限已满
- 获取经验条件不满足
- 公式或倍率结算为 0
---
## 🎯 权限节点
| 权限节点 | 描述 | 默认权限 |
|---|---|---|
| `bllevel.admin` | 允许使用 `/bllevel` 和 `/blm` 管理命令 | OP |
等级配置里的获取经验条件和升级条件也可以写自定义权限,例如:
```yaml
conditions:
get-exp:
permissions:
- "bllevel.exp.10"
upgrade:
permissions:
- "bllevel.exp.10"
```
这类权限由服主在自己的等级配置中自定义。
---
## 🔢 PlaceholderAPI 变量
变量标识:
```text
bllevel
```
可用变量:
| 变量 | 说明 |
|---|---|
| `%bllevel_等级ID_now_level%` | 当前等级 |
| `%bllevel_等级ID_level%` | 当前等级 |
| `%bllevel_等级ID_now_exp%` | 当前经验 |
| `%bllevel_等级ID_exp%` | 当前经验 |
| `%bllevel_等级ID_next_exp%` | 下一级所需经验 |
| `%bllevel_等级ID_today_exp%` | 今日已获得经验 |
示例:
```text
%bllevel_玩家等级_level%
%bllevel_玩家等级_exp%
%bllevel_玩家等级_next_exp%
%bllevel_玩家等级_today_exp%
```
---
## 🧩 插件 API
插件提供基础 Java API:
```java
BlLevelAPI.addExp(player, "玩家等级", 10, true);
BlLevelAPI.addExp(player, "玩家等级", 10, true, "custom", "来源说明");
BlLevelAPI.addLevel(player, "玩家等级", 1);
BlLevelAPI.getLevel(player, "玩家等级");
BlLevelAPI.getExp(player, "玩家等级");
```
适合其他插件给玩家发放等级经验、读取等级和读取经验。
---
## 🌍 环境要求
| 要求 | 版本/类型 |
|---|---|
| Java | 1.8 |
| 服务端 | Bukkit / Spigot / Paper 1.12.2 及其兼容分支 |
| Minecraft | 已在 Paper 1.12.2 测试 |
| AttributePlus | 可选,测试版本 3.3.3.0 |
| PlaceholderAPI | 可选,测试版本 2.11.6 |
| MythicMobs | 可选,测试版本 4.9.0 |
| MySQL | 可选,启用 MySQL 存储时需要 |
> 软依赖不是必装。未安装对应插件时,相关联动功能不会生效。
---
## 📦 安装指南
### 第一步:安装插件
将插件 JAR 放入服务器:
```text
plugins/
```
然后重启服务器。
### 第二步:生成配置
首次启动后会生成:
```text
plugins/BlLevelManager/config.yml
plugins/BlLevelManager/mysql.yml
plugins/BlLevelManager/message.yml
plugins/BlLevelManager/logger.yml
plugins/BlLevelManager/levels/
plugins/BlLevelManager/cron_multiplier/
```
其中 `levels` 和 `cron_multiplier` 示例只会在目录首次创建时生成。
如果目录已经存在,删除单个示例文件后,reload 或重启不会自动补回。
### 第三步:配置数据库
如果需要 MySQL 存储,在 `mysql.yml` 中启用并配置:
```yaml
mysql:
enable: true
url: "127.0.0.1"
user: "minecraft"
port: 3306
password: "minecraft"
database: "bllevelmanager"
parameter: "useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
```
数据表:
```text
bllevelmanager_data
```
日志表默认:
```text
bllevelmanager_logs
```
业务数据表和日志表会使用同一个数据库。
### 第四步:重载插件
```text
/bllevel reload
```
---
## ⚙️ 配置文件
| 配置文件 | 说明 |
|---|---|
| `config.yml` | 基础同步配置 |
| `mysql.yml` | MySQL 存储配置 |
| `message.yml` | 命令提示和控制台提示 |
| `logger.yml` | 等级日志配置 |
| `levels/*.yml` | 多等级配置,文件名就是等级 ID |
| `cron_multiplier/*.yml` | 定时经验倍率配置 |
---
## 🧪 使用示例
### 给玩家增加经验
```text
/bllevel addExp Steve 玩家等级 10 true
```
插件会按 `玩家等级.yml` 中的经验公式、倍率、条件和每日上限进行结算。
### 直接设置等级
```text
/bllevel setLevel Steve 玩家等级 20
```
### 刷新今日经验额度
```text
/bllevel refreshTodayExp Steve 玩家等级
```
适合体力药水、每日经验额度恢复道具、运营补偿等场景。
### 重载配置并刷新在线玩家
```text
/bllevel reload
```
重载时会从当前存储重新读取在线玩家等级数据,并刷新 AttributePlus 属性。
---
## 🔍 常见问题
<details>
<summary><b>Q1: 必须安装 AttributePlus 吗?</b></summary>
不是必须。AttributePlus 是软依赖。未安装时,等级属性联动不会生效,但等级、经验、存储和命令仍可使用。
</details>
<details>
<summary><b>Q2: 必须安装 PlaceholderAPI 吗?</b></summary>
不是必须。未安装 PlaceholderAPI 时,PAPI 变量和表达式中的 PAPI 解析不会生效。
</details>
<details>
<summary><b>Q3: 必须安装 MythicMobs 吗?</b></summary>
不是必须。未安装 MythicMobs 时,击杀 MythicMobs 怪物发放经验的功能不会生效。
</details>
<details>
<summary><b>Q4: 支持多个等级吗?</b></summary>
支持。每个 `levels/*.yml` 文件都是一个独立等级 ID,例如玩家等级、技能等级、火球等级、职业等级等。
</details>
<details>
<summary><b>Q5: 可以不用 MySQL 吗?</b></summary>
可以。MySQL 未启用或初始化失败时,插件会使用本地 YAML 作为备用存储。
</details>
<details>
<summary><b>Q6: 删除示例等级文件后 reload 会重新生成吗?</b></summary>
不会。`levels` 和 `cron_multiplier` 的示例文件只在对应目录首次创建时生成,避免用户删除示例后又被插件补回。
</details>
---
## ✉ 测试版本
- Paper 1.12.2
- PlaceholderAPI 2.11.6
- AttributePlus 3.3.3.0
- MythicMobs 4.9.0
- MySQL 存储与日志写入
- 本地 YAML 回退存储
---
## 📢 更新日志
- ✨ 首次整理发布
- ✅ 多等级配置系统
- ✅ 等级经验公式与每日经验上限
- ✅ Cron 定时经验倍率
- ✅ AttributePlus 属性联动
- ✅ PlaceholderAPI 变量
- ✅ MythicMobs 击杀经验读取
- ✅ MySQL / YAML 存储
- ✅ 等级日志系统
- ✅ `/bllevel` 管理命令与 Tab 补全
- ✅ reload 后重新载入在线玩家数据
---
## 🤝 联系方式
- 作者 QQ:2831508831
- 作者邮箱:2831508831@qq.com
---
[B]⚠️ 严禁剽窃源码 · 违者必究
本插件所用所有代码均为原创,不存在借用/抄袭等行为[/B]
[/MD]