LyCore
LyCore 是离渊系列插件的基础前置,用于提供 PlaceholderAPI 运算变量、Aviator 脚本函数、物品判断与统计、NBT 读写和属性插件桥接能力。
它本身不提供独立的完整玩法,主要供其它插件、脚本和配置系统调用。
插件信息
| 项目 | 内容 |
|---|---|
| 插件名 | LyCore |
| 当前版本 | 1.0.2 |
| 作者 | Liyuan |
| 主命令 | /lcore |
| 运行环境 | Bukkit / Spigot / Paper |
| 基础编译版本 | Java 8 |
| 必需前置 | 无 |
| 可选前置 | PlaceholderAPI、AttributePlus、SX-Attribute、AttributeSystem、ItemLoreOrigin |
提示
只使用重载、物品信息查看、NBT 写入和程序接口时,不需要安装 PlaceholderAPI。
使用 %lcore_% 系列变量或 /lcore papicmd 时,需要安装 PlaceholderAPI。
支持版本
项目为不同服务端版本提供了独立的 NMS 实现,用于读取和修改物品 NBT。
| Minecraft 版本 | NMS 版本 | Java 要求 |
|---|---|---|
1.7.10 | v1_7_R4 | Java 8 |
1.8.8 | v1_8_R3 | Java 8 |
1.11.2 | v1_11_R1 | Java 8 |
1.12.2 | v1_12_R1 | Java 8 |
1.13.2 | v1_13_R2 | Java 8 |
1.14.4 | v1_14_R1 | Java 8 |
1.15.2 | v1_15_R1 | Java 8 |
1.16.5 | v1_16_R3 | Java 8 |
1.17.1 | v1_17_R1 | Java 17 |
1.18.2 | v1_18_R2 | Java 17 |
1.19.2 | v1_19_R1 | Java 17 |
1.19.4 | v1_19_R3 | Java 17 |
1.20.1 | v1_20_R1 | Java 17 |
1.20.2 | v1_20_R2 | Java 17 |
1.20.3 | v1_20_R3 | Java 17 |
未在表格中列出的服务端版本没有对应的项目 NMS 模块,物品 NBT 功能不应视为已确认兼容。
主要功能
| 功能 | 说明 |
|---|---|
| 公式计算 | 通过 PlaceholderAPI 计算括号、次方、乘除和加减表达式 |
| 数字格式化 | 将数字或变量结果保留指定小数位 |
| 快捷运算 | 在 config.yml 中预设公式,再通过公式 ID 获取结果 |
| Aviator 脚本 | 初始化并执行 Aviator 表达式,自动向执行环境加入当前玩家 |
| 物品匹配 | 根据多个条件判断指定物品是否符合要求 |
| 物品统计 | 统计玩家背包及已接入存储空间中的匹配物品数量 |
| 物品扣除 | 按匹配条件从玩家背包及已接入存储空间扣除物品 |
| NBT 查看 | 输出手持物品的类型、名称、Lore、附魔和 NBT 信息 |
| NBT 读写 | 读取、写入或删除物品 NBT,支持使用点号访问嵌套节点 |
| 属性桥接 | 将其它插件提交的属性文本统一刷新到已选择的属性插件 |
依赖与联动
PlaceholderAPI
PlaceholderAPI 是可选前置,负责注册 %lcore_% 系列变量,并用于替换 /lcore papicmd 中的变量。
| 使用内容 | 是否需要 PlaceholderAPI |
|---|---|
/lcore reload | 否 |
/lcore lookitem | 否 |
/lcore setnbt | 否 |
%lcore_math_% | 是 |
%lcore_format_% | 是 |
%lcore_calc_% | 是 |
/lcore papicmd | 是 |
属性插件
LyCore 可以自动检测或手动选择以下属性插件:
| 配置值 | 对应插件 |
|---|---|
Auto | 自动选择已启用的属性插件 |
AttributePlus | AttributePlus 2.x 或 3.x |
SX-Attribute2 | SX-Attribute 2.x |
SX-Attribute3 | SX-Attribute 3.x |
AttributeSystem | AttributeSystem |
ItemLoreOrigin | ItemLoreOrigin |
属性来源以名称区分。添加、替换或移除来源后,LyCore 会合并该玩家的全部属性文本,并将结果刷新到当前属性插件。
警告
修改 attribute-plugin 后需要重启服务器。配置为未安装或不兼容的属性插件时,属性桥接无法正常工作。
存储空间联动
物品统计和扣除功能会先处理玩家背包,并在检测到对应插件时继续处理其它存储空间。
| 检测到的插件 | 接入空间 |
|---|---|
LyWarehouse | 离渊传统仓库 |
LyLootsWareHouse | 离渊战利品仓库 |
YeeCore | 灵魂空间相关存储 |
这些联动不是 LyCore 的必需前置。未安装对应插件时,只跳过相应存储空间。
PlaceholderAPI 变量
公式计算
| 变量格式 | 说明 |
|---|---|
%lcore_math_公式% | 计算公式并返回结果 |
%lcore_math_位数_公式% | 计算公式,并将结果保留指定小数位 |
公式支持以下运算符,优先级从高到低排列:
| 符号 | 作用 |
|---|---|
() | 括号 |
^ | 次方 |
* | 乘法 |
/ | 除法 |
+ | 加法 |
- | 减法 |
需要在公式中调用其它 PlaceholderAPI 变量时,使用 #变量名# 包裹变量内容。
text
%lcore_math_1*(5+2)^3%
%lcore_math_1*#player_level#^3%
%lcore_math_0_1*(5+2)^3%数字格式化
| 变量格式 | 说明 |
|---|---|
%lcore_format_位数_数字或变量% | 将数字或变量结果保留指定小数位 |
text
%lcore_format_3_1.31415926%
%lcore_format_0_#ap_damage:min#%快捷运算
| 变量格式 | 说明 |
|---|---|
%lcore_calc_公式id% | 执行 quick-calculation 中对应 ID 的公式 |
快捷运算配置位于 config.yml:
yaml
quick-calculation:
公式id:
format: 3
formula: '%player_level% * (1.5^3) / (1+1)'| 配置键 | 说明 |
|---|---|
quick-calculation | 快捷公式配置根节点 |
quick-calculation.公式id | 自定义公式 ID,对应 %lcore_calc_公式id% |
quick-calculation.公式id.format | 结果保留的小数位数 |
quick-calculation.公式id.formula | 需要计算的公式,允许包含 PlaceholderAPI 变量 |
Aviator 脚本能力
LyCore 初始化时会注册以下中文函数,并在执行表达式时将当前玩家放入 player 环境变量。
| 函数名 | 作用 |
|---|---|
匹配物品 | 判断执行环境中的 item 是否符合全部物品条件 |
统计物品 | 统计玩家背包和已接入存储空间中的匹配物品 |
扣除物品 | 按数量从玩家背包和已接入存储空间扣除匹配物品 |
给予物品 | 执行物品给予逻辑 |
物品条件以 键=值 的字符串参数传入。匹配物品 要求执行环境中存在 item;统计和扣除函数使用执行环境中的 player。扣除函数可通过 amount 条件指定数量,未指定时数量为 1。
NBT 能力
LyCore 为各支持版本提供独立 NMS 实现。NBT API 支持使用点号分隔嵌套路径,例如 custom.data.level;写入时会创建缺少的中间复合节点,传入空值时会删除目标节点。
| NBT 类型 | API 支持情况 |
|---|---|
Byte | 支持 |
Short | 支持 |
Int | 支持 |
Long | 支持 |
Float | 支持 |
Double | 支持 |
String | 支持 |
ByteArray | 支持 |
IntArray | 支持 |
LongArray | 1.13.2 及以上实现支持 |
Compound | 支持 |
Boolean | 支持,以 Byte 类型存储 |
NBT 描述功能会递归输出复合节点和列表,最大递归深度为 64。物品名称和 Lore 已由物品信息单独显示,因此描述 display 节点时会过滤其中的 Name 和 Lore。
指令
主命令:/lcore
| 指令 | 说明 |
|---|---|
/lcore | 查看管理员帮助 |
/lcore reload | 重载 config.yml |
/lcore lookitem | 查看手持物品的类型、名称、Lore、附魔和 NBT |
/lcore setnbt <节点> <值> | 给手持物品写入字符串 NBT |
/lcore setnbt <节点> <值> <类型> | 按指定类型给手持物品写入 NBT |
/lcore papicmd <玩家> <命令> | 替换命令中的 PlaceholderAPI 变量,再让指定玩家以 OP 权限执行命令 |
setnbt 指令可用的基础类型:
| 类型 | 值格式 |
|---|---|
Byte | 整数 |
Short | 整数 |
Int | 整数 |
Long | 整数 |
Float | 小数 |
Double | 小数 |
String | 文本 |
text
/lcore lookitem
/lcore setnbt ly_item_type gem
/lcore setnbt level 10 Int
/lcore papicmd Steve say 当前等级是 %player_level%危险
papicmd 会临时让目标玩家以 OP 权限执行替换后的命令。不要将该指令开放给不可信用户,也不要将未经检查的玩家输入拼接到执行命令中。
项目的 plugin.yml 没有声明权限节点。实际指令访问限制应以服务器中使用的插件版本和命令实现为准。
配置概览
LyCore 的可配置内容位于 config.yml。
yaml
quick-calculation:
公式id:
format: 3
formula: '%player_level% * (1.5^3) / (1+1)'
attribute-plugin: 'Auto'| 配置键 | 默认值 | 说明 |
|---|---|---|
quick-calculation | 示例公式节点 | 配置 %lcore_calc_% 使用的快捷公式 |
quick-calculation.<公式id>.format | 3 | 结果保留的小数位数 |
quick-calculation.<公式id>.formula | 示例公式 | 需要执行的公式 |
attribute-plugin | Auto | 选择属性桥接插件,修改后需要重启 |
开发接口
插件公开了 Ly.core.api.LyCoreAPI 入口。
| 方法 | 返回值 | 说明 |
|---|---|---|
LyCoreAPI.getAttributeManager() | AttributeManager | 获取 LyCore 当前使用的属性管理器 |
AttributeManager 可以按玩家获取 AttributeData。AttributeData 以来源名称维护属性文本列表,支持判断来源、读取来源、添加来源和移除来源。来源发生变化后,属性会在后续刷新任务中合并并同步到当前属性插件。