Skip to content

强化方案

LyGalaxyStrengthen 使用独立 YAML 文件定义普通强化、强化直升和强化转移规则。玩家将物品放入对应界面后,插件会自动识别可用方案,不需要在界面中手动选择。

方案类型配置目录用途
普通强化strengthen设置装备匹配、强化等级、成功率、消耗、失败结果、保护石、Lore 属性和触发脚本
强化直升strengthen-direct使用强化券将已有强化数据的装备直接提升到指定等级
强化转移strengthen-transfer将来源装备的强化等级转移到目标装备

方案文件可以自行命名,但同类方案的 id 不能重复。普通强化方案的 id 还会被直升方案、转移方案和 API 引用,投入使用后不建议随意修改。

普通强化方案

普通强化方案放在 strengthen 目录。装备放入普通强化界面后,插件会检查所有方案,并根据装备显示名称识别可用方案。

没有强化数据的装备按 0 级处理。装备名称必须命中 equipment-names 中的任意一项,当前强化等级还必须低于方案的 max-level

方案 coefficient 引用的 Lore 模板按装备实际拥有的 Lore 选用:

  • 装备不需要同时拥有方案引用的全部 Lore 模板。
  • 能匹配到模板的 Lore 会参与强化计算。
  • 没有匹配到的模板会被跳过,不会凭空添加对应属性。
  • 同一个普通强化方案的所有等级范围仍需使用相同的模板名称集合。

如果一件新装备同时符合多个普通强化方案,插件会拒绝放入并列出冲突方案,避免装备绑定到错误方案。

基础配置

配置项必填说明
id方案 ID,不能与其他普通强化方案重复
equipment-names可使用该方案的装备名称列表,每项使用包含匹配,支持 & 颜色符
max-level最高强化等级,必须大于 0
universal-materials可代替本次强化全部货币和普通材料的通用强化材料
level-rules各目标等级的强化规则,必须完整覆盖 1max-level
yaml
id: '示例武器'

equipment-names:
  - '示例武器'

max-level: 10

level-rules:
  1-10:
    chance: '100'
    coefficient:
      攻击属性: '1.0'

装备名称匹配

equipment-names 中的每一项都使用包含匹配。装备显示名称包含任意一项时,名称检查通过。

yaml
equipment-names:
  - '示例武器'
  - '&6高级示例武器'

配置内容支持 & 颜色符。由于使用包含匹配,过短或过于宽泛的内容可能同时命中多种装备,建议填写能够区分装备类别的完整名称片段。

等级规则

level-rules 按目标等级生效。例如 1-5 负责从低等级强化到 12345 级,而不是负责当前等级为 15 级的装备。

等级键可以填写单个等级或连续范围:

yaml
level-rules:
  1-5:
    chance: '90 - {level} * 5'
    coefficient:
      攻击属性: '1.0'

  6-10:
    chance: '75 - ({level} - 5) * 5'
    coefficient:
      攻击属性: '1.5'

等级规则必须满足以下要求:

  • 1 级完整配置到 max-level
  • 不得遗漏等级。
  • 不得让多个规则重复覆盖同一等级。
  • 同一方案的每个等级范围必须填写相同的 Lore 模板名称集合。

等级规则配置项

配置项必填说明
chance基础成功率,按百分比计算,最终限制在 0100
need-money所需 Vault 金币,省略时为 0
need-items所需普通材料列表,省略或填写空列表时不需要材料
need-currency所需 PlayerPoints、LyShop 或 CraftX 额外货币
failure-guarantee根据装备连续失败次数增加成功率
coefficient当前等级使用的 Lore 模板及强化系数
failure-results强化失败后的随机处理结果
protection-item当前等级允许使用的保护石名称列表
scripts当前等级段的强化触发脚本

普通强化方案中的 {level} 表示本次强化要到达的目标等级。chance 支持小数、括号以及 +-*/%^ 运算。金币、额外货币和 Lore 系数也可以按对应配置使用 {level} 与计算公式。

强化消耗

普通强化可以同时消耗 Vault 金币、额外货币和普通材料。只有货币与材料检查通过后,插件才会真正执行强化。

如果任意货币或材料不足:

  • 不会扣除任何内容。
  • 不会进入成功率判断。
  • 不会增加装备的连续失败次数。
  • 可以触发类型为 cost-insufficient 的脚本。

Vault 金币

need-money 设置本次强化需要的 Vault 金币,支持 {level} 和计算公式。删除该配置时默认为 0

yaml
need-money: '1000 + {level} * 500'

使用该项需要服务器安装 Vault,并拥有可用的经济服务。未配置 need-money 或计算结果为 0 时,不扣除 Vault 金币。

