Skip to content

常见问题

插件加载后 /lyfj 没有完整功能怎么办?

插件启动时先加载基础部分。核心模块验证并初始化成功后,才会注册分解界面、分解规则、额外按钮和完整帮助信息。

如果帮助中只有 reload,没有 open,说明当前仍处于基础插件模式。基础模式只提供配置重载,不提供玩家分解界面。

核心模块初始化成功后,控制台会输出:

text
离渊分解重置版启动。

/lyfj open 打不开界面怎么办?

按以下顺序检查:

  1. 确认核心模块已经完成验证和初始化。
  2. 确认执行者是玩家,控制台不能打开玩家分解界面。
  3. 确认使用完整指令:
text
/lyfj open

open 只在核心模块初始化后注册。项目没有配置独立权限节点,命令帮助和 reload 的权限判断使用管理员状态;打开界面时,代码只检查执行者是否为玩家。

/lyfj reload 没有生效怎么办?

确认执行者是管理员,并使用:

text
/lyfj reload

核心模块模式下,重载会重新读取:

  • config.yml
  • config.yml 中的 decomposition-set
  • extra 文件夹及其子目录中的全部 .yml 文件
  • prohibit-decomposition-lore
  • extra-button

基础插件模式下,重载只重新读取 config.yml,不会加载额外分解规则和额外按钮。

重载后新规则仍然没有生效怎么办?

检查规则文件是否满足以下条件:

  • 主配置中的规则位于 decomposition-set 下。
  • 额外规则文件也使用 decomposition-set 作为根节点。
  • 文件扩展名为 .yml
  • 文件位于插件目录的 extra 文件夹或其子目录中。
  • id 使用 数字ID:子ID 格式时,两部分都能转换为数字。
  • result 使用 物品#数量或数量范围#几率 格式。

插件会递归扫描 extra 文件夹中的 .yml 文件。额外规则可以写成:

yaml
decomposition-set:
  '示例规则':
    name: '示例物品'
    lore: '示例 Lore'
    give: true
    result:
      - '材料#1-2#100'

修改后执行 /lyfj reload。规则重载时,旧的规则数据会被清空后重新载入。

放入物品后没有预览怎么办?

界面预览会从上方分解格子中按顺序查找第一个匹配到规则的物品,并展示该物品对应规则的产物。

没有预览时,重点检查:

  • id 是否匹配物品数字 ID和子 ID。
  • name 是否匹配物品显示名称。
  • lore 是否匹配物品 Lore 的某一行。
  • containsNamecontainsLore 是否设置正确。
  • 物品 Lore 是否包含 prohibit-decomposition-lore 中的禁止文本。
  • 规则是否已经通过 /lyfj reload 重新载入。

containsNamecontainsLore 有什么区别?

配置项作用
containsName: false显示名称必须与 name 完全一致
containsName: true显示名称中包含 name 即可
containsLore: false某一行 Lore 必须与 lore 完全一致
containsLore: true某一行 Lore 中包含 lore 即可

这两个配置分别只影响名称和 Lore。对应字段为空时,不会使用该字段进行匹配。

为什么配置了 id: '0:0' 后仍然能匹配物品?

分解规则的 idnamelore 都是可选匹配条件。

代码只在物品 ID大于 0 时进行 ID匹配,只在子 ID大于 0 时进行子 ID匹配。因此,0:0 不会限制物品 ID。namelore 为空时,也不会限制名称或 Lore。

带绑定 Lore 的物品为什么不能分解?

prohibit-decomposition-lore 会检查物品的所有 Lore 行。只要任意一行包含列表中的文本,该物品就不会被统计、预览或分解。

默认配置为:

yaml
prohibit-decomposition-lore:
  - '已绑定'

修改配置后执行:

text
/lyfj reload

该匹配使用包含判断,不要求整行 Lore 完全一致。

同一个物品匹配多条规则时会怎样?

