跳到主要内容

经济系统

EMC 高级商店内置完整的多货币经济体系,包含经济接口对接、宏观调控和价格限制三大系统。

多货币支持

插件通过 EconomyManager 统一管理所有货币类型。

已对接的经济插件

插件货币类型说明
Vault金币主要货币,支持所有基于 Vault 的经济插件
PlayerPoints点券第二货币,直接 API 对接
PAPI 自定义货币任意通过 PlaceholderAPI 变量读取余额,命令执行扣除/充值

PAPI 自定义货币

通过「自定义货币商城」模块,可以定义任意第三方货币并用于商店交易。工作原理:

  • 余额读取 — 解析 PAPI 占位符获取数值(如 %myplugin_balance%
  • 扣除 — 执行控制台命令(如 myplugin take {player} {amount}
  • 充值 — 执行控制台命令(如 myplugin give {player} {amount}

配置示例(shops/currency-shop.yml):

currencies:
medal:
display-name: "勋章"
symbol: "★"
balance-placeholder: "%myplugin_medal%"
withdraw-command: "myplugin takemedal {player} {amount}"
deposit-command: "myplugin givemedal {player} {amount}"

categories:
medal-shop:
name: "勋章商店"
currency: "medal"
icon: "DIAMOND"
items:
diamond_sword:
material: DIAMOND_SWORD
display-name: "钻石剑"
price: 50
amount: 1
buy-limit: 1
commands:
- "say {player} 购买了钻石剑"

混合支付

商品可配置需要多种货币同时支付。例如一件物品需要 50 金币 + 10 点券:

  • 系统先检查所有货币是否足够
  • 全部足够后依次扣除
  • 任一扣除失败自动回滚已扣金额

经济宏观调控

根据全服物品的供需量自动调整价格,防止经济崩盘。

核心公式

当前价格 = 基础价格 × (1 + 调控系数 × (回收量 - 出售量) / 基准量)
  • 回收量 — 玩家卖给商店的总数量
  • 出售量 — 商店卖给玩家的总数量
  • 调控系数 — 价格波动幅度因子
  • 基准量 — 交易量基准值

价格衰减

长时间无交易的物品价格逐步回归基准价:

衰减因子 = 1.0 - 衰减速率 × (距上次交易时间 / 衰减阈值)
新价格 = 基础价格 + (当前价格 - 基础价格) × 衰减因子

配置示例

# economy-control.yml
enabled: true
adjust-factor: 0.1
base-volume: 1000
decay-rate: 0.01
decay-threshold-ms: 86400000
update-interval-ticks: 12000
sell-ratio: 0.5

items:
diamond:
base-price: 100.0
min-price: 50.0
max-price: 500.0
fixed: false
iron_ingot:
base-price: 10.0
min-price: 5.0
max-price: 50.0
fixed: false
golden_apple:
base-price: 200.0
min-price: 200.0
max-price: 200.0
fixed: true
参数默认值说明
adjust-factor0.1调控系数,越大价格波动越剧烈
base-volume1000交易量基准值
decay-rate0.01价格衰减速率
decay-threshold-ms86400000衰减触发阈值(毫秒),默认 24 小时
update-interval-ticks12000价格更新间隔(tick),默认 10 分钟
sell-ratio0.5回收价与购买价的比率

固定价格锚点

将物品设置为 fixed: true 后,该物品价格不受市场供需影响,始终保持基准价。

上架价格限制

防止恶意定价,管控全球市场、拍卖行、玩家商店的上架价格。

# price-limiter.yml
enabled: true
default-max-multiplier: 5.0
default-min-multiplier: 0.1
use-dynamic-base: true

items:
diamond:
max-price: 500
min-price: 10
参数说明
default-max-multiplier默认最高价格倍率(基准价 × N)
default-min-multiplier默认最低价格倍率
use-dynamic-base是否以动态调控价格为基准(否则使用固定基准价)

拥有 emcshop.pricelimit.bypass 权限的玩家可绕过价格限制。

交易邮箱

离线时收到的物品/金币自动存入邮箱,上线时提示领取:

  • GUI 界面一键领取所有物品
  • 邮箱容量可配置,VIP 可扩容
  • 过期物品自动清理
  • 命令:/mailbox

PAPI 占位符

插件注册的 PlaceholderAPI 占位符:

占位符说明
%emcshop_balance%玩家主货币余额
%emcshop_points%玩家点券余额
%emcshop_shop_count%玩家开设商店数
%emcshop_total_trades%玩家总交易次数
%emcshop_total_spent%玩家总消费额
%emcshop_total_earned%玩家总收入
%emcshop_market_listings%当前上架数
%emcshop_mailbox_count%未领取邮箱物品数
%emcshop_shop_rating%商店评分
%emcshop_rank_trade%交易额排名
%emcshop_lottery_pool%当前彩票奖池
%emcshop_spin_free%今日剩余免费转盘次数
%emcshop_daily_refresh%每日商店刷新倒计时
%emcshop_coupon_count%持有优惠券数
%emcshop_fav_count%收藏夹物品数
%emcshop_item_price_<物品ID>%某物品当前动态价格