Skip to content

龙核资源

LyDragonTrade 使用 DragonCore 提供交易申请弹窗和双人交易界面。玩家发起交易后,接收方会看到申请弹窗;接受申请后,双方进入同一个 18 格交易容器,每人可操作其中 9 个交易槽位,并可通过界面输入货币数量、锁定交易和查看完成倒计时。

申请界面和交易主界面均依赖 DragonCore 发包交互。界面文件、组件名称、发包标识或界面标题不匹配时,可能出现按钮无效、货币不同步、锁定状态不显示或倒计时不刷新等问题。

依赖说明

依赖类型用途
DragonCore必需加载申请弹窗、交易主界面,并处理客户端发包与服务端界面控制。
PlaceholderAPI可选在 DragonCore 界面中显示申请者、交易对象的名称与 UUID。
Vault按需安装使用金币交易时提供经济账户操作。
PlayerPoints按需安装使用点券交易时提供点券账户操作。
LyShopReload按需安装使用 LyShopReload#货币ID 格式的自定义货币时提供货币操作。
CraftX按需安装使用 CX#货币ID 格式的变量货币时提供货币操作。
TQBindReload按需安装启用交易后绑定功能时,对成交物品执行绑定。

插件只有在检测到 DragonCore 已启用后,才会注册交易界面、发包、背包操作和 Shift + 右键交易监听器。若控制台提示 DragonCore 未启动,龙核交易功能不会生效。

文件放置

