配置说明
LyZFRunes 的配置由主配置文件 config.yml 与符文目录 RunesItem 组成。
config.yml:设置属性接入、属性生效槽位、符文界面、槽位识别格式、动作和消息。RunesItem/*.yml:定义符文物品、符文属性和对应的装备槽位字符。
执行 /lzr reload 可以重新读取 config.yml、重新注册 RunesItem 目录内的符文,并刷新属性扫描任务。attribute-plugin 的默认配置注释要求修改后重启服务器;切换属性插件时应完整重启,确保对应前置完成注册。
主配置文件
主配置文件位于:
text
plugins/LyZFRunes/config.yml属性插件
attribute-plugin 决定插件将符文的 stats-list 提交给哪个属性系统。
yaml
attribute-plugin: 'SX-Attribute3'| 配置值 | 作用 | 当前实现情况 |
|---|---|---|
AttributePlus | 将符文属性列表添加到 AttributePlus。 | 已实现属性提交。 |
SX-Attribute2 | 使用 SX-Attribute 2.x 解析并设置属性。 | 已实现;服务器中的插件名称必须为 SX-Attribute,版本号必须以 2 开头。 |
SX-Attribute3 | 使用 SX-Attribute 3.x 解析并设置属性。 | 已实现;服务器中的插件名称必须为 SX-Attribute,版本号必须以 3 开头。 |
AttributeSystem | 将符文属性列表添加到 AttributeSystem。 | 已实现属性提交。 |
ItemLoreOrigin | 选择 ItemLoreOrigin 属性接入。 | 当前属性提交代码未启用,配置该值不会实际添加符文属性。 |
| 空字符串 | 不接入属性系统。 | 符文仍可镶嵌和拆卸,但 stats-list 不会提交给属性插件。 |
属性内容直接来自每个符文的 stats-list。具体属性格式由所选属性插件决定,LyZFRunes 不会转换属性名称或数值格式。
属性插件的检测与注册在插件启动阶段执行。只修改 attribute-plugin 后执行重载,不能代替前置插件的启动与注册过程。
属性生效槽位
attribute-slot 是一个字符串列表。插件会读取列表中的物品,查找物品保存的符文数据,再汇总对应符文的 stats-list。
yaml
attribute-slot:
- 'Origin#MainHand'
- 'Origin#Helmet'
- 'Minecraft#0'同一个物品不应通过多个配置项重复读取,否则其中的符文属性可能被重复加入属性列表。
支持的槽位来源
| 来源 | 格式 | 说明 |
|---|---|---|
DragonCore | DragonCore#槽位名 | 读取 DragonCore 缓存槽位中的物品。 |
GermPlugin | GermPlugin#槽位名 | 读取 GermPlugin 身份槽位中的物品。 |
APInventory | APInventory#分页ID#槽位ID | 读取 APInventory 指定分页的槽位;默认配置注释标明槽位范围为 0 至 53。 |
LyInventory | LyInventory#背包ID#类型 | 通过 LyInventory API 读取指定背包类型的物品。 |
LyInventoryReload | LyInventoryReload#背包ID#类型 | 与 LyInventory 使用相同的读取接口,用于重置版配置名称。 |
YeeJewelry | YeeJewelry#文件ID#槽位ID | 通过 YeeJewelry API 读取指定槽位。 |
PXRPG | PXRPG#类型#背包ID#槽位 | 读取 PXRPG 装备容器中的指定槽位。 |
Minecraft | Minecraft#槽位ID | 通过原版玩家背包槽位编号读取物品;默认配置注释标明范围为 0 至 36。 |
Origin | Origin#MainHand | 读取原版主手物品。 |
Origin | Origin#OffHand | 读取原版副手物品。 |
Origin | Origin#Helmet | 读取头盔槽位。 |
Origin | Origin#ChestPlate | 读取胸甲槽位。 |
Origin | Origin#Legging | 读取护腿槽位。 |
Origin | Origin#Boots | 读取靴子槽位。 |
Origin2 | Origin2#MainHand | 使用旧版 Bukkit 接口读取当前手持物品。 |
使用扩展槽位来源时,服务器必须安装并正常启动对应插件,否则该槽位无法被读取。
配置示例
yaml
attribute-slot:
- 'DragonCore#项链'
- 'GermPlugin#戒指'
- 'APInventory#饰品#3'
- 'LyInventory#饰品#项链'
- 'LyInventoryReload#饰品#项链'
- 'YeeJewelry#饰品#戒指'
- 'PXRPG#饰品#默认背包#项链'
- 'Origin#MainHand'
- 'Origin#OffHand'
- 'Origin#Helmet'
- 'Origin#ChestPlate'
- 'Origin#Legging'
- 'Origin#Boots'
- 'Minecraft#0'attribute-slot 中的字符串通过 # 分段读取,段数或位置错误可能导致槽位读取失败。请严格按照对应格式填写。
界面配置
符文界面固定为 54 格。
0至35:显示已镶嵌符文,每页最多显示 36 个。40:显示使用说明物品。45:上一页按钮。49:待操作装备槽位。53:下一页按钮。- 其他底部槽位:使用填充物品封锁。
界面会根据装备内保存的符文数量计算页数。关闭界面时,如果第 49 格仍有装备,插件会将装备返还给玩家;背包没有空位时,物品会掉落在玩家所在位置。
界面节点
| 节点 | 类型 | 说明 |
|---|---|---|
gui.title | 字符串 | 界面标题,支持 & 颜色代码。 |
gui.fill-item | 字符串 | 底部封锁槽位使用的物品材质。 |
gui.fill-name | 字符串 | 填充物品名称,支持 & 颜色代码。 |
gui.last-item | 字符串 | 上一页按钮的物品材质。 |
gui.last-name | 字符串 | 上一页按钮名称。 |
gui.next-item | 字符串 | 下一页按钮的物品材质。 |
gui.next-name | 字符串 | 下一页按钮名称。 |
gui.empty-item | 字符串 | 未显示符文时使用的空槽位物品。 |
gui.empty-name | 字符串 | 空槽位物品名称。 |
gui.info-item | 字符串 | 使用说明按钮的物品材质。 |
gui.info-name | 字符串 | 使用说明按钮名称。 |
gui.info-lore | 字符串列表 | 使用说明按钮的 Lore,支持 & 颜色代码。 |
物品材质配置支持旧版数字 ID 与附加值格式,例如 160:0、341:0。代码也会尝试读取当前服务端可识别的英文材质名称。若材质无法识别,物品构建逻辑会回退为石头。
完整界面配置
yaml
gui:
title: '&0符文'
fill-item: '160:0'
fill-name: '&7封锁'
last-item: '341:0'
last-name: '&6上一页'
next-item: '341:0'
next-name: '&6下一页'
empty-item: '166:0'
empty-name: '&7'
info-item: '61:0'
info-name: '&7使用说明'
info-lore:
- ''
- '&7先点击装备,即可将装备放置到下方槽位中。'
- '&7然后点击背包内的符文即可尝试刻印符文。'
- '&7或者点击上方符文即可尝试拆卸符文。'符文槽位识别
Distinguish 设置装备 Lore 中符文槽位的前缀和后缀。
yaml
Distinguish:
Prefix: '&f【'
Suffix: '&f】'| 节点 | 默认值 | 说明 |
|---|---|---|
Distinguish.Prefix | &f【 | 符文槽位文本的前缀。 |
Distinguish.Suffix | &f】 | 符文槽位文本的后缀。 |
插件会将 Prefix、符文的 use-slot-name 和 Suffix 拼接成空槽位文本。例如:
yaml
Distinguish:
Prefix: '&f【'
Suffix: '&f】'符文配置为:
yaml
use-slot-name: '&f○'
slot-name: '&4Æ'对应的装备空槽位为:
text
&f【&f○&f】镶嵌成功后,插件只替换 Lore 中第一个匹配的空槽位:
text
&f【&4Æ&f】同时,插件会把符文 ID、空槽位字符和已填充槽位字符保存到装备 NBT 中。拆卸时必须同时找到匹配的 Lore 文本和 NBT 符文记录,才能还原槽位并返还符文物品。
颜色代码会在读取时由 & 转换为 Minecraft 颜色符号。装备 Lore、Distinguish 和符文槽位字符必须使用一致的颜色与字符,否则插件无法识别空槽位。
动作配置
action 节点用于在界面操作发生时执行动作表达式。每个动作节点都是字符串列表,空列表表示不执行任何动作。
| 节点 | 触发时机 |
|---|---|
action.put-in-equip | 玩家把背包物品放入界面装备槽位时。 |
action.take-down-equip | 玩家从界面装备槽位取回物品时。 |
action.inlay-success | 符文成功镶嵌并被消耗后。 |
action.inlay-failed | 点击的物品不是有效符文,或装备没有对应空槽位时。 |
action.disassemble-success | 成功拆卸符文并返还符文物品后。 |
action.disassemble-failed | 符文配置不存在,或装备内对应符文记录无法拆除时。 |
当前项目能够确认的动作方法只有 方法.音效:
yaml
action:
put-in-equip:
- "方法.音效('BLOCK_CLOTH_PLACE')"
take-down-equip:
- "方法.音效('BLOCK_CLOTH_PLACE')"
inlay-success:
- "方法.音效('ORB_PICKUP')"
- "方法.音效('ENTITY_EXPERIENCE_ORB_PICKUP')"
inlay-failed: []
disassemble-success:
- "方法.音效('ORB_PICKUP')"
- "方法.音效('ENTITY_EXPERIENCE_ORB_PICKUP')"
disassemble-failed: []方法.音效('音效枚举名') 会在玩家当前位置播放音效,音量和音调均为 1。音效名称必须存在于当前服务端版本的 Bukkit Sound 枚举中。不同 Minecraft 版本的音效名称可能不同,因此默认配置同时列出了旧版与新版经验球音效;不存在的音效只会在控制台输出错误,不会播放。
不要在配置中填写项目文件未提供的方法名。
消息配置
message 设置镶嵌与拆卸过程中的玩家提示,支持 & 颜色代码。
| 节点 | 触发条件 |
|---|---|
message.not-rune | 玩家点击的物品没有有效的符文 ID,或符文 ID 未注册。 |
message.not-slot | 当前装备没有该符文需要的空槽位。 |
message.inlay-success | 符文镶嵌成功。 |
message.disassemble-success | 符文拆卸成功。 |
yaml
message:
not-rune: '&7你点击的物品不是符文,无法进行刻印。'
not-slot: '&7你点击的符文在该装备上没有对应的符文孔。'
inlay-success: '&7刻印成功!'
disassemble-success: '&7拆卸成功!'符文配置不存在、符文已被移除等部分拆卸错误使用程序内置消息,不受 message 节点控制。
将某个消息节点设置为空字符串可以关闭该条配置消息:
yaml
message:
inlay-success: ''符文配置文件
符文文件存放在:
text
plugins/LyZFRunes/RunesItem插件会递归扫描该目录及其子目录中的所有 .yml 文件。每个 YAML 顶级节点都是符文 ID,执行 /lzr give 时使用的符文 ID也来自这里。
符文配置文件可以自由拆分并放入子目录。插件重载时会清空已注册符文,再重新读取所有文件。
符文节点
| 节点 | 类型 | 必填情况 | 说明 |
|---|---|---|---|
| 顶级节点 | 字符串 | 必填 | 符文 ID,例如 示例符文1。 |
name | 字符串 | 必填 | 符文物品名称,支持 & 颜色代码。 |
enchant | 布尔值 | 必填 | 是否添加一级幸运附魔,用于显示附魔光效。 |
id | 字符串 | 必填 | 符文物品材质,支持旧版数字 ID 与附加值格式。 |
lore | 字符串列表 | 可选 | 符文物品 Lore;未配置时使用空列表。 |
stats-list | 字符串列表 | 可选 | 镶嵌后提交给属性插件的属性文本;未配置时使用空列表。 |
use-slot-name | 字符串 | 必填 | 镶嵌前装备必须具有的空槽位字符。 |
slot-name | 字符串 | 必填 | 镶嵌后写入装备 Lore 的槽位字符。 |
原页面将 use-slot-name 描述为是否限制槽位名称,这与当前实现不符。该节点不是布尔开关,而是用于匹配装备空槽位的字符串。
完整符文配置
yaml
示例符文1:
name: '&c狂暴之嗜血符文'
enchant: true
id: '351:1'
lore:
- '&c镶嵌后增加攻击及吸血'
stats-list:
- '攻击力: 10 - 20'
- '吸血几率: +10%'
- '吸血倍率: +20%'
use-slot-name: '&f○'
slot-name: '&4Æ'多个符文配置
yaml
攻击符文:
name: '&c攻击符文'
enchant: true
id: '351:1'
lore:
- '&7可镶嵌到攻击符文孔。'
stats-list:
- '攻击力: 10 - 20'
use-slot-name: '&f○'
slot-name: '&c攻'
防御符文:
name: '&9防御符文'
enchant: false
id: '351:4'
lore:
- '&7可镶嵌到防御符文孔。'
stats-list:
- '防御力: 10 - 20'
use-slot-name: '&f◇'
slot-name: '&9防'不同文件中的符文 ID 也不能重复。发生重复时,后读取的同名符文会覆盖先前注册的数据,而文件扫描顺序不应作为稳定规则依赖。
符文数据机制
插件使用两类 NBT 数据识别符文与装备:
| NBT 键 | 所在物品 | 作用 |
|---|---|---|
rune_id | 符文物品 | 保存符文 ID,用于判断玩家点击的物品是否为已注册符文。 |
rune_data | 已镶嵌装备 | 保存装备内全部符文记录。每条记录包含符文 ID、slot-name 和 use-slot-name。 |
镶嵌时会执行以下操作:
- 检查点击物品是否包含有效的
rune_id。 - 检查装备 Lore 是否包含该符文对应的空槽位。
- 将第一个匹配的空槽位替换为
slot-name。 - 向装备
rune_data中写入一条带随机 UUID 的符文记录。 - 消耗一个符文物品。
拆卸时会执行以下操作:
- 从装备
rune_data读取已镶嵌符文。 - 在界面上显示对应的符文物品,每页最多 36 个。
- 点击符文后,在装备 Lore 中查找对应的已填充槽位。
- 查找符文 ID 与槽位字符都匹配的 NBT 记录。
- 将 Lore 还原为空槽位,删除对应 NBT 记录并返还一个符文物品。
直接修改或删除已经镶嵌使用的符文 ID、use-slot-name、slot-name,可能导致旧装备中的符文无法正常显示或拆卸。需要调整这些节点时,应先处理已流通装备。
完整主配置示例
yaml
attribute-plugin: ''
attribute-slot:
- 'Origin#MainHand'
gui:
title: '&0符文'
fill-item: '160:0'
fill-name: '&7封锁'
last-item: '341:0'
last-name: '&6上一页'
next-item: '341:0'
next-name: '&6下一页'
empty-item: '166:0'
empty-name: '&7'
info-item: '61:0'
info-name: '&7使用说明'
info-lore:
- ''
- '&7先点击装备,即可将装备放置到下方槽位中。'
- '&7然后点击背包内的符文即可尝试刻印符文。'
- '&7或者点击上方符文即可尝试拆卸符文。'
Distinguish:
Prefix: '&f【'
Suffix: '&f】'
action:
put-in-equip:
- "方法.音效('BLOCK_CLOTH_PLACE')"
take-down-equip:
- "方法.音效('BLOCK_CLOTH_PLACE')"
inlay-success:
- "方法.音效('ORB_PICKUP')"
- "方法.音效('ENTITY_EXPERIENCE_ORB_PICKUP')"
inlay-failed: []
disassemble-success:
- "方法.音效('ORB_PICKUP')"
- "方法.音效('ENTITY_EXPERIENCE_ORB_PICKUP')"
disassemble-failed: []
message:
not-rune: '&7你点击的物品不是符文,无法进行刻印。'
not-slot: '&7你点击的符文在该装备上没有对应的符文孔。'
inlay-success: '&7刻印成功!'
disassemble-success: '&7拆卸成功!'ZF-Runes 配置转换
/lzr load 会递归读取:
text
plugins/ZF-Runes/RunesItem转换后的文件保存到:
text
plugins/LyZFRunes/RunesItem/ZF-Runes转换关系如下:
| ZF-Runes 旧节点 | LyZFRunes 新节点 |
|---|---|
ID | id |
Name | name |
Lore | lore |
Enchant | enchant |
StatsList | stats-list |
UseSlotName | use-slot-name |
SlotName | slot-name |
转换过程会在控制台输出每个文件与符文 ID 的处理结果。转换完成后,执行 /lzr reload 重新注册生成的符文配置。