经验来源
LyGalaxyLevel 将玩家获得的经验写入指定的等级节点。经验来源包括管理员指令、普通怪物击杀、MythicMobs Drops、原版经验球和经验瓶。经验获取过程还会受到经验加成、每日上限、升级限制、等级上限、满级经验规则和等级节点配置影响。
插件项目包含 Minecraft 1.7.10、1.8.8、1.11.2、1.12.2、1.13.2、1.14.4、1.15.2、1.16.5、1.17.1、1.18.2、1.19.2、1.19.4、1.20.1、1.20.2 和 1.20.3 的 NMS 适配模块。经验瓶体系只兼容 1.7.10 和 1.12.2。
经验来源总览
| 来源 | 相关配置或方式 | 说明 |
|---|---|---|
| 指令增加经验 | /lgl addexp | 向玩家指定的等级节点增加经验。 |
| 怪物击杀 | mobExp/*.yml | 按怪物 ID 或怪物名称配置不同等级节点的经验。 |
| MythicMobs Drops | mythic-drops-exp-enable | 在 MythicMobs 的 Drops 中使用 lexp 格式增加经验。 |
| 原版经验球 | 等级模板中的 exp-orb | 设置原版经验球转换为等级经验时的系数。 |
| 经验瓶 | exp-item-enable | 在兼容版本中将玩家当前等级经验转换为经验瓶,或使用经验瓶恢复等级经验。 |
指令增加经验
使用以下指令向玩家增加经验:
text
/lgl addexp 玩家 节点ID 经验值经验值支持固定数值、随机范围、按下一级所需经验计算的百分比和百分比范围。
| 写法 | 说明 |
|---|---|
100 | 增加固定的 100 点经验。 |
50-100 | 随机增加 50 到 100 点经验。 |
10% | 增加下一级所需经验的 10%。 |
5-20% | 随机增加下一级所需经验的 5% 到 20%。 |
在经验值后添加 -n,可以使本次经验不享受经验加成:
text
/lgl addexp 玩家 default 100 -n插件指令使用权限节点 lgl.admin,默认权限组为管理员(OP)。
启用 addexp-command-message-enable 后,使用增加经验指令时会发送经验获取提示;关闭后不发送该提示消息。
MythicMobs Drops 经验
在配置中开启 mythic-drops-exp-enable 后,可以在 MythicMobs Drops 中使用 lexp 语法。
| 写法 | 说明 |
|---|---|
lexp 123-578 | 随机增加 123 到 578 点经验。 |
lexp 789 | 固定增加 789 点经验。 |
lexp 789 节点ID | 向指定等级节点增加 789 点经验。 |
配置示例:
yaml
Drops:
- 'lexp 123-578'
- 'lexp 789 default'该功能需要服务器同时安装并启用 MythicMobs。等级节点 ID 必须与模板文件中的 id 保持一致。
怪物经验配置
怪物经验文件位于插件目录的 mobExp 文件夹中,文件名使用 .yml 后缀。顶层键可以填写怪物 ID 或怪物名称。
yaml
离渊大牛马:
condition:
- 'permission:{exp.离渊大牛马}'
- 'papi:{%player_level% >= 0}'
exp:
default: 5
exp2: 10| 配置节点 | 说明 |
|---|---|
| 顶层节点 | 怪物 ID 或怪物名称。 |
condition | 玩家满足所有条件后,才会获得该怪物提供的经验。 |
exp | 按等级节点配置经验值。键为等级节点 ID,值为经验数量。 |
condition 支持以下条件格式:
| 条件格式 | 说明 |
|---|---|
permission:权限节点 | 玩家拥有指定权限时满足条件。 |
papi:表达式 | 使用 PlaceholderAPI 解析表达式,表达式结果满足要求时通过。 |
配置项 only-check-customnpc-name 用于控制怪物经验检测是否只检查 CustomNPC 怪物名称。
如果怪物 ID 和怪物名称相同,可能触发两次检测,从而重复增加经验。配置时应避免使用相同的 ID 和名称。
等级节点经验
每个等级节点由模板文件单独配置。模板文件中的 id 是节点的唯一标识,不能与其他等级节点重复。
yaml
id: 'default'
level-exp-set:
1: '10'
2-4: '({level}+{level})*1.5'
5: '({level}+{level})*2'| 配置项 | 说明 |
|---|---|
id | 等级节点 ID,全局不可重复。 |
level-exp-set | 设置升到对应等级所需的经验。 |
level-exp-set.等级 | 为单个等级设置经验需求。 |
level-exp-set.等级范围 | 为连续等级设置经验需求。 |
level-exp-set 支持变量和四则运算。玩家初始等级为 0 级,配置中的经验值表示升到目标等级所需的经验。
经验加成
经验加成由等级节点的专属经验加成变量、全服经验倍率和经验公式共同决定。
玩家经验加成
在等级模板中配置 exp-addition-placeholder,插件会读取该变量返回的数值,并将其转换为百分比经验加成。
yaml
exp-addition-placeholder: '%player_level%'例如变量返回 25,表示增加 25% 经验。多个等级节点可以使用同一个经验加成变量。留空时,该等级节点不启用专属经验加成。
该配置也可以填写属性插件提供的变量,用于读取属性插件中的经验加成属性。使用属性插件时,还需要在主配置中填写对应的 attribute-plugin。
全服经验倍率
使用以下指令开启指定等级节点的全服经验加成:
text
/lgl multiple 节点ID 加成百分比 持续分钟例如:
text
/lgl multiple default 50 30表示为 default 节点开启 50% 的全服经验加成,持续 30 分钟。
停止倍率:
text
/lgl multiple default 0 -1全服倍率只对当前服务器生效。在 BungeeCord 多服环境中,需要分别在每个子服执行指令。
倍率显示时间使用配置项 time-format 的格式,默认值为 MM月dd日 HH时mm分ss秒。
经验计算公式
主配置中的以下选项控制经验加成计算:
| 配置项 | 默认值 | 说明 |
|---|---|---|
exp-addition-formula | {player_addition}+{server_addition} | 计算玩家经验加成和全服经验加成的组合结果。 |
exp-formula | {exp}* (1+{addition}) | 根据原始经验和加成结果计算最终经验。 |
公式变量说明:
| 变量 | 含义 |
|---|---|
{player_addition} | 玩家经验加成。 |
{server_addition} | 当前服务器的全服经验加成。 |
{exp} | 原始经验值。 |
{addition} | exp-addition-formula 计算出的加成结果。 |
修改公式前应确认表达式格式正确,否则可能导致经验计算失败。
原版经验球
等级模板中的 exp-orb 用于设置原版经验球转换为等级经验时的系数。
yaml
exp-orb: 1该配置位于具体等级节点的模板文件中。不同等级节点可以分别设置自己的经验球系数。
经验瓶体系
等级模板可以通过 exp-item-enable 开启经验瓶体系:
yaml
exp-item-enable: false该功能只兼容 Minecraft 1.7.10 和 1.12.2。玩家不能自行发起经验转换,管理员可以使用指令将指定玩家当前等级的 1% 到 100% 经验转换为经验瓶。转换过程会受到每日经验上限影响。
经验瓶的物品和显示内容由 exp-item 配置:
yaml
exp-item:
item: '260:0'
display-name: '&6default节点经验瓶'
lore:
- ''
- '&7吸收了{player}的经验转换而成。'
- '&a右键使用可获得&6{exp}&a点default经验'| 配置项 | 说明 |
|---|---|
exp-item.item | 经验瓶使用的物品及数据值。 |
exp-item.display-name | 经验瓶显示名称。 |
exp-item.lore | 经验瓶说明文字,可使用 {player} 和 {exp}。 |
经验瓶使用后会向对应等级节点增加瓶内记录的经验。
经验消息
等级模板通过 message 配置经验变化和全服倍率消息。
| 消息键 | 触发时机 |
|---|---|
LEVEL_UP | 玩家等级提升时发送。 |
MAX_LEVEL | 玩家达到满级,且不能继续获得经验时发送。 |
GET_EXP | 玩家获得经验时发送。 |
MULTIPLE-EXP-START | 全服经验倍率开启时发送。 |
MULTIPLE-EXP-END | 全服经验倍率结束时发送。 |
常用消息变量如下:
| 变量 | 说明 |
|---|---|
{level} | 当前等级或新等级。 |
{after} | 本次实际获得的经验。 |
{addition} | 本次经验加成信息。 |
{valid} | 当天剩余可获得的经验。 |
{multiple} | 全服经验倍率百分比。 |
{time} | 全服经验倍率到期时间。 |
{player} | 经验瓶来源玩家。 |
{exp} | 经验瓶记录的经验值。 |
每日经验上限
等级节点中的 every-day-max-exp 控制玩家每天最多获得的经验数量:
yaml
every-day-max-exp: -1| 配置值 | 说明 |
|---|---|
| 正数 | 设置每天可获得的经验上限。 |
-1 | 不限制每日经验。 |
每日上限每天 0 点刷新。达到每日上限后,本次获取的经验会按照剩余可获得数量计算;如果当天已经达到上限,则不能继续获得经验。
变量 %lgl_节点ID_today% 可以显示玩家当天已经获得的经验。
升级限制
等级模板中的 level-up-condition 可以限制玩家升至指定等级。玩家当前等级达到被限制的等级时,如果不满足条件,则无法通过任何方式继续获取经验,并会显示对应提示消息。
yaml
level-up-condition:
5:
condition:
- 'papi:{%vault_eco_balance% >= 100000}'
- 'nopermission:{lgl.exp.5}'
- 'permission:{lgl.exp.5}'
message:
- '&f[&eLyGalaxyLevel&f] &c由于不满足升至5级的条件, 本次获取经验失败.'| 配置项 | 说明 |
|---|---|
| 等级键 | 要检查的目标等级。玩家当前等级达到该等级时执行限制检查。 |
condition | 升级前需要满足的条件。列表中的条件需要同时满足。 |
message | 不满足条件时发送的提示消息。 |
支持的条件格式包括:
| 条件格式 | 说明 |
|---|---|
papi:表达式 | 使用 PlaceholderAPI 判断表达式。 |
permission:权限节点 | 要求玩家拥有指定权限。 |
nopermission:权限节点 | 要求玩家不拥有指定权限。 |
等级上限和满级规则
等级节点通过以下配置控制最高等级和满级后的经验处理:
| 配置项 | 说明 |
|---|---|
max-level | 该等级节点的最高等级。 |
max-level-can-get-max-exp | 玩家达到满级后仍可获得的最大经验数量。设置为 -1 时,满级后不再获得经验。 |
yaml
max-level: 5
max-level-can-get-max-exp: -1当玩家达到满级且 max-level-can-get-max-exp 为 -1 时,继续获取经验会触发满级提示,不会再增加该等级节点的经验。
等级称号和属性
等级模板中的 level-tag 可以在玩家达到指定等级时变更等级称号,并为该等级配置属性内容。
yaml
level-tag:
1:
tag: '&7初入江湖'
attribute:
- '攻击+1'
3:
tag: '&a锋芒毕露'
attribute:
- '攻击+2'
5:
tag: '&b威震天下'
attribute:
- '攻击+3'| 配置项 | 说明 |
|---|---|
| 等级键 | 玩家达到该等级时应用配置。 |
tag | 该等级对应的称号文本。 |
attribute | 该等级对应的属性内容。 |
称号变量格式为 %lgl_等级节点ID_tag%。属性内容需要配合主配置中的 attribute-plugin 使用。主配置支持的属性插件包括 AttributePlus、SX-Attribute2、SX-Attribute3、ItemLoreOrigin、AttributeCompatibleAPI 和 AttributeSystem。
升级指令
等级模板中的 level-up-command 用于在玩家升级时由控制台执行指令。
yaml
level-up-command:
every-level:
- 'bc %player_name% 的 {id} 等级升到了 {level} 级!'
1-3:
- 'bc %player_name% 1-3 级了!'
4-5:
- 'bc %player_name% 4-5 级了!'| 配置键 | 说明 |
|---|---|
every-level | 每次升级都会执行的指令。 |
等级 | 玩家升到指定等级时执行的指令。 |
等级范围 | 玩家升到范围内任意等级时执行的指令。 |
指令中的 %player_name% 等 PlaceholderAPI 变量会按服务器环境解析,{id} 表示等级节点 ID,{level} 表示新等级。
原版经验条同步
主配置中的 sync-minecraft-exp-bra 可以将指定等级节点同步到 Minecraft 原版经验条:
yaml
sync-minecraft-exp-bra: 'default'填写等级节点 ID 后,插件会使用该节点同步原版经验条。留空,或填写不存在的节点 ID 时,不进行同步。
如果服务器允许玩家使用原版附魔,建议保持以下配置:
yaml
anti-enchant: true| 配置项 | 说明 |
|---|---|
sync-minecraft-exp-bra | 指定用于同步原版经验条的等级节点 ID。 |
anti-enchant | 是否禁止原版附魔系统扣除原版等级和经验。 |
开启 anti-enchant 时,可以避免原版附魔系统扣除原版等级或经验后影响等级节点数据。关闭该选项时,插件会将同步的等级节点调整到扣除原版经验后的对应等级和经验状态。
数据保存和数据库
玩家经验数据会根据自动保存配置定期保存。
| 配置项 | 默认值 | 说明 |
|---|---|---|
auto-save | true | 是否启用加强型自动保存。开启后会检测玩家数据变化并自动保存。 |
auto-save-interval | 3 | 自动保存检测间隔,单位为秒。 |
配置示例:
yaml
auto-save: true
auto-save-interval: 3插件支持 MySQL 存储:
yaml
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1| 配置项 | 说明 |
|---|---|
mysql.enable | 是否启用 MySQL 存储。修改后需要重启服务器。 |
mysql.databasename | 数据库名称。 |
mysql.username | 数据库用户名。 |
mysql.password | 数据库密码。 |
mysql.port | 数据库端口。 |
mysql.ip | 数据库地址。 |
如果启用 MySQL 存储,必须安装 LyMySQLCore,并确保插件已经成功连接数据库;否则相关数据库存储功能不会生效。修改数据库开关或连接配置后需要重启服务器。
变量
等级节点 ID 需要替换为实际模板中的 id。
| 变量 | 说明 |
|---|---|
%lgl_节点ID_level% | 玩家当前等级。 |
%lgl_节点ID_now% | 玩家当前拥有的经验。 |
%lgl_节点ID_next% | 升到下一级所需的经验。 |
%lgl_节点ID_endtime% | 全服经验倍率到期时间。没有倍率时为空。 |
%lgl_节点ID_today% | 玩家当天已经获得的经验。 |
%lgl_节点ID_multiple% | 当前全服经验倍率。没有倍率时为空。 |
%lgl_等级节点ID_tag% | 玩家当前等级对应的等级称号。 |
相关依赖
plugin.yml 中声明的软依赖包括:
| 插件 | 用途 |
|---|---|
PlaceholderAPI | 解析经验加成变量、条件表达式和相关显示变量。 |
LyMySQLCore | 提供 MySQL 数据库连接支持。 |
SX-Attribute | 属性兼容相关功能。 |
AttributePlus | 属性兼容相关功能。 |
ItemLoreOrigin | 属性兼容相关功能。 |
AttributeCompatibleAPI | 属性兼容相关功能。 |
AttributeSystem | 属性兼容相关功能。 |
MySQL 功能必须同时满足已安装 LyMySQLCore 和数据库连接成功两个条件。仅开启配置开关而未成功连接数据库时,相关功能不会生效。