强化方案
强化方案文件放在插件目录的 强化方案/ 文件夹内。插件重载时会读取该目录中的方案文件,每个 YAML 文件都可以配置多套强化方案。
每个顶层节点代表一套独立方案,节点名称同时也是方案 ID。方案 ID 会用于强化券适用方案、保底计数等功能,修改后会被视为另一套方案。
yaml
强化方案2:
强化上限: 10
适用物品:
- "contain@牛马装备"
配置:
1:
概率: 50
消耗金币: 1000
福星: 0方案基础字段
| 字段 | 类型 | 说明 |
|---|---|---|
强化上限 | 整数 | 该方案允许达到的最高强化等级 |
适用物品 | 字符串列表 | 根据物品显示名判断是否使用该方案 |
lore-get-value | 配置节点 | 从物品 Lore 中提取数值,供强化内容和 NBT 公式使用 |
配置 | 配置节点 | 按目标强化等级定义成功率、消耗、失败结果和强化内容 |
适用物品
适用物品 根据物品显示名匹配方案。未填写前缀时使用包含匹配。
| 写法 | 匹配方式 | 说明 |
|---|---|---|
物品名 | 包含匹配 | 显示名中包含指定文本即可匹配 |
contain@物品名 | 包含匹配 | 与默认写法相同,明确指定包含匹配 |
equals@物品名 | 完整匹配 | 物品显示名必须与指定文本完全相同 |
yaml
适用物品:
- "牛马装备"
- "contain@垃圾装备"
- "equals@&a超级牛马装备"颜色符会在读取方案时转换。多套方案的物品名称不要互相包含,否则同一件物品可能同时满足多套方案的匹配条件。
警告
方案识别依赖物品显示名。修改装备名称、颜色或匹配关键词后,可能导致插件无法找到原方案。
Lore 数值读取
lore-get-value 可以从装备的固定 Lore 中提取数字。提取结果可通过 {v.变量ID} 写入 强化内容 和 设置NBT。
| 字段 | 说明 |
|---|---|
default-value | 未找到对应 Lore 或无法解析数字时使用的默认值,默认 1.0 |
lore-formula | Lore 匹配格式,必须使用 <value> 标记数字所在位置 |
yaml
lore-get-value:
变量1:
default-value: 1
lore-formula: '&7强化个体值: <value>'假设装备包含以下 Lore:
text
§7强化个体值: 12.5插件会将 {v.变量1} 解析为 12.50。如果没有找到符合格式的 Lore,或 <value> 对应内容不是数字,则使用 default-value。
lore-formula 的 <value> 可以位于文本中间或末尾。匹配时会寻找左右两侧文本,并读取两者之间的内容。
警告
该功能适合读取格式固定的数值 Lore。Lore 文本、颜色或数字位置发生变化后,可能无法正确提取。
等级配置
配置 下的键表示强化成功后到达的目标等级。等级可以单独配置,也可以使用闭区间让多个等级共用规则。
yaml
配置:
1:
概率: 80
消耗金币: 1000
福星: 0
3-9:
概率: 50
消耗金币: 2000
福星: 0.13-9 会为第 3、4、5、6、7、8、9 级分别建立相同规则。区间内公式使用的 {level} 仍然是实际目标等级。
方案应为 1 到 强化上限 的每个目标等级提供有效配置。强化时如果找不到下一等级配置,插件无法取得该等级的强化规则。
等级字段
| 字段 | 类型 | 说明 |
|---|---|---|
概率 | 数字或公式 | 本次强化的基础成功率,支持 {level}、PlaceholderAPI 和四则运算 |
消耗金币 | 数字或公式 | 本次强化消耗的金币,支持 {level}、PlaceholderAPI 和四则运算 |
福星 | 数字 | 当前等级的福星加成系数 |
材料需求 | 字符串列表 | 本次强化需要并扣除的材料 |
强化失败 | 字符串列表 | 强化失败后的等级变化或装备破碎结果,使用权重随机 |
强化内容 | 字符串列表 | 强化成功后写入装备 Lore 的内容 |
设置NBT | 键值节点 | 强化成功后写入物品的字符串 NBT |
保护符 | 字符串列表 | 当前等级允许选择的保护符物品名称,界面最多展示前三种 |
命令 | 字符串列表 | 强化成功或强化转移成功后执行的命令 |
失败命令 | 字符串列表 | 普通强化失败后执行的命令 |
强化权限 | 字符串 | 强化到当前等级需要的权限;留空表示不限制 |
强化保底次数 | 整数 | 连续失败达到该次数后,为该方案的本次强化提供保底概率;0 表示该等级不触发 |
强化保底概率 | 整数 | 达到保底次数后额外增加的成功率 |
强化识别字符 | 字符串 | 覆盖全局强化 Lore 定位行,仅对当前等级生效 |
删除LORE起始行定位 | 字符串 | 删除旧 Lore 时使用的起始定位关键词 |
删除LORE结束行定位 | 字符串 | 删除旧 Lore 时使用的结束定位关键词 |
替换名称 | 字符串 | 强化到当前等级后直接使用指定显示名 |
替换物品 | 字符串 | 强化到当前等级后将装备替换为物品库中的指定物品 |
概率与金币公式
概率 和 消耗金币 会先替换 PlaceholderAPI 变量与 {level},再进行数学计算。
yaml
配置:
1-10:
概率: '100-{level}*5'
消耗金币: '500+{level}*1000'
福星: 0| 内容 | 说明 |
|---|---|
{level} | 当前准备到达的目标强化等级 |
| PlaceholderAPI 变量 | 根据当前玩家解析后参与计算 |
{guaranteed_now} | 当前方案已经累计的失败次数;仅在启用保底且玩家数据已加载时用于成功率公式 |
+、-、*、/、括号 | 数学运算内容 |
概率 是基础成功率。实际强化还可能叠加强化石、保底和福星效果,具体计算受 config.yml 与 强化道具.yml 控制。
强化内容公式
强化内容 会在强化成功后写入装备 Lore。每次写入前,插件会删除带有全局 强化标识符 的旧强化 Lore,再写入当前等级的新内容。
yaml
强化内容:
- '&c&l强化等级: &b&l{level}'
- '&e&l物理攻击: &b&l<{level}*10~%.0f>-<{level}*20~%.0f>'
- '&d&l个体加成: &b&l<{v.变量1}*{level}~%.2f>'公式由 config.yml 中的 calculate-key-left 和 calculate-key-right 包围,默认分别是 < 和 >。为了避免 Vue 将尖括号识别为标签,完整公式应写在 YAML 代码块中。
公式格式如下:
text
<数学表达式~数字格式>| 内容 | 说明 |
|---|---|
{level} | 当前目标强化等级 |
{v.变量ID} | lore-get-value 读取到的数字,写入公式前按两位小数转换 |
| PlaceholderAPI 变量 | 根据当前玩家解析 |
~%.0f | 不保留小数 |
~%.1f | 保留一位小数 |
~%.2f | 保留两位小数 |
如果省略 ~数字格式,插件默认使用 %.0f。
强化 Lore 插入位置
强化内容默认使用 config.yml 的 强化识别字符 查找定位行,并根据全局 强化插入方式 插入到定位行的下一行或上一行。如果装备中不存在定位行,强化内容会追加到 Lore 末尾。
某个等级可以通过 强化识别字符 覆盖全局定位文本:
yaml
配置:
5:
强化识别字符: '&8------[五阶强化]------'
概率: 50
消耗金币: 1000
福星: 0
强化内容:
- '&c强化等级: {level}'该字段只改变当前等级查找的定位行,不会改变用于识别并清除旧强化 Lore 的全局 强化标识符。
材料需求
每条材料配置使用 物品#数量 格式。数量部分支持 {level}、PlaceholderAPI 变量和数学运算。
yaml
材料需求:
- '测试物品#1'
- '高级材料#{level}*2'强化时会先检查玩家背包内的材料数量。所有生效的材料都满足后,插件才会扣除材料和金币。
条件材料
第三段可以填写可选条件,格式为 物品#数量#条件。条件不成立时,该条材料不会显示、检查或扣除。
yaml
材料需求:
- '测试物品#1'
- '测试物品2#{level}#{level} >= 10'上例中的条件文本在实际配置时应移除零宽分隔字符,写成 {level} >= 10。完整条目如下:
yaml
材料需求:
- '测试物品2#{level}#{level} >= 10'条件会先替换 {level} 和 PlaceholderAPI 变量,然后进行判断。
| 运算符 | 说明 |
|---|---|
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
== | 相等,可比较数字或带引号的字符串 |
!= | 不相等,可比较数字或带引号的字符串 |
&& | 所有条件同时成立 |
|| | 任意一个条件成立 |
字符串比较需要为两侧内容添加单引号或双引号。
yaml
材料需求:
- "职业材料#1#'%player_class%' == '战士'"材料名称由插件的物品获取逻辑解析。材料实际扣除数量还会乘以所用强化石的 need-item-rate。
强化失败
强化失败 使用 结果#权重 格式。插件会根据各项权重随机选择一个失败结果。
yaml
强化失败:
- '-1#50'
- '0#45'
- 'break#5'| 结果 | 说明 |
|---|---|
0 | 强化等级保持不变 |
| 负整数 | 在当前等级基础上减少对应等级 |
break | 装备破碎并从强化界面移除 |
权重不要求合计为 100。例如 50、45、5 的总权重为 100,分别对应 50%、45%、5%;如果总权重为其他数值,插件仍会按照各项在总权重中的比例随机。
失败后等级低于 0 时会重置为 0。等级变为 0 时,插件会移除名称中的强化等级和由强化系统写入的 Lore。
危险
失败结果只能填写 0、负整数或 break,不要填写正整数。失败后增加强化等级会破坏正常强化流程。
如果当前等级没有配置 强化失败,插件没有可用的失败权重。存在失败概率的等级应至少配置一个失败结果。
保护符
保护符 填写当前等级允许使用的保护符物品名称。强化界面最多展示前三种保护符。
yaml
保护符:
- '测试物品'
- '测试物品2'玩家选择保护符后,强化失败时会从背包扣除一件对应物品,并阻止本次掉级或破碎。保护符只在强化失败时扣除。
保护符物品通过物品名称取得,名称必须能被当前服务器的物品库配置正确解析。
强化保底
强化保底需要先在 config.yml 中启用 guaranteed-enable。每个目标等级可以分别配置触发次数和额外成功率。
yaml
配置:
10:
强化保底次数: 5
强化保底概率: 10
概率: 20
消耗金币: 1000
福星: 0
强化失败:
- '0#100'| 字段 | 说明 |
|---|---|
强化保底次数 | 当前方案累计失败次数达到该值后触发;删除或填写 0 表示不触发 |
强化保底概率 | 触发后以加法方式加入本次最终成功率 |
保底次数按玩家和方案 ID 记录,而不是按单个装备或单个强化等级记录。普通强化失败后计数加一,普通强化成功后归零。
默认使用玩家独立 YAML 文件保存保底数据。启用 mysql.enable 后会改用 MySQL 事件加载和保存数据。
警告
使用 MySQL 保存保底数据时,必须安装 LyMySQLCore,并确保插件已经成功连接数据库。数据库连接或数据加载未完成时,相关保底功能不会正常生效。切换 mysql.enable 后需要重启服务器。
设置 NBT
设置NBT 会在强化成功后向物品写入字符串 NBT。节点名称是 NBT 键,节点值是写入内容。
yaml
设置NBT:
属性: '物理攻击+<{level}*10~%.0f>'
强化个体值: '<{v.变量1}*{level}~%.2f>'NBT 值支持与 强化内容 相同的内容:
{level}{v.变量ID}- PlaceholderAPI 变量
- 默认由
<与>包围的数学公式 ~%.0f、~%.1f等数字格式
配置中的值最终通过字符串 NBT 写入。不要依赖该字段写入整数、浮点数或其他 NBT 类型。
NBT 功能依赖插件内对应服务端版本的 NMS 实现。项目中包含 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 对应的适配模块。
成功与失败命令
命令 在普通强化成功和强化转移成功写入目标等级后执行。失败命令 在普通强化失败处理完成后执行。
yaml
命令:
- '[console]bc &d%p 将 %item 强化至 %lv'
失败命令:
- '[console]bc &d%p 强化 %item 失败,当前等级 %lv'执行身份
| 前缀 | 说明 |
|---|---|
[console] | 由控制台执行 |
[player] | 由玩家直接执行 |
[op] | 临时以管理员身份让玩家执行,完成后恢复原权限状态 |
没有以上前缀的命令不会进入已实现的执行分支。
命令变量
| 变量 | 说明 |
|---|---|
%p | 玩家名称 |
%lv | 操作完成后的强化等级 |
%item | 物品显示名 |
普通强化失败时,%lv 是失败处理后的等级;装备破碎时执行失败命令使用的等级来自失败前的强化等级。
强化权限
强化权限 控制玩家能否强化到当前目标等级。
yaml
配置:
10:
强化权限: 'vip1'
概率: 10
消耗金币: 1000
福星: 0留空或删除该字段表示不限制。没有权限时,玩家无法执行该等级的普通强化或使用强化券直升到该等级,界面按钮也会显示当前权限检查未通过。
删除旧 Lore
如果同一等级同时配置 删除LORE起始行定位 和 删除LORE结束行定位,强化成功写入新内容前会查找包含这两个关键词的 Lore 行,并删除两行之间的内容。
yaml
配置:
1:
删除LORE起始行定位: '---------初始lore---------'
删除LORE结束行定位: '---------结束lore---------'
概率: 50
消耗金币: 1000
福星: 0起始行和结束行自身会保留,只删除两者之间的 Lore。只有找到有效的起始行和位于其后的结束行时才会执行删除。
危险
定位使用包含匹配。关键词过短、重复或顺序错误时,可能删除非预期 Lore。正式使用前应确保两条定位文本在装备 Lore 中唯一。
替换名称
替换名称 会在强化到指定等级后,将物品显示名直接设置为配置内容。
yaml
配置:
10:
替换名称: '&a超级牛马装备'
概率: 10
消耗金币: 1000
福星: 0使用该字段时,不再向名称追加插件的强化等级标记。由于当前强化等级通常从显示名中的隐藏标记读取,替换后的物品可能被识别为未强化物品,也可能因为新名称匹配到其他方案而切换强化路线。
替换名称适合在目标等级完成形态转换。配置前应同时检查新名称会匹配哪套强化方案。
替换物品
替换物品 会在强化到指定等级后,直接用物品库中的物品替换当前装备。
yaml
配置:
10:
替换物品: '物品id'
概率: 10
消耗金币: 1000
福星: 0该操作会直接返回物品库取得的新物品,不再继续处理原装备的强化 Lore 与 设置NBT。新物品是否包含原装备属性、强化等级或其他数据,取决于物品库中该物品本身的内容。
示例配置注明可使用 AzureFlow、SX-Item、NeigeItems、OriginAttribute,并默认使用 MythicMobs 物品库。实际解析优先级还受 config.yml 中物品库开关控制。
危险
替换物品 是整件物品替换,不是只修改材质或显示名。需要保留的原装备 Lore、附魔、NBT 和其他插件数据不会由强化方案自动迁移。
完整方案示例
yaml
强化方案2:
强化上限: 10
适用物品:
- 'contain@牛马装备'
- 'equals@&a超级牛马装备'
lore-get-value:
个体值:
default-value: 1
lore-formula: '&7强化个体值: <value>'
配置:
1:
删除LORE起始行定位: '---------初始lore---------'
删除LORE结束行定位: '---------结束lore---------'
强化保底次数: 5
强化保底概率: 10
概率: '50'
消耗金币: '1000'
福星: 0.1
材料需求:
- '测试物品#1'
强化失败:
- '-1#50'
- '0#45'
- 'break#5'
设置NBT:
属性: '物理攻击+<{level}*10~%.0f>'
强化内容:
- '&c&l强化等级: &b&l{level}'
- '&e&l物理攻击: &b&l<{v.个体值}+{level}*10~%.2f>'
保护符:
- '测试物品'
- '测试物品2'
命令:
- '[console]bc &d&l%p&f 将 %item 强化至 &6%lv'
失败命令:
- '[console]bc &d&l%p&f 强化 %item 失败,当前等级 &6%lv'
强化权限: 'vip1'
2-9:
概率: '60-{level}*3'
消耗金币: '1000+{level}*500'
福星: 0.1
材料需求:
- '测试物品#{level}'
- '测试物品2#2#{level} >= 5'
强化失败:
- '-1#50'
- '0#50'
强化内容:
- '&c&l强化等级: &b&l{level}'
- '&e&l物理攻击: &b&l<{v.个体值}+{level}*10~%.2f>'
保护符:
- '测试物品'
命令:
- '[console]bc &d&l%p&f 将 %item 强化至 &6%lv'
失败命令:
- '[console]bc &d&l%p&f 强化 %item 失败,当前等级 &6%lv'
强化权限: 'vip1'
10:
替换名称: '&a超级牛马装备'
概率: '10'
消耗金币: '10000'
福星: 0.1
材料需求:
- '测试物品#10'
强化失败:
- '-1#90'
- 'break#10'
强化内容:
- '&c&l强化等级: &b&l{level}'
- '&e&l物理攻击: &b&l<{v.个体值}+{level}*10~%.2f>'
保护符:
- '测试物品2'
命令:
- '[console]bc &d&l%p&f 将 %item 强化至 &6%lv'
失败命令:
- '[console]bc &d&l%p&f 强化 %item 失败,当前等级 &6%lv'
强化权限: 'vip1'配置注意事项
- 顶层方案名称是方案 ID,强化券限制和保底数据会使用该 ID。
强化上限范围内的目标等级应具有对应配置。概率和消耗金币应写成可以完成数学计算的数字或表达式。福星在加载时按整数读取,示例中的小数配置可能无法按预期保留;需要福星加成时应先在测试环境确认实际读取结果。强化失败必须使用结果#权重,不要填写正数结果。材料需求必须至少包含物品名称和数量两段。- 保护符界面最多展示当前等级配置中的前三种保护符。
设置NBT写入的是字符串值,并依赖对应服务端版本的 NMS 适配。替换名称可能改变强化等级识别和方案匹配结果。替换物品会直接替换整件装备,不会自动保留原装备数据。- 使用
删除LORE起始行定位和删除LORE结束行定位前,应确认关键词唯一且顺序正确。 - 修改全局
强化标识符或名称等级格式后,已有强化装备可能无法继续被正确识别。