Menggunakan API Ekonomi
API Ekonomi menyatukan seluruh plugin ekonomu dibawah satu API. Ini artinya plugin manapun yang menggunakan API ekonomi akan cocok dengan seluruh plugin ekonomi yang menjalankan API tersebut. Laman ini menuntun anda melewati tata cara penggunaan API Ekonomi di plugin anda sendiri.
Memuat EconomyService
Dalam rangka memanfaatkan API Ekonomi, pertama anda harus memuat EconomyService class menggunakan ServiceManager.
Peringatan
Harap dicatat bahwa anda perlu memperhatikan game states
yang berbeda ketika server sedang dimulai, memberhentikan atau menjalankan ketika penggunaan layanan seperti API ekonomi. Lihatlah pada halaman Layanan untuk informasi lebih lanjut.
Contoh: Memuat EconomyService
import org.spongepowered.api.service.economy.EconomyService;
import org.spongepowered.api.Sponge;
Optional<EconomyService> serviceOpt = Sponge.getServiceManager().provide(EconomyService.class);
if (!serviceOpt.isPresent()) {
// handle there not being an economy implementation
}
EconomyService economyService = serviceOpt.get();
Peringatan
Simpan layanan ini didalam sebuah local variable daripada sebuah member variable, karena penyedia (pelaksana) dapat mengubah poin manapun. Jika anda harus meletakkannya di sebuah member variable, untuk alasan apapun, gunakan ChangeServiceProviderEvent untuk menyimpan pembaruan pelaksanaan.
Catatan
Tidak seperti layanan lain, anda harus mencoba untuk menggunakan ServiceManager#provide(java.lang.Class) daripada ServiceManager#provideUnchecked(java.lang.Class) karena Sponge tidak menyediakan pelaksanaan dasar dari EconomyService,dan oleh akrena itu hal tersebut tidak dijamin untuk ada.
Menggunakan EconomyService
Setelah memuat EconomyService
dan menetapkannya kedalam variabel, anda siap untuk mengakses seluruh fitur dari API Ekonomi yang ditawarkan.
Contoh: Mendapatkan saldo pengguna
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.getOrCreateAccount(player.getUniqueId());
if (uOpt.isPresent()) {
UniqueAccount acc = uOpt.get();
BigDecimal balance = acc.getBalance(economyService.getDefaultCurrency());
}
Beberapa :javadoc: `Account`methods membutuhkan variabel seperti:
Mata uang: Mata uang yang terlibat dalam pertukaran
Penyebab: Apa yang menyebabkan perubahan pada akun
Konteks: Konteks bahwa perubahan itu terjadi di
Ini adalah untuk penggunaan yg lebih lanjut, tapi masih harus diisi. Di bawah ini adalah daftar dari nilai dasar yang diterima:
Mata uang EconomyService#getDefaultCurrency()
Cause:
Cause.of(EventContext.builder().add(EventContextKeys.PLUGIN, plugin).build(), plugin)
Context:
new HashSet<Context>()