Utiliser l’API Economy

L’API Economy unifie tous les plugins d’économie sous une seule API. Ce qui signifie que n’importe quel plugin utilisant l’API Economy sera compatible avec tous les plugins implémentant ladite API. Cette page vous aidera à utiliser l’API Economy dans votre plugin.

Charger l’EconomyService

Afin d’utiliser l’API Economie, vous devez d’abord charger la classe EconomyService en utilisant le ServiceManager.

Avertissement

Notez que vous devrez faire attention aux différents game states quand le serveur démarre, s’arrête ou fonctionne en utilisant les service. Jetez un œil à la page Services pour plus d’informations.

Exemple: Charger l’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();

Avertissement

Gardez ce service dans une variable locale plutôt qu’une variable membre, puisque le provider (implémentation) peut changer à tout moment. Si vous avez besoin de le placer dans une variable membre, pour quelconque raison, utilisez ChangeServiceProviderEvent pour garder l’implémentation à jour.

Note

Contrairement aux autres services, vous devriez essayer d’utiliser ServiceManager#provide(Class) au lieu de ServiceManager#provideUnchecked(Class) parce que Sponge ne fournit pas d’implémentation par défaut du EconomyService, et il n’est par conséquent pas garanti qu’elle existe.

Utiliser l’EconomyService

Après avoir chargé le EconomyService et l’avoir assigné à une varibale, vous êtes prêts à accéder à toutes les fonctionnalités que l’API Economie a à offrir.

Exemple : Obtenir le solde d’un joueur

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());
}

Certaines méthodes de la classe Account requièrent des variables comme :

  • Monnaie: La monnaie impliquée dans l’échange

  • Cause: Ce qui a causé le changement dans le compte

  • Context: Le contexte dans lequel le changement à pris place

Ces variables sont pour une utilisation plus avancée, mais doivent quand même être précisées. Voici une liste des valeurs par défaut acceptables: