Skip to content

配置说明

LyDragonTrade 的主配置文件位于 plugins/LyDragonTrade/config.yml,用于控制交易界面标题、货币输入框、交易税率、物品限制、交易距离、倒计时、发起方式和提示消息。

修改配置后,可使用 /ldt reload 重载配置。该指令仅允许服务器管理员执行。

完整配置

yaml
# 交易界面标题,需要与 DragonCore 交易界面中的 match 一致
gui-title: '离渊交易'

# DragonCore 货币输入框映射
currency-textbox:
  金币: 发包_对方金币文本框
  点券: 发包_对方点券文本框
  自定义: 发包_对方自定义文本框
  # LyShopReload#货币ID: 发包_对方离渊商店货币文本框
  # CX#货币ID: 发包_对方CX货币文本框

# 收款玩家实际获得的货币比例
currency-tax:
  金币:
    - 'vip.1:0.95'
    - 'vip.2:0.975'
    - 'vip.3:0.99'
  点券:
    - 'vip.1:0.95'
    - 'vip.2:0.975'
    - 'vip.3:0.99'

# 是否启用 TQBindReload 的交易后绑定功能
tqbind-enable: true

# 是否在控制台记录交易内容
log-trade-info: true

# 收到交易申请时播放的 Bukkit 音效名称
initiated-trade-sound: 'ENTITY_PLAYER_LEVELUP'

# Lore 中包含下列文本的物品禁止交易
anti-trade-for-contain-lore-item:
  - '已绑定'

# 双方锁定交易后的完成倒计时,单位为秒
trade-count-down: 5

# 交易申请等待倒计时,单位为秒
receive-trade-count-down: 15

# 发起交易后的冷却时间,单位为秒
initiate-trade-cool-down: 15

# 世界名称包含下列文本时禁止发起交易
anti-trade-world:
  - 'fb'

# 可发起交易的距离
trade-distance: -1

# 是否允许潜行并右键玩家发起交易
shift-right-initiate-trade: true

message:
  trade-distance: '&c与对方不在一定范围内, 无法发起交易!'
  item-contain-lore: '&c该物品禁止进行交易!'
  anti-trade-world: '&c该世界禁止交易!'
  trade-success: '&a交易成功!'
  trade-cancel: '&c交易取消!'
  trade-cool-down: '&c15秒内无法重复发起交易, 请稍后再试!'
  initiate-trade: '&7你已向&6{player}&7发起交易, 正在等待回应...(15s)'
  receive-trade: '&6{player}&7向您发起了交易申请.'
  refuse-trade: '&7你拒绝了交易请求.'
  refused-trade: '&6{player}&7拒绝了您的交易请求.'
  trade-try: '&c禁止重复发起交易, 请等待对方回应.'
  target-busy: '&c目标处于繁忙状态, 暂时无法发起交易.'
  insufficient-slot: '&c对方的背包剩余空间不足以进行交易!'
  insufficient-vault: '&c金币不足!'
  insufficient-point: '&c点券不足!'
  insufficient-CX#货币ID: '&c自定义货币不足!'
  insufficient-LyShopReload#货币ID: '&c自定义货币不足!'
  trade-locked-self: '&c当前交易已锁定,无法修改交易物品。'

配置中的交易槽位数量不可调整。插件创建一个 18 格交易背包,前 9 格属于交易发起方,后 9 格属于交易接收方,每名玩家最多放入 9 个槽位的物品。

界面标题

yaml
gui-title: '离渊交易'
配置项类型说明
gui-title字符串Bukkit 交易背包的标题,同时用于匹配 DragonCore 交易界面。

gui-title 必须与 DragonCore 交易界面配置中的 match 保持一致。默认界面使用 离渊交易,修改标题时需要同步修改 DragonCore 界面文件,否则交易界面可能无法正常匹配。

标题中的 & 会在创建交易背包时转换为 Minecraft 颜色符号。

货币输入框

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

currency-textbox 用于声明可交易的货币,以及对方 DragonCore 界面中需要同步更新的文本框组件名。

货币键格式货币来源使用条件
金币Vault 经济账户服务器需要安装 Vault,并注册可用的经济服务。
点券PlayerPoints 点券账户服务器需要安装并启用 PlayerPoints。
LyShopReload#货币IDLyShopReload 指定货币服务器需要安装并启用 LyShopReload。
CX#货币IDCraftX 指定变量服务器需要提供对应的 CraftX 变量。
自定义默认配置中的界面展示位服务端交易结算代码没有为普通 自定义 键提供扣除和发放逻辑。

