Files
Documentation/content/reference/manifest-schema.fr.md
2026-01-20 20:33:59 +01:00

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 :

  1. Étendre JavaPlugin
  2. Avoir un constructeur public sans argument
  3. Ê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 :

  1. Toutes les dépendances doivent être présentes et valides
  2. Les dépendances circulaires causent un échec de chargement
  3. 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.