普通材料

need-items 的格式为 物品库@物品ID#数量

yaml
need-items:
  - 'MythicMobs@示例强化材料#2'
部分说明
物品库材料所属物品库,可以省略
物品ID物品库中的物品标识
数量本次操作所需数量

省略 物品库@ 时,使用 config.ymlitem-provider。可配置的物品库名称包括:

  • MythicMobs
  • LyItemSave
  • AzureFlow
  • NeonFlash
  • SX-Item
  • NeigeItems
  • OriginAttribute

MythicMobsLyItemSave 的名称互通。item-provider 留空时也默认使用 MythicMobs

材料根据显示名称匹配。插件会依次从以下位置检查并扣除材料:

  1. 战利品仓库。
  2. LyWarehouse 仓库。
  3. YeeCore 空间戒指。
  4. 玩家背包。

外部存储来源只有在对应插件安装并正常启用时才会参与材料检查。省略 need-items 或填写空列表表示不需要普通材料:

yaml
need-items: []

额外货币

need-currency 支持以下货币标识:

写法货币来源
pointPlayerPoints 点券
lyshop@货币IDLyShop 指定货币
cx@变量IDCraftX 指定变量货币
yaml
need-currency:
  point: '10'
  lyshop@示例强化币: '5'
  cx@示例强化币: '3'

数量支持 {level} 和计算公式,计算后取整数。填写 0 时不会扣除该货币。省略整个 need-currency 时不消耗额外货币。

额外货币在界面中的名称由 config.ymlcurrency-display.names 设置。匹配货币标识时忽略大小写;没有配置昵称时,界面直接显示完整货币标识。

对应货币插件没有安装或不可用时,不能使用该货币完成强化。

通用强化材料

universal-materials 可以定义通用强化材料。玩家将有效材料放入普通强化界面的专用槽位后,本次强化不再消耗以下内容:

  • Vault 金币。
  • PlayerPoints、LyShop 和 CraftX 额外货币。
  • need-items 配置的普通材料。

每次真正执行强化会消耗一个通用强化材料。

yaml
universal-materials:
  示例通用材料:
    match: '&d示例通用强化材料'
    level-range: '1-8'
配置项说明
自定义节点名称仅作为配置备注,可以自行命名
match物品显示名称,必须完全相同,支持 & 颜色符
level-range可使用该材料的目标等级,可以填写单级或范围

例如 level-range: '1-8' 表示该材料可以用于强化到 18 级。单级可以写为:

yaml
level-range: '3'

通用材料只替代本次强化的费用,不会改变成功率、失败结果、保护石或触发脚本。

成功率

普通强化的最终成功率按以下顺序计算:

  1. 读取等级规则中的基础 chance
  2. 应用 config.yml 中匹配到的最高权限成功率加成。
  3. 应用装备当前连续失败次数对应的保底加成。
  4. 将最终结果限制在 0100%

权限成功率使用 基础成功率 × (1 + chance) 计算。玩家同时拥有多个已配置权限时,只使用 chance 数值最高的一项。

例如基础成功率为 40%,权限配置的 chance0.20,权限加成后的成功率为 48%

失败保底

failure-guarantee 根据装备保存的连续失败次数提高成功率。

yaml
failure-guarantee:
  '1-2': 3
  '3-4': 8
  '5-max': 15

范围键支持以下格式:

格式说明
'3'仅连续失败 3 次时生效
'1-2'连续失败 12 次时生效
'5-max'从连续失败 5 次起一直生效

不同范围不能重叠。没有匹配到范围时不增加成功率。

保底计算方式由 config.ymlfailure-guarantee-mode 统一控制:

模式计算方式示例
add直接增加成功率百分点40%8 后为 48%
multiply当前成功率乘以配置倍率40%1.10 后为 44%

连续失败次数保存在装备中:

  • 强化概率失败时增加 1
  • 强化成功时清零。
  • 保护石生效时仍属于强化失败,因此会增加连续失败次数。
  • 货币或材料不足时没有执行强化,不增加连续失败次数。

失败结果

failure-results 定义普通强化失败后可能发生的结果。插件按照权重随机选择一项,权重总和不要求等于 100

yaml
failure-results:
  - '0#70'
  - '-1#25'
  - 'break#5'
结果说明
0强化失败,但等级不变
-1强化失败并降低 1
-2强化失败并降低 2
break强化失败并破坏装备

格式为 结果#权重。权重越大,该结果越容易被选中。

失败降级后,插件会按照结算后的等级重新计算已识别的强化 Lore。装备降到 0 级时,强化属性 Lore 会使用首次保存的原始值恢复。

