跳到主要内容

玩家自制商店

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 edituploadsearchsearch_sellerclear_filters 等入口

玩家能做什么

功能入口说明
浏览指定玩家商店/malshop playershop <商店ID> <玩家>打开某个玩家的个人商店
浏览玩家商店列表/malshop browse <商店ID>查看该玩家商店配置下的店铺列表,浏览页可按店主名称或 UUID 搜索
搜索商品图标动作 malkuth player_shop search在当前玩家商店界面按物品名、Lore、挂单 ID、卖家名或卖家 UUID 搜索
按卖家筛选图标动作 malkuth player_shop search_seller输入玩家名或 UUID 后只看指定卖家的商品;malkuth player_shop clear_filters 会清空商品搜索和卖家筛选
编辑自己的商店图标动作 malkuth player_shop edit管理已上架商品
上传主手物品图标动作 malkuth player_shop upload关闭界面后按提示输入价格
购买他人商品点击玩家商店商品买家扣款,卖家收款;离线交付走插件内部处理
绑定商店方块/malkuth place [商店ID]将自己的玩家商店绑定到指向的方块
生成并绑定商店方块/malkuth place create [商店ID]强制按 PLACE_ABOVE 逻辑在目标方块上方生成配置方块并绑定
自定义商店全息/malkuth place holo ...预览、开关、设置、增删行、调整高度和行距
选择摆摊模型/malkuth place model [模型ID] [商店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#'
- '#########'
- '#EUSLC#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'
'S':
material: "compass"
name: '&e搜索商品'
lore:
- '&7当前搜索: &f{search_keyword}'
- '&7按名称、描述或卖家搜索商品'
actions:
left:
- 'malkuth player_shop search'
'L':
material: "name tag"
name: '&b卖家筛选'
lore:
- '&7当前筛选: &f{seller_filter}'
actions:
left:
- 'malkuth player_shop search_seller'
'C':
material: "barrier"
name: '&c清除筛选'
actions:
left:
- 'malkuth player_shop clear_filters'

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 模式会在底座方块上方生成配置中的商店方块。
  • /malkuth place create [商店ID] 会临时强制使用 PLACE_ABOVE 逻辑,即使全局 player-shop-block.mode 仍是 BIND_EXISTING
  • 其他玩家右键已绑定方块时,会打开店主的玩家商店。
  • 开启 player-shop-block.hologram 后,绑定方块可显示默认全息文本,玩家可用 /malkuth place holo 系列命令调整。
  • 开启 player-shop-block.stall-entity.enabled 且类型为 ARMOR_STAND 后,会在绑定方块附近生成摆摊盔甲架;右键实体可打开对应玩家商店。
  • 玩家可用 /malkuth place model [模型ID] [商店ID] 切换自己可用的摆摊模型,模型权限来自 player-shop-block.stall-entity.models.*.permission
  • 店主破坏方块或方块被爆炸破坏后,绑定会自动解除;非店主破坏可被配置拦截。

当前实现注意点

  • player 模式的商品搜索会匹配物品名、Lore、挂单 ID、卖家名和卖家 UUID;卖家筛选会先尝试精确玩家名 / UUID,再按玩家名模糊匹配。
  • /malshop browse <商店ID> 打开的店铺浏览页只展示有商品的店主,搜索框同样支持玩家名和 UUID。
  • player 模式不读取 goods,不要在这里写固定商品列表。
  • 玩家商店展示、上架管理和编辑界面都按 g 槽位分页;layout 决定每页容量,不代表只能展示一页。
  • 自定义 PAPI 货币做玩家交易时,建议同时配置 givetakedeny,否则只能读余额,无法完整处理买卖双方资金。
  • malkuth.admin 可以看到部分管理入口,但编辑/上传界面主要仍围绕操作者自己的商店数据设计,不建议当作完整“代管他人店铺”工具使用。

相关页面