货币系统
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)
需要:
- 安装
PlaceholderAPI - 在
plugins/AIOShop/papi-currencies.yml定义货币 - 在商品中引用
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) 卖出:收购条件 + 出售奖励
卖出不是“配置一个卖价”,而是:
sell-item-matcher:定义“收购什么物品”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/nameContainsname-equals/nameEqualslore-contains/loreContains:字符串列表,要求都能在 Lore 中匹配到nbt-contains/nbtContains:列表,每项包含key与value
display-name 只用于在 GUI 中展示“收购条件名称”,不影响匹配逻辑。