保护石

protection-item 设置当前目标等级允许使用的保护石。保护石按物品显示名称完全匹配,支持 & 颜色符,也可以配置多个名称。

yaml
protection-item:
  - '&b示例强化保护石'
  - '&b高级强化保护石'

删除 protection-item 表示当前等级不能使用保护石。有效保护石可以阻止强化失败造成的降级和装备破坏,但不会将失败改为成功,也不会阻止连续失败次数增加。

保护石的消耗时机由 config.ymlprotection-item-consume 统一控制:

说明
failure仅强化失败时消耗
always只要真正执行强化,无论成功或失败都会消耗

Lore 强化属性

普通强化方案通过 coefficient 选择 config.yml 中的 Lore 模板,并为每个模板提供当前等级的强化系数。

yaml
coefficient:
  攻击属性: '1.0 + ({level} - 1) * 0.05'
  生命属性: '1.0'
  暴击属性: '1.0'
要求说明
模板名称必须与 config.ymllore-templates 节点名称完全相同
系数格式使用引号包裹,可以使用 {level}、小数、括号和四则运算
模板集合同一方案的所有等级范围必须使用相同的模板名称集合
装备处理只处理装备实际拥有且能够匹配的模板 Lore,未拥有的模板会跳过

Lore 模板负责保存装备原始数值、计算强化数值并生成强化后的 Lore。装备降回 0 级时,会使用首次保存的原始值恢复对应 Lore。

Lore 模板结构

Lore 模板配置在 config.ymllore-templates 中:

yaml
lore-templates:
  攻击属性:
    match: '&7物理攻击: &f{攻击下限}-{攻击上限}'
    render: '&7物理攻击: &f{base:攻击下限}-{base:攻击上限}&7(&b+{加成}&7)'
    values:
      加成:
        formula: '({base:攻击上限}+{base:攻击下限}*0.5) * {level} * {coefficient}'
        format: '%.0f'
配置项说明
match用于查找装备原始 Lore,并通过 {数值ID} 保存其中的数字或小数
render强化后替换原 Lore 的内容
values需要通过公式计算的数值集合
values.<数值ID>.formula数值计算公式
values.<数值ID>.format计算结果的格式化方式

match 中的颜色、空格和符号必须与装备 Lore 一致。{数值ID} 匹配的内容只能包含数字和小数点。

Lore 公式变量

变量说明
{base:数值ID}当前 Lore 首次匹配时保存的原始数值
{level}当前强化等级
{coefficient}普通强化方案为当前模板计算出的强化系数
{计算值ID}values 中同名公式的计算结果,仅用于 render
{nbt:节点路径}读取装备 NBT 中的字符串或数值,路径使用点号逐级分隔

NBT 节点不存在时按 0 处理。公式中读取到的 NBT 字符串必须是可计算内容。

模板存在以下限制:

  • 模板 ID 和数值 ID 不能包含英文冒号 :
  • 公式不能读取其他 Lore 模板保存的数值。
  • 公式不能读取同一模板其他匹配序列保存的数值。
  • values 不需要重复配置 match 已经保存的原始值。
  • 不同 Lore 模板可以使用相同的计算值 ID,插件会按模板分别保存。

同一个模板匹配到多条 Lore 时,插件会分别保存和计算每一条 Lore 的数值。插件会为已识别的强化属性添加隐藏标记,用于后续定位和更新,不需要手动配置。

不要在普通 Lore 中手动使用插件的隐藏标记前缀。模板 ID 投入使用后不要修改,否则已有装备保存的强化属性可能无法继续识别。

强化触发脚本

普通强化等级规则可以通过 scripts 在不同结算结果发生时修改装备 Lore 或执行指令。每个自定义节点是一组独立规则。

yaml
scripts:
  首次达到5级:
    type: 'success'
    condition: '{highest_level} < {current_level} && {current_level} == 5'
    action:
      - "添加lore('&a首次达到 5 级')"

脚本配置项

配置项必填说明
自定义节点名称脚本规则名称,仅用于区分配置
type触发该脚本的强化结果类型
condition执行动作前检查的条件,不填写时默认通过
action条件通过后执行的动作列表

触发类型

类型触发时机
attempt已完成扣费并产生任意强化结果
success强化成功
failure任意概率失败
protected-failure强化失败且保护石生效
unchanged-failure强化失败但等级不变
downgrade-failure强化失败并降级
break-failure强化失败并破坏装备
cost-insufficient金币、额外货币或普通材料不足,且尚未扣除任何内容

failure 是概率失败的通用类型。具体失败结果还可以同时对应 protected-failureunchanged-failuredowngrade-failurebreak-failure

