玩家自制商店
player 模式让玩家自己上架、定价和管理商品。商店配置文件只负责界面、货币、上传限制和入口按钮;真正的商品数据来自数据库,不读取 shop/*.yml 里的 goods。
适用场景
- 生存服玩家摆摊、个人店铺、玩家交易街。
- RPG 服装备寄售,配合白名单/黑名单限制可上架物品。
- 沉浸式摆摊:配合
/malkuth place [商店ID]把玩家商店绑定到世界方块。
关键配置
| 字段 | 说明 |
|---|---|
mode | player 或 PLAYER |
currency | 必填;玩家交易建议同时配置 give、take、deny 动作 |
goods | 不读取;玩家上架商品来自数据库 |
title | 可使用 {player} 显示店主名称 |
layout | g 的数量就是玩家商店可展示/上传的槽位数量;玩家商店当前只有一页 |
limit.create.limit | 每个玩家可创建/上架的数量上限,支持 Kether 表达式 |
limit.white_list | 允许上传的物品匹配规则,至少命中一条才允许上架 |
limit.black_list | 禁止上传的物品匹配规则,命中后优先拦截 |
icons | 可放 malkuth player_shop edit、malkuth player_shop upload 等入口 |
玩家能做什么
| 功能 | 入口 | 说明 |
|---|---|---|
| 浏览指定玩家商店 | /malshop playershop <商店ID> <玩家> | 打开某个玩家的个人商店 |
| 浏览玩家商店列表 | /malshop browse <商店ID> | 查看该玩家商店配置下的店铺列表 |
| 编辑自己的商店 | 图标动作 malkuth player_shop edit | 管理已上架商品 |
| 上传主手物品 | 图标动作 malkuth player_shop upload | 关闭界面后按提示输入价格 |
| 购买他人商品 | 点击玩家商店商品 | 买家扣款,卖家收款;离线交付走插件内部处理 |
| 绑定商店方块 | /malkuth place [商店ID] | 将自己的玩家商店绑定到指向的方块 |
配置示例
下面节选自默认 shop/player_shop_full.yml:
mode: PLAYER
currency:
mode: "%custom_points%"
actions:
give: |-
command inline "custompoints give {{ sender }} {{ &money }}" as console
tell inline "&a买家 &f{{ &buyer }} &a购买了 {{ &amount }} 个 &f{{ &display-name }}&a,你收到 &e{{ &money }} &a点券"
take: |-
command inline "custompoints take {{ sender }} {{ &money }}" as console
tell inline "&a你从 &f{{ &seller }} &a购买了 {{ &amount }} 个 &f{{ &display-name }}&a,花费了 &e{{ &money }} &a点券"
deny: |-
tell color "&c点券不足! 需要 &e{{ &need-money }} &c点券,你只有 &e{{ &money }}"
display: '&d玩家商店'
title: '&e{player} &7的商店'
layout:
- '#########'
- '#ggggggg#'
- '#ggggggg#'
- '#ggggggg#'
- '#########'
- '#E##U##B#'
icons:
'E':
material: "writable book"
name: '&e编辑我的商店'
actions:
left:
- 'malkuth player_shop edit'
'U':
material: "emerald"
name: '&a上架新商品'
actions:
left:
- 'malkuth player_shop upload'
limit:
create:
limit: '3'
white_list:
- contains_name:
uncolor: true
match: 传说
- material:
match: DIAMOND_SWORD
black_list:
- contains_lore:
uncolor: true
match: 绑定
玩家商店方块
当 config.yml -> player-shop-block.enabled 开启后,管理员或有权限玩家可以通过 /malkuth place [商店ID] 绑定玩家商店方块:
- 只允许绑定
player模式商店,并且目标玩家必须已经有自己的商店商品记录。 - 不填
商店ID时,会自动选中你第一个已有商品的玩家商店。 BIND_EXISTING模式会把你指向的已有方块绑定为入口,并检查允许材质。PLACE_ABOVE模式会在底座方块上方生成配置中的商店方块。- 其他玩家右键已绑定方块时,会打开店主的玩家商店。
- 店主破坏方块或方块被爆炸破坏后,绑定会自动解除;非店主破坏可被配置拦截。
当前实现注意点
player模式不读取goods,不要在这里写固定商品列表。- 玩家商店当前按
g槽位展示单页,不做普通商店那种自动分页。 - 自定义 PAPI 货币做玩家交易时,建议同时配置
give、take、deny,否则只能读余额,无法完整处理买卖双方资金。 malkuth.admin可以看到部分管理入口,但编辑/上传界面主要仍围绕操作者自己的商店数据设计,不建议当作完整“代管他人店铺”工具使用。