鉴定与熔铸
魂玉的核心流程分为鉴定和熔铸。未鉴定魂玉需要先完成鉴定,生成随机词条后才能参与熔铸。熔铸会消耗一个副槽魂玉,并允许玩家在原词条与新词条之间选择。
鉴定
魂玉识别
插件通过魂玉配置中的物品名和初始描述识别未鉴定魂玉。
| 识别项 | 配置项 | 说明 |
|---|---|---|
| 物品名 | match-name | 支持配置多个可识别的物品名 |
| 初始描述 | init-lore | 用于标记尚未鉴定的魂玉 |
物品不符合对应魂玉的识别条件时,不会进入鉴定流程,并会发送 message.不是魂玉 配置的消息。
yaml
'神器魂玉':
match-name:
- '&c神器魂玉'
init-lore: '&7尚未解封魂玉之力'鉴定界面
鉴定界面由固定文件 鉴定界面.yml 控制,文件名不可修改。默认布局包含一个魂玉槽位和一个鉴定按钮。
| 界面配置 | 默认标识 | 作用 |
|---|---|---|
button.jade | A | 放置未鉴定魂玉 |
button.button | Y | 执行鉴定 |
玩家点击背包内的魂玉后,物品会进入鉴定槽位。鉴定按钮的描述支持显示本次成功率、所需金币和玩家持有金币。
| 界面变量 | 内容 |
|---|---|
{chance} | 本次鉴定成功率 |
{need_eco} | 本次鉴定所需金币 |
{has_eco} | 玩家当前持有金币 |
鉴定流程
- 玩家点击背包内的未鉴定魂玉,将其放入鉴定槽位。
- 界面显示成功率、所需金币和玩家当前金币。
- 玩家点击鉴定按钮。
- 插件按照
appraisal-chance判断本次鉴定是否成功。 - 鉴定成功后,从当前魂玉的词条池中抽取词条。
- 插件按照
entry-format重建魂玉描述。 - 插件执行
appraisal-success-commands中配置的成功指令。
appraisal-chance 使用 0 至 1 的数值。例如 0.8 表示配置成功率为 80%。
鉴定消耗
| 配置项 | 说明 |
|---|---|
appraisal-chance | 鉴定成功率,取值范围为 0 至 1 |
appraisal-eco | 每次鉴定所需金币 |
appraisal-success-commands | 鉴定成功后执行的指令列表 |
appraisal-eco 使用字符串配置,支持 PlaceholderAPI 变量和四则运算表达式。PlaceholderAPI 在插件中属于软依赖,表达式使用相关变量时需要服务器已安装并正常加载 PlaceholderAPI。
yaml
appraisal-chance: 0.8
appraisal-eco: '10000'
appraisal-success-commands: []词条生成
鉴定成功后,插件会从当前魂玉的 entry 词条池中抽取 spawn-entry-count 条词条。
| 配置项 | 说明 |
|---|---|
spawn-entry-count | 鉴定成功时生成的词条数量 |
entry | 当前魂玉可以生成的词条池 |
entry.<词条 ID>.lore | 词条显示内容和随机数值规则 |
entry.<词条 ID>.weight | 词条的抽取权重 |
权重用于控制不同词条被抽中的相对概率。权重越高,对应词条越容易被抽中。
词条 ID 会参与魂玉数据识别。魂玉投入使用后,不应随意修改已有词条 ID,否则旧物品可能无法继续正确对应原词条。
词条数值表达式
词条描述可以生成一个或多个随机数值,并通过 {strength} 显示本次词条的强度。
yaml
entry:
物理伤害:
lore: '&e物理伤害 {10-20-%.0f}-{20-40-%.0f} &7(强度{strength}&7)'
weight: 10
伤害加成:
lore: '&e伤害加成 +{1-10-%.1f}% &7(强度{strength}&7)'
weight: 10| 内容 | 作用 |
|---|---|
{10-20-%.0f} | 在 10 至 20 之间生成数值,并且不保留小数 |
{20-40-%.0f} | 在 20 至 40 之间生成数值,并且不保留小数 |
{1-10-%.1f} | 在 1 至 10 之间生成数值,并且保留一位小数 |
{strength} | 当前词条强度 |
同一条 lore 可以包含多个随机数值表达式。例如物理伤害示例会在同一词条中生成两段数值。
熔铸
熔铸界面使用两个已鉴定魂玉。A 槽保存需要继续使用的主魂玉,B 槽提供新词条并在熔铸过程中被扣除。
熔铸槽位
熔铸界面由固定文件 熔炼界面.yml 控制,文件名不可修改。
| 界面配置 | 默认标识 | 作用 |
|---|---|---|
button.jade-a | A | 放入需要保留的主魂玉 |
button.jade-b | B | 放入提供词条并会被扣除的副魂玉 |
button.keep-result | < | 保留主魂玉原来的词条 |
button.replace-result | > | 使用本次获得的新词条 |
button.button | Y | 执行熔铸 |
button.material | X | 显示熔铸所需材料 |
尖括号槽位标识在文档中应写为代码形式,例如 < 和 >,避免被页面解析器识别为标签。
材料槽位的 template 会追加到目标材料的描述底部。默认模板支持以下变量:
| 界面变量 | 内容 |
|---|---|
{need} | 当前材料的需求数量 |
{current} | 玩家当前拥有的材料数量 |
熔铸按钮还支持显示以下信息:
| 界面变量 | 内容 |
|---|---|
{chance} | 界面显示的成功率 |
{need_eco} | 本次熔铸所需金币 |
{has_eco} | 玩家当前持有金币 |
熔铸流程
- 将需要继续使用的已鉴定魂玉放入 A 槽。
- 将提供词条的已鉴定魂玉放入 B 槽。
- 插件检查两个物品是否可以参与熔铸。
- 插件检查主魂玉的熔铸次数是否达到上限。
- 插件检查玩家的金币和材料是否满足要求。
- 插件从两个魂玉内各抽取一条词条。
- B 槽魂玉被扣除,其抽取到的词条作为本次新词条。
- 玩家通过结果槽选择保留旧词条,或者将主魂玉抽取到的旧词条替换为新词条。
- 熔铸完成后增加主魂玉的熔铸次数。
- 插件执行
smelt-success-commands中配置的成功指令。
A 槽魂玉是最终结果的基础物品。B 槽魂玉属于消耗品,放入前应确认物品是否可以被扣除。
词条数量限制
spawn-entry-count 不仅决定鉴定生成的词条数量,也参与熔铸处理。
熔铸时需要从两个魂玉内各抽取一条词条,因此 spawn-entry-count 不能低于 2。配置为小于 2 的数值会导致熔铸流程无法成立。
按照魂玉配置文件中的规则,熔铸时重新抽取的词条数为 spawn-entry-count - 2。
yaml
spawn-entry-count: 3熔铸消耗
熔铸可以同时消耗金币和物品材料。材料不足或金币不足时,熔铸不会继续。
| 配置项 | 说明 |
|---|---|
smelet-material | 熔铸所需材料列表 |
smelet-eco | 熔铸所需金币 |
max-smelet-count | 单个魂玉允许熔铸的最大次数 |
smelt-success-commands | 熔铸成功后执行的指令列表 |
配置键中的 smelet 是插件实际使用的拼写,不能改写为 smelt。
金币与次数
smelet-eco 使用字符串配置,支持 PlaceholderAPI 变量、{count} 和四则运算表达式。{count} 表示当前熔铸次数,可以用于让消耗随熔铸次数增加。
yaml
smelet-eco: '10000*(1+{count})'
max-smelet-count: 100max-smelet-count 设置为 -1 时,不限制最大熔铸次数。
材料格式
熔铸材料使用“插件缩写加物品 ID”的格式配置。
yaml
smelet-material:
'MM@魂玉精粹': '5*{count}'| 插件缩写 | 配置格式 |
|---|---|
MM | MM@物品ID |
NI | NI@物品ID |
SI | SI@物品ID |
ZAP | ZAP@物品ID |
材料数量使用字符串配置,支持 PlaceholderAPI 变量、{count} 和四则运算表达式。熔铸界面会显示每种材料的需求数量与玩家当前拥有数量。
对应物品来源插件必须已经安装并能提供配置中的物品 ID,否则插件无法正常识别所需材料。
误操作保护
prevent-mishandling-lore 用于防止绑定物品或其他重要物品被放入熔铸副槽。
插件会对 B 槽物品的描述进行关键词匹配。只要物品描述包含列表中的任意关键词,该物品就不能作为会被消耗的副魂玉,并会发送 message.禁止熔铸 配置的消息。
yaml
prevent-mishandling-lore:
- '已绑定'该限制只保护 B 槽。需要保护的标记必须实际出现在物品描述中,并与配置的关键词匹配。
强度机制
词条强度会影响随机数值结果,并可以通过 {strength} 插入词条描述。插件还提供强度随机方式、熔铸强度处理和显示替换功能。
强度随机分布
| 配置项 | 值 | 效果 |
|---|---|---|
strength-average-three-enable | false | 使用普通的强度随机结果 |
strength-average-three-enable | true | 降低极高和极低强度出现的概率,使结果更集中在 50% 附近 |
yaml
strength-average-three-enable: false熔铸强度处理
| 配置项 | 值 | 效果 |
|---|---|---|
smelt-reroll-strength-enable | true | 熔铸时重新随机抽取词条强度 |
smelt-reroll-strength-enable | false | 熔铸时保留提取到的词条强度 |
smelt-keep-strength-high-priority-enable | true | 不重新随机强度时,优先选择较高的强度值 |
smelt-keep-strength-high-priority-enable | false | 不启用高强度优先处理 |
smelt-keep-strength-high-priority-enable 仅在 smelt-reroll-strength-enable: false 时生效。
yaml
smelt-reroll-strength-enable: false
smelt-keep-strength-high-priority-enable: false强度显示替换
默认配置可以将 1 至 100 的强度数字替换为分段进度标记。
| 配置项 | 说明 |
|---|---|
strengthen-replace-enable | 是否启用强度文本替换 |
strengthen-replace-text | 按强度范围配置替换后的显示文本 |
当 strengthen-replace-enable 为 false 时,{strength} 正常显示 1 至 100 的数字。当其为 true 时,插件会根据强度所在范围读取 strengthen-replace-text 中的文本。
yaml
strengthen-replace-enable: true
strengthen-replace-text:
1-5: '&a|&7|||||||||||||||||||'
6-10: '&a||&7||||||||||||||||||'
96-100: '&a||||||&e||||||&6||||||&c||'范围键使用 最小值-最大值 的格式。默认配置以每五点强度为一个区间,覆盖 1-5 至 96-100。
魂玉描述更新
鉴定和熔铸后的魂玉会按照 entry-format 重新排列描述。默认结构先显示生成的词条,再显示当前熔铸次数。
yaml
entry-format:
- '{entry}'
- '&7已熔铸次数: &6{count}/{count_max}'| 变量 | 内容 |
|---|---|
{entry} | 已生成的魂玉词条内容 |
{count} | 当前熔铸次数 |
{count_max} | 最大熔铸次数 |
修改 entry-format 时应保留需要显示的数据变量。移除 {entry} 后,生成的词条将无法通过该格式显示。
高强度词条公告
插件可以在鉴定或熔铸产生高强度词条时发送全服公告。
| 配置项 | 说明 |
|---|---|
entry-message-enable | 是否启用鉴定和熔铸词条公告 |
entry-message-min-value | 触发全服公告所需的最低强度 |
entry-message-text | 全服公告内容 |
只有词条强度达到或超过 entry-message-min-value 时才会公告。
yaml
entry-message-enable: true
entry-message-min-value: 90
entry-message-text: '&7恭喜玩家 &a{player}&7 的 {item} &7获得了 &e{value}强度&7 的词条: {entry}'公告文本支持以下变量:
| 变量 | 内容 |
|---|---|
{player} | 获得词条的玩家名 |
{item} | 魂玉物品名 |
{value} | 词条强度 |
{entry} | 生成或熔铸得到的词条内容 |
成功指令
appraisal-success-commands 和 smelt-success-commands 分别在鉴定成功与熔铸成功后执行。
yaml
appraisal-success-commands: []
smelt-success-commands: []两种成功指令均支持以下变量:
| 变量 | 内容 |
|---|---|
{player} | 玩家名 |
{item} | 物品名 |
{souljade} | 魂玉 ID |
{count} | 当前熔铸次数 |
{count_max} | 最大熔铸次数 |
指令属于具体魂玉配置,不同魂玉可以配置不同的鉴定成功指令和熔铸成功指令。
消息与音效反馈
鉴定与熔铸流程会使用 config.yml 中的消息和音效提供操作反馈。
| 事件 | 消息配置 | 音效配置 |
|---|---|---|
| 鉴定成功 | message.鉴定成功 | sound.appraisal-success |
| 鉴定失败 | message.鉴定失败 | sound.appraisal-failed |
| 物品不是未鉴定魂玉 | message.不是魂玉 | 无已确认配置 |
| 熔铸成功 | message.熔铸成功 | sound.smelt-success |
| 保留旧词条 | message.熔铸保留 | 无已确认配置 |
| 物品无法熔铸 | message.无法熔铸 | 无已确认配置 |
| 副槽触发防误熔保护 | message.禁止熔铸 | 无已确认配置 |
| 材料不足 | message.材料不足 | 无已确认配置 |
| 金币不足 | message.金币不足 | 无已确认配置 |
| 放入或取回物品 | 无已确认消息配置 | sound.pick-or-upload-success |
熔铸成功消息支持显示被替换词条、获得词条和熔铸次数。
| 消息变量 | 内容 |
|---|---|
{entry_a} | 主魂玉被替换的旧词条 |
{entry_b} | 从副魂玉获得的新词条 |
{count} | 当前熔铸次数 |
{count_max} | 最大熔铸次数 |
不同 Minecraft 版本使用的音效名称可能不同。默认配置同时给出了旧版本音效名称的注释,例如 ENTITY_EXPERIENCE_ORB_PICKUP 对应旧版本的 ORB_PICKUP,BLOCK_GLASS_BREAK 对应旧版本的 GLASS。
MySQL 数据存储
插件配置包含可选的 MySQL 存储开关。启用 mysql.enable 后,需要安装 LyMySQLCore,并确保 LyMySQLCore 已成功连接数据库,相关数据库存储功能才会生效。
MySQL 开关需要重启服务器后生效。数据库连接参数及完整配置说明请查看配置页面。