跳到主要内容

全球求购

global_request / global-request / request 是全服共享的求购市场。玩家手持样品物品发布求购单,系统按配置冻结求购资金,其他玩家提交匹配物品,求购者审核通过后完成成交。

适用场景

  • 生存服材料收购:玩家发布“长期收钻石/矿物/作物”的求购单。
  • RPG 装备悬赏:玩家指定样品装备、来源 ID 或材质,等待其他玩家供货。
  • 跨服交易所:所有子服共享同一个求购池,供货者提交后由求购者审核。
  • 需要先托管资金、后审核成交的安全交易场景。

关键配置

字段说明
modeglobal_requestglobal-requestrequestGLOBAL_REQUEST
currency必填;求购创建、托管、退款、成交付款都会使用该货币
goods不读取;求购单来自玩家发布数据
item_cache.enabled建议保持 false;全球求购数据来自数据库,不参与静态商品缓存
request.*控制创建求购单、样品是否消耗、价格/数量限制和备注长度
escrow.*控制是否创建时托管资金、取消/过期是否退款、退款失败是否邮箱兜底
submit.*控制供货提交、是否允许自己供货、待审核申请上限和单次供货数量上限
approve.*控制同意/拒绝供货前是否打开二次确认
match.*控制样品与供货物品的匹配方式
expire.*控制求购单到期扫描、到期退回和到期前提醒
announcement.*控制创建求购、提交供货、成交公告
layout / icons主列表布局;g 展示求购单,按钮可放发布、我的求购、搜索和排序入口
tax.*求购成交同样走商店税收配置,供货者实收会扣除税费

玩家能做什么

功能入口说明
浏览求购打开 global_request 商店查看当前所有 active 求购单
发布求购主界面按钮或 /malkuth request create <商店> <单价> <数量> [匹配方式]手持样品物品创建求购单
提交供货列表右键 / Shift+左键,详情页按钮,或 /malkuth request submit <求购ID> [数量]提交主手匹配物品,生成待审核供货申请
查看详情列表左键查看样品、单价、数量、托管余额、匹配方式和到期时间
查看我的求购主界面 M 按钮在“全部 / 我的求购”之间切换筛选
搜索与排序主界面 S 按钮按关键词、求购者、来源筛选,并按时间或到期时间排序
审核供货求购详情的“供货申请”界面求购者左键同意、右键拒绝,Shift+右键批量拒绝当前页
取消求购详情页取消按钮或 /malkuth request cancel <求购ID>求购者或管理员取消 active 求购单

配置示例

下面节选自默认 shop/global_request.yml

mode: global_request
currency: vault

title: '&8全球求购 {page}/{max-page}'
display: '&6全球求购'

item_cache:
enabled: false

layout:
- '#########'
- '#ggggggg#'
- '#ggggggg#'
- '#ggggggg#'
- 'P#C#M#S#N'

icons:
C:
material: emerald
name: '&a发布求购'
lore:
- '&7手持样品物品发布一个求购单'
- '&7创建时会托管本次求购所需资金'
- '&7默认匹配: &f{default_match_mode}'
- '&7默认有效期: &e{expire_hours} &7小时'
actions:
left:
- 'malkuth global_request create'
M:
material: book
name: '&e我的求购'
actions:
left:
- 'malkuth global_request my_requests'
S:
material: compass
name: '&b搜索与排序'
actions:
left:
- 'malkuth global_request search'
right:
- 'malkuth global_request clear_all_filters'
shift_left:
- 'malkuth global_request sort'

request:
confirm_before_create: true
consume_sample_item: false
create_cooldown_seconds: 5
min_unit_price: 0.01
max_unit_price: -1
min_amount: 1
max_amount: -1
max_note_length: 80

escrow:
enabled: true
refund_on_cancel: true
refund_to_mailbox_on_failure: true

submit:
allow_owner_submit: false
confirm_before_submit: true
count_pending_as_reserved: true
max_pending_offers: 20
max_submit_per_offer: -1

