跳到主要内容

货币系统

AIOShop 支持四种货币类型(CurrencyType):

  • VAULT:Vault 经济(需要安装 Vault + 经济插件)
  • PLAYER_POINTS:PlayerPoints 点券(需要安装 PlayerPoints)
  • ITEM:物品货币(通过“物品匹配器”扣除背包内物品)
  • PAPI_COMMAND:PlaceholderAPI + 控制台命令实现的“自定义货币”

主配置 config.yml 可设置默认货币:currency.default,但每个商品仍可单独指定 buy-price.currency

1) 买入价格 buy-price

1.1 Vault / PlayerPoints

buy-price:
amount: 50
currency: "VAULT" # 或 PLAYER_POINTS
displayname: "&6金币" # 可选:自定义显示名(会覆盖货币名称显示)

1.2 物品货币(ITEM)

物品货币需要在 buy-price.currency-item 中定义“匹配规则”(见下文)。

buy-price:
amount: 3
currency: "ITEM"
currency-item:
display-name: "&b钻石"
material: "DIAMOND"

1.3 PAPI 命令货币(PAPI_COMMAND)

需要:

  1. 安装 PlaceholderAPI
  2. plugins/AIOShop/papi-currencies.yml 定义货币
  3. 在商品中引用 papi-currency-id
buy-price:
amount: 100
currency: "PAPI_COMMAND"
papi-currency-id: "vault_eco"

2) PAPI 命令货币定义(papi-currencies.yml

文件:plugins/AIOShop/papi-currencies.yml

currencies:
vault_eco:
display-name: "&6&l金币"
placeholder: "vault_eco_balance" # 不带 % 符号
add-command: "eco give {player} {amount}"
take-command: "eco take {player} {amount}"
description: "通过命令对接的金币"

规则:

  • placeholder 会自动包裹为 %<placeholder>% 去读取
  • add-command / take-command 由控制台执行,且必须包含 {player}{amount}
  • 编辑后建议 /as reload(会重载 PAPI 货币与货币系统)

3) 卖出:收购条件 + 出售奖励

卖出不是“配置一个卖价”,而是:

  1. sell-item-matcher:定义“收购什么物品”
  2. sell-rewards:定义“卖出后给什么”

示例(收购面包,给金币):

sell-item-matcher:
material: "BREAD"
sell-rewards:
main:
type: "CURRENCY"
amount: 2.0
currencyType: "VAULT"

注意:

  • sell-rewards 为空时,玩家会被扣物品但得不到任何东西(可用于“销毁回收”,但不建议默认这样做)
  • 卖出奖励支持 ITEM / COMMAND / CURRENCY / EXPERIENCE

4) 奖励类型(buy-rewards / sell-rewards)

4.1 物品奖励 ITEM

buy-rewards:
self:
type: "ITEM"
item: "diamond" # items.yml 的物品模板 ID
amount: 1

4.2 命令奖励 COMMAND

buy-rewards:
broadcast:
type: "COMMAND"
commands:
- "broadcast &e{player} &6购买了 {amount} 个神秘物品"
delay: 0 # 可选,单位 ms(内部会换算为 ticks)
executeAsPlayer: false # 可选,true 则由玩家执行

命令内支持占位符:

  • {player} / %player%
  • {uuid} / %player_uuid%
  • {amount} / %amount%

4.3 货币奖励 CURRENCY

sell-rewards:
money:
type: "CURRENCY"
amount: 10.0
currencyType: "VAULT" # VAULT / PLAYER_POINTS / PAPI_COMMAND
multiplier: 1.0 # 可选:倍率
papiCurrencyId: "vault_eco" # 仅 currencyType=PAPI_COMMAND 时需要

注意:currencyType: ITEM 不支持作为“货币奖励”(插件会忽略),请改用 type: ITEM 直接给物品。

4.4 经验奖励 EXPERIENCE

buy-rewards:
exp:
type: "EXPERIENCE"
amount: 200
isLevel: false # true 则加等级,否则加经验值

5) 物品匹配器(sell-item-matcher / ITEM 货币)

匹配器支持多个条件,全部满足才匹配

sell-item-matcher:
display-name: "&e回收凭证"
material: "PAPER"
name-contains: "回收"
lore-contains:
- "高价值交易"
nbt-contains:
- key: "CustomModelData"
value: "123"

可用条件键:

  • material:材质名(例如 DIAMOND
  • name-contains / nameContains
  • name-equals / nameEquals
  • lore-contains / loreContains:字符串列表,要求都能在 Lore 中匹配到
  • nbt-contains / nbtContains:列表,每项包含 keyvalue

display-name 只用于在 GUI 中展示“收购条件名称”,不影响匹配逻辑。