Skip to content

强化方案

强化方案文件放在插件目录的 强化方案/ 文件夹内。插件重载时会读取该目录中的方案文件,每个 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-formulaLore 匹配格式,必须使用 <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.1

3-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-leftcalculate-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。例如 50455 的总权重为 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.101.8.81.11.21.12.21.13.21.14.41.15.21.16.51.17.11.18.21.19.21.19.41.20.11.20.21.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结束行定位 前,应确认关键词唯一且顺序正确。
  • 修改全局 强化标识符 或名称等级格式后,已有强化装备可能无法继续被正确识别。