右侧的值是对方界面中显示该货币金额的 DragonCore 文本框组件名。组件名填写错误时,玩家输入的金额仍可能被服务端记录,但对方界面不会正确同步显示。

LyShopReload 货币

LyShopReload 货币键必须以 LyShopReload# 开头,井号后填写货币 ID。

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

交易完成时,插件通过 LyShopReload API 从付款方扣除对应货币,并按税率向收款方发放货币。

CraftX 变量货币

CraftX 变量货币键必须以 CX# 开头,井号后填写变量 ID。

yaml
currency-textbox:
  CX#示例货币: 发包_对方CX货币文本框

交易确认时,插件会读取对应变量并检查余额;交易完成时,从付款方变量扣除数值,再向收款方变量增加扣税后的数值。

输入数值限制

货币金额最终会作为整数处理。DragonCore 输入框应只允许玩家输入非负整数,不要提交小数、负数、表达式或其它字符。

新增货币时,还需要同步修改 DragonCore 的 LyDragonTrade_Gui.yml,为该货币添加输入框、金额刷新和对方金额显示逻辑。仅在 config.yml 中增加映射不会自动生成界面组件。

交易税率

yaml
currency-tax:
  金币:
    - 'vip.1:0.95'
    - 'vip.2:0.975'
    - 'vip.3:0.99'
  点券:
    - 'vip.1:0.95'
    - 'vip.2:0.975'
    - 'vip.3:0.99'

currency-tax 按货币分别设置收款比例。列表项格式为 权限:比例

示例实际效果
vip.1:0.95拥有 vip.1 权限时,收款玩家获得交易金额的 95%。
vip.2:0.975拥有 vip.2 权限时,收款玩家获得交易金额的 97.5%。
vip.3:0.99拥有 vip.3 权限时,收款玩家获得交易金额的 99%。

税率匹配规则:

  • 税率按收款玩家拥有的权限匹配。
  • 同时匹配多个权限时,使用数值最高的比例。
  • 未配置税率、税率列表为空或没有匹配到权限时,比例为 1.0,即全额到账。
  • 配置中的比例应填写 01 之间的数字。
  • 扣除部分不会存入其它账户,只会减少收款方最终得到的金额。

自定义货币的税率节点必须与 currency-textbox 中的完整货币键一致。

yaml
currency-tax:
  LyShopReload#金币碎片:
    - 'vip.1:0.95'
  CX#示例货币:
    - 'vip.1:0.95'

TQBindReload 联动

yaml
tqbind-enable: true
说明
true在 TQBindReload 已启用时,对交易获得的物品执行交易后绑定。
false不执行交易后绑定。

该功能同时要求服务器安装并启用 TQBindReload。只开启配置但没有启用 TQBindReload 时,插件不会执行绑定操作。

布尔值必须写成标准 YAML 布尔值 truefalse,不要在值后添加分号。

交易记录

yaml
log-trade-info: true
说明
true交易完成前在服务端控制台输出双方获得的物品和货币。
false不输出交易内容。

物品记录优先显示物品自定义名称,没有自定义名称时显示 Bukkit 材质名称,并附带物品数量。货币记录包含货币名称、计算后的数值和匹配到的比例。

当前代码只确认了控制台日志输出,没有发现独立日志文件或数据库记录配置。

申请提示音

yaml
initiated-trade-sound: 'ENTITY_PLAYER_LEVELUP'
配置项类型说明
initiated-trade-sound字符串玩家收到交易申请时播放的 Bukkit Sound 枚举名称。

该值会通过 Sound.valueOf 直接解析,必须填写当前服务端版本存在的完整音效枚举名称。填写不存在的名称可能导致发起交易时报错。

禁止交易的物品

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

列表中的文本用于检查物品 Lore。玩家在交易期间点击 Lore 包含任意指定文本的物品时,操作会被取消,并发送 message.item-contain-lore

匹配规则:

  • 使用“包含”匹配,不要求整行完全相同。
  • 配置文本中的 & 会转换为 Minecraft 颜色符号后再进行匹配。
  • 可以配置多个禁止文本,命中任意一项即禁止操作。
  • 删除整个 anti-trade-for-contain-lore-item 节点后,不执行该项检查。

交易倒计时

yaml
trade-count-down: 5
receive-trade-count-down: 15
initiate-trade-cool-down: 15
配置项单位默认值说明
trade-count-down5双方锁定交易后,正式交换物品和货币前的倒计时。
receive-trade-count-down15交易申请界面的等待时间,倒计时结束后自动拒绝申请。
initiate-trade-cool-down15玩家成功发起一次交易申请后,再次发起交易的等待时间。