压缩包目录放置位置说明
Gui/*.ymlplugins/DragonCore/Gui/服务端 DragonCore 界面配置。
离渊/交易/客户端 DragonCore 资源目录交易界面使用的客户端贴图资源。

资源包中标注的 1.0.3 版本包含申请界面更新,并移除了通过 ESC 关闭申请弹窗的逻辑。建议优先使用压缩包内配套的 DragonCore 文件,不要混用不同版本的界面配置。

服务端界面文件

文件界面标识说明
LyDragonTrade_Apply.ymlLyDragonTrade_Apply交易申请弹窗,显示申请者、申请倒计时以及接受、拒绝按钮。
LyDragonTrade_Gui.ymlLyDragonTrade_Gui交易主界面,显示双方交易槽、货币输入框、锁定状态、完成倒计时和玩家背包。

文件名和界面标识会被插件直接用于打开界面或执行 DragonCore 方法,不建议修改。若必须改名,需要同步修改插件端调用;仅修改 YAML 文件名无法完成适配。

标题匹配

交易主界面默认匹配标题为 离渊交易,必须与插件 config.yml 中的 gui-title 保持一致:

yaml
gui-title: '离渊交易'

交易容器由插件创建,固定为 18 格。DragonCore 根据容器标题套用 LyDragonTrade_Gui.yml。如果 matchgui-title 不一致,玩家可能只会看到原版箱子界面,龙核按钮、文本框和状态显示也不会正常工作。

申请弹窗

发起交易后,插件会为接收方打开 LyDragonTrade_Apply HUD,并播放 initiated-trade-sound 配置的音效。申请倒计时由 receive-trade-count-down 控制,插件每秒更新一次 文本_交易倒计时 组件。

申请到期后会自动按拒绝处理,并关闭申请界面。接受申请后,插件会关闭双方当前容器,创建交易容器并为双方打开交易主界面。

申请界面变量

申请者信息需要 PlaceholderAPI 扩展支持。

变量返回内容可用对象
%ldt_apply_player_name%当前交易申请发起者的玩家名。接收交易申请的玩家。
%ldt_apply_player_uuid%当前交易申请发起者的 UUID。接收交易申请的玩家。

没有对应申请数据、变量调用者不是接收方或 PlaceholderAPI 未启用时,变量返回空文本。

申请弹窗发包

发包标识必须为 LyDragonTradeApply,第一个数据参数用于表示操作。

操作发包标识数据参数原页面写法
接受交易LyDragonTradeApply接受交易LyDragonTradeApply / 接受交易
拒绝交易LyDragonTradeApply拒绝交易LyDragonTradeApply / 拒绝交易

插件会在当前申请列表中查找与发包玩家有关的申请。没有找到申请数据时,玩家会收到 error,不会进入交易界面。

交易主界面

交易主界面使用同一个 18 格 Bukkit 容器保存双方物品:

容器槽位所属玩家操作限制
08第一位玩家第一位玩家可放入和取回,另一方不可操作。
917第二位玩家第二位玩家可放入和取回,另一方不可操作。

双方各有 9 个交易槽。插件的成交转移、背包空间检查、关闭返还和槽位保护均按这组固定槽位执行,因此不能只在 DragonCore YAML 中增加或删除交易格。

物品操作规则

  • 普通点击只能操作自己的交易区域,不能取走对方放入的物品。
  • Shift + 点击玩家背包物品时,插件只会把物品移动到当前玩家的 9 个交易槽中。
  • Shift + 点击交易物品时,只能从自己的交易槽取回背包。
  • 跨越非法槽位的拖拽操作会被拦截,避免物品进入另一方区域或绕过槽位限制。
  • anti-trade-for-contain-lore-item 中配置的 Lore 文本会阻止对应物品参与交易。
  • 玩家锁定交易后,不能继续修改自己的交易物品,也不能通过 Shift + 点击继续添加物品。
  • 交易未完成前关闭容器会取消交易,双方放入的物品会分别返还至原玩家背包。

交易界面变量

变量返回内容
%ldt_trade_player_name%当前交易对方的玩家名。
%ldt_trade_player_uuid%当前交易对方的 UUID。

玩家没有处于交易中或 PlaceholderAPI 未启用时,变量返回空文本。

交易主界面发包

交易主界面的发包标识必须为 LyDragonTrade。插件根据第一个数据参数识别操作。

操作发包标识数据参数原页面写法
初始化交易界面LyDragonTrade交易初始化LyDragonTrade / 交易初始化
确认并锁定交易LyDragonTrade确定交易LyDragonTrade / 确定交易
修改金币LyDragonTrade刷新货币金币、金额LyDragonTrade / 刷新货币 / 金币 / 金额
修改点券LyDragonTrade刷新货币点券、金额LyDragonTrade / 刷新货币 / 点券 / 金额
修改自定义货币LyDragonTrade刷新货币、货币键、金额LyDragonTrade / 刷新货币 / 自定义 / 金额

交易初始化

界面打开后发送 交易初始化,插件会通知另一方界面刷新交易槽位:

  • 第一位玩家初始化时,要求第二位玩家执行 对方交易槽位更新
  • 第二位玩家初始化时,要求第一位玩家执行 我方交易槽位更新

配套 YAML 中需要保留对应的方法名称,否则另一方看到的交易物品可能不会及时刷新。

刷新货币

刷新货币发包需要依次提供:

  1. 刷新货币
  2. currency-textbox 中已配置的货币键
  3. 输入框当前金额

插件只有在 currency-textbox.货币键 存在时才会保存金额,并把内容同步到对方文本框。货币键区分具体接入方式:

货币键格式对接功能示例
金币Vault 经济金币
点券PlayerPoints点券
LyShopReload#货币IDLyShopReload 自定义货币LyShopReload#金币
CX#货币IDCraftX 变量货币CX#积分

自定义货币发包中的第二个参数必须使用完整配置键,不能统一发送字面量 自定义。原页面中的 自定义 仅对应默认示例配置;扩展 LyShopReload 或 CraftX 货币时,应发送实际的 LyShopReload#货币IDCX#货币ID

插件确认交易时会把输入值转换为整数金额。界面应限制用户输入有效的非负整数,避免小数、空格或其它字符导致校验失败或数值转换异常。

确定交易

玩家点击确定按钮后,插件会依次检查:

  1. 当前交易是否已经进入双方锁定后的完成倒计时。
  2. 对方背包空槽数量是否足以接收当前玩家放入的物品种类。
  3. 输入的货币是否为有效数字。
  4. 当前玩家是否拥有足够的金币、点券或自定义货币。

检查通过后,插件会:

  • 显示当前玩家的锁定幕布。
  • 在对方界面显示对方玩家锁定幕布。
  • 隐藏当前玩家的确定按钮。
  • 将当前玩家标记为已锁定。
  • 双方都锁定后,启动 trade-count-down 配置的完成倒计时。

倒计时结束后才会交换双方物品和货币。任意一方提前关闭容器都会取消尚未完成的交易。

必须保留的组件与方法

插件会直接按照以下名称控制 DragonCore 界面。修改配套 YAML 时,应保留这些组件或同步调整插件代码。

申请界面组件

名称类型或用途插件操作
文本_交易倒计时申请剩余时间文本每秒设置 texts;接受交易时清空。

交易界面组件

名称类型或用途插件操作
文本_交易倒计时成交倒计时文本设置 texts 并将 visible 设为 true
贴图_当前玩家锁定幕布当前玩家锁定遮罩当前玩家确认后显示。
贴图_对方玩家锁定幕布对方锁定遮罩对方确认后显示。
贴图_确定交易按钮确认按钮当前玩家确认后隐藏。

交易界面方法

方法名用途
我方交易槽位更新刷新界面中的我方交易槽显示。
对方交易槽位更新刷新界面中的对方交易槽显示。

插件通过 DragonCore 的异步方法调用执行以上刷新方法。删除或重命名方法会影响双方交易槽的同步显示。

货币文本框映射

config.ymlcurrency-textbox 用于建立货币键与对方界面文本框组件名的映射。默认配置为:

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

例如玩家发送以下数据:

text
LyDragonTrade / 刷新货币 / 金币 / 100

插件会读取 currency-textbox.金币,并将对方界面中 发包_对方金币文本框 组件的 text 设置为 100

扩展货币时,配置键、发包中的货币键和税率节点必须保持一致:

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

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

文本框组件名可以自行调整,但调整后必须同步修改 currency-textbox。没有配置映射的货币发包会被忽略。

交易格数量

默认交易界面固定为双方各 9 个交易格,共 18 个容器槽位。当前插件逻辑直接使用以下范围:

text
第一位玩家:0-8
第二位玩家:9-17

以下逻辑均以固定 9 格为基础:

  • 成交时的物品转移。
  • 交易取消时的物品返还。
  • 双方可操作区域判断。
  • Shift + 点击自动放入区域。
  • 拖拽槽位保护。
  • 对方背包空间检查。

只修改 DragonCore 界面中的格子数量不会改变服务端容器逻辑,并可能造成物品显示与实际槽位不一致。普通使用不要修改交易格数量。

界面适配检查

修改或迁移 DragonCore 资源时,至少确认以下内容:

检查项正确要求
主界面标题YAML 的 matchconfig.ymlgui-title 完全一致。
申请界面标识保持为 LyDragonTrade_Apply
主界面标识保持为 LyDragonTrade_Gui
申请发包标识保持为 LyDragonTradeApply
主界面发包标识保持为 LyDragonTrade
申请操作参数使用 接受交易拒绝交易
主界面操作参数使用 交易初始化确定交易刷新货币
倒计时组件两个界面均保留 文本_交易倒计时
锁定组件保留当前玩家幕布、对方幕布和确定按钮的既定名称。
货币组件currency-textbox 的值与对方文本框组件名一致。
交易槽保持双方各 9 格,并正确映射容器槽位。
客户端资源离渊/交易/ 中的贴图已放入客户端 DragonCore 资源目录。

常见问题

打开后显示原版容器

检查 LyDragonTrade_Gui.ymlmatch 是否与 config.yml 中的 gui-title 完全相同。默认值为 离渊交易

接受或拒绝按钮没有反应

检查发包标识是否为 LyDragonTradeApply,数据参数是否为 接受交易拒绝交易。同时确认服务器已启用 DragonCore,并已加载 LyDragonTrade_Apply.yml

申请者名称不显示

确认已安装并启用 PlaceholderAPI,界面使用的是 %ldt_apply_player_name%。该变量只会为当前申请的接收方返回申请者名称。

交易对象名称不显示

确认已安装并启用 PlaceholderAPI,界面使用的是 %ldt_trade_player_name%。玩家必须已经进入交易容器,否则变量返回空文本。

输入货币后对方界面不刷新

检查以下内容:

  • 发包标识为 LyDragonTrade
  • 第一个参数为 刷新货币
  • 第二个参数与 currency-textbox 中的配置键完全一致。
  • currency-textbox 的值是对方界面的真实文本框组件名。
  • 第三个参数是输入框当前金额。

点击确定后没有完成交易

双方都必须点击确定并成功通过背包空间与货币余额检查。双方锁定后,还需要等待 trade-count-down 倒计时结束。若任意一方关闭界面,交易会取消并返还物品。

锁定后仍能修改物品

配套界面的视觉锁定和服务端槽位保护是两部分。服务端会阻止已锁定玩家修改自己的交易槽及 Shift + 点击添加物品;若界面没有显示锁定效果,请检查 贴图_当前玩家锁定幕布贴图_对方玩家锁定幕布贴图_确定交易按钮 的组件名称。

修改交易格数量后物品异常

当前版本固定使用 18 格交易容器,双方各占 9 格。仅修改 YAML 无法扩展服务端槽位范围,请恢复配套界面的默认槽位数量。