Files
Documentation/content/getting-started/plugin-lifecycle.fr.md
2026-01-20 20:33:59 +01:00

187 lines
5.1 KiB
Markdown

---
title: Cycle de Vie du Plugin
type: docs
weight: 4
---
Comprendre le cycle de vie du plugin est essentiel pour initialiser et nettoyer correctement les ressources de votre plugin.
## États du Cycle de Vie
Un plugin passe par plusieurs états durant sa vie :
```
NONE → SETUP → START → ENABLED → SHUTDOWN → DISABLED
```
| État | Description |
|------|-------------|
| `NONE` | État initial avant toute initialisation |
| `SETUP` | Le plugin est en phase de configuration |
| `START` | Le plugin démarre |
| `ENABLED` | Le plugin est pleinement opérationnel |
| `SHUTDOWN` | Le plugin s'arrête |
| `DISABLED` | Le plugin a été désactivé |
## Méthodes du Cycle de Vie
### Constructeur
Le constructeur est appelé lorsque le plugin est instancié. Utilisez ceci pour :
- Enregistrer les fichiers de configuration avec `withConfig()` (recommandé)
- Stocker la référence init si nécessaire
```java
import com.hypixel.hytale.server.core.util.Config;
private Config<MyConfig> config;
public MyPlugin(JavaPluginInit init) {
super(init);
// Enregistrer la config dans le constructeur - chargée de façon asynchrone pendant preLoad()
config = withConfig(MyConfig.CODEC);
}
```
{{< callout type="info" >}}
Enregistrer les configs dans le constructeur garantit qu'elles sont chargées de façon asynchrone pendant `preLoad()`, avant que `setup()` ne soit appelé. C'est l'approche recommandée.
{{< /callout >}}
### setup()
Appelé pendant la phase initiale de configuration, après le chargement des configs. Utilisez ceci pour :
- Préparer les ressources qui ne dépendent pas d'autres plugins
- Logique d'initialisation précoce
- Accéder aux valeurs de configuration chargées
```java
import java.util.logging.Level;
@Override
public void setup() {
// La config est déjà chargée et disponible
getLogger().at(Level.INFO).log("Configuration terminée !");
}
```
{{< callout type="info" >}}
Pour créer des classes de configuration avec `CODEC`, voir la [documentation des Codecs]({{< ref "core-concepts/codecs#buildercodec" >}}).
{{< /callout >}}
{{< callout type="warning" >}}
N'enregistrez pas de commandes ou d'événements dans `setup()`. D'autres plugins peuvent ne pas être encore chargés.
{{< /callout >}}
### start()
Appelé après que tous les plugins aient terminé leur configuration. Utilisez ceci pour :
- Enregistrer les commandes
- Enregistrer les écouteurs d'événements
- Enregistrer les entités
- Interagir avec d'autres plugins
```java
import com.hypixel.hytale.server.core.event.events.player.PlayerConnectEvent;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import java.util.logging.Level;
@Override
public void start() {
// Enregistrer les commandes
getCommandRegistry().registerCommand(new MyCommand());
// Enregistrer les événements
getEventRegistry().register(PlayerConnectEvent.class, this::onPlayerConnect);
getLogger().at(Level.INFO).log("Plugin démarré !");
}
private void onPlayerConnect(PlayerConnectEvent event) {
// Voir la documentation PlayerRef pour les références thread-safe aux joueurs
PlayerRef playerRef = event.getPlayerRef();
getLogger().at(Level.INFO).log("Joueur en connexion : " + playerRef.getUsername());
}
```
{{< callout type="info" >}}
Voir la [documentation des Registres]({{< ref "core-concepts/registries" >}}) pour une liste complète des registres disponibles et leur utilisation.
{{< /callout >}}
### shutdown()
Appelé quand le plugin est désactivé ou le serveur s'arrête. Utilisez ceci pour :
- Sauvegarder les données
- Nettoyer les ressources
- Annuler les tâches planifiées
```java
import java.util.logging.Level;
@Override
public void shutdown() {
// Sauvegarder les données en attente
savePlayerData();
getLogger().at(Level.INFO).log("Arrêt du plugin terminé !");
}
```
{{< callout type="info" >}}
Les registres sont automatiquement nettoyés après `shutdown()`. Vous n'avez pas besoin de désinscrire manuellement les commandes ou événements.
{{< /callout >}}
## Diagramme du Flux de Vie
{{< steps >}}
### Chargement du Plugin
Le serveur découvre votre JAR de plugin et lit `manifest.json`
### Appel du Constructeur
`MyPlugin(JavaPluginInit init)` est instancié
### preLoad()
Les fichiers de configuration enregistrés avec `withConfig()` sont chargés de façon asynchrone
### setup()
Votre méthode `setup()` est appelée
### start()
Votre méthode `start()` est appelée après que tous les plugins soient configurés
### En Cours d'Exécution
Le plugin est maintenant en état `ENABLED` et pleinement opérationnel
### shutdown()
Appelé quand le serveur s'arrête ou le plugin est désactivé
### Nettoyage
Tous les registres sont automatiquement nettoyés
{{< /steps >}}
## Vérifier l'État du Plugin
Vous pouvez vérifier si votre plugin est activé :
```java
if (isEnabled()) {
// Le plugin fonctionne
}
if (isDisabled()) {
// Le plugin ne fonctionne pas
}
// Obtenir l'état actuel
PluginState state = getState();
```
## Étapes Suivantes
Apprenez à [Compiler et Exécuter](../building-and-running) votre plugin.