Skip to content

宝石魂环 LyGemSoulRing

LyGemSoulRing 用于读取玩家装备中的宝石,并通过 DragonCore 世界贴图将匹配到的宝石显示为环绕玩家的魂环。

玩家可以使用指令或 DragonCore 按键绽放、收回魂环。插件支持扫描多个装备槽位、限制显示数量、逐圈显示、递增魂环尺寸,并为魂环配置旋转、位移和缩放动画。

插件信息

项目内容
插件名LyGemSoulRing
版本1.0.3
作者离渊
主命令/lgsr
Bukkit API 版本1.13
构建使用的服务端 APIPaper 1.16.5
Java 目标版本Java 8
魂环显示方式DragonCore 世界贴图
宝石来源LyGemReloadYeeGem
声明的软依赖PlaceholderAPILyGemReload

版本说明

项目文件能够确认插件声明 api-version: 1.13,并使用 Paper 1.16.5 API 构建,但没有提供完整的服务端兼容版本范围。

依赖与兼容插件

必需组件

组件用途说明
DragonCore注册释放按键并向客户端发送魂环世界贴图DragonCore 未启动时,魂环监听与显示功能不会注册
宝石插件从装备中读取宝石 IDgem-plugin 当前支持 LyGemReloadYeeGem

可选组件

组件用途
PlaceholderAPI解析绽放、收回魂环时执行的指令变量
LyGemReload默认宝石数据来源,也可以提供装备中的宝石 ID
YeeGem可作为 LyGemReload 之外的宝石数据来源
DragonCore提供 DragonCore#槽位名 类型的装备槽位
GermPlugin提供 GermPlugin#槽位名 类型的装备槽位
LyInventory提供旧版离渊背包槽位
LyInventoryReload提供离渊背包重置版槽位
YeeJewelry提供清守饰品背包槽位

插件会直接调用所选宝石插件和对应槽位插件的接口。使用某种宝石来源或扩展槽位前,需要安装对应插件。

玩法说明

插件将宝石 ID 与 plugins/LyGemSoulRing/soulring 目录内的魂环配置节点名称进行匹配。

玩家绽放魂环时,插件会依次完成以下处理:

  1. 按照 plugin-slot 的顺序读取一个或多个装备槽位。
  2. 使用 gem-plugin 指定的宝石插件提取装备中的宝石 ID。
  3. 只保留已经在魂环配置文件中定义的宝石 ID。
  4. 根据 max-soulring 限制显示数量。
  5. 将魂环绑定到玩家实体,并发送给全部在线玩家。
  6. 按照 show-soulring-delay 逐圈显示魂环。
  7. 根据魂环序号和 soulring-scale 递增贴图宽度与高度。

如果装备中没有能够匹配魂环配置的宝石,插件会取消显示状态并提示“你没有魂环!”。

核心功能

功能说明
多槽位扫描plugin-slot 支持列表,可同时读取多个装备槽位
旧配置兼容仍兼容将 plugin-slot 写成单个字符串的旧配置
双宝石来源支持从 LyGemReloadYeeGem 读取宝石 ID
自定义魂环每个宝石 ID 可以配置独立贴图、尺寸、位置、角度和显示参数
魂环数量限制使用 max-soulring 限制单次最多显示的魂环数量
尺寸递增后续魂环会在配置宽高基础上按 soulring-scale 逐层增大
延迟展开使用 show-soulring-delay 控制每一圈魂环出现的间隔
按键切换监听 DragonCore 按键释放事件,切换魂环显示状态
冷却限制绽放魂环受冷却限制,收回魂环不受冷却限制
指令动作绽放、收回时可以执行玩家、临时 OP 或控制台指令
PAPI 变量动作指令会先经过 PlaceholderAPI 变量解析
动画控制支持旋转、上下位移和缩放三种 DragonCore 贴图动画
全服可见魂环贴图会发送给当前全部在线玩家,而不是只发送给魂环拥有者
加入同步新玩家加入时,会收到其他在线玩家当前已经展开的魂环
退出清理玩家退出时,插件会从在线玩家客户端移除该玩家的魂环贴图
旧贴图清理收回或退出时会同时清理当前贴图编号和旧版本贴图编号
热重载重载主配置、动画配置、魂环文件并重新注册按键

支持的装备槽位

plugin-slot 中每一项使用 类型#参数 格式。需要多个参数的槽位继续使用 # 分隔。

槽位类型写法说明
DragonCoreDragonCore#槽位名读取 DragonCore 缓存槽位
GermPluginGermPlugin#槽位名读取萌芽槽位
LyInventoryLyInventory#背包ID#槽位名读取旧版离渊背包槽位
LyInventoryReloadLyInventoryReload#背包ID#槽位名读取离渊背包重置版槽位
YeeJewelryYeeJewelry#背包ID#槽位ID读取清守饰品背包槽位
MinecraftMinecraft#槽位ID读取玩家背包中的原版槽位,代码按数字槽位读取
原版主手Origin#MainHand读取主手物品
原版副手Origin#OffHand读取副手物品
原版头盔Origin#Helmet读取头盔
原版胸甲Origin#ChestPlate读取胸甲
原版护腿Origin#Legging读取护腿
原版靴子Origin#Boots读取靴子