条件变量

condition 支持 &&||><>=<===!= 和四则运算,也可以使用 PlaceholderAPI 变量。

变量说明
{highest_level}本次操作开始前保存的历史最高强化等级
{before_level}本次操作前的强化等级
{current_level}本次结算后的强化等级
{target_level}本次尝试强化到的目标等级
{failure_count}装备结算后的连续失败次数
{level_change}本次结算造成的等级变化

插件会先完成整次强化结算和全部条件判断,再统一修改 Lore,最后执行指令。

动作写法

动作用途
添加lore('内容')将新内容添加到 Lore 末尾
插入lore前(定位lore('原内容'), '新内容')在第一条匹配 Lore 前插入内容
插入lore后(定位lore('原内容'), '新内容')在第一条匹配 Lore 后插入内容
替换lore(定位lore('原内容'), '新内容')替换第一条匹配 Lore
删除lore(定位lore('原内容'))删除第一条匹配 Lore
控制台指令('指令')以控制台身份执行指令
管理员指令('指令')临时以管理员身份执行玩家指令,完成后恢复原状态
玩家指令('指令')以玩家身份执行指令

完整动作示例:

yaml
scripts:
  强化成功处理:
    type: 'success'
    condition: '{current_level} >= 5'
    action:
      - "添加lore('&a已达到高级强化阶段')"
      - "插入lore前(定位lore('&7原有内容'), '&a插入的内容')"
      - "插入lore后(定位lore('&7原有内容'), '&a插入的内容')"
      - "替换lore(定位lore('&7原有内容'), '&a新的内容')"
      - "删除lore(定位lore('&7不再需要的内容'))"
      - "控制台指令('say %player_name% 强化成功')"

定位 Lore 时会忽略插件添加的隐藏标记,并精确匹配第一条可见 Lore。没有找到定位内容时,本条插入、替换或删除动作会跳过。

替换强化属性 Lore 时会保留隐藏标记。删除强化属性 Lore 会导致装备后续无法继续正常更新该强化属性。

脚本指令支持 PlaceholderAPI 变量。管理员指令 会临时给予玩家管理员状态,执行后恢复玩家原本的状态。

为避免 YAML 引号冲突,建议使用双引号包裹整条动作,并在函数参数中使用单引号。

不需要脚本时可以省略 scripts,或填写:

yaml
scripts: {}

完整普通强化方案结构

以下示例集中展示普通强化方案支持的主要配置。实际使用时可以删除不需要的可选节点。

yaml
id: '示例武器'

equipment-names:
  - '示例武器'

max-level: 10

universal-materials:
  示例通用材料:
    match: '&d示例通用强化材料'
    level-range: '1-8'

level-rules:
  1-5:
    chance: '90 - {level} * 5'
    need-money: '1000 + {level} * 500'
    need-items:
      - 'MythicMobs@示例强化材料#1'
    need-currency:
      point: '10'
      lyshop@示例强化币: '5'
      cx@示例强化币: '3'
    failure-guarantee:
      '1-2': 3
      '3-4': 8
      '5-max': 15
    coefficient:
      攻击属性: '1.0 + ({level} - 1) * 0.05'
      生命属性: '1.0'
      暴击属性: '1.0'
    failure-results:
      - '0#70'
      - '-1#25'
      - 'break#5'
    protection-item:
      - '&b示例强化保护石'
    scripts:
      首次达到5级:
        type: 'success'
        condition: '{highest_level} < {current_level} && {current_level} == 5'
        action:
          - "添加lore('&a首次达到 5 级')"

  6-10:
    chance: '75 - ({level} - 5) * 5'
    need-money: '5000 + {level} * 1000'
    need-items:
      - 'MythicMobs@示例强化材料#2'
    failure-guarantee:
      '1-2': 5
      '3-4': 10
      '5-max': 20
    coefficient:
      攻击属性: '1.5 + ({level} - 6) * 0.1'
      生命属性: '1.5'
      暴击属性: '1.6'
    failure-results:
      - '0#40'
      - '-1#35'
      - '-2#20'
      - 'break#5'
    protection-item:
      - '&b示例高级强化保护石'
    scripts: {}

极简普通强化方案

不需要分阶段设置时,可以让全部等级共用同一条规则。以下结构表示 1100 级均为必定成功,每次消耗固定金币和一个材料,并使用固定 Lore 系数:

yaml
id: '极简强化示例'

equipment-names:
  - '极简强化装备'

max-level: 100

level-rules:
  1-100:
    chance: '100'
    need-money: '100'
    need-items:
      - 'MythicMobs@示例强化材料#1'
    coefficient:
      极简强化属性: '1.0'

即使使用极简结构,chance、完整等级覆盖和有效的 coefficient 配置仍然是必要条件。装备没有匹配到 极简强化属性 模板 Lore 时,该模板不会参与属性处理。

强化直升方案

强化直升方案放在 strengthen-direct 目录。玩家放入装备和强化券后,插件根据强化券名称、目标等级和允许的普通强化方案自动识别直升规则。

yaml
id: '示例强化直升券'
match: '&6示例强化直升券'
target-level: 10
chance: 100
strengthen-schemes:
  - '示例武器'

配置项

配置项必填说明
id直升方案 ID,不能与其他直升方案重复
match强化券显示名称的包含匹配内容,支持 & 颜色符
target-level直升成功后的目标强化等级
chance直升成功率,范围为 0100
strengthen-schemes允许使用该直升券的普通强化方案 ID 列表,空列表表示允许所有方案

允许所有普通强化方案时可以填写:

yaml
strengthen-schemes: []

使用条件

执行强化直升前,装备必须满足以下条件:

  • 已经拥有强化数据。
  • 当前强化等级低于 target-level
  • target-level 不超过装备普通强化方案的 max-level
  • 装备所属普通强化方案在 strengthen-schemes 中,或该列表为空。
  • 强化券显示名称包含 match 设置的内容。

所有检查通过后才会进入成功率判断。进入成功率判断后,无论直升成功还是失败,都会消耗一张强化券。

直升成功后,装备会直接变为 target-level,并按照该等级重新计算已经识别的强化 Lore。直升失败时不会提升装备等级。

强化转移方案

强化转移方案放在 strengthen-transfer 目录。插件根据来源装备和目标装备保存的普通强化方案,自动查找允许的转移关系。

yaml
id: '示例强化转移'

transfer-strengthen-schemes:
  示例武器:
    schemes:
      - '示例武器'
    need-money: 100000
    need-items:
      - 'MythicMobs@测试物品#10'

level-loss:
  min: 0
  max: 4

destroy-source-item: true

基础配置

配置项必填说明
id转移方案 ID,不能与其他转移方案重复
transfer-strengthen-schemes来源强化方案、允许的目标方案及该关系的消耗
level-loss.min随机损失等级的最小值,包含该值
level-loss.max随机损失等级的最大值,包含该值
destroy-source-item转移完成后是否销毁来源装备

转移关系

transfer-strengthen-schemes 的第一层节点是来源装备的普通强化方案 ID。每个来源方案可以配置多个允许接收等级的目标方案。

配置项必填说明
schemes允许接收强化等级的目标普通强化方案 ID 列表
need-money当前转移关系需要的 Vault 金币,省略时为 0
need-items当前转移关系需要的普通材料
need-currency当前转移关系需要的额外货币

转移方案的材料格式、默认物品库、材料匹配方式、材料扣除来源和额外货币标识与普通强化相同。

转移关系可以同时配置多种消耗:

yaml
transfer-strengthen-schemes:
  示例武器:
    schemes:
      - '示例武器'
      - '高级示例武器'
    need-money: 100000
    need-items:
      - 'MythicMobs@测试物品#10'
    need-currency:
      point: '10 + {level}'
      lyshop@示例强化币: '5'
      cx@示例强化币: '3'

转移方案额外货币中的 {level} 表示来源装备的强化等级,计算结果取整数。省略 need-moneyneed-itemsneed-currency 时,对应消耗为 0 或空列表。

转移条件

来源装备与目标装备必须满足以下条件:

  • 两件装备都已经拥有强化数据。
  • 来源装备的强化等级高于目标装备的强化等级。
  • 来源装备所属方案存在于 transfer-strengthen-schemes
  • 来源方案配置的 schemes 包含目标装备所属方案。
  • 来源等级不超过目标普通强化方案的 max-level
  • 玩家拥有当前转移关系要求的金币、额外货币和普通材料。

任意消耗不足时不会执行转移,也不会扣除其他已经满足的消耗。

随机等级损失

level-loss 设置转移时随机损失的强化等级,minmax 都包含在随机范围内。

yaml
level-loss:
  min: 0
  max: 4

该配置表示随机损失 01234 级。转移后的目标装备最低为 1 级。

转移界面会显示目标装备可能得到的等级范围,实际等级在执行转移时随机确定。目标装备会按照最终等级重新计算已经识别的强化 Lore。

来源装备处理

destroy-source-item转移完成后的处理
true来源装备消失
false来源装备保留,但强化等级重置为 0

来源装备重置为 0 级时,已识别的强化属性 Lore 会根据首次保存的原始值恢复。