跳到主要内容

玩家自制商店

player 模式让玩家自己上架、定价和管理商品。商店配置文件只负责界面、货币、上传限制和入口按钮;真正的商品数据来自数据库,不读取 shop/*.yml 里的 goods

适用场景

  • 生存服玩家摆摊、个人店铺、玩家交易街。
  • RPG 服装备寄售,配合白名单/黑名单限制可上架物品。
  • 沉浸式摆摊:配合 /malkuth place [商店ID] 把玩家商店绑定到世界方块。

关键配置

字段说明
modeplayerPLAYER
currency必填;玩家交易建议同时配置 givetakedeny 动作
goods不读取;玩家上架商品来自数据库
title可使用 {player} 显示店主名称
layoutg 的数量就是玩家商店可展示/上传的槽位数量;玩家商店当前只有一页
limit.create.limit每个玩家可创建/上架的数量上限,支持 Kether 表达式
limit.white_list允许上传的物品匹配规则,至少命中一条才允许上架
limit.black_list禁止上传的物品匹配规则,命中后优先拦截
icons可放 malkuth player_shop editmalkuth 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 货币做玩家交易时,建议同时配置 givetakedeny,否则只能读余额,无法完整处理买卖双方资金。
  • malkuth.admin 可以看到部分管理入口,但编辑/上传界面主要仍围绕操作者自己的商店数据设计,不建议当作完整“代管他人店铺”工具使用。

相关页面