商店配置(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:按稀有度权重逐个挑选,直到达到countBY_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-price而buy-rewards为空:玩家会花钱但拿不到任何东西(通常不建议)
购买奖励支持类型:ITEM / COMMAND / CURRENCY / EXPERIENCE
PERMISSION在配置解析中存在,但当前版本未实现奖励生效(会被忽略)。
3.3 卖出 sell-item-matcher + sell-rewards
卖出不使用“卖出价格”,而是:
sell-item-matcher:定义“玩家交什么物品才算可卖”sell-rewards:定义“卖出后给什么奖励”
如果只配置 sell-item-matcher 而 sell-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