槽位规则
槽位规则文件放在插件目录的 slot/ 下,用于定义槽位 ID、强化按钮、等级区间、强化条件、成功率、属性效果和降级规则。
插件会递归读取 slot/ 及其子目录中的 .yml 文件。自带的 slot/示例.yml 仅用于参考,加载时会被跳过。正式使用时需要复制为其他文件名再修改。
同一个文件可以配置多个槽位,每个顶级节点都是一个槽位 ID。不同文件中的槽位 ID 也应保持唯一,重复 ID 会互相覆盖。
配置结构
单个槽位支持以下配置:
| 配置项 | 类型 | 说明 |
|---|---|---|
enable-condition | 列表 | 槽位可用条件,不满足时无法强化,属性也不会生效 |
permission-chance-addition | 节点 | 根据权限调整强化成功率 |
item | 字符串 | 强化界面中的按钮物品 |
name | 字符串 | 强化按钮名称 |
lore | 列表 | 强化按钮描述 |
level-down | 节点 | 槽位降级规则 |
strengthen | 节点 | 各等级或等级区间的强化规则 |
lore-get-value | 节点 | 从当前槽位装备的 Lore 中读取自定义数值 |
yaml
Origin#MainHand:
enable-condition: []
permission-chance-addition: {}
item: '160:2'
name: '&6主手强化 &a({now_level}/{max_level})'
lore: []
level-down: {}
strengthen: {}
lore-get-value: {}槽位 ID
槽位 ID 写在 YAML 的顶级节点。界面配置中的 slot-set、命令中的槽位参数和 PlaceholderAPI 变量中的槽位 ID,都需要使用这里的完整写法。
| 写法 | 对应槽位 | 补充说明 |
|---|---|---|
DragonCore#槽位名 | DragonCore 槽位 | 槽位名填写龙核槽位名称 |
GermPlugin#槽位名 | GermPlugin 槽位 | 槽位名填写萌芽槽位名称 |
APInventory#分页ID#槽位ID | 梦星桐背包 | 槽位 ID 范围由示例标注为 0-53 |
LyInventory#背包ID#类型 | 离渊背包 | 类型如项链、戒指等 |
LyInventoryReload#背包ID#类型 | 离渊背包重置版 | 类型如项链、戒指等 |
YeeJewelry#背包ID#槽位ID | 清守饰品背包 | 使用对应背包与槽位 ID |
Origin#MainHand | 原版主手 | 玩家当前主手物品 |
Origin#OffHand | 原版副手 | 玩家当前副手物品 |
Origin#Helmet | 原版头盔 | 玩家头盔栏物品 |
Origin#ChestPlate | 原版胸甲 | 玩家胸甲栏物品 |
Origin#Legging | 原版护腿 | 玩家护腿栏物品 |
Origin#Boots | 原版靴子 | 玩家靴子栏物品 |
Minecraft#槽位ID | 原版背包槽位 | 槽位 ID 范围由示例标注为 0-36 |
示例:
yaml
APInventory#饰品#3:
item: '160:2'
name: '&6饰品槽位强化'
lore: []
strengthen: {}
LyInventory#饰品#项链:
item: '160:2'
name: '&6项链槽位强化'
lore: []
strengthen: {}槽位可用条件
enable-condition 决定玩家是否可以使用该槽位。
- 玩家必须满足列表中的全部条件。
- 条件不满足时,玩家无法强化或降级该槽位。
- 条件不满足时,该槽位产生的强化属性也不会加载。
- 删除该配置或使用空列表时,不额外限制槽位。
- 拒绝提示由主配置的
message.enable-condition设置。
| 条件格式 | 说明 |
|---|---|
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
papi:{表达式} | 解析 PlaceholderAPI 变量并判断表达式 |
yaml
enable-condition:
- 'permission:{lss.mainhand}'
- 'papi:{%player_level% >= 10}'以上配置表示玩家必须拥有 lss.mainhand,并且 %player_level% 的值必须大于或等于 10。
权限成功率加成
permission-chance-addition 可以根据玩家权限调整本次强化成功率。
yaml
permission-chance-addition:
'VIP1加成':
permission: 'vip.1'
formula: '{chance}*1.1'
show-lore: '&a(VIP1 成功率加成)'| 配置项 | 说明 |
|---|---|
| 节点名称 | 规则 ID,只需在当前槽位内保持唯一 |
permission | 触发该规则所需的权限 |
formula | 成功率计算公式,可使用 {chance} |
show-lore | 追加到按钮和成功率变量后的文字 |
当玩家同时满足多条权限规则时,插件只采用计算结果最高的一条,不会叠加全部规则。最终成功率会限制在 0-1,界面中则显示为 0%-100%。
强化按钮
item、name 和 lore 用于构建强化界面中的槽位按钮。
yaml
item: '160:2'
name: '&7>> &6主手槽位强化 &a({now_level}/{max_level})'
lore:
- '&7当前强化效果:'
- '{now_strength}'
- ''
- '&7下级强化效果:'
- '{next_strength}'
- ''
- '&7下级强化需求:'
- '{need_condition}'
- ''
- '&7强化成功率:&6{chance}'
- ''
- '&7降级需求:'
- '{leveldown_condition}'| 占位符 | 可用位置 | 说明 |
|---|---|---|
{now_level} | name、lore | 当前强化等级 |
{max_level} | name、lore | 当前槽位最大等级 |
{now_strength} | lore 独立一行 | 展开当前等级的 show-lore |
{next_strength} | lore 独立一行 | 展开下一级的 show-lore,满级时显示全局 max-level-lore |
{need_condition} | lore 独立一行 | 展开下一级强化条件中 ` |
{chance} | lore | 下一级强化成功率,并附加生效的权限加成说明 |
{leveldown_condition} | lore 独立一行 | 展开降级条件中 ` |
{now_strength}、{next_strength}、{need_condition} 和 {leveldown_condition} 需要单独占据一行,插件才会将其展开为多行内容。
按钮名称、Lore、成功率公式和展示属性支持 PlaceholderAPI 变量。颜色代码使用 &。
强化等级
强化规则写在 strengthen 节点中。子节点可以是单个等级,也可以是闭合等级区间。
yaml
strengthen:
'1':
chance: '1'
condition: []
fixed-lore:
- '&6攻击力 &a+1'
show-lore:
- '{fixed_lore}'
'2-5':
chance: '1-({level}*0.1)'
condition: []
fixed-lore:
- '&6攻击力 &a+<1*{level}~%.0f>'
show-lore:
- '{fixed_lore}'| 节点写法 | 说明 |
|---|---|
'1' | 该规则匹配等级 1 |
'2-5' | 该规则匹配等级 2 至 5,包含两端 |
玩家从当前等级强化时,插件读取目标等级对应的规则。例如玩家当前为 2 级,强化到 3 级时使用匹配等级 3 的配置。
槽位最大等级由所有强化节点中的最大等级自动计算。例如最高节点为 '6-10',最大等级就是 10。达到最大等级后,不再执行强化。
每个等级规则支持以下内容:
| 配置项 | 说明 |
|---|---|
condition | 强化前需要满足并扣除的条件 |
chance | 强化成功率,可填写固定值、公式和 PlaceholderAPI 变量 |
start-command | 条件满足并完成扣除后、判断成功率前执行的命令 |
success-command | 强化成功后执行的命令 |
fail-command | 强化失败后执行的命令 |
fixed-lore | 该等级固定产生的属性 Lore |
addition-lore | 根据槽位装备原有 Lore 数值计算附加属性 |
show-lore | 在按钮和变量中展示的强化效果 |
强化成功率
chance 的有效范围为 0-1:
| 数值 | 对应成功率 |
|---|---|
0 | 0% |
0.5 | 50% |
1 | 100% |
yaml
chance: '1-({level}*0.1)'{level} 在强化规则中表示目标等级。成功率公式也支持 PlaceholderAPI 变量,包括插件提供的失败次数变量:
yaml
chance: '0.5+(%lss_fail_count_Origin#MainHand%*0.05)'失败次数会在强化失败后增加,在强化成功、降级或强制设置新数据时归零。最终成功率低于 0 时按 0 处理,高于 1 时按 1 处理。
强化条件
condition 中的每一项由“实际条件”和可选的“展示文本”组成:
yaml
condition:
- 'eco:{10*{level}*{level}}| &e需要:金币 x{amount}'| 左侧用于检测和扣除,右侧用于 {need_condition} 的界面展示。右侧可以省略;省略后该条件仍会执行,但不会显示在 {need_condition} 中。
玩家必须满足列表中的全部条件。物品和货币条件会先统一检查,全部满足后再扣除。如果后续强化失败,已经扣除的材料不会返还。
| 条件格式 | 作用 | 是否扣除 |
|---|---|---|
item:{插件@物品ID#数量公式} | 检查物品库物品数量 | 是 |
eco:{金额公式} | 通过 Vault 经济检查金币 | 是 |
point:{点券公式} | 通过 PlayerPoints 检查点券 | 是 |
cx:{货币ID#金额公式} | 检查 CraftX 指定货币 | 是 |
lshop:{货币ID#金额公式} | 检查离渊商店重置版指定货币 | 是 |
papi:{表达式} | 判断 PlaceholderAPI 表达式 | 否 |
permission:{权限} | 判断玩家拥有权限 | 否 |
nopermission:{权限} | 判断玩家没有权限 | 否 |
物品条件
yaml
condition:
- 'item:{MM5@强化石#2*{level}}| &7需要:{item} x{amount}'格式组成:
| 部分 | 说明 |
|---|---|
MM5 | 物品库插件标识 |
强化石 | 对应物品库中的物品 ID |
2*{level} | 需要扣除的数量公式 |
自带配置示例标注的物品库标识包括 MM4、MM5、NI、SI 和 SX2。材料数量会按公式计算并转换为整数。
主配置中的 filter-item-contain-specified-lore 会过滤包含指定 Lore 的背包物品,防止这些物品被作为强化或降级材料扣除。
金币条件
金币条件通过 Vault 经济服务处理。使用该条件前,服务器需要存在可用的 Vault 经济实现。
yaml
condition:
- 'eco:{100*{level}}| &e需要:金币 x{amount}'点券条件
点券条件通过 PlayerPoints 处理。
yaml
condition:
- 'point:{10*{level}}| &b需要:点券 x{amount}'CraftX 货币条件
yaml
condition:
- 'cx:{强化币#5*{level}}| &b需要:强化币 x{amount}'离渊商店货币条件
yaml
condition:
- 'lshop:{强化币#5*{level}}| &b需要:强化币 x{amount}'判断条件
yaml
condition:
- 'papi:{%player_level% >= 20}| &7需要:玩家等级达到 20 级'
- 'permission:{strengthen.use}| &7需要:拥有强化权限'
- 'nopermission:{strengthen.locked}| &7需要:没有强化锁定权限'展示文本占位符
| 后的展示文本支持以下占位符:
| 占位符 | 说明 |
|---|---|
{item} | 物品条件对应物品的显示名称 |
{amount} | 物品或货币公式计算后的数量 |
{level} | 本次配置计算使用的等级 |
展示文本还会继续解析 PlaceholderAPI 变量。
强化命令
每个强化等级可以配置三个命令阶段:
yaml
start-command:
- '[op]say %player_name% 正在进行 {now_level} 级到 {next_level} 级的强化'
success-command:
- '[console]say %player_name% 强化到 {next_level} 级成功'
fail-command:
- '[console]say %player_name% 强化到 {next_level} 级失败'| 配置项 | 执行时机 |
|---|---|
start-command | 强化条件检测通过并完成材料扣除后、判断成功率前 |
success-command | 强化成功并更新等级时 |
fail-command | 强化失败并增加失败次数时 |
自带示例确认支持以下命令执行前缀:
| 前缀 | 说明 |
|---|---|
[console] | 由控制台执行命令 |
[op] | 以玩家的临时 OP 身份执行命令 |
命令中可以使用:
| 占位符 | 说明 |
|---|---|
{now_level} | 强化前等级 |
{next_level} | 强化目标等级 |
%player_name% | PlaceholderAPI 玩家名称变量 |
固定属性
fixed-lore 用于直接生成属性 Lore。生成结果会提交给主配置 attribute-plugin 指定的属性插件。
yaml
fixed-lore:
- '&6攻击力 &a+<1*{level}~%.0f>'
- '&6生命值 &a+<5*{level}~%.1f>'| 内容 | 说明 |
|---|---|
{level} | 当前实际生效或正在展示的等级 |
<公式> | 计算公式并替换为结果 |
<公式~格式> | 计算公式并按 Java 数字格式输出 |
默认公式边界符是 < 和 >,可通过主配置的 calculate-key-left 与 calculate-key-right 修改。尖括号公式必须成对出现。
yaml
fixed-lore:
- '&6攻击力 &a+<1.5*{level}~%.2f>'以上公式会保留两位小数。fixed-lore 中也可以使用 PlaceholderAPI 变量。
装备 Lore 增幅
addition-lore 会读取当前槽位装备的原有 Lore 数值,再根据强化等级计算附加属性。适合实现“按装备原属性百分比增加”的效果。
yaml
addition-lore:
'攻击力':
formula:
- '&6攻击力 &a+<value>'
value: '{value}*0.1*{level}'
attribute-format: '{attribute}+{value}'| 配置项 | 说明 |
|---|---|
| 节点名称 | 属性名称,可通过 {attribute} 写入最终格式 |
formula | 用于匹配装备 Lore 的格式列表,<value> 表示需要提取的数值位置 |
value | 将读取结果转换为强化加成的公式 |
attribute-format | 提交给属性插件的最终属性文本 |
处理过程如下:
- 插件遍历槽位装备的 Lore。
- 根据
formula中<value>左右两侧文字定位数值。 - 多个匹配公式和多行匹配结果会累加。
- 将累计结果代入
value中的{value}。 - 将结果与属性名称代入
attribute-format。
value 支持:
| 占位符 | 说明 |
|---|---|
{value} | 从装备 Lore 中读取并累计的数值 |
{level} | 当前槽位强化等级 |
{v.变量ID} | lore-get-value 读取到的自定义数值 |
attribute-format 支持:
| 占位符 | 说明 |
|---|---|
{attribute} | addition-lore 的节点名称 |
{value} | 计算后的强化加成数值 |
装备 Lore 中的读取值支持正数单值和正数区间。区间使用两个数值的平均值,例如 10-20 会按 15 参与计算。未读取到有效正数,或累计结果不大于 0 时,不会生成该条附加属性。
效果展示
show-lore 只负责按钮和 PlaceholderAPI 变量中的效果展示,不直接产生属性。
yaml
show-lore:
- '{fixed_lore}'
- '&6装备攻击力增幅 &a+<0.1*{level}*100~%.0f>%'| 写法 | 说明 |
|---|---|
{fixed_lore} | 在当前位置展开当前等级的全部 fixed-lore |
{level} | 当前正在展示的等级 |
<公式~格式> | 计算并格式化展示数值 |
| PlaceholderAPI 变量 | 按当前玩家解析 |
{now_strength} 和 %lss_now_strength_槽位ID% 读取当前等级的 show-lore;{next_strength} 和 %lss_next_strength_槽位ID% 读取下一等级的 show-lore。
如果希望固定属性同时显示在按钮上,需要在 show-lore 中加入 {fixed_lore}。只配置 fixed-lore 而不配置对应展示内容时,属性仍可生效,但按钮不会自动展示它。
自定义 Lore 数值
lore-get-value 可以从当前槽位装备的固定 Lore 中读取数值,并在 addition-lore.value 中通过 {v.变量ID} 使用。
yaml
lore-get-value:
'增幅强度':
default-value: 1
lore-formula: '&7槽位增幅强度:<value>%'| 配置项 | 说明 |
|---|---|
| 节点名称 | 自定义变量 ID |
default-value | 没有找到有效数值时使用的默认值,默认是 1 |
lore-formula | 装备 Lore 匹配格式,<value> 表示数值位置 |
在属性增幅中调用:
yaml
addition-lore:
'攻击力':
formula:
- '&6攻击力 &a+<value>'
value: '{value}*{v.增幅强度}*0.01*{level}'
attribute-format: '{attribute}+{value}'读取时只采用第一个匹配结果。支持正数单值和正数区间;区间取平均值。该功能适合读取格式固定的装备 Lore,不适合依赖多层动态结果继续嵌套匹配。
属性生效条件
槽位属性生效前会依次检查:
- 玩家是否满足当前槽位的
enable-condition。 - 当前等级是否存在对应的
strengthen规则。 - 当前槽位中是否存在可读取的装备。
- 主配置
check-put-on-condition中的装备穿戴条件是否通过。 fixed-lore和addition-lore是否能生成有效属性文本。
fixed-lore 不要求槽位中存在物品即可生成;addition-lore 必须读取槽位装备的 Lore。最终属性由主配置 attribute-plugin 指定的属性插件接收。
降级规则
启用 level-down 后,玩家可以在强化界面中右键槽位按钮,将槽位降低一级。
yaml
level-down:
enable: true
condition:
- 'item:{MM5@降级石#1*{level}}| &7需要:{item} x{amount}'
- 'eco:{10*{level}*{level}}| &e需要:金币 x{amount}'
command:
- '[console]tell %player_name% 降级成功'| 配置项 | 说明 |
|---|---|
enable | 是否启用右键降级,默认关闭 |
condition | 降级前需要满足并扣除的条件 |
command | 降级条件通过并完成扣除后执行的命令 |
降级规则具有以下行为:
- 当前等级为
0时不会继续降级。 - 降级条件支持与强化条件相同的物品、金币、点券、货币、变量和权限写法。
- 条件全部满足后,物品和货币会被扣除。
- 降级成功后等级减少
1,失败次数归零。 - 降级没有随机成功率,条件满足后直接完成。
- 未启用时,
{leveldown_condition}显示“降级功能未启用”。 - 条件不足提示由主配置
message.level-down-fail设置。 - 成功提示由主配置
message.level-down-success设置。
降级 condition 中的 {level} 按当前实现会替换为“当前等级加一”。配置按等级变化的降级消耗时,需要按此规则计算。
完整配置参考
yaml
Origin#MainHand:
enable-condition:
- 'permission:{lss.mainhand}'
- 'papi:{%player_level% >= 0}'
permission-chance-addition:
'VIP1加成':
permission: 'vip.1'
formula: '{chance}*1.1'
show-lore: '&a(VIP1 成功率加成)'
item: '160:2'
name: '&7>> &6主手槽位强化 &a({now_level}/{max_level})'
lore:
- '&7当前强化效果:'
- '{now_strength}'
- ''
- '&7下级强化效果:'
- '{next_strength}'
- ''
- '&7下级强化需求:'
- '{need_condition}'
- ''
- '&7强化成功率:&6{chance}'
- ''
- '&a左键强化 &7| &c右键降级'
- ''
- '&7降级需求:'
- '{leveldown_condition}'
level-down:
enable: true
condition:
- 'item:{MM5@降级石#1*{level}}| &7需要:{item} x{amount}'
- 'eco:{10*{level}*{level}}| &e需要:金币 x{amount}'
command:
- '[console]tell %player_name% 降级成功'
strengthen:
'0-5':
condition:
- 'item:{MM5@强化石#1*{level}}| &7需要:{item} x{amount}'
- 'eco:{10*{level}*{level}}| &e需要:金币 x{amount}'
- 'point:{10*{level}}| &b需要:点券 x{amount}'
- 'papi:{%player_level% >= 0}| &7需要:玩家等级大于或等于 0'
chance: '1-({level}*0.1)'
start-command:
- '[op]say %player_name% 正在进行 {now_level} 级到 {next_level} 级的强化'
success-command:
- '[console]say %player_name% 强化到 {next_level} 级成功'
fail-command:
- '[console]say %player_name% 强化到 {next_level} 级失败'
fixed-lore:
- '&6攻击力 &a+<1*{level}~%.0f>'
addition-lore:
'攻击力':
formula:
- '&6攻击力 &a+<value>'
value: '{value}*0.1*{level}'
attribute-format: '{attribute}+{value}'
show-lore:
- '{fixed_lore}'
- '&6装备攻击力增幅 &a+<0.1*{level}*100~%.0f>%'
lore-get-value:
'增幅强度':
default-value: 1
lore-formula: '&7槽位增幅强度:<value>%'配置注意事项
slot/示例.yml不会被加载,必须复制并更改文件名。- 槽位 ID 会用于数据保存、界面绑定、命令和变量,投入使用后不应随意更名。
- 等级节点必须是整数或
最小等级-最大等级格式。 strengthen中没有任何等级节点时,槽位最大等级为0。condition的实际判断部分与展示部分使用半角竖线|分隔。- 物品条件必须同时包含
@和#,格式为插件@物品ID#数量公式。 cx和lshop条件必须使用货币ID#金额公式。- 属性公式默认使用
<和>,如果主配置修改了计算边界符,槽位文件也要同步修改。 show-lore仅用于展示;真正提交给属性插件的是fixed-lore和addition-lore的计算结果。- PlaceholderAPI 变量、Vault 金币、PlayerPoints 点券、CraftX 货币和离渊商店货币只有在对应插件或服务可用时才能正常处理。