Skip to content

常见问题

%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'

然后依次检查:

  1. 等级倍率 与变量中的公式 ID 是否完全一致。
  2. format 是否为有效的小数位数。
  3. formula 中的 PlaceholderAPI 变量是否能够正常返回。
  4. 变量替换后的内容是否为数字。
  5. 公式中的括号和运算符是否完整。
  6. 是否出现空文本、中文、颜色代码或其它无法参与计算的字符。

可以先单独测试公式中引用的 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自动检测已启用的属性插件
AttributePlusAttributePlus
SX-Attribute2SX-Attribute 2.x
SX-Attribute3SX-Attribute 3.x
AttributeSystemAttributeSystem
ItemLoreOriginItemLoreOrigin

配置示例:

yaml
attribute-plugin: 'SX-Attribute3'

重启后可通过控制台中的“属性前置”和“已设置属性插件为”信息确认实际选择结果。

同时安装多个属性插件时会使用哪一个?

使用 Auto 时,LyCore 会依次检测 AttributePlus、SX-Attribute、ItemLoreOrigin 和 AttributeSystem。后检测到的可用桥接可能覆盖前面已经选择的桥接,因此同时安装多个属性插件时,不建议依赖自动选择结果。

需要固定桥接时,请将 attribute-plugin 设置为明确的插件名称,然后重启服务器,并检查控制台最终显示的属性插件。

为什么属性插件已安装,LyCore 仍然提示版本不兼容?

LyCore 会检查部分属性插件的主版本:

属性插件已确认的版本判断
AttributePlus版本号需要以 23 开头
SX-Attribute版本号需要以 23 开头,并分别使用对应桥接
ItemLoreOrigin检测插件是否已启用
AttributeSystem检测插件是否已启用

如果 AttributePlus 或 SX-Attribute 的版本不符合判断规则,控制台会输出错误版本提示。此时需要检查实际安装的插件版本以及 attribute-plugin 配置值。

玩家进入服务器后属性数据没有初始化怎么办?

LyCore 会在属性管理器创建时处理当前在线玩家,并监听玩家进入事件,为新进入的玩家初始化属性数据。

出现异常时可以检查:

  1. LyCore 是否正常启用。
  2. 目标属性插件是否在 LyCore 初始化前成功启用。
  3. 控制台最终选择的属性插件是否正确。
  4. attribute-plugin 是否填写了受支持的值。
  5. 修改属性插件配置后是否完整重启服务器。

/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

以下情况会导致数值格式错误:

  • IntLongByteShort 输入非整数内容。
  • FloatDouble 输入无法解析的数字。
  • 输入值超出所选数字类型能够表示的范围。

如果只需要保存文本,请省略类型或使用 String

/lcore setnbt 写入后物品没有变化怎么办?

依次检查以下内容:

  1. 指令必须由玩家执行,控制台不能持有物品。
  2. 执行者必须是 OP。
  3. 主手需要持有目标物品。
  4. NBT 节点名称不能为空。
  5. 指定的类型和值需要匹配。
  6. 当前服务端版本需要成功初始化对应的 NBT 实现。

写入成功后,LyCore 会将修改后的物品重新放回玩家主手,并提示“修改成功”。可以执行 /lcore lookitem 查看物品的 NBT 信息。

NBT 节点可以使用多级路径吗?

可以。NBT 实现会使用英文句点 . 分割节点路径,并在写入时创建缺少的复合节点。

例如节点:

text
lycore.data.level

会按 lycoredatalevel 的层级访问。路径中不能包含空的节点部分,因此不要使用连续句点,也不要让路径以句点开头或结尾。

为什么部分版本不能使用 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 节点下的 NameLore 不会再次出现在 NBT 展开结果中。

当前服务端为什么无法使用 NBT 功能?

项目中收录了以下服务端 NMS 实现:

Minecraft 版本NMS 实现
1.7.10v1_7_R4
1.8.8v1_8_R3
1.11.2v1_11_R1
1.12.2v1_12_R1
1.13.2v1_13_R2
1.14.4v1_14_R1
1.15.2v1_15_R1
1.16.5v1_16_R3
1.17.1v1_17_R1
1.18.2v1_18_R2
1.19.2v1_19_R1
1.19.4v1_19_R3
1.20.1v1_20_R1
1.20.2v1_20_R2
1.20.3v1_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 可以补全 reloadsetnbtlookitempapicmd
  • OP 可以补全 /lcore setnbt 的 NBT 类型。
  • 非 OP 不会获得这些制表补全,也不能执行对应管理功能。

指令输入后没有任何提示怎么办?

部分不满足条件的调用会直接结束,不一定返回错误信息。排查时确认:

  1. 子指令名称与大小写是否正确。
  2. 参数数量是否符合要求。
  3. 执行者是否为 OP。
  4. setnbtlookitem 是否由玩家执行。
  5. papicmd 的目标玩家是否在线。
  6. 主手是否持有需要处理的物品。
  7. PlaceholderAPI 或 NBT 实现是否成功初始化。

不带参数执行 /lcore 时,只有 OP 会收到现有子指令帮助。