跳到主要内容

回收商店

recycle 模式让玩家把背包里的物品卖回给服务器。商店页面负责展示回收入口,实际匹配条件和奖励来自 recycle/*.yml 的回收规则。

适用场景

  • 回收多余装备、材料、鱼获或活动物品。
  • 按物品名、Lore、附魔、耐久、NBT、物品源 ID 等规则匹配后发放货币、物品源物品或 Kether 奖励。
  • 提供一键回收、同类回收、收益预览、误操作撤回。
  • 从外部背包回收物品,例如 legendwarehouse / soulringx

关键配置

字段说明
moderecycleRECYCLE
currency可省略;省略时仍能加载该商店,但货币奖励最终按回收奖励系统处理
goods必填;goods.*.id 指向 recycle/*.yml 顶层规则 ID,不是 goods/*.yml 商品 ID
goods.*.price主要用于展示层变量,不决定最终回收奖励
target_inventory可选;指定回收扫描/扣物的背包源
recycle.one_click_enabled是否允许 malkuth recycle all 一键回收
recycle.confirm_before_recycle当前会被解析,主要作为配置预留;实际确认体验以当前会话实现为准
recycle.preview_limit当前会被解析;预览输出不完全依赖该值截断
recycle.filters.whitelist / blacklist当前按材质过滤,推荐写 - material: DIAMOND_SWORD 这类格式
recycle.protect.*保护有名物品、附魔物品、收藏/锁定标记物品不被回收
recycle.rollback.*开启撤回快照;当前主要对单条规则点击回收生效
recycle.shop_level_limit.*回收链路独立的商店级次数/货币限制,不走购买链路的限购系统
recycle.messages.*覆盖回收提示,支持回收专属占位符

图标动作

动作行为
malkuth recycle all回收背包中所有匹配规则且未被保护的物品
malkuth recycle same按主手物品匹配规则,批量回收同类物品
malkuth recycle preview输出当前可回收物品与预计收益
malkuth recycle rollback撤回最近一次可撤回的回收快照
page next / page pre翻页

配置示例

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

mode: RECYCLE
enable: true

title: '&2回收站 &7{page}/{max-page}'
display: '&2回收站'

currency:
mode: vault

recycle:
one_click_enabled: true
confirm_before_recycle: true
preview_limit: 12
filters:
whitelist: []
blacklist:
- material: DIAMOND_SWORD
protect:
lock_named_items: true
lock_enchanted_items: true
lock_favorite_marked_items: true
favorite_tag_keys:
- malkuth.favorite
- malkuth.locked
- favorite
- locked
rollback:
enabled: true
expire_seconds: 30
messages:
one_click_success: '&a成功回收 {recycled_count} 个物品!获得物品种类 {reward_item_count} 个,物品总数 {reward_item_total_amount} 个,货币 {reward_currency_amount}'
preview_empty: '&c没有可回收的物品'
rollback_success: '&a成功撤回上次回收'

goods:
diamond_rule:
id: 钻石装备回收
price: '{price}'
display:
material: "diamond chestplate"
name: '&b钻石装备回收'
lore:
- '&7回收任意钻石装备'
- '&a基础单价: {price}'

回收占位符

常用回收消息占位符包括:

占位符说明
{recycled_count}本次成功回收的物品数量
{recycled_item_name} / {recycled_item_material}被回收物品名称与材质
{reward_item_count}奖励物品种类数
{reward_item_total_amount}奖励物品总数量
{reward_currency_amount}奖励货币数量
{preview_rule_count} / {preview_total_count} / {preview_currency_amount}预览阶段的规则数量、物品数量与预计货币
{rule_id} / {rule_name}当前回收规则 ID 与显示名
{limit_reason}自定义 messages.limit_reached 中的限制原因

更完整的规则匹配、奖励、限制与消息说明见 回收系统

当前实现注意点

  • goods.*.id 指向回收规则 ID;shop.goods.*.display 不决定规则本身的匹配与奖励。
  • price 不参与最终奖励结算,实际奖励以 recycle/*.yml -> rewards 为准。
  • recycle 模式可以省略 currency;如果改用 recycle_shop,则序列化阶段仍要求货币配置。
  • malkuth recycle same 当前按玩家主背包同类回收,不完全等同于 target_inventory 的外部背包扫描。
  • 回收限额使用独立统计,不走普通购买链路的 item_count_limit / trade_amount_limit
  • 回收规则匹配器当前已支持 source / item_sourcenbt / !nbt;完整写法、上下文变量和默认示例见 回收系统

相关页面