分解商店
decompose 模式提供“把物品拖入槽位,再点击确认分解”的交互。它复用 recycle/*.yml 的规则来判断物品和发放奖励,但不是回收商店会话,不读取 recycle.* 配置块。
适用场景
- RPG 装备分解台、材料拆解工坊。
- 需要玩家手动放入物品,而不是扫描整包回收的场景。
- 根据权限开放不同分解规则,例如 VIP 可分解高级装备。
关键配置
| 字段 | 说明 |
|---|---|
mode | decompose 或 DECOMPOSE |
currency | 必填;商店序列化阶段要求存在货币配置 |
goods | 必填;goods.*.id 指向 recycle/*.yml 规则 ID,用作可用分解规则白名单 |
goods.*.if | 可选;控制玩家是否可用某条分解规则 |
decompose.key_sell | 布局中可放入待分解物品的槽位字符 |
decompose.key_confirm | 配置中的确认按钮字符;实际按钮还需要图标动作配合 |
decompose.filters.whitelist | 允许放入的文本关键词,空列表表示不限制 |
decompose.filters.blacklist | 禁止放入的文本关键词,命中后拒绝放入 |
icons | 确认按钮需要绑定 malkuth decompose confirm |
玩家能做什么
| 功能 | 说明 |
|---|---|
| 放入物品 | 把背包物品拖入 decompose.key_sell 对应的槽位 |
| 取回物品 | 从放入槽位取回尚未分解的物品 |
| 确认分解 | 点击绑定 malkuth decompose confirm 的按钮 |
| 自动匹配规则 | 系统按 goods.*.id 限定的回收规则匹配物品 |
| 返还未匹配物品 | 未匹配任何规则的物品不会被吞掉,会返还给玩家 |
配置示例
下面节选自默认 shop/decompose_example.yml:
mode: DECOMPOSE
title: '&b分解商店'
layout:
- '#########'
- '#1111111#'
- '#1111111#'
- '#1111111#'
- '####c####'
goods:
diamond_equipment:
id: 钻石装备分解
iron_equipment:
id: 铁装备分解
decompose:
key_sell: '1'
key_confirm: 'c'
filters:
whitelist: []
blacklist:
- '不可分解'
- '绑定'
icons:
'c':
material: CRAFTING_TABLE
name: '&a确认分解'
lore:
- '&7点击分解放入槽位的所有物品'
- '&7未匹配规则的物品将返还'
actions:
left:
- 'malkuth decompose confirm'
currency:
mode: vault
高级用法
默认 shop/decompose_advanced.yml 展示了按权限开放规则的写法:
goods:
diamond_equipment:
id: 钻石装备分解
if: 'perm malkuth.decompose.diamond'
iron_equipment:
id: 铁装备分解
decompose:
filters:
whitelist:
- '可分解'
- '装备'
blacklist:
- '不可分解'
当前实现注意点
goods.*.id指向回收规则 ID,不是goods/*.yml商品 ID。- 如果你想允许所有已加载回收规则参与匹配,可以使用空的
goods: {};如果写了规则列表,就只匹配列表中的规则。 decompose.key_confirm只是配置中的按钮字符;实际确认按钮必须在对应icons中绑定malkuth decompose confirm。DECOMPOSE不读取recycle.*,所以rollback、shop_level_limit、recycle.messages这类配置只适用于recycle/recycle_shop。- 过滤器是文本关键词过滤,适合做“包含可分解/装备才允许放入”这类规则;复杂检测仍应写在
recycle/*.yml规则中。