常见问题
%lcore_% 变量不生效怎么办?
先确认服务器已经安装并启用 PlaceholderAPI。PlaceholderAPI 是软依赖,未启用时,LyCore 提供的变量无法正常解析。
还需要检查以下内容:
| 检查项 | 说明 |
|---|---|
| 变量前缀 | LyCore 变量使用 %lcore_...% 格式 |
| 插件状态 | 确认 LyCore 与 PlaceholderAPI 均已成功启用 |
| 变量位置 | 确认使用变量的插件支持 PlaceholderAPI |
| 公式内容 | 参与运算的内容必须能够转换为数字 |
| 重载方式 | 修改配置后可执行 /lcore reload,修改属性插件选择后需要重启服务器 |
LyCore 会在初始化时检测 PlaceholderAPI。排查时可以同时查看控制台中的插件启动信息。
公式中应该使用 %变量% 还是 #变量#?
两种写法用于不同位置,不要混用。
直接使用 %lcore_math_...% 变量编写公式时,公式内部调用其它 PlaceholderAPI 变量需要使用 #变量#:
text
%lcore_math_1*#player_level#^3%quick-calculation 中保存的快捷公式使用普通 PlaceholderAPI 变量格式:
yaml
quick-calculation:
等级倍率:
format: 2
formula: '%player_level% * 1.25'对应变量为:
text
%lcore_calc_等级倍率%如果在 %lcore_math_...% 的公式内部继续使用 %player_level%,外层变量可能被提前截断或错误解析。
数学运算支持哪些符号?
数学变量支持以下运算符:
| 符号 | 用途 |
|---|---|
() | 调整运算顺序 |
^ | 次方 |
* | 乘法 |
/ | 除法 |
+ | 加法 |
- | 减法 |
配置说明中的优先级顺序为:括号、次方、乘除、加减。
快捷运算返回 §c错误 怎么处理?
先确认 quick-calculation 下存在与变量一致的公式 ID。
例如变量为 %lcore_calc_等级倍率%,配置中需要存在:
yaml
quick-calculation:
等级倍率:
format: 2
formula: '%player_level% * 1.25'然后依次检查:
等级倍率与变量中的公式 ID 是否完全一致。format是否为有效的小数位数。formula中的 PlaceholderAPI 变量是否能够正常返回。- 变量替换后的内容是否为数字。
- 公式中的括号和运算符是否完整。
- 是否出现空文本、中文、颜色代码或其它无法参与计算的字符。
可以先单独测试公式中引用的 PlaceholderAPI 变量,再测试完整的快捷运算变量。
为什么计算结果的小数位数不正确?
直接数学运算可以在公式前加入小数位数:
text
%lcore_math_0_1*(5+2)^3%快捷运算的小数位数由对应公式下的 format 控制:
yaml
quick-calculation:
公式id:
format: 3
formula: '%player_level% * (1.5^3) / (1+1)'也可以使用 %lcore_format_位数_数字或变量% 单独处理数字的小数位数。使用其它变量作为数字时,内部变量需要写成 #变量#,例如:
text
%lcore_format_0_#ap_damage:min#%修改 attribute-plugin 后为什么没有变化?
属性插件桥接会在 LyCore 初始化时选择。修改 attribute-plugin 后需要完整重启服务器,仅执行 /lcore reload 不能保证重新创建属性桥接与玩家属性数据。
可配置的值包括:
| 配置值 | 对应插件或模式 |
|---|---|
Auto | 自动检测已启用的属性插件 |
AttributePlus | AttributePlus |
SX-Attribute2 | SX-Attribute 2.x |
SX-Attribute3 | SX-Attribute 3.x |
AttributeSystem | AttributeSystem |
ItemLoreOrigin | ItemLoreOrigin |
配置示例:
yaml
attribute-plugin: 'SX-Attribute3'重启后可通过控制台中的“属性前置”和“已设置属性插件为”信息确认实际选择结果。
同时安装多个属性插件时会使用哪一个?
使用 Auto 时,LyCore 会依次检测 AttributePlus、SX-Attribute、ItemLoreOrigin 和 AttributeSystem。后检测到的可用桥接可能覆盖前面已经选择的桥接,因此同时安装多个属性插件时,不建议依赖自动选择结果。
需要固定桥接时,请将 attribute-plugin 设置为明确的插件名称,然后重启服务器,并检查控制台最终显示的属性插件。
为什么属性插件已安装,LyCore 仍然提示版本不兼容?
LyCore 会检查部分属性插件的主版本:
| 属性插件 | 已确认的版本判断 |
|---|---|
| AttributePlus | 版本号需要以 2 或 3 开头 |
| SX-Attribute | 版本号需要以 2 或 3 开头,并分别使用对应桥接 |
| ItemLoreOrigin | 检测插件是否已启用 |
| AttributeSystem | 检测插件是否已启用 |
如果 AttributePlus 或 SX-Attribute 的版本不符合判断规则,控制台会输出错误版本提示。此时需要检查实际安装的插件版本以及 attribute-plugin 配置值。
玩家进入服务器后属性数据没有初始化怎么办?
LyCore 会在属性管理器创建时处理当前在线玩家,并监听玩家进入事件,为新进入的玩家初始化属性数据。
出现异常时可以检查:
- LyCore 是否正常启用。
- 目标属性插件是否在 LyCore 初始化前成功启用。
- 控制台最终选择的属性插件是否正确。
attribute-plugin是否填写了受支持的值。- 修改属性插件配置后是否完整重启服务器。
/lcore setnbt 可以写入哪些类型?
指令输入支持以下 NBT 类型:
| 类型 | 输入要求 |
|---|---|
Byte | 字节范围内的整数 |
Short | 短整数范围内的整数 |
Int | 整数 |
Long | 长整数 |
Float | 单精度数字 |
Double | 双精度数字 |
String | 文本 |
不填写类型时,默认写入 String:
text
/lcore setnbt 节点 值指定类型时使用:
text
/lcore setnbt 节点 值 类型虽然底层 NBT API 还定义了数组、复合标签和布尔类型,但 /lcore setnbt 不支持通过指令输入这些类型。尝试输入不受支持的类型时,会提示“该类型暂不支持指令输入”。
/lcore setnbt 提示“类型不正确”怎么办?
类型名称必须对应受支持的 NBT 类型。指令会忽略类型名称的大小写,但不能使用缩写或其它名称。
正确类型为:
text
Byte Short Int Long Float Double String制表补全中会显示对应的大写名称:
text
BYTE SHORT INT LONG FLOAT DOUBLE STRING/lcore setnbt 提示“数值格式错误”怎么办?
指定数字类型后,输入值必须能够转换为对应数字。
例如:
text
/lcore setnbt level 10 Int以下情况会导致数值格式错误:
- 给
Int、Long、Byte或Short输入非整数内容。 - 给
Float或Double输入无法解析的数字。 - 输入值超出所选数字类型能够表示的范围。
如果只需要保存文本,请省略类型或使用 String。
/lcore setnbt 写入后物品没有变化怎么办?
依次检查以下内容:
- 指令必须由玩家执行,控制台不能持有物品。
- 执行者必须是 OP。
- 主手需要持有目标物品。
- NBT 节点名称不能为空。
- 指定的类型和值需要匹配。
- 当前服务端版本需要成功初始化对应的 NBT 实现。
写入成功后,LyCore 会将修改后的物品重新放回玩家主手,并提示“修改成功”。可以执行 /lcore lookitem 查看物品的 NBT 信息。
NBT 节点可以使用多级路径吗?
可以。NBT 实现会使用英文句点 . 分割节点路径,并在写入时创建缺少的复合节点。
例如节点:
text
lycore.data.level会按 lycore、data、level 的层级访问。路径中不能包含空的节点部分,因此不要使用连续句点,也不要让路径以句点开头或结尾。
为什么部分版本不能使用 LongArray?
底层 NBT API 定义了 LongArray,但 Minecraft 1.7、1.8、1.11 和 1.12 对应实现明确不支持该类型。Minecraft 1.13 及后续已收录的实现提供了长整数数组读写。
/lcore setnbt 本身不支持通过指令写入数组,因此该差异主要影响调用 LyCore NBT API 的其它插件。
/lcore lookitem 会显示哪些信息?
该指令会读取玩家主手物品,并显示:
| 信息 | 内容 |
|---|---|
type | 材质名称、旧版数字 ID 和耐久值 |
name | 自定义物品名称 |
lore | 物品 Lore 列表 |
enchant | 附魔名称与等级 |
nbt | 递归读取的 NBT 节点、类型和值 |
该指令只能由 OP 玩家执行。
/lcore lookitem 为什么提示没有 NBT 数据?
出现“没有NBT数据”表示当前物品没有可读取的标签,或者当前服务端对应的反射读取未取得物品标签。
如果提示“NBT API未初始化”,则表示 LyCore 没有成功加载当前服务端对应的 NBT 实现。此时应检查服务端版本和启动控制台错误。
NBT 输出会递归读取复合标签和列表,最大递归深度受到限制。为避免与已经单独显示的物品名称和 Lore 重复,display 节点下的 Name 与 Lore 不会再次出现在 NBT 展开结果中。
当前服务端为什么无法使用 NBT 功能?
项目中收录了以下服务端 NMS 实现:
| Minecraft 版本 | NMS 实现 |
|---|---|
| 1.7.10 | v1_7_R4 |
| 1.8.8 | v1_8_R3 |
| 1.11.2 | v1_11_R1 |
| 1.12.2 | v1_12_R1 |
| 1.13.2 | v1_13_R2 |
| 1.14.4 | v1_14_R1 |
| 1.15.2 | v1_15_R1 |
| 1.16.5 | v1_16_R3 |
| 1.17.1 | v1_17_R1 |
| 1.18.2 | v1_18_R2 |
| 1.19.2 | v1_19_R1 |
| 1.19.4 | v1_19_R3 |
| 1.20.1 | v1_20_R1 |
| 1.20.2 | v1_20_R2 |
| 1.20.3 | v1_20_R3 |
项目中没有收录 1.9、1.10、1.13.1、1.18.1、1.19.3 等其它 NMS 映射。未收录的版本不能根据现有项目证据确认 NBT 功能可用。
/lcore papicmd 没有效果怎么办?
检查以下条件:
| 检查项 | 要求 |
|---|---|
| 执行者 | 必须是 OP |
| 目标玩家 | 必须精确匹配在线玩家名称 |
| PlaceholderAPI | 必须已启用 |
| 命令内容 | 不要在开头额外填写 /,并确认替换后的命令有效 |
指令格式为:
text
/lcore papicmd 玩家 命令LyCore 会使用目标玩家解析命令中的 PlaceholderAPI 变量,再让该玩家临时以 OP 权限执行命令。执行后,控制台会记录玩家名称和最终执行的命令。
如果目标玩家不在线,发送者会收到“玩家不在线”。
/lcore papicmd 会永久给予玩家 OP 吗?
不会。LyCore 的执行逻辑会在命令执行前记录玩家原本的 OP 状态,临时给予 OP,然后在执行结束后恢复原状态。
该指令仍然能够执行高权限命令。使用前应确认变量替换后的完整命令,避免变量为空、玩家名称错误或参数错位。
/lcore reload 会重载哪些内容?
/lcore reload 会调用 LyCore 的重载逻辑并重新读取配置,执行成功后提示“重载成功”。该指令只能由 OP 执行。
属性插件选择属于初始化阶段内容。修改 attribute-plugin 后应重启服务器,不要只依赖 /lcore reload。
为什么普通玩家看不到指令帮助和制表补全?
LyCore 没有在 plugin.yml 中声明细分权限节点。现有主指令、子指令帮助和制表补全均通过 OP 状态判断。
因此:
- OP 可以查看主指令帮助。
- OP 可以补全
reload、setnbt、lookitem和papicmd。 - OP 可以补全
/lcore setnbt的 NBT 类型。 - 非 OP 不会获得这些制表补全,也不能执行对应管理功能。
指令输入后没有任何提示怎么办?
部分不满足条件的调用会直接结束,不一定返回错误信息。排查时确认:
- 子指令名称与大小写是否正确。
- 参数数量是否符合要求。
- 执行者是否为 OP。
setnbt与lookitem是否由玩家执行。papicmd的目标玩家是否在线。- 主手是否持有需要处理的物品。
- PlaceholderAPI 或 NBT 实现是否成功初始化。
不带参数执行 /lcore 时,只有 OP 会收到现有子指令帮助。