使用经济 API

经济 API 可以让所有的经济插件互相兼容,这意味着你可以不用担心不同插件之间的各种问题。接下来我们要教你如何使用经济 API 。

获取 EconomyService

为了使用经济 API ,你必须首先通过 ServiceManager 获取到一个 EconomyService

警告

请注意你需要在使用经济 API 时注意不同的游戏状态,这些状态包括服务端启动、停止和运行。参见 服务 以获取更多的信息。

示例:如何获取 EconomyService

import org.spongepowered.api.service.economy.EconomyService;
import org.spongepowered.api.Sponge;

Optional<EconomyService> serviceOpt = Sponge.server().serviceProvider().economyService();
if (!serviceOpt.isPresent()) {
    // handle there not being an economy implementation
}
EconomyService economyService = serviceOpt.get();

使用 EconomyService

在加载 EconomyService 并将其存储起来后,我们就可以享用经济 API 的全部特性了。

示例:如何获取玩家余额

import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.service.economy.EconomyService;
import org.spongepowered.api.service.economy.account.UniqueAccount;
import java.math.BigDecimal;
import java.util.Optional;

Optional<UniqueAccount> uOpt = economyService.findOrCreateAccount(player.getUniqueId());
if (uOpt.isPresent()) {
  UniqueAccount acc = uOpt.get();
  BigDecimal balance = acc.balance(economyService.defaultCurrency());
}

一些 Account 的方法需要传入以下变量:

  • 货币:参与交易的货币

  • 事件原因:是什么导致了帐户的变动

  • 上下文:交易发生的上下文

这些参数都是为了更高级的使用而设计的,然而我们仍然必须填写它们。下面是一串可接受的值:

  • 货币:EconomyService#getDefaultCurrency()

  • 事件原因:Cause.of(EventContext.builder().add(EventContextKeys.PLUGIN, plugin).build(), plugin)

  • 上下文: new HashSet<Context>()