Skip to content

配置说明

LyGemSoulRing 的配置由两部分组成:

文件位置用途
plugins/LyGemSoulRing/config.yml设置宝石来源、装备槽位、释放方式、冷却、指令动作、显示数量和动画参数
plugins/LyGemSoulRing/soulring/*.yml按宝石 ID 定义魂环贴图、尺寸、位置、旋转和动画列表

执行 /lgsr reload 可以重新读取主配置、动画配置和 soulring 目录中的全部 YAML 文件。该指令仅限管理员使用。

主配置

宝石来源

yaml
gem-plugin: 'LyGemReload'

gem-plugin 决定插件从装备物品中读取哪一种宝石数据。

说明
LyGemReload通过 LyGemReload API 读取物品中的全部宝石 ID
YeeGem通过 YeeGem API 读取物品中的宝石 ID

配置值不区分大小写。使用对应来源前,服务器必须安装并正常加载相应宝石插件。

魂环配置的顶层名称必须与宝石插件返回的宝石 ID 完全对应,否则该宝石不会生成魂环。

装备槽位

yaml
plugin-slot:
  - 'Origin#MainHand'

plugin-slot 用于设置需要扫描的装备位置。插件会按列表顺序读取每个槽位,将其中的宝石 ID 汇总后匹配魂环配置。

当前版本同时兼容旧版单字符串写法,但建议始终使用 YAML 列表:

yaml
plugin-slot:
  - 'Origin#MainHand'
  - 'Origin#Helmet'
  - 'DragonCore#戒指槽位'
格式说明
DragonCore#槽位名读取 DragonCore 缓存槽位
GermPlugin#槽位标识读取萌芽引擎槽位
LyInventory#背包ID#类型读取旧版 LyInventory 指定槽位
LyInventoryReload#背包ID#类型读取 LyInventoryReload 指定槽位
YeeJewelry#背包ID#槽位ID读取 YeeJewelry 指定槽位
Minecraft#槽位ID读取原版玩家背包中的指定槽位
Origin#MainHand读取原版主手物品
Origin#OffHand读取原版副手物品
Origin#Helmet读取原版头盔
Origin#ChestPlate读取原版胸甲
Origin#Legging读取原版护腿
Origin#Boots读取原版靴子

Minecraft#槽位ID 的默认配置注释标明槽位范围为 0-35

槽位格式必须包含对应数量的 # 分段。格式错误、槽位不存在、物品为空或物品没有物品元数据时,该槽位不会提供宝石数据。

释放按键

yaml
show-soulring-key: 'Z'

show-soulring-key 设置 DragonCore 客户端按键。插件监听按键释放事件,玩家松开对应按键后,会在绽放和收回魂环之间切换。

配置重载时会重新向 DragonCore 注册该按键。按键名称无效时,控制台会提示注册失败,但玩家仍可使用 /lgsr show 切换魂环。

魂环展开后不会因为玩家更换装备自动收回。再次按键或执行 /lgsr show 才会收回。

释放冷却

yaml
show-soulring-cooldown: 10000
show-soulring-cooldown-message: '&c魂环绽放冷却中,还需{time}秒!'
配置项类型默认值说明
show-soulring-cooldown整数10000再次绽放魂环需要等待的时间,单位为毫秒
show-soulring-cooldown-message字符串&c魂环绽放冷却中,还需{time}秒!冷却未结束时发送给玩家的消息

冷却只限制绽放魂环,不限制收回魂环。冷却从成功开始绽放时计算。

占位符说明
{time}剩余冷却秒数,保留一位小数

释放与收回指令

yaml
show-soulring-command:
  # - '[console]tell %player_name% 你释放了魂环'

hide-soulring-command:
  # - '[console]tell %player_name% 你收回了魂环'
配置项触发时间
show-soulring-command玩家成功读取到有效魂环并开始绽放时
hide-soulring-command玩家主动收回已经展开的魂环时

每一项指令都会先经过 PlaceholderAPI 变量解析,再根据前缀决定执行身份。

写法执行方式
[console]指令由控制台执行
[op]指令临时给予玩家管理员身份,以玩家身份执行,完成后恢复原状态
指令直接以玩家身份执行

指令内容不需要填写开头的 /。玩家名可使用 PlaceholderAPI 提供的 %player_name% 等变量;项目代码没有为动作指令提供 {player} 占位符。

如果没有安装 PlaceholderAPI,动作指令的变量解析功能无法正常使用。plugin.yml 将 PlaceholderAPI 声明为软依赖。

当扫描结果中没有任何已配置的魂环时,插件会取消展开状态并向玩家发送“你没有魂环!”,此时不会执行 show-soulring-command

数量、尺寸与显示间隔

yaml
max-soulring: 10
soulring-scale: 4
show-soulring-delay: 5
配置项类型默认读取值说明
max-soulring整数10单个玩家最多显示的魂环数量
soulring-scale小数0.35后续每层魂环相对上一层增加的宽度和高度
show-soulring-delay整数0定时展示魂环时两次处理之间的间隔,单位为服务器 Tick

soulring-scale 不是整体缩放倍率。插件会根据魂环序号计算尺寸:

text
最终宽度 = 配置宽度 + 魂环序号 × soulring-scale
最终高度 = 配置高度 + 魂环序号 × soulring-scale

第一个魂环序号为 0,因此保持配置文件中的基础宽高;后续魂环按顺序逐层增加。

show-soulring-delay 会直接作为 Bukkit 定时任务的周期参数使用。通常 20 Tick 约为 1 秒,实际速度会受到服务器运行状态影响。

当前实现会先向在线玩家发送匹配到的魂环贴图,同时再启动按 show-soulring-delay 处理的定时任务。因此该配置用于控制后续定时发送间隔,不代表首次显示前的等待时间。

动画配置

三组动画参数都位于 config.yml。魂环文件通过 animationList 选择需要应用的动画。

动画参数会在插件启动或执行 /lgsr reload 时重新创建并载入。

旋转动画

yaml
RotateAnimation:
  delay: 1000
  angle: 360.0
  duration: 3000
  cycleCount: 1
  fixed: true
  resetTime: 1
配置项类型默认读取值说明
RotateAnimation.delay整数0动画开始延迟
RotateAnimation.angle小数360单次旋转角度
RotateAnimation.duration整数6000单次旋转持续时间
RotateAnimation.cycleCount整数1动画循环次数
RotateAnimation.fixed布尔值true是否使用固定动画状态
RotateAnimation.resetTime整数1动画重置时间参数

旋转方向由插件固定为 DragonCore 世界贴图动画的 z 方向,配置文件中没有单独的方向选项。

位移动画

yaml
TranslateAnimation:
  delay: 0
  distance: 2
  duration: 1000
  cycleCount: 1
  fixed: true
配置项类型默认读取值说明
TranslateAnimation.delay整数0动画开始延迟
TranslateAnimation.distance小数1.1位移动画距离
TranslateAnimation.duration整数3000单次位移动画持续时间
TranslateAnimation.cycleCount整数1动画循环次数
TranslateAnimation.fixed布尔值true是否使用固定动画状态

位移动画方向由插件固定为 DragonCore 世界贴图动画的 z 方向。

缩放动画

yaml
ScaleAnimation:
  delay: 0
  cycleCount: 1
  fixed: false
  fromScale: 10.0
  toScale: 1.0
  duration: 1000
配置项类型默认读取值说明
ScaleAnimation.delay整数0动画开始延迟
ScaleAnimation.cycleCount整数1动画循环次数
ScaleAnimation.fixed布尔值false是否使用固定动画状态
ScaleAnimation.fromScale小数3.0动画开始时的缩放值
ScaleAnimation.toScale小数1.0动画结束时的缩放值
ScaleAnimation.duration整数3000单次缩放动画持续时间

表格中的“默认读取值”是配置项缺失时程序采用的回退值。插件自带 config.yml 中的实际初始值以对应 YAML 示例为准。

魂环文件

插件会递归读取以下目录及其子目录中的全部 .yml 文件:

text
plugins/LyGemSoulRing/soulring/

首次载入时,插件会释放 soulring/示例魂环.yml。目录中每个 YAML 顶层键都是一个宝石 ID,一个文件可以定义多个魂环。

yaml
朱雀宝石:
  path: '魂环/h2.png'
  width: 3
  height: 3
  translateX: 0
  translateY: 2.2
  translateZ: 0
  translateEntityFront: 0
  translateEntityRight: 0
  rotateX: 90
  rotateY: 0
  rotateZ: 0
  through: false
  distance: 64
  alpha: 1
  glow: true
  followEntityDirection: false
  animationList:
    - 'ScaleAnimation'
    - 'RotateAnimation'
    - 'TranslateAnimation'

宝石 ID

yaml
朱雀宝石:

顶层键用于匹配宝石插件返回的宝石 ID。只有成功匹配的宝石才会被加入玩家的魂环列表。

如果多个扫描槽位返回相同的宝石 ID,当前代码不会主动去重,该魂环可能按扫描结果重复加入显示列表。

贴图与尺寸

配置项示例说明
path'魂环/h2.png'DragonCore 世界贴图使用的资源路径
width3魂环基础宽度
height3魂环基础高度

widthheight 会作为第一层魂环的基础尺寸,后续层数再叠加 soulring-scale

坐标偏移

配置项示例说明
translateX0X 轴显示偏移
translateY2.2Y 轴显示偏移
translateZ0Z 轴显示偏移
translateEntityFront0相对实体前后方向的位移
translateEntityRight0相对实体左右方向的位移

魂环贴图会绑定到释放魂环的玩家实体,不需要在配置中填写实体 UUID。

旋转角度

配置项示例说明
rotateX90X 轴旋转角度
rotateY0Y 轴旋转角度
rotateZ0Z 轴旋转角度

这些参数设置贴图的基础朝向,与 RotateAnimation 的动态旋转效果相互独立。

渲染参数

配置项示例说明
throughfalse是否允许贴图穿透地形显示
distance64贴图显示距离
alpha1贴图透明度
glowtrue是否启用发光效果
followEntityDirectionfalse是否跟随玩家实体方向旋转

这些键会映射到 DragonCore WorldTexture 中的同名字段。

动画列表

yaml
animationList:
  - 'ScaleAnimation'
  - 'RotateAnimation'
  - 'TranslateAnimation'
动画名称对应配置段
ScaleAnimationconfig.yml 中的 ScaleAnimation
RotateAnimationconfig.yml 中的 RotateAnimation
TranslateAnimationconfig.yml 中的 TranslateAnimation

动画名称匹配不区分大小写。列表顺序会作为动画加入世界贴图的顺序。

当前代码只识别以上三种动画名称。无法识别的名称会被忽略。

其他世界贴图字段

animationList 外,魂环节点中的键会尝试按名称映射到 DragonCore WorldTexture 的同名字段。插件支持将 YAML 数值、布尔值、字符串和 UUID 文本转换为对应的 Java 字段类型。

如果键名在当前 DragonCore WorldTexture 中不存在,或配置值无法转换为目标字段类型,该项会被忽略。因此新增字段时应使用当前服务端 DragonCore API 实际提供的字段名称和数据类型。

完整配置示例

yaml
# 使用的宝石插件:LyGemReload 或 YeeGem
gem-plugin: 'LyGemReload'

# 扫描的装备槽位
plugin-slot:
  - 'Origin#MainHand'
  - 'Origin#Helmet'

# DragonCore 释放按键
show-soulring-key: 'Z'

# 绽放冷却,单位为毫秒
show-soulring-cooldown: 10000
show-soulring-cooldown-message: '&c魂环绽放冷却中,还需{time}秒!'

# 绽放时执行的指令
show-soulring-command:
  - '[console]tell %player_name% 你释放了魂环'

# 收回时执行的指令
hide-soulring-command:
  - '[console]tell %player_name% 你收回了魂环'

# 最多显示的魂环数量
max-soulring: 10

# 后续魂环递增的宽度和高度
soulring-scale: 4

# 定时展示间隔,单位为服务器 Tick
show-soulring-delay: 5

RotateAnimation:
  delay: 1000
  angle: 360.0
  duration: 3000
  cycleCount: 1
  fixed: true
  resetTime: 1

TranslateAnimation:
  delay: 0
  distance: 2
  duration: 1000
  cycleCount: 1
  fixed: true

ScaleAnimation:
  delay: 0
  cycleCount: 1
  fixed: false
  fromScale: 10.0
  toScale: 1.0
  duration: 1000

修改配置后执行:

text
/lgsr reload

重载会重新读取 config.yml、重新创建三种动画对象,并重新载入 soulring 目录中的魂环定义。已经展开的魂环不会在重载时被主动收回;玩家再次切换魂环后会使用新配置重新生成贴图。