使用經濟 API
經濟 API 將所有經濟插件統一於單一 API。這意味著任何使用了經濟 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 方法會要求諸如以下的變數:
貨幣(Currency):交易所涉及的貨幣
發生原因(Cause):是什麼導致了帳戶的變動
情境(Context):交易發生的情境
這些參數是為了更進階的使用而設計的,然而我們仍然必須填寫。以下是可接受的預設值清單:
事件原因:
Cause.of(EventContext.builder().add(EventContextKeys.PLUGIN, plugin).build(), plugin)
情境(Context):
new HashSet<Context>()