Skip to content

配置说明

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'

同一个物品不应通过多个配置项重复读取,否则其中的符文属性可能被重复加入属性列表。

支持的槽位来源

来源格式说明
DragonCoreDragonCore#槽位名读取 DragonCore 缓存槽位中的物品。
GermPluginGermPlugin#槽位名读取 GermPlugin 身份槽位中的物品。
APInventoryAPInventory#分页ID#槽位ID读取 APInventory 指定分页的槽位;默认配置注释标明槽位范围为 053
LyInventoryLyInventory#背包ID#类型通过 LyInventory API 读取指定背包类型的物品。
LyInventoryReloadLyInventoryReload#背包ID#类型LyInventory 使用相同的读取接口,用于重置版配置名称。
YeeJewelryYeeJewelry#文件ID#槽位ID通过 YeeJewelry API 读取指定槽位。
PXRPGPXRPG#类型#背包ID#槽位读取 PXRPG 装备容器中的指定槽位。
MinecraftMinecraft#槽位ID通过原版玩家背包槽位编号读取物品;默认配置注释标明范围为 036
OriginOrigin#MainHand读取原版主手物品。
OriginOrigin#OffHand读取原版副手物品。
OriginOrigin#Helmet读取头盔槽位。
OriginOrigin#ChestPlate读取胸甲槽位。
OriginOrigin#Legging读取护腿槽位。
OriginOrigin#Boots读取靴子槽位。
Origin2Origin2#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 格。

  • 035:显示已镶嵌符文,每页最多显示 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:0341: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-nameSuffix 拼接成空槽位文本。例如:

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-nameuse-slot-name

镶嵌时会执行以下操作:

  1. 检查点击物品是否包含有效的 rune_id
  2. 检查装备 Lore 是否包含该符文对应的空槽位。
  3. 将第一个匹配的空槽位替换为 slot-name
  4. 向装备 rune_data 中写入一条带随机 UUID 的符文记录。
  5. 消耗一个符文物品。

拆卸时会执行以下操作:

  1. 从装备 rune_data 读取已镶嵌符文。
  2. 在界面上显示对应的符文物品,每页最多 36 个。
  3. 点击符文后,在装备 Lore 中查找对应的已填充槽位。
  4. 查找符文 ID 与槽位字符都匹配的 NBT 记录。
  5. 将 Lore 还原为空槽位,删除对应 NBT 记录并返还一个符文物品。

直接修改或删除已经镶嵌使用的符文 ID、use-slot-nameslot-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 新节点
IDid
Namename
Lorelore
Enchantenchant
StatsListstats-list
UseSlotNameuse-slot-name
SlotNameslot-name

转换过程会在控制台输出每个文件与符文 ID 的处理结果。转换完成后,执行 /lzr reload 重新注册生成的符文配置。