插件会收集所有符合物品 ID、子 ID、名称、Lore 和禁止 Lore 检查的规则。

界面预览只使用分解格子中第一个匹配物品,并显示该物品匹配到的全部规则产物。实际分解时,匹配到的多条规则会依次执行,因此结果可以叠加。

分解界面最多可以放多少个物品?

分解格子数量由 open-decomposition-slot 控制,代码支持的上限为 18

yaml
open-decomposition-slot: 18

界面上方的第 0 到第 17 格为分解格子。配置数量小于 18 时,超过数量的格子会被填充物品并禁止放入;配置数量大于 18 时,界面仍只有这 18 个上方格子可用。

左键和右键分解有什么区别?

点击界面中央的分解按钮时:

点击方式处理方式
左键处理一次可分解物品堆
右键及其他点击方式最多按可用分解格子数量循环处理

每次处理一个物品堆时,插件会按物品数量逐个执行匹配到的规则。分解按钮存在约 1 秒点击冷却。

分解时提示背包空间不足怎么办?

插件会根据当前匹配规则的 result 条目数量检查玩家背包空位。message.fail 中的 %slot 会替换为本次检查所需的空位数量。

配置示例:

yaml
message:
  fail: '&7分解失败,请查看是否有物品可分解或背包不足%slot格'

如果处理物品堆的过程中背包空间不足,当前操作会停止。分解前应预留足够背包空间。

产物数量和几率是怎样计算的?

result 的每一项格式为:

text
物品#数量或数量范围#几率

示例:

yaml
result:
  - '材料#1-2#100'
部分说明
材料产物 ID,可以使用物品库前缀
1-2随机数量范围,代码按包含最小值和最大值的方式取值
100产出几率,按 0100 的范围进行随机判断

界面预览显示数量范围中的最大值,实际分解时数量和几率分别随机计算。

如果 result 中存在第四段及之后的文本,代码会把这些内容作为控制台命令执行,并在执行前解析 PlaceholderAPI 变量。

为什么预览中的数量和实际获得数量不同?

预览只显示配置数量或数量范围的最大值。

例如:

yaml
result:
  - '材料#1-2#100'

预览显示 2,实际分解时可能获得 12

give: false 会有什么效果?

give: false 时,规则仍然可以匹配物品,也会处理额外条件和规则命令,但不会发放 result 中的产物。

未配置 give 时,默认值为 true

产物 ID 必须怎么写?

产物可以直接写普通物品 ID,也可以使用带前缀的物品库 ID:

yaml
result:
  - 'SX-Item@物品#1#100'

项目代码支持的前缀如下:

前缀物品来源
AzureFlow@AzureFlow
NeonFlash@NeonFlash
SX-Item@SX-Item
neigeItems@NeigeItems
originAttribute@OriginAttribute

带前缀时,插件优先使用对应物品来源;部分来源读取失败后会回退到 MythicMobs。

不带前缀时,插件按照配置开关选择物品来源。未启用这些开关时,代码会尝试使用 MythicMobs。

物品库开关的作用是什么?

配置项作用
LyEntryReload启用时优先读取 LyEntryReload 物品,读取不到时尝试 NeigeItems
neigeItems启用 NeigeItems 物品库支持
originAttribute启用 OriginAttribute 物品支持,读取不到时尝试 MythicMobs
AzureFlow启用 AzureFlow 物品库支持,读取不到时尝试 MythicMobs
SX-Item启用 SX-Item 物品库支持,读取不到时尝试 MythicMobs

带前缀的产物直接按前缀选择来源。无前缀产物根据开关顺序读取;具体使用哪一种物品库时,建议使用对应前缀,避免多个开关同时启用造成来源判断不明确。

为什么控制台提示物品不存在?

分解产物创建失败时,控制台会输出物品不存在提示。常见原因包括:

  • 物品 ID 拼写错误。
  • 对应物品插件未安装或未启用。
  • 对应物品库开关未开启。
  • 使用了错误的前缀。
  • 物品库中不存在对应 ID。
  • MythicMobs 未安装,但配置使用了无前缀物品 ID并依赖 MythicMobs 回退。

