常见问题
插件无法正常打开交易界面
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 个交易槽位:
- 第一位玩家使用第
0至8个槽位。 - 第二位玩家使用第
9至17个槽位。
玩家不能把物品放入对方的交易区域。拖动物品时也会检查目标槽位,防止物品进入错误区域。
物品无法放入交易栏
检查以下情况:
- 物品是否包含
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倒计时期间交易内容不应再被修改。关闭交易界面会结束交易倒计时并取消交易;尚未完成交易的物品会尝试退回各自玩家的背包。
交易结束后物品没有立即到账
只有最终倒计时完成后,交易才会正式执行。执行顺序包括:
- 转移第一位玩家放入的物品。
- 扣除并转移第一位玩家提交的货币。
- 转移第二位玩家放入的物品。
- 扣除并转移第二位玩家提交的货币。
- 向双方发送交易成功提示并关闭交易界面。
如果交易界面在倒计时完成前被关闭,交易会取消,物品会尝试退回原玩家背包。
货币金额不同步
检查 currency-textbox 中的货币名称和 DragonCore 组件名:
yaml
currency-textbox:
金币: 发包_对方金币文本框
点券: 发包_对方点券文本框
自定义: 发包_对方自定义文本框当玩家输入货币金额时,插件会根据货币名称查找对应的文本框,并把金额同步到对方界面。组件名错误或 DragonCore 界面中不存在对应组件时,对方界面不会正确显示金额。
配置键名必须与 DragonCore 界面发送的货币名称一致。
支持哪些货币
项目代码确认支持以下货币类型:
| 配置格式 | 对应功能 | 所需插件或接口 |
|---|---|---|
金币 | Vault 经济余额 | Vault 及已注册的经济服务 |
点券 | PlayerPoints 点券 | PlayerPoints |
LyShopReload#货币ID | LyShopReload 自定义货币 | LyShopReload |
CX#变量ID | CraftX 数值变量 | 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'比例应填写 0 到 1 之间的数值。
交易完成后没有绑定物品
交易后的绑定功能由 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 正常运行,并检查是否有其他界面插件拦截了关闭操作。