EconomyProxy

基本信息

属性 值
类名 mytown.proxies.EconomyProxy
文件 src/main/java/mytown/proxies/EconomyProxy.java
类型 纯静态工具类,私有构造
启用版本 Minecraft 1.7.10

功能

建城、圈地、传送等一切需要扣费的操作所依赖的经济后端。费用不是自己实现的,而是直接包一层 MyEssentials 的 myessentials.economy.api.Economy。

由 MyTown 的 serverStarting 调用 EconomyProxy.init() 建立。

关键方法

方法 返回 说明
init() void 用 Config.instance.costItemName 的值构造 Economy,并打日志
getEconomy() Economy 返回 Economy 实例
isItemEconomy() boolean 判断当前是否走物品经济(而非 ForgeEssentials / Vault 货币)
getCurrency(int) String 格式化金额,如 32 Diamonds 或 15 $

实现要点

isItemEconomy() 的判定是三段否定——只有三者全不成立才返回 true:

if (config.equals(Economy.CURRENCY_FORGE_ESSENTIALS)) return false;
else if (config.equals(Economy.CURRENCY_VAULT))        return false;
else if (config.startsWith(Economy.CURRENCY_CUSTOM))    return false;
return true;

即:币种不是 ForgeEssentials、不是 Vault、也不是 Custom 前缀时,才算物品经济。

getCurrency() 的格式化规则值得注意:它先取 economy.getCurrency(amount), 若返回串的首字符或末字符不是数字,就拼成 amount + " " + currency; 否则原样返回。这是为兼容 Vault 返回的 $32 这类带前后缀金额的写法。

依赖

相关条目

  • Config - costItemName 决定币种
  • Mod 入口 - serverStarting 阶段调用 init()