---
title: Compilation et Exécution
type: docs
weight: 2
---

Ce guide explique comment configurer votre environnement de développement, compiler votre plugin et le déployer sur un serveur Hytale.

## Démarrage Rapide avec example-mod

La façon la plus simple de commencer le développement de plugins est d'utiliser le template [example-mod](https://github.com/hytale-france/example-mod) qui inclut un script de configuration automatisé.

### 1. Cloner le Dépôt

```bash
git clone https://github.com/hytale-france/example-mod.git
cd example-mod
```

Ou téléchargez la dernière release depuis [GitHub Releases](https://github.com/hytale-france/example-mod/releases).

### 2. Télécharger les Outils (Une fois)

Téléchargez les outils requis (hytale-downloader et décompilateur CFR) :

```bash
./setup.sh --download
```

Cela crée un répertoire `.bin/` avec :
- `hytale-downloader-*` - Téléchargeur officiel du serveur Hytale
- `cfr-0.152.jar` - Décompilateur Java pour les sources de référence

### 3. Télécharger le Serveur

Téléchargez et extrayez le serveur Hytale :

```bash
./setup.sh --setup
```

Le serveur sera disponible dans `server/Server/HytaleServer.jar`.

### 4. Générer les Sources de Référence (Optionnel)

Décompilez le JAR serveur pour obtenir les sources de référence de l'API :

```bash
./setup.sh --decompile
```

Cela crée `src-ref/` avec les sources Java décompilées pour l'autocomplétion IDE et la documentation.

## Structure du Projet

Après la configuration, votre projet ressemblera à ceci :

```
example-mod/
├── app/
│   ├── src/main/java/org/example/
│   │   └── ExamplePlugin.java
│   ├── src/main/resources/
│   │   └── manifest.json
│   └── build.gradle.kts
├── server/
│   ├── Server/
│   │   └── HytaleServer.jar
│   └── Assets.zip
├── src-ref/                    # Sources de référence décompilées
├── .bin/                       # Outils téléchargés
├── setup.sh                    # Script d'automatisation
├── build.gradle.kts
├── settings.gradle.kts
└── gradlew
```

## Compilation du Plugin

### 1. Compiler avec Gradle

```bash
# Sur Linux/macOS
./gradlew build

# Sur Windows
gradlew.bat build
```

### 2. Localiser le JAR Compilé

Après une compilation réussie, votre JAR de plugin sera dans :

```
app/build/libs/ExamplePlugin-1.0.0.jar
```

## Exécution du Serveur

### 1. Configuration Initiale du Serveur

Démarrez le serveur pour la première fois :

```bash
cd server
java -jar Server/HytaleServer.jar --assets Assets.zip
```

### 2. S'Authentifier

Une fois la console du serveur prête, exécutez la commande d'authentification :

```
/auth login device
```

Suivez les instructions pour vous authentifier avec votre compte Hytale.

{{< callout type="warning" >}}
**Authentification Requise :** Si aucun token serveur n'est configuré, vous verrez un avertissement au démarrage :
```
No server tokens configured. Use /auth login to authenticate.
```
Vous devez vous authentifier avant que les joueurs puissent rejoindre le serveur en mode non-singleplayer.
{{< /callout >}}

### 3. Arrêter le Serveur

Après l'authentification, vous pouvez arrêter le serveur :

- **Linux/macOS:** Appuyez sur `Ctrl+C`
- **Windows:** Appuyez sur `Ctrl+C` ou fermez le terminal

## Déploiement du Plugin

### 1. Copier le JAR

Copiez le JAR compilé dans le dossier `mods` :

```bash
cp app/build/libs/ExamplePlugin-1.0.0.jar server/mods/
```

### 2. Démarrer le Serveur

```bash
cd server
java -jar Server/HytaleServer.jar --assets Assets.zip
```

### 3. Vérifier le Chargement

Vous devriez voir votre plugin se charger dans la console :

```
[INFO] [PluginManager] Loading pending plugins from directory: mods
[INFO] [PluginManager] - org.example:ExamplePlugin from path ExamplePlugin-1.0.0.jar
```

## Mise à Jour du Serveur

Lorsqu'une nouvelle version d'Hytale est publiée :

```bash
./setup.sh --update
```

Cela téléchargera la dernière version du serveur et mettra à jour votre installation.

## Problèmes Courants

### Version Java Incompatible

{{< callout type="error" >}}
**Erreur :** `Unsupported class file major version 69`
{{< /callout >}}

Assurez-vous d'utiliser Java 25 :

```bash
java --version
```

### Manifest Non Trouvé

{{< callout type="error" >}}
**Erreur :** `Failed to load manifest file!`
{{< /callout >}}

Assurez-vous que `manifest.json` est dans `src/main/resources/` et inclus dans le JAR.

### Script de Configuration Non Trouvé

{{< callout type="error" >}}
**Erreur :** `./setup.sh: Permission denied`
{{< /callout >}}

Rendez le script exécutable :

```bash
chmod +x setup.sh
```

## Configuration Manuelle (Alternative)

Si vous préférez une configuration manuelle sans le script :

### Localiser l'Installation Hytale

Trouvez votre répertoire d'installation Hytale :

{{< tabs items="Windows,Linux,macOS" >}}
{{< tab >}}
```
%appdata%\Hytale\install\release\package\game\latest
```
{{< /tab >}}
{{< tab >}}
```
$XDG_DATA_HOME/Hytale/install/release/package/game/latest
```
Ou généralement :
```
~/.local/share/Hytale/install/release/package/game/latest
```
{{< /tab >}}
{{< tab >}}
```
~/Application Support/Hytale/install/release/package/game/latest
```
{{< /tab >}}
{{< /tabs >}}

### Configuration Manuelle du Serveur

1. Copiez `Server/` et `Assets.zip` depuis votre installation Hytale
2. Téléchargez CFR depuis [https://www.benf.org/other/cfr/](https://www.benf.org/other/cfr/)
3. Décompilez : `java -jar cfr.jar HytaleServer.jar --outputdir src-ref`

## Étapes Suivantes

Maintenant que vous pouvez compiler et exécuter votre plugin, explorez :

- [Cycle de Vie du Plugin](../plugin-lifecycle) - Comprendre setup, start et shutdown
- [Commandes](../../commands) - Créer des commandes personnalisées
- [Événements](../../events) - Écouter les événements du jeu