确认物品来源和 ID 后,执行 /lyfj reload 重新加载规则。

关闭界面时物品去哪了?

关闭界面时,插件会把上方分解格子中的未处理物品返还到玩家背包。

当背包空间不足时,是否掉落到玩家当前位置由 drop-near 控制:

yaml
drop-near: true
配置值行为
true背包放不下的物品掉落在玩家当前位置,并发送 message.inv-max
false不执行代码中的掉落处理

关闭界面前应确保背包有足够空间。

点击额外按钮没有反应怎么办?

额外按钮只从 config.ymlextra-button 中读取编号 08 的槽位。按钮编号超出范围时不会加载。

支持的按钮类型如下:

type 写法作用
get尝试取出全部分解格子中的物品
put:<Lore文本>遍历玩家背包,将 Lore 任意一行包含指定文本的物品放入分解格子

示例:

yaml
extra-button:
  0:
    type: 'put:&7品质: &a一般'
    item: '160:5'
    name: '&7一键放入&a一般&7品质的装备'
    lore:
      - '[点我]'
  8:
    type: 'get'
    item: '160:7'
    name: '&7一键取回全部装备'
    lore: []

按钮的 item 使用旧版数字物品 ID和子 ID格式。按钮点击存在约 1 秒冷却。

为什么额外按钮最多只能配置 9 个?

界面底部只使用第 0 到第 8 个槽位显示额外按钮,共 9 个位置。配置编号小于 0 或大于 8 时会被跳过,不会加载。

未配置的底部槽位会显示填充物品。

额外条件不满足时为什么没有产物?

额外条件会在规则执行前检查。一个额外条件中的多个 condition 必须全部通过,该条件对应的 result 才会加入执行列表。

项目支持以下条件格式:

条件格式判断方式
papi:{表达式}先解析 PlaceholderAPI 变量,再进行比较
permission:{权限节点}玩家拥有指定权限时通过
nopermission:{权限节点}玩家没有指定权限时通过
roll:{数值}0100 的范围进行随机判断

papi:{} 条件支持 >=<===>< 比较。多个比较可以使用 && 连接,例如:

yaml
condition:
  - 'papi:{%player_level% >= 5 && %player_level% <= 10}'

$return$continue 有什么区别?

这两个动作写在额外条件的 result 列表中:

动作作用
$return立即结束当前规则执行,不再发放该规则产物,也不再执行当前规则后续动作
$continue跳过当前动作,继续处理后面的动作

额外条件还支持调整当前规则产物几率的动作:

  • $addChance:{数值}:增加几率。
  • $takeChance:{数值}:减少几率。
  • $setChance:{数值}:直接设置几率。

额外条件可以执行哪些动作?

项目代码支持以下动作格式:

动作格式作用
$msg:{消息}向玩家发送消息
$consoleCmd:{命令}以控制台身份执行命令
$playerCmd:{命令}以玩家身份执行命令
$opCmd:{命令}临时以管理员身份执行玩家命令
$addChance:{数值}增加当前规则产物几率
$takeChance:{数值}减少当前规则产物几率
$setChance:{数值}设置当前规则产物几率
$continue跳过当前动作
$return停止当前规则执行

命令中的 %p 会替换为当前玩家名称。产物附加命令还会经过 PlaceholderAPI 解析。

分解规则中的 commands 怎么执行?

规则可以配置 commands 列表:

yaml
commands:
  - '[op]bc %p分解了条件1'
  - '[console]bc %p分解了条件1'
  - '[player]bc %p分解了条件1'

支持的执行方式如下:

前缀执行身份
[op]临时提升玩家为管理员后执行,再恢复原状态
[console]以控制台身份执行
无前缀以玩家身份执行

命令中的 %p 会替换为当前玩家名称。

为什么分解结果会存入战利品仓库?

