Init
This commit is contained in:
212
content/reference/manifest-schema.fr.md
Normal file
212
content/reference/manifest-schema.fr.md
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: Schéma du Manifeste
|
||||
type: docs
|
||||
weight: 1
|
||||
---
|
||||
|
||||
Le fichier `manifest.json` définit les métadonnées et la configuration de votre plugin.
|
||||
|
||||
## Structure de Base
|
||||
|
||||
```json
|
||||
{
|
||||
"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.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "MyAwesomePlugin"
|
||||
}
|
||||
```
|
||||
|
||||
### version
|
||||
**Type :** `string`
|
||||
|
||||
La version du plugin suivant le versioning sémantique (recommandé).
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
### main
|
||||
**Type :** `string`
|
||||
|
||||
Le nom de classe pleinement qualifié de votre classe principale de plugin. Cette classe doit étendre `JavaPlugin`.
|
||||
|
||||
```json
|
||||
{
|
||||
"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.
|
||||
|
||||
```json
|
||||
{
|
||||
"dependencies": ["CoreLib", "DatabasePlugin"]
|
||||
}
|
||||
```
|
||||
|
||||
### description
|
||||
**Type :** `string`
|
||||
|
||||
Une brève description de votre plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
"description": "Ajoute des fonctionnalités géniales au serveur"
|
||||
}
|
||||
```
|
||||
|
||||
### author
|
||||
**Type :** `string`
|
||||
|
||||
L'auteur du plugin ou le nom de l'équipe.
|
||||
|
||||
```json
|
||||
{
|
||||
"author": "VotreNom"
|
||||
}
|
||||
```
|
||||
|
||||
### authors
|
||||
**Type :** `string[]`
|
||||
|
||||
Liste des auteurs du plugin pour les projets d'équipe.
|
||||
|
||||
```json
|
||||
{
|
||||
"authors": ["Développeur1", "Développeur2"]
|
||||
}
|
||||
```
|
||||
|
||||
### website
|
||||
**Type :** `string`
|
||||
|
||||
Page d'accueil du plugin ou URL de documentation.
|
||||
|
||||
```json
|
||||
{
|
||||
"website": "https://example.com/myplugin"
|
||||
}
|
||||
```
|
||||
|
||||
## Exemple Complet
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
|
||||
```java
|
||||
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 >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "MyAPI",
|
||||
"version": "2.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
Les plugins dépendants peuvent alors spécifier les versions minimales dans leur documentation.
|
||||
Reference in New Issue
Block a user