diff --git a/conv_save.md b/conv_save.md index 101738d..7fb22f4 100644 --- a/conv_save.md +++ b/conv_save.md @@ -103,3 +103,42 @@ | `next_respawn_at`| BIGINT | Timestamp du prochain respawn | * **Schéma PlantUML généré** : Enregistré dans `docs/mining_model.puml` et poussé sur le dépôt Gitea. + +--- + +## 7. Implémentation Complète du Système de Minage (Custom Mining) +* **Couche Modèle (`fr.luc.gamingcore.mining.model`)** : + * [`OreRarity.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/model/OreRarity.java) : Raretés (`COMMON`, `UNCOMMON`, `RARE`, `EPIC`, `LEGENDARY`, `MYTHIC`) avec gradients MiniMessage. + * [`OreDrop.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/model/OreDrop.java) : Gestion des probabilités, multiplicateurs Fortune et auto-smelt (`XMaterial`). + * [`CustomOre.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/model/CustomOre.java) : Types de minerais (dureté, stock, réapparition, bloc temporaire). + * [`BlockLocation.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/model/BlockLocation.java) : Coordonnées immuables et hashables pour le cache mémoire. + * [`PlacedOreBlock.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/model/PlacedOreBlock.java) : État en temps réel des blocs actifs posés dans les mondes. + +* **Couche Persistance SQLite (`fr.luc.gamingcore.mining.database`)** : + * [`DatabaseManager.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/database/DatabaseManager.java) : + * Création automatique des tables `ores`, `ore_drops`, `placed_ores`. + * Seeding automatique des minerais de base (`custom_iron`, `custom_gold`, `custom_diamond`, `custom_netherite`). + * Synchronisation asynchrone des états de minage / régénération. + +* **Couche Métier & Tâches (`fr.luc.gamingcore.mining.manager`)** : + * [`OreManager.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/manager/OreManager.java) : Cache mémoire haute performance, gestion du minage, calcul des drops, sons/particules XSeries et action bars. + * [`RespawnScheduler.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/manager/RespawnScheduler.java) : Tâche répétée (1s) pour régénérer automatiquement les minerais épuisés avec particules et sons. + +* **Événements & Sécurité (`fr.luc.gamingcore.mining.listener`)** : + * [`BlockBreakListener.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/listener/BlockBreakListener.java) : Interception du cassage, décrémentation du stock, transformation en bloc temporaire (`BEDROCK`) et drop personnalisé. + * [`BlockProtectionListener.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/listener/BlockProtectionListener.java) : Protection contre les explosions (TNT/Creeper) et les pistons. + +* **Commandes & Outils d'Administration (`fr.luc.gamingcore.mining.command`)** : + * [`MiningCommand.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/main/java/fr/luc/gamingcore/mining/command/MiningCommand.java) : `/gamingcore` (alias `/gc`, `/mining`) avec sous-commandes : + * `/gc ore list` : Affiche les minerais configurés et leurs drops. + * `/gc ore set ` : Définit le bloc ciblé comme un minerai personnalisé actif. + * `/gc ore remove` : Retire le minerai personnalisé du bloc ciblé. + * `/gc ore info` : Affiche les infos du minerai ciblé (stock restant, temps de respawn, etc.). + * `/gc reload` : Recharge la configuration et la BDD. + * Auto-complétion (TabCompletion) intégrale. + +* **Tests Unitaires & Build** : + * Tests JUnit 5 passés avec succès ([`OreModelTest.java`](file:///C:/D%C3%A9veloppement/gamingcore/src/test/java/fr/luc/gamingcore/mining/OreModelTest.java)). + * Compilation ShadowJar validée (`gamingcore-1.0.0-SNAPSHOT.jar`). + * Code commité et synchronisé sur Gitea `origin/main`. +