当以下条件同时满足时,产物会直接交给 LyLootsWareHouse:

  • is-save-to-lylootswarehouse: true
  • LyLootsWareHouse 已安装并启用。
  • LyLootsWareHouse 中存在对应物品。

配置示例:

yaml
is-save-to-lylootswarehouse: false

不满足条件时,产物会正常加入玩家背包。该功能不是 MySQL 存储功能,不需要根据项目证据额外安装 LyMySQLCore。

为什么分解后没有发送成功消息?

成功消息由 message.success 控制:

yaml
message:
  success: '&a分解完毕!'

单个产物消息由 message.result 控制。代码支持以下占位符:

占位符内容
%name被分解物品名称
%item获得的产物名称
%amount获得数量

当产物存入 LyLootsWareHouse 时,数量文本会附加仓库存储提示。

如果成功消息没有出现,检查 message.success 是否存在,并确认本次操作确实匹配到规则且完成了分解。

服务器版本应该如何确认?

插件的 plugin.yml 声明:

yaml
api-version: 1.13

项目构建时使用 Paper API 1.16.5-R0.1-SNAPSHOT,代码包含低于 1.13 的旧版材质 ID兼容处理,并通过材质名称、数字 ID和子 ID创建物品。

项目证据没有提供更高版本的单独兼容性声明。实际可用性还取决于服务器核心以及所使用物品插件的 API兼容性。

插件需要哪些依赖?

插件在 plugin.yml 中声明的软依赖只有:

插件类型
MythicMobs软依赖,作为默认物品来源和部分物品来源的回退

根据功能使用情况,还会调用以下插件或接口:

  • LyEntryReload
  • NeigeItems
  • OriginAttribute
  • AzureFlow
  • SX-Item
  • NeonFlash
  • PlaceholderAPI
  • LyLootsWareHouse

这些插件没有在 plugin.yml 中声明为依赖。使用对应前缀、配置开关、PlaceholderAPI 条件或战利品仓库功能时,应确认对应插件已安装并启用。

项目证据中没有 MySQL 存储配置或 MySQL 数据库实现,因此本插件当前不需要安装 LyMySQLCore,也不存在“连接数据库后分解功能才生效”的配置要求。

分解界面为什么不能拖动物品?

界面会拦截拖拽事件,拖拽操作会被取消。物品应通过普通点击、快捷移动或额外按钮进入分解格子。

界面上方超过 open-decomposition-slot 的格子、分解按钮、产物预览区域、填充区域和额外按钮区域也会被限制点击,避免直接修改界面内容。

关闭界面时物品被重复返还怎么办?

每个分解界面状态只执行一次关闭返还逻辑。插件会记录该界面是否已经完成返还,避免同一次关闭事件重复返还物品。

如果背包无法容纳返还物品,是否掉落仍由 drop-near 决定。

为什么修改额外按钮后没有变化?

额外按钮只从主配置 config.yml 读取,不会从 extra 文件夹中的规则文件读取。修改后需要执行:

text
/lyfj reload

同时确认:

  • 槽位编号为 08
  • typeget 或以 put: 开头。
  • item 使用可创建的数字 ID、子 ID或材质名称。
  • namelore 位于对应数字槽位下。

为什么规则文件放在 extra 后仍然没有加载?

extra 文件夹中的文件必须同时满足以下条件:

  • 文件扩展名为 .yml,大小写不影响判断。
  • 文件或其子目录位于插件目录的 extra 下。
  • 文件根节点包含 decomposition-set
  • 规则条目位于 decomposition-set 的下一层。

例如,以下结构可以被扫描:

text
plugins/LyDecompositionReload/extra/额外配置.yml
plugins/LyDecompositionReload/extra/custom/规则.yml

以下文件不会被加载:

text
plugins/LyDecompositionReload/extra/规则.txt
plugins/LyDecompositionReload/extra/规则.yml.bak

修改文件后执行 /lyfj reload