Usando el API de Economía
El API Economy unifica todos los plug-ins economy bajo un API. Esto significa que cualquier plug-in usando el API Economy será compatible con todos los plug-ins economy que implementen dicho API. Esta página le guiará en los pasos para el uso del API Economy en su propio plug-in.
Cargando EconomyService
Si desea utilizar el API Economy, primero debe cargar la clase :javadoc:`EconomyService`usando el :javadoc:`ServiceManager`.
Advertencia
Por favor, note que debe prestar atención a los diferentes “estados del juego” mientras el servidor está cargando, deteniéndose o ejecutándose cuando use servicios como el Economy API. Para más información, por favor diríjase a :doc:`/plugin/services.
Ejemplo: Cargando 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();
Advertencia
Mantenga este servicio en una variable local en lugar de en una variable “miembro” ya que el proveedor (implementación) podría cambiar en cualquier momento. Si por algún motivo necesita alojarlo en una variable miembro, use :javadoc: ChangeServiceProviderEvent para mantener la implementación actualizada.
Nota
A diferencia de otros servicios, debería intentar usar ServiceManager#provide(Class) en lugar de ServiceManager#provideUnchecked(Class) porque Sponge no proporciona una implementación por defecto del EconomyService, y por esto no se garantiza que exista.
Usando EconomyService
Luego de cargar el EconomyService
y asignarlo a una variable, usted está listo para acceder a todas las características que el API Economy tiene para ofrecer.
Ejemplo: Conseguir el balance de un jugador
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());
}
Algunos métodos de Account requieren variables como:
Moneda: La moneda involucrada en el intercambio
Causa: Lo que causó el cambio a la cuenta
Contexto: El contexto en el que ocurrió el cambio
Estos son para usos más avanzados, pero aún debe ser llenado. Aquí abajo está un lista de valores por defecto aceptables:
Causa:
Cause.source(myPlugin).build()
Contexto:
new HashSet<Context>()