默认配置只扫描主手:

yaml
plugin-slot:
  - 'Origin#MainHand'

魂环文件

魂环配置文件存放在:

text
plugins/LyGemSoulRing/soulring

插件重载时会递归读取该目录及子目录中的全部 .yml 文件。每个顶层节点都是一个宝石 ID,节点名称必须与宝石插件读取到的宝石 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'

示例文件能够确认以下魂环字段:

配置项说明
path魂环贴图路径
width基础宽度
height基础高度
translateXX 轴坐标偏移
translateYY 轴坐标偏移
translateZZ 轴坐标偏移
translateEntityFront相对实体前后位移
translateEntityRight相对实体左右位移
rotateXX 轴旋转角度
rotateYY 轴旋转角度
rotateZZ 轴旋转角度
through是否穿透地形显示
distance显示距离
alpha图片透明度
glow是否发光
followEntityDirection是否跟随玩家视角方向旋转
animationList应用到该魂环的动画名称列表

animationList 外,魂环节点中的配置键会尝试映射到 DragonCore WorldTexture 的同名字段。不存在的字段会被忽略;能够转换为目标基础类型的值会写入世界贴图。

动画

每个魂环可以通过 animationList 选择动画。当前代码只识别以下名称:

动画名称效果主要配置
RotateAnimation旋转动画延迟、角度、持续时间、循环次数、固定状态、重置时间
TranslateAnimation位移动画延迟、距离、持续时间、循环次数、固定状态
ScaleAnimation缩放动画延迟、循环次数、固定状态、起始缩放、结束缩放、持续时间

旋转动画和位移动画的方向在代码中固定为 z

指令

指令执行者权限要求说明
/lgsr控制台或玩家OP查看插件指令提示
/lgsr reload控制台或玩家OP重载主配置、动画、魂环文件和按键注册
/lgsr show玩家无独立权限节点绽放或收回自己的魂环

项目没有声明独立权限节点。reload 和无参数帮助通过是否为 OP 判断,show 只要求执行者为玩家。

Tab 补全只会向 OP 提供 reload,不会补全 show

绽放与收回规则

规则说明
状态切换/lgsr show 和配置按键调用同一套显示切换逻辑
装备读取时机只在绽放魂环时重新读取配置槽位中的装备
装备变化魂环展开后更换装备不会自动收回或刷新,需要再次切换状态
冷却起点成功进入绽放流程时记录时间
冷却范围冷却只限制绽放,不限制收回
无有效魂环取消显示状态并向玩家发送“你没有魂环!”
显示范围贴图发送给全部在线玩家,具体可见距离由魂环的 distance 控制
最大显示数实际创建和同步的魂环不会超过 max-soulring
清理范围收回或退出时固定尝试清理编号 019 的贴图

动作指令

show-soulring-commandhide-soulring-command 支持以下执行方式:

写法执行方式
普通指令由玩家身份执行
[op]指令临时给予玩家 OP 后执行,完成后恢复原状态
[console]指令由控制台执行

动作指令会先调用 PlaceholderAPI 解析玩家变量。项目示例使用 %player_name%,但可用变量范围由服务器安装的 PlaceholderAPI 扩展决定。

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

hide-soulring-command:
  - '[console]tell %player_name% 你收回了魂环'

重要配置

配置项默认配置值说明
gem-pluginLyGemReload选择宝石读取插件,可填写 LyGemReloadYeeGem
plugin-slotOrigin#MainHand需要扫描的装备槽位列表
show-soulring-keyZDragonCore 魂环切换按键
show-soulring-cooldown10000绽放冷却,单位为毫秒
show-soulring-cooldown-message&c魂环绽放冷却中,还需{time}秒!冷却提示,{time} 会替换为剩余秒数
show-soulring-command空列表绽放魂环时执行的指令
hide-soulring-command空列表收回魂环时执行的指令
max-soulring10单次最多显示的魂环数量
soulring-scale4后续每层魂环在基础宽高上增加的数值
show-soulring-delay5每圈魂环出现的间隔,作为 Bukkit Tick 使用

show-soulring-cooldown-message 会直接发送给玩家。代码没有对该消息执行颜色符号转换,因此项目文件只能确认 {time} 替换行为。

数据与 API

插件的魂环显示状态保存在内存中,包括玩家当前是否展开魂环、已显示的魂环 ID 和上次绽放时间。玩家退出后对应数据会被移除。

项目中存在空的 APIServer 类,但没有能够确认的公开方法、事件、服务注册或开发者 API,因此当前版本没有可记录的公共 API。

项目代码没有使用 MySQL 存储魂环数据,也没有提供数据库配置项。

页面索引

页面内容
配置说明主配置、槽位格式、魂环文件和动画参数
显示规则宝石读取、显示顺序、同步、冷却与清理机制
常见问题依赖、槽位、宝石匹配、按键和显示问题排查
更新日志版本与文档变更记录