Configuration
Le système de configuration permet de lire automatiquement un fichier de config en fonction d'une classe donné
Les différents composants
TypeReader
Les TypeReader transforme une valeur en une classe donné
Ex. Transformer n'importe quel objet en String
ConfigurationReader
Cet classe gère l'entièreté de la transformation config -> objet
Elle stock aussi les typereaders disponible
Les annotations
Le système de config utilise les annotations pour permettre de changer le comportement de certain field
CfgClass
Cette annotation permet de dire au système de configuration que cette classe peut être transformer automatiquement et ne nécessite pas de TypeReader
CfgOptions
Cette annotation permet de modifier comment un field ou class devrait être interprété
inline (par défaut: false) -> si oui ou non le reader devrait utiliser le même objet que la class
optional (par défaut: false) -> défini si le field est nécessaire
isKey (par défaut: false) -> défini si le field représente juste la clé utilisé pour accéder a la classe (ex. field
id)name (par défaut: "") -> défini le nom à utiliser pour trouver l'objet avec lequel la classe ou field doit être rempli
Transformation
3 "type de transformation" sont supportés par le reader:
Créer et remplir une class (& record)
Remplir les fields statics d'une class
Remplir une enum (nécessite d'extends une interface)
Remplir une classe/record
L'exemple sera montré avec les classes suivante:
Exemple de config
Maintenant au démarrage de notre plugin nous allons lire via la config notre PluginSettings
Remplir une classe avec des fields static
Prenons la classe suivante:
La configuration:
Au démarrage du plugin nous allons maintenant demander au système de remplir les fields
Si nous démarrons maintenant un serveur de test cela nous mettrait donc dans la console
Remplir une Enum
Prenons l'enum suivante:
ConfigurationEnum est importante pour avoir getType(), getValue() et setValue et que le système de configuration peut donc intéragir avec votre enum
Avec la configuration suivante:
Maintenant dans notre onEnable
Dans la console nous verrons donc
Le PostInit
Le système de configuration offre la possibilité d'exécuter du code après la transformation
Classe/record/enum
implémenter l'interface ConfigurationClass et implémenter la méthode postInit
Classe avec des fields static
Définissez une méthode static postInit