API Docs Help

Services

Les services dans SquidCore permettent une abstraction entre implémentation et définition de certain concept clé
Les suivants sont actuellement inclus par défaut dans la partie commune:

  • AnalyticsService

Les suivants sont actuellement inclus par défaut dans la partie bukkit:

  • ChatService (permettant l'envoie vers uuid, server, template ou bien canal)

  • EconomyService (permet le dépot, retrait et l'obtention d'un compte, et le formattage d'une solde)

  • CustomEconomyService (extend EconomyService, ajoute un paramètre "currency")

  • MailboxService (La mailbox de l'infrastructure, stock les items des joueurs si ils sont hors ligne)

  • PromptService (permet de demander une réponse à un joueur à une question)

  • SchematicService (permet de placer des schématics ou de vérifier si une schématic est valide)

  • SlimeWorldService (permet de communiquer avec la partie Slime de PaperSquid)

  • TeleportationService (permet la téléportation de joueur vers une location universelle (ou network/template))

Accéder à un service

Tout les services sont enregistrés via le PlatformServiceHandler
Ce dernier propose d'obtenir un Wrapper au service demandé qui sera actualisé automatiquement dés lors qu'il est changé

Un exemple de code donnerais:

public class MyPlugin extends BukkitSCorePlugin { private static final PlatformServiceWrapper<EconomyService> ECONOMY_SERVICE = PlatformServiceHandler.getService(EconomyService.class); private static final UUID PLAYER_UUID = "809b96b5-78b0-40dc-a4f2-1feec037b899"; public void onEnable() { // attendre que l'economy service soit initialisé getScheduler().runTask(() -> { EconomyService service = ECONOMY_SERIVCE.getService(); // fire and forget // Un exemple ou les exceptions ou non succès seront gérés sera // montré dans la documentation de SquidEconomy service.deposit(PLAYER_UUID, 300); }); } }

Implémenter et définir un service

Pour implémenter un service, rien de plus simple.
Implémenter le service souhaité dans une classe.

public class LoggingEconomyService implements EconomyService { public CompletableFuture<Boolean> deposit(UUID uuid, double amount){ System.out.println("Depot pour " + uuid + " pour un montant de " + amount); } ... }

Une fois fait, vous devez le communiquer au PlatformServiceHandler

PlatformServiceHandler.setService(EconomyService.class, new LoggingEconomyService());

Les services implémentants d'autre service

Si un service B (ex CustomEconomyService) dépend d'un autre service A (EconomyService),
le PlatformServiceHandler définira automatiquement les implémentations de service B en tant qu'implémentations de A aussi.

Last modified: 17 septembre 2024