跳到主要内容

商店配置(shops/*.yml

商店文件位于:plugins/AIOShop/shops/
每个 *.yml 文件都会被加载为一个商店:

  • 商店 ID = 文件名(不含 .yml),用于命令 /as open <商店ID>
  • 商店内的商品位于 items: 下,每个键都是一个“商店商品 ID”(shopItemId

首次启动会从插件资源释放示例商店到 shops/

1) 商店基础字段

display-name: "&2&l杂货铺"
description:
- "&7日常生活用品商店"
permission: "aioshop.shop.general" # 可选:商店级权限(购买校验时生效)
gui-template: "general-store" # templates/<id>.yml
type: "NORMAL" # 当前已基本不使用(可忽略)

2) 随机商店 random-generation

随机商店通过 random-generation.enabled: true 启用。

random-generation:
enabled: true
generation-mode: "ITEM_BY_ITEM" # 或 BY_RARITY
period: "PERSONAL_DAILY" # 刷新周期(复用 LimitType)
count: 8 # ITEM_BY_ITEM 模式生效
allow-duplicates: false # ITEM_BY_ITEM 模式生效
manual-refresh-enabled: true # 是否允许玩家手动刷新(消耗刷新点数)

generation-mode

  • ITEM_BY_ITEM:按稀有度权重逐个挑选,直到达到 count
  • BY_RARITY:先随机挑选一个稀有度,再展示该稀有度下所有启用商品(count/allow-duplicates 会被忽略)

period 可用值见 LimitType(与限购周期同名):

NONE / PERSONAL_DAILY / PERSONAL_WEEKLY / PERSONAL_MONTHLY / PERSONAL_TOTAL / GLOBAL_DAILY / GLOBAL_WEEKLY / GLOBAL_MONTHLY / GLOBAL_TOTAL

3) 商品 items

基本结构(每个商品一段):

items:
bread: # shopItemId(商店内唯一标识)
item-id: "bread" # 物品模板 ID(来自 items.yml)
neige-item-id: "" # 可选:NeigeItems 物品 ID(安装 NeigeItems 后生效)
display-name: "&f新鲜面包"
description:
- "&7基础食物"

buy-price:
amount: 5
currency: "VAULT" # VAULT / PLAYER_POINTS / ITEM / PAPI_COMMAND

buy-rewards:
self:
type: "ITEM"
item: "bread"
amount: 1

sell-item-matcher:
material: "bread"

sell-rewards:
main:
type: "CURRENCY"
amount: 2.0
currencyType: "VAULT"

discount: 0
permission: "aioshop.item.bread" # 可选:商品级权限

limit-type: "NONE" # 购买限购类型
limit-amount: 0 # 购买限购数量
limit-amount-range: "10-20" # 可选:随机限购(仅随机商店生成时使用)

sell-limit-type: "NONE" # 出售限额类型
sell-limit-amount: 0 # 出售限额数量

rarity: "普通" # 可选:随机商店稀有度(对应 rarities.yml)
enabled: true

3.1 item-id / neige-item-id

  • item-id:从 items.yml(Base64)取一个物品作为展示物品/发放物品
  • neige-item-id:如果安装了 NeigeItems,则随机商店生成商品时会优先使用 NeigeItems 物品作为展示物品(找不到会回退到 item-id

3.2 买入 buy-price + buy-rewards

  • buy-price 控制“花费什么”;buy-rewards 控制“买到什么”
  • 如果只配置 buy-pricebuy-rewards 为空:玩家会花钱但拿不到任何东西(通常不建议)

购买奖励支持类型:ITEM / COMMAND / CURRENCY / EXPERIENCE

PERMISSION 在配置解析中存在,但当前版本未实现奖励生效(会被忽略)。

3.3 卖出 sell-item-matcher + sell-rewards

卖出不使用“卖出价格”,而是:

  • sell-item-matcher:定义“玩家交什么物品才算可卖”
  • sell-rewards:定义“卖出后给什么奖励”

如果只配置 sell-item-matchersell-rewards 为空:玩家会把物品交掉但得不到任何东西(这可以用于“回收站/销毁”,但请明确告知玩家)。

3.4 限购/限额 limit-*

购买限购:

  • limit-type:限购类型(个人/全服 + 日/周/月/总计)
  • limit-amount:限购数量(小于等于 0 视为不限制)

出售限额:

  • sell-limit-type / sell-limit-amount 同理

3.5 随机限购 limit-amount-range

格式:"min-max"(例如 "10-20")。
随机商店每次生成该商品时,会在这个范围里随机一个最终的 limit-amount

解析失败会使用默认值 1

4) 修改后如何生效

编辑 plugins/AIOShop/shops/*.yml 后执行:

/as reload

5) 最小示例(新建一个商店)

创建文件 plugins/AIOShop/shops/my-shop.yml

display-name: "&b&l我的商店"
description:
- "&7这是一个最小示例"
gui-template: "general-store"
items:
diamond:
item-id: "diamond"
buy-price:
amount: 100
currency: "VAULT"
buy-rewards:
self:
type: "ITEM"
item: "diamond"
amount: 1
enabled: true