# Guide d'Intégration de la Configuration

## 📋 Vue d'Ensemble

Le système de configuration est maintenant en place. Voici ce qui a été implémenté :

## ✅ Déjà Fonctionnel

### 1. Stats des Outils (Shard Diamond)
Les outils utilisent **déjà** les valeurs de configuration !

Fichier : `src/main/java/net/mcreator/customoregen/item/Sharddiamond*Item.java`

```java
// La durabilité est lue depuis la configuration
public int getUses() {
    return ModConfigs.TOOL_STATS.shardDiamondPickaxeDurability.get();
}
```

**Pour tester :** Modifiez `pickaxeDurability` dans `config/custom_ore_gen-common.toml` après le premier lancement.

### 2. Procédure de Drops Configurables
Une procédure Java a été créée pour gérer les drops configurables.

Fichier : `src/main/java/net/mcreator/customoregen/procedures/ConfigurableOreDropsProcedure.java`

## 🔧 Intégration Restante (Requiert MCreator)

Pour que les drops de minerais utilisent la configuration, vous devez lier la procédure aux blocs via MCreator.

### Étape 1 : Ouvrir MCreator

Ouvrez votre workspace MCreator pour ce mod.

### Étape 2 : Créer une Procédure

1. Allez dans **Workspace procedures**
2. Cliquez sur **Add new procedure**
3. Nommez-la : `configurable_ore_drops`
4. Dans la procédure, ajoutez un appel à la procédure Java :

**Dans MCreator, utilisez les blocs suivants :**
- **Event trigger**: `On block destroyed by player/explosion`
- **Condition**: `Has ore data` → vérifiez si c'est un de vos minerais
- **Action**: Call custom procedure → `ConfigurableOreDropsProcedure`

### Étape 3 : Lier la Procédure aux Blocs

Pour chaque minerai que vous voulez rendre configurable :

1. Ouvrez le bloc dans MCreator (ex: `Shard Diamond Ore`)
2. Allez dans l'onglet **Triggers**
3. Pour **"When block destroyed by player"** ou **"After block destroyed by explosion"**
4. Ajoutez la procédure avec le paramètre `oreType` :
   - Pour Shard Diamond Ore : `oreType = "shard_diamond"`
   - Pour Concentrated Diamond Ore : `oreType = "concentrated_diamond"`
   - Pour Ash Coal Ore : `oreType = "ash_coal"`
   - Etc.

### Étape 4 : Rebuild le Mod

Après avoir modifié les blocs dans MCreator :
1. Cliquez sur **Build** → **Build mod**
2. Le code sera régénéré avec vos liaisons

## 📊 Configuration des Features Toggles

Les options d'activation/désactivation des fonctionnalités sont définies dans `ModConfigs.java` :

```java
enableShardDiamondTools = true
enableShardDiamondOre = true
enableConcentratedOres = true
etc.
```

Pour implémenter ces toggles, vous devrez ajouter des conditions dans :
- L'enregistrement des blocs (pour la génération)
- L'enregistrement des items (pour les outils)
- Les recettes de craft

### Exemple d'Implémentation des Toggles

Dans `CustomOreGenModBlocks.java` ou votre classe d'enregistrement :

```java
// Au lieu d'enregistrer directement :
// SHARDDIAMONDBLOCKORE.register(bus);

// Faites :
if (ModConfigs.FEATURES.enableShardDiamondOre.get()) {
    SHARDDIAMONDBLOCKORE.register(bus);
}
```

## 🎯 Ce Que Vous Poulez Faire Maintenant

### Option 1 : Utiliser MCreator pour Intégrer les Drops
- Ouvrez MCreator
- Liez la procédure `ConfigurableOreDropsProcedure` à vos blocs
- Rebuild

### Option 2 : Modifier Directement les Blocs Java
Pour chaque bloc de minerai, modifiez la méthode `onDestroy` pour appeler la procédure.

Exemple pour `SharddiamondblockoreBlock.java` :

```java
@Override
public void onDestroy(Level world, BlockPos pos, BlockState state) {
    Entity entity = // obtenir l'entité qui mine
    ConfigurableOreDropsProcedure.execute(
        world,
        pos.getX(),
        pos.getY(),
        pos.getZ(),
        entity,
        "shard_diamond"
    );
}
```

### Option 3 : Continuer avec les Loot Tables Actuelles
Les loot tables JSON actuelles continueront de fonctionner. La configuration des drops n'affectera le jeu que si vous intégrez la procédure.

## 📝 Résumé des Fichiers Modifiés

| Fichier | Statut | Description |
|---------|--------|-------------|
| `ModConfigs.java` | ✅ Créé | Classe de configuration principale |
| `ConfigHelper.java` | ✅ Créé | Classe utilitaire pour accéder aux configs |
| `ConfigurableOreDropsProcedure.java` | ✅ Créé | Procédure pour les drops configurables |
| `SharddiamondpickaxeItem.java` | ✅ Modifié | Utilise les configs |
| `SharddiamondshovelItem.java` | ✅ Modifié | Utilise les configs |
| `SharddiamondaxeItem.java` | ✅ Modifié | Utilise les configs (et bug de réparation corrigé) |
| `CustomOreGenMod.java` | ✅ Modifié | Enregistre la configuration |
| `custom_ore_gen-common.toml` | ✅ Créé | Fichier de config par défaut |

## 🚀 Test

Pour tester que les outils utilisent bien les configs :

1. Lancez le mod une fois pour générer le fichier de config
2. Fermez le jeu
3. Ouvrez `config/custom_ore_gen-common.toml`
4. Modifiez `pickaxeDurability = 500`
5. Relancez le jeu
6. Craft une pioche en Shard Diamond
7. Vérifiez qu'elle a bien 500 de durabilité (F3 + H pour voir les stats avancées)

## 💡 Besoin d'Aide ?

Si vous avez besoin d'aide pour intégrer la configuration via MCreator, n'hésitez pas à demander !

---

**Note** : Le système de configuration est en place et fonctionne pour les outils. Pour les drops et la génération des minerais, l'intégration dépend de comment vous voulez procéder (via MCreator ou modification directe du code).