approve:
confirm_before_approve: true
confirm_before_reject: true

match:
default_mode: source_or_similar
allow_custom_input: false

expire:
enabled: true
duration_hours: 168
check_interval_ticks: 1200
max_process_per_check: 100
return_to_mailbox: true
remind_before_hours: 12

匹配方式

匹配方式说明
source_or_similar优先用物品源 ID 匹配;识别不到或不一致时回退 Bukkit isSimilar
source_id必须识别到与样品一致的完整物品源 ID
similar使用 Bukkit isSimilar 判断,适合原版或 NBT 完全一致的物品
material只比较材质,适合粗粒度材料收购
custom使用回收系统 matcher 规则;仅在 match.allow_custom_input: true 时允许玩家输入

source_id 对接 MythicMobs、ItemsAdder、Baikiruto 等物品源时最精确,但样品必须能被 /malkuth source all 正常识别。排查匹配失败时,建议先用 /malkuth source all/malkuth itemdebug 看当前物品能识别到哪些来源。

托管、退款与交付

  • escrow.enabled: true 时,创建求购会立即扣除 unit_price * amount,后续同意供货时直接从托管余额结算,避免求购者离线或余额不足导致成交失败。
  • escrow.refund_on_cancel: true 时,取消或过期会退回剩余托管资金;关闭后不会自动退款,适合作为保证金消耗机制。
  • 供货者提交物品后,物品会进入待审核供货申请,不会立刻成交。
  • 同意供货时,系统会支付供货者、写入交易/税收流水,并通过安全交付路径把物品发给求购者。
  • 拒绝、取消、过期和填满后的剩余供货申请都会走邮箱退回路径,避免供货物品丢失。

搜索、排序与占位符

主界面可通过 malkuth global_request search 打开聊天输入搜索,搜索会匹配求购物品名、求购者、备注、求购 ID 和材质;也支持按物品来源筛选。malkuth global_request sort 会在时间降序、时间升序、到期时间升序之间切换。

常用 PlaceholderAPI 变量:

变量说明
%malkuth_global_request_count_<商店ID>%指定求购商店当前 active 求购单数量
%malkuth_global_request_pending_<商店ID>%指定求购商店当前 pending 供货申请数量
%malkuth_global_request_my_active_<商店ID>%当前玩家在指定求购商店中的 active 求购单数量
%malkuth_global_request_my_pending_offers_<商店ID>%当前玩家作为求购者收到的 pending 供货申请数量

运行时权限

权限说明
malkuth.command.request/malkuth request 命令入口
malkuth.command.request.create创建求购命令
malkuth.command.request.submit提交供货命令
malkuth.command.request.cancel取消求购命令
malkuth.command.request.approve同意供货命令
malkuth.command.request.reject拒绝供货命令
malkuth.globalrequest.open打开全球求购商店
malkuth.globalrequest.my查看自己的求购筛选
malkuth.globalrequest.create创建求购单
malkuth.globalrequest.submit提交供货
malkuth.globalrequest.approve同意供货
malkuth.globalrequest.reject拒绝供货
malkuth.globalrequest.cancel取消自己的求购单
malkuth.globalrequest.admin以管理员身份审核/管理他人求购
malkuth.globalrequest.admin.cancel管理员取消他人求购

当前实现注意点

  • global_request 不读取 goods,求购单、供货申请和样品物品都来自数据库记录。
  • 当前默认样品不消耗;如果开启 request.consume_sample_item,创建成功会扣除主手 1 个样品。
  • submit.count_pending_as_reserved: true 时,待审核供货会占用剩余需求额度,避免多人同时提交导致超量。
  • submit.allow_owner_submit: false 时,求购者不能给自己的求购单供货。
  • match.allow_custom_input 默认关闭;开启后玩家可输入 custom matcher,写错会被拒绝创建。
  • 求购模式依赖数据库表与后台过期扫描,跨服环境建议保持 MySQL / Redis 配置稳定。
  • group_buy_* 仍是预留 UI 模板,不等同于当前全球求购功能。

相关页面