4.1 KiB
title, type, weight
| title | type | weight |
|---|---|---|
| Schéma du Manifeste | docs | 1 |
Le fichier manifest.json définit les métadonnées et la configuration de votre plugin.
Structure de Base
{
"name": "MyPlugin",
"version": "1.0.0",
"main": "com.example.MyPlugin",
"dependencies": []
}
Champs Requis
name
Type : string
L'identifiant unique de votre plugin. Utilisé pour le logging et la résolution des dépendances.
{
"name": "MyAwesomePlugin"
}
version
Type : string
La version du plugin suivant le versioning sémantique (recommandé).
{
"version": "1.0.0"
}
main
Type : string
Le nom de classe pleinement qualifié de votre classe principale de plugin. Cette classe doit étendre JavaPlugin.
{
"main": "com.example.myplugin.MyPlugin"
}
Champs Optionnels
dependencies
Type : string[]
Liste des noms de plugins dont ce plugin dépend. Les plugins dépendants seront chargés en premier.
{
"dependencies": ["CoreLib", "DatabasePlugin"]
}
description
Type : string
Une brève description de votre plugin.
{
"description": "Ajoute des fonctionnalités géniales au serveur"
}
author
Type : string
L'auteur du plugin ou le nom de l'équipe.
{
"author": "VotreNom"
}
authors
Type : string[]
Liste des auteurs du plugin pour les projets d'équipe.
{
"authors": ["Développeur1", "Développeur2"]
}
website
Type : string
Page d'accueil du plugin ou URL de documentation.
{
"website": "https://example.com/myplugin"
}
Exemple Complet
{
"name": "EconomyPlugin",
"version": "2.1.0",
"main": "com.example.economy.EconomyPlugin",
"description": "Un système économique complet pour les serveurs Hytale",
"author": "GameDev",
"authors": ["GameDev", "Contributeur1"],
"website": "https://github.com/example/economy",
"dependencies": ["DatabaseLib"]
}
Emplacement du Fichier
Le manifest.json doit être placé à la racine de votre fichier JAR de plugin :
MyPlugin.jar
├── manifest.json
├── com/
│ └── example/
│ └── myplugin/
│ └── MyPlugin.class
└── resources/
└── config.yml
Validation
{{< callout type="warning" >}} Le serveur valide manifest.json au démarrage. Les manifestes invalides empêcheront votre plugin de se charger.
Problèmes courants :
- Champs requis manquants (name, version, main)
- Syntaxe JSON invalide
- Classe principale non trouvée dans le JAR
- Dépendances circulaires {{< /callout >}}
Exigences de la Classe Principale
Votre classe principale spécifiée dans main doit :
- Étendre
JavaPlugin - Avoir un constructeur public sans argument
- Être accessible dans le classpath du JAR
package com.example.myplugin;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
public class MyPlugin extends JavaPlugin {
@Override
public void start() {
// Plugin activé - enregistrer événements, commandes, etc.
getLogger().at(Level.INFO).log("Plugin démarré !");
}
@Override
public void shutdown() {
// Plugin désactivé - nettoyage ressources
}
}
Résolution des Dépendances
Les dépendances sont chargées dans l'ordre :
- Toutes les dépendances doivent être présentes et valides
- Les dépendances circulaires causent un échec de chargement
- Les dépendances manquantes causent un échec de chargement
Ordre de Chargement :
1. DatabaseLib (pas de dépendances)
2. CoreLib (dépend de DatabaseLib)
3. MyPlugin (dépend de CoreLib)
Compatibilité des Versions
{{< callout type="info" >}} Considérez le versioning de l'API de votre plugin si d'autres plugins dépendent de vous :
- Majeur : Changements cassants
- Mineur : Nouvelles fonctionnalités, rétrocompatible
- Patch : Corrections de bugs {{< /callout >}}
{
"name": "MyAPI",
"version": "2.0.0"
}
Les plugins dépendants peuvent alors spécifier les versions minimales dans leur documentation.