当双方均确认并锁定交易后,插件会锁定本次交易状态并开始 trade-count-down。倒计时结束后才会记录交易、转移物品、扣除货币并向收款方发放货币。

message.trade-cool-downmessage.initiate-trade 中的默认秒数是固定文本,不会自动读取上述配置。修改倒计时时,应同步修改消息中的时间描述。

禁止交易的世界

yaml
anti-trade-world:
  - 'fb'

插件检查交易发起方所在世界的名称。世界名称只要包含列表中的任意文本,就会禁止发起交易并发送 message.anti-trade-world

例如,配置 fb 时,名称为 fbfb_01world_fb 的世界都会被拦截。该匹配区分大小写。

删除整个 anti-trade-world 节点后,不执行世界名称关键词检查。交易距离配置仍可能要求双方处于同一世界。

交易距离

yaml
trade-distance: -1
世界要求距离要求
小于 0不要求双方位于同一世界不检查距离
等于 0必须位于同一世界不检查距离
大于 0必须位于同一世界双方距离不得超过配置值

距离检查发生在交易申请创建之前。未通过检查时,只向发起方发送 message.trade-distance

潜行右键发起交易

yaml
shift-right-initiate-trade: true
说明
true玩家潜行并右键另一名玩家时发起交易申请。
false关闭潜行右键发起方式,仍可使用 /ldt trade 玩家 发起交易。

该配置只控制交互事件,不影响命令和插件 API 发起交易。

提示消息

yaml
message:
  trade-success: '&a交易成功!'
  trade-cancel: '&c交易取消!'
配置项触发条件可用替换内容
message.trade-distance双方不满足世界或距离要求。
message.item-contain-lore玩家操作了包含禁止 Lore 的物品。
message.anti-trade-world发起方所在世界被禁止交易。
message.trade-success物品和货币交换完成。
message.trade-cancel交易界面在完成前关闭或倒计时被终止。
message.trade-cool-down发起方仍处于交易冷却。
message.initiate-trade成功向目标发出交易申请。{player}:接收方玩家名
message.receive-trade玩家收到交易申请。{player}:发起方玩家名
message.refuse-trade接收方拒绝申请,或申请等待超时。
message.refused-trade发起方的申请被拒绝或超时。{player}:接收方玩家名
message.trade-try发起方已经处于其它交易申请中。
message.target-busy目标已经处于其它交易申请中。
message.insufficient-slot对方背包空槽数量少于当前玩家提交的物品槽位数量。
message.insufficient-vaultVault 金币余额不足。
message.insufficient-pointPlayerPoints 点券余额不足。
message.insufficient-LyShopReload#货币ID指定 LyShopReload 货币余额不足。
message.insufficient-CX#货币ID指定 CraftX 变量货币余额不足。
message.trade-locked-self玩家锁定交易后尝试修改自己的交易物品。

自定义货币余额不足消息

自定义货币的消息键必须使用 insufficient- 加完整货币键。

yaml
message:
  insufficient-LyShopReload#金币碎片: '&c金币碎片不足!'
  insufficient-CX#示例货币: '&c示例货币不足!'

如果没有配置对应消息,代码会使用“自定义货币不足”作为默认文本。

颜色代码

通过插件消息工具发送的内容会将 & 转换为 Minecraft 颜色符号,因此可以使用 &a&c&7 等传统颜色代码。

当前版本中,背包空间不足和货币不足消息由 Bukkit 直接发送,没有经过统一的颜色转换方法。若发现这些消息原样显示 &,需要在实际配置和服务端环境中调整显示方式。

配置注意事项

  • config.yml 必须使用正确的 YAML 缩进,统一使用空格,不要使用制表符。
  • 布尔值使用 truefalse,不要在值后添加分号。
  • gui-title 修改后必须同步修改 DragonCore 界面的 match
  • currency-textbox 的右侧组件名必须与 DragonCore 界面组件完全一致。
  • 使用金币、点券或自定义货币前,必须安装并启用对应的货币插件。
  • 新增自定义货币时,需要同时配置输入框映射、DragonCore 界面组件;需要税率时还要添加对应的 currency-tax 节点。
  • 货币金额应限制为非负整数。
  • Bukkit 音效名称会直接解析,修改 initiated-trade-sound 前应确认服务端版本支持该名称。
  • 配置重载只会重新读取 config.yml,不会自动修复 DragonCore 界面中的标题、组件名或货币输入逻辑。