Skip to content

常见问题

插件无法正常打开交易界面

LyDragonTrade 的交易界面依赖 DragonCore。插件启动时只有检测到 DragonCore 已启用,才会注册交易界面相关监听器。

请确认:

  • DragonCore 已安装并成功启动。
  • LyDragonTrade_Apply 接受交易界面配置已放入 DragonCore 的界面目录。
  • LyDragonTrade_Gui 交易主界面配置已放入 DragonCore 的界面目录。
  • config.yml 中的 gui-title 与交易主界面的 match 完全一致。

标题中的颜色符号、空格和中文都必须一致。

/ldt trade 没有反应

先确认命令格式正确:

text
/ldt trade <玩家名>

该命令需要由玩家执行,目标玩家必须在线,且不能选择自己。插件还会检查以下条件:

  • 发起者和目标玩家没有处于其他交易申请中。
  • 目标玩家没有处于繁忙状态。
  • 发起者不在 anti-trade-world 配置禁止的世界中。
  • 满足 trade-distance 设置的世界和距离限制。
  • 发起者不在 initiate-trade-cool-down 冷却时间内。

控制台执行该命令不会发起交易。

潜行右键玩家没有发起交易

潜行右键交易由 shift-right-initiate-trade 控制。

yaml
shift-right-initiate-trade: true

使用时需要同时满足以下条件:

  • 配置值为 true
  • 玩家处于潜行状态。
  • 右键目标是另一名玩家。
  • 发起者通过了世界、距离、忙碌状态和冷却时间检查。

玩家收不到交易申请

检查以下内容:

  • 目标玩家是否在线。
  • 目标玩家所在世界的名称是否包含 anti-trade-world 中的任意字符串。
  • DragonCore 是否已启用。
  • LyDragonTrade_Apply 界面是否存在并能被 DragonCore 打开。
  • 目标玩家是否已经处于其他交易申请或交易中。

收到申请时,插件会打开名为 LyDragonTrade_Apply 的 HUD,并播放 initiated-trade-sound 配置的音效。

交易申请过期了

交易申请的等待时间由以下配置控制:

yaml
receive-trade-count-down: 15

倒计时结束前,目标玩家需要在申请界面中接受或拒绝交易。倒计时结束后,申请会自动拒绝,双方分别收到拒绝提示。

交易距离限制不符合预期

交易距离由 trade-distance 控制:

配置值生效规则
小于 0不检查世界和距离
0必须在同一世界,不检查距离
大于 0必须在同一世界,且距离不能超过该数值

默认配置为:

yaml
trade-distance: -1

如果配置值大于 0,插件会同时检查世界是否相同以及双方位置距离是否超出限制。

交易主界面没有套用龙核界面

检查 config.yml 中的标题:

yaml
gui-title: '离渊交易'

该值会作为 Bukkit 交易容器标题使用,必须与 DragonCore 交易主界面中的 match 完全一致。请同时检查:

  • 中文是否一致。
  • 空格是否一致。
  • 颜色符号是否一致。
  • 是否误用了其他界面的标题。

交易槽位数量是多少

交易容器固定为 18 个槽位,双方各有 9 个交易槽位:

  • 第一位玩家使用第 08 个槽位。
  • 第二位玩家使用第 917 个槽位。

玩家不能把物品放入对方的交易区域。拖动物品时也会检查目标槽位,防止物品进入错误区域。

物品无法放入交易栏

检查以下情况:

  • 物品是否包含 anti-trade-for-contain-lore-item 配置中的 Lore 内容。
  • 物品是否已经被其他插件标记为绑定物品。
  • 当前玩家是否已经锁定交易。
  • 物品是否试图放入对方的交易槽位。
  • 拖动操作是否同时经过玩家背包或其他不允许的槽位。

Lore 拦截配置示例:

yaml
anti-trade-for-contain-lore-item:
  - '已绑定'

插件会检查物品 Lore 是否包含配置中的文字。配置中的 & 颜色符号会按颜色代码处理。

Shift 点击不能正常放入或取回物品

交易界面支持 Shift 点击,但只允许操作当前玩家自己的交易区域:

  • 从玩家背包 Shift 点击物品,会尝试放入当前玩家的 9 个交易槽位。
  • 从交易槽位 Shift 点击物品,只能取回当前玩家自己的物品。
  • 对方的交易槽位不能被取回或修改。
  • 交易锁定后,不能通过 Shift 点击修改交易内容。

拖动物品时被取消

交易界面会拦截不符合交易区域规则的拖动操作。以下情况会被取消:

  • 将物品拖到对方的交易槽位。
  • 将物品拖到玩家背包以绕过交易检查。
  • 一次拖动同时涉及交易区域和不允许的槽位。
  • 交易已经锁定后仍尝试修改交易物品。

这是交易容器的保护机制,不是物品丢失故障。

点击确定后交易被取消

双方点击确定后,插件会分别检查:

  • 对方背包是否有足够的空余槽位接收物品。
  • 金币是否足够。
  • 点券是否足够。
  • LyShopReload 自定义货币是否足够。
  • CraftX 自定义变量货币是否足够。
  • 货币输入值是否为有效数值。

任一检查失败,当前玩家会收到对应的不足提示,交易不会进入最终倒计时。

点击确定后无法修改交易内容

一方点击确定后,该方会进入锁定状态;双方都锁定后,插件才会开始最终交易倒计时。

锁定后:

  • 当前玩家不能修改自己的交易物品。
  • 当前玩家不能通过 Shift 点击继续放入或取回物品。
  • 另一方仍需完成自己的确认操作。
  • 双方都锁定后,倒计时由 trade-count-down 控制。

交易倒计时期间修改内容会怎样

双方完全锁定后,交易进入最终倒计时:

yaml
trade-count-down: 5

倒计时期间交易内容不应再被修改。关闭交易界面会结束交易倒计时并取消交易;尚未完成交易的物品会尝试退回各自玩家的背包。

交易结束后物品没有立即到账

只有最终倒计时完成后,交易才会正式执行。执行顺序包括:

  1. 转移第一位玩家放入的物品。
  2. 扣除并转移第一位玩家提交的货币。
  3. 转移第二位玩家放入的物品。
  4. 扣除并转移第二位玩家提交的货币。
  5. 向双方发送交易成功提示并关闭交易界面。

如果交易界面在倒计时完成前被关闭,交易会取消,物品会尝试退回原玩家背包。

货币金额不同步

检查 currency-textbox 中的货币名称和 DragonCore 组件名:

yaml
currency-textbox:
  金币: 发包_对方金币文本框
  点券: 发包_对方点券文本框
  自定义: 发包_对方自定义文本框

当玩家输入货币金额时,插件会根据货币名称查找对应的文本框,并把金额同步到对方界面。组件名错误或 DragonCore 界面中不存在对应组件时,对方界面不会正确显示金额。

配置键名必须与 DragonCore 界面发送的货币名称一致。

支持哪些货币

项目代码确认支持以下货币类型:

配置格式对应功能所需插件或接口
金币Vault 经济余额Vault 及已注册的经济服务
点券PlayerPoints 点券PlayerPoints
LyShopReload#货币IDLyShopReload 自定义货币LyShopReload
CX#变量IDCraftX 数值变量CraftX

自定义货币需要同时在 currency-textbox 中配置对应的 DragonCore 输入框,并在交易界面中发送相同的货币名称。

金币交易提示余额不足

金币交易通过 Vault 经济服务处理。请确认:

  • Vault 已安装并成功启动。
  • 服务器中存在可用的 Vault 经济提供者。
  • currency-textbox 中使用的是 金币
  • 玩家余额足够支付输入的金额。

如果 Vault 没有成功连接经济服务,金币相关功能无法正常执行。

点券交易提示余额不足或无法使用

点券交易需要 PlayerPoints 已安装并成功启动。插件使用 PlayerPoints API 检查、扣除和给予点券。

配置输入框时使用:

yaml
currency-textbox:
  点券: 发包_对方点券文本框

LyShopReload 自定义货币无法交易

LyShopReload 货币使用以下格式:

yaml
currency-textbox:
  LyShopReload#货币ID: 发包_对方离渊商店货币文本框

请确认:

  • LyShopReload 已安装并成功启动。
  • 货币ID 与 LyShopReload 中的货币 ID 一致。
  • DragonCore 界面存在对应的输入框。
  • currency-tax 中使用相同的完整键名配置税率时,键名包含 LyShopReload# 前缀。

CraftX 自定义变量货币无法交易

CraftX 变量货币使用以下格式:

yaml
currency-textbox:
  CX#变量ID: 发包_对方CX货币文本框

插件会读取玩家对应的 CraftX 变量,并要求变量值能够解析为数值。变量不存在或值不是有效数值时,交易不会继续,并会向控制台输出相关提示。

交易结束后到账金额少了

检查 currency-tax。该配置表示收款玩家最终获得的比例,不是额外扣除的税率。

例如:

yaml
currency-tax:
  金币:
    - 'vip.1:0.95'

拥有 vip.1 权限的收款玩家最终获得提交金额的 95%

税率匹配规则如下:

  • 按收款玩家的权限匹配配置。
  • 同时匹配多个权限时,使用其中数值最高的比例。
  • 没有匹配到任何权限时,默认按 1.0 结算,即收款玩家获得全部金额。
  • 物品不会按该比例减少,税率只作用于货币。

currency-tax 配置不生效

税率配置必须使用与 currency-textbox 相同的货币键名。

内置货币示例:

yaml
currency-tax:
  金币:
    - 'vip.1:0.95'
  点券:
    - 'vip.1:0.95'

自定义货币需要使用完整键名:

yaml
currency-tax:
  LyShopReload#货币ID:
    - 'vip.1:0.95'
  CX#变量ID:
    - 'vip.1:0.95'

比例应填写 01 之间的数值。

交易完成后没有绑定物品

交易后的绑定功能由 tqbind-enable 控制,并且还需要 TQBindReload 已安装并启用:

yaml
tqbind-enable: true

只有配置启用且插件检测到 TQBindReload 正常运行时,交易转移物品才会调用绑定接口。TQBindReload 未启用时,交易仍按普通物品交易流程执行。

交易记录在哪里查看

交易记录由 log-trade-info 控制:

yaml
log-trade-info: true

启用后,交易完成时会向控制台输出双方获得的物品和货币内容。关闭后不会输出这类交易记录。

玩家关闭界面后物品会不会消失

交易未完成时关闭交易界面会取消交易,并尝试将交易槽位中的物品退回双方背包。

如果玩家背包没有足够空间,退回物品可能受到 Bukkit 背包空间限制影响。交易开始前插件会检查接收方的空余槽位,但关闭界面后的退回操作仍以当前背包实际空间为准。

重载配置后配置没有生效

管理员可执行:

text
/ldt reload

该指令只对拥有管理员身份的发送者执行重载。插件会重新读取 plugins/LyDragonTrade/config.yml

重载后重新发起交易,检查以下内容是否已经同步:

  • 交易标题。
  • 交易距离和世界限制。
  • 交易申请及最终交易倒计时。
  • 货币输入框映射。
  • 货币到账比例。
  • Lore 拦截规则。
  • 交易音效和提示文本。

如何判断玩家当前是否有交易对象

如果安装并启用了 PlaceholderAPI,LyDragonTrade 会注册 ldt 变量标识,并提供以下变量:

变量返回内容
%ldt_trade_player_name%当前交易中的对方玩家名称
%ldt_trade_player_uuid%当前交易中的对方玩家 UUID
%ldt_apply_player_name%当前收到的交易申请发起者名称
%ldt_apply_player_uuid%当前收到的交易申请发起者 UUID

没有对应交易或交易申请时,这些变量返回空字符串。PlaceholderAPI 未启用时,LyDragonTrade 不会注册这些变量。

交易成功但控制台没有记录

检查:

yaml
log-trade-info: true

只有交易最终倒计时完成并成功结算后,插件才会输出交易记录。交易申请被拒绝、交易界面被关闭或货币、背包检查失败,都不会生成完成记录。

交易界面关闭后双方没有同时退出

交易双方使用同一个交易容器。任意一方关闭交易界面后,插件会移除交易数据、结束倒计时,并尝试关闭另一方的交易界面。

如果另一方仍看到界面,先确认 DragonCore 正常运行,并检查是否有其他界面插件拦截了关闭操作。