强化方案
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 | 是 | 各目标等级的强化规则,必须完整覆盖 1 到 max-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 负责从低等级强化到 1、2、3、4、5 级,而不是负责当前等级为 1 至 5 级的装备。
等级键可以填写单个等级或连续范围:
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 | 是 | 基础成功率,按百分比计算,最终限制在 0 到 100 |
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.yml 的 item-provider。可配置的物品库名称包括:
MythicMobsLyItemSaveAzureFlowNeonFlashSX-ItemNeigeItemsOriginAttribute
MythicMobs 和 LyItemSave 的名称互通。item-provider 留空时也默认使用 MythicMobs。
材料根据显示名称匹配。插件会依次从以下位置检查并扣除材料:
- 战利品仓库。
- LyWarehouse 仓库。
- YeeCore 空间戒指。
- 玩家背包。
外部存储来源只有在对应插件安装并正常启用时才会参与材料检查。省略 need-items 或填写空列表表示不需要普通材料:
yaml
need-items: []额外货币
need-currency 支持以下货币标识:
| 写法 | 货币来源 |
|---|---|
point | PlayerPoints 点券 |
lyshop@货币ID | LyShop 指定货币 |
cx@变量ID | CraftX 指定变量货币 |
yaml
need-currency:
point: '10'
lyshop@示例强化币: '5'
cx@示例强化币: '3'数量支持 {level} 和计算公式,计算后取整数。填写 0 时不会扣除该货币。省略整个 need-currency 时不消耗额外货币。
额外货币在界面中的名称由 config.yml 的 currency-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' 表示该材料可以用于强化到 1 至 8 级。单级可以写为:
yaml
level-range: '3'通用材料只替代本次强化的费用,不会改变成功率、失败结果、保护石或触发脚本。
成功率
普通强化的最终成功率按以下顺序计算:
- 读取等级规则中的基础
chance。 - 应用
config.yml中匹配到的最高权限成功率加成。 - 应用装备当前连续失败次数对应的保底加成。
- 将最终结果限制在
0到100%。
权限成功率使用 基础成功率 × (1 + chance) 计算。玩家同时拥有多个已配置权限时,只使用 chance 数值最高的一项。
例如基础成功率为 40%,权限配置的 chance 为 0.20,权限加成后的成功率为 48%。
失败保底
failure-guarantee 根据装备保存的连续失败次数提高成功率。
yaml
failure-guarantee:
'1-2': 3
'3-4': 8
'5-max': 15范围键支持以下格式:
| 格式 | 说明 |
|---|---|
'3' | 仅连续失败 3 次时生效 |
'1-2' | 连续失败 1 至 2 次时生效 |
'5-max' | 从连续失败 5 次起一直生效 |
不同范围不能重叠。没有匹配到范围时不增加成功率。
保底计算方式由 config.yml 的 failure-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.yml 的 protection-item-consume 统一控制:
| 值 | 说明 |
|---|---|
failure | 仅强化失败时消耗 |
always | 只要真正执行强化,无论成功或失败都会消耗 |
Lore 强化属性
普通强化方案通过 coefficient 选择 config.yml 中的 Lore 模板,并为每个模板提供当前等级的强化系数。
yaml
coefficient:
攻击属性: '1.0 + ({level} - 1) * 0.05'
生命属性: '1.0'
暴击属性: '1.0'| 要求 | 说明 |
|---|---|
| 模板名称 | 必须与 config.yml 的 lore-templates 节点名称完全相同 |
| 系数格式 | 使用引号包裹,可以使用 {level}、小数、括号和四则运算 |
| 模板集合 | 同一方案的所有等级范围必须使用相同的模板名称集合 |
| 装备处理 | 只处理装备实际拥有且能够匹配的模板 Lore,未拥有的模板会跳过 |
Lore 模板负责保存装备原始数值、计算强化数值并生成强化后的 Lore。装备降回 0 级时,会使用首次保存的原始值恢复对应 Lore。
Lore 模板结构
Lore 模板配置在 config.yml 的 lore-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-failure、unchanged-failure、downgrade-failure 或 break-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: {}极简普通强化方案
不需要分阶段设置时,可以让全部等级共用同一条规则。以下结构表示 1 到 100 级均为必定成功,每次消耗固定金币和一个材料,并使用固定 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 | 是 | 直升成功率,范围为 0 到 100 |
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-money、need-items 或 need-currency 时,对应消耗为 0 或空列表。
转移条件
来源装备与目标装备必须满足以下条件:
- 两件装备都已经拥有强化数据。
- 来源装备的强化等级高于目标装备的强化等级。
- 来源装备所属方案存在于
transfer-strengthen-schemes。 - 来源方案配置的
schemes包含目标装备所属方案。 - 来源等级不超过目标普通强化方案的
max-level。 - 玩家拥有当前转移关系要求的金币、额外货币和普通材料。
任意消耗不足时不会执行转移,也不会扣除其他已经满足的消耗。
随机等级损失
level-loss 设置转移时随机损失的强化等级,min 和 max 都包含在随机范围内。
yaml
level-loss:
min: 0
max: 4该配置表示随机损失 0、1、2、3 或 4 级。转移后的目标装备最低为 1 级。
转移界面会显示目标装备可能得到的等级范围,实际等级在执行转移时随机确定。目标装备会按照最终等级重新计算已经识别的强化 Lore。
来源装备处理
destroy-source-item | 转移完成后的处理 |
|---|---|
true | 来源装备消失 |
false | 来源装备保留,但强化等级重置为 0 级 |
来源装备重置为 0 级时,已识别的强化属性 Lore 会根据首次保存的原始值恢复。