Cycle de vie des Plugins

Avant tout état rendant le plugin visible, le loader de plugin trie d’abord les plugins disponibles, détermine si toutes les dépendances sont présentes, puis trie les plugins par ordre de dépendance. Les événements du cycle de vie sont transmis aux plugins dans cet ordre. Par exemple, le plugin A contenant « [required-]after:B » recevra chaque événement après que le plugin B ait terminé son travail pour chaque état. En outre, les états du cycle de vie sont globaux. Cela signifie que tous les plugins visibles les uns par rapport aux autres doivent être passés à travers tous les états à la fois.

Avertissement

L’objet Server de Sponge n’est pas tout le temps disponible. Sa disponibilité peut être vérifiée en utilisant la méthode Sponge.isServerAvailable() ou Game.isServerAvailable().

Événements d’état

Il y a trois catégories d’événements d’état:

  1. Initialisation: Lorsque Sponge et les plugins sont en cours de chargement, avant que le jeu n’ait effectivement démarré. Les états d’initialisation ne se produisent qu’une seule fois.

  2. Running: Quand le jeu et le monde sont en cours de chargement. Les états en cours peuvent se produire plusieurs fois.

  3. En arrêt: Quand le jeu s’arrête. Statuts d’arrêts, comme lors de l’initialisation, n’apparaît qu’une fois.

États d’Initialisation

Les états d’initialisations ne se produisent qu’une fois au cours de l’exécution de l’application.

CONSTRUCTION

L’événement GameConstructionEvent est levé. Durant cet état, l’instance de la classe @Plugin est déclenchée pour chaque plugin.

PRE_INITIALIZATION

L’événement GamePreInitializationEvent est levé. Durant cet état, le plugin se prépare à l’initialisation. Les accès à l’instance du logger par défaut et aux informations concernant les localisations de fichiers de configurations préférées sont disponibles.

INITIALIZATION

L’événement GameInitializationEvent est levé. Durant cet état, le plugin devrait avoir finit tout ce qu’il avait à faire afin de fonctionner. Les gestionnaires d’événements sont traités à ce moment là.

POST_INITIALIZATION

L’événement GamePostInitializationEvent est levé. Par cet état, les communications inter-plugin devraient être prêtes à se produire. Les plugins fournissant une API devraient être prêts à accepter des requêtes de base.

LOAD_COMPLETE

L’événement GameLoadCompleteEvent est levé. Par cet état, toutes les initialisations des plugins devraient être terminées.

Etats en cours d’exécution

Les États en cours d’exécutions peuvent se produire plusieurs fois pour un seul lancement. SERVER_ABOUT_TO_START peut suivre SERVER_STOPPED, et SERVER_STOPPED peut arriver à n’importe quel moment quand il y a une erreur.

SERVER_ABOUT_TO_START

L’évènement GameAboutToStartServerEvent est levé. L’instance du serveur existe, mais les mondes ne sont pas encore chargés.

SERVER_STARTING

L’événement GameStartingServerEvent est levé. L’instance du serveur existe et les mondes sont chargés. Les commandes sont traitées durant cet état.

SERVER_STARTED

L’événement GameStartedServerEvent est levé. L’instance du serveur existe et tous les mondes sont chargés.

SERVER_STOPPING

L’événement GameStoppingServerEvent est levé. Cet été se produit immédiatement avant le dernier tick, avant que les mondes soient sauvegardés.

SERVER_STOPPED

L’événement GameStoppedServerEvent est levé. Durant cet état, plus aucun joueur n’est connecté et plus aucune modification de monde n’est sauvegardé.

Statuts d’arrêts

Les Statuts d’arrêts n’interviennent qu’une fois par session. Ils se produisent lorsque le jeu s’arrête normalement. (Sur le serveur: la commande /stop est tapée. Sur les clients: le bouton Close ou Quit Game est cliqué)

Avertissement

Les Statuts d’arrêts ne sont pas garantis d’être exécutés durant un arrêt. Ils ne seront pas activés si le jeu s’arrête de force via Ctrl+C, Task Manager, un crash de l’ordinateur, ou toutes autres situations similaires.

GAME_STOPPING

Le GameStoppingServerEvent est déclenché. Ce statut intervient immédiatement avant GAME_STOPPED. Les plugin fournissant une API sont toujours capables d’accepter des requêtes basiques.

GAME_STOPPED

Le GameStoppedServerEvent est déclenché. Une fois qu’il a fini d’être exécuté, Minecraft s’arrêtera. Plus aucune autre interaction avec le jeu ou les plugins ne doit être tentée à ce stade.