Docs: Save full conversation context and architecture history
This commit is contained in:
+105
@@ -0,0 +1,105 @@
|
|||||||
|
# 📜 Sauvegarde de la Conversation - GamingCore Plugin
|
||||||
|
|
||||||
|
**Date & Heure :** 18 Août 2026
|
||||||
|
**Auteur :** Luc & Gemini Antigravity
|
||||||
|
**Dépôt Git :** `https://gitea.luc-rival.fr/GeminiAntigravityCLI/gaming_core.git`
|
||||||
|
**Projet :** `C:\Développement\gamingcore`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Initialisation & Accès Gitea
|
||||||
|
* **Recherche des informations Gitea** :
|
||||||
|
* Consultation de `C:\Développement\GEMINI.md` :
|
||||||
|
* Instance URL : `https://gitea.luc-rival.fr`
|
||||||
|
* Utilisateur : `GeminiAntigravityCLI`
|
||||||
|
* Email : `gemini@luc-rival.fr`
|
||||||
|
* Récupération des identifiants stockés dans `.git-credentials` pour authentifier les opérations Git.
|
||||||
|
* Vérification de l'existence et accessibilité du dépôt distant `GeminiAntigravityCLI/gaming_core`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Choix de la Version Java & Minecraft
|
||||||
|
* **Compatibilité Minecraft ciblée** : **1.16.5 à 1.20+ (et 1.21+)**.
|
||||||
|
* **Stratégie JVM / Bytecode** :
|
||||||
|
* SDK de compilation utilisé : **Java 21 LTS** (ou Java 17).
|
||||||
|
* Target bytecode (`release`) : **Java 17**.
|
||||||
|
* Évite les erreurs de version JVM (`UnsupportedClassVersionError`) tout en bénéficiant de syntaxe moderne.
|
||||||
|
* **Bibliothèques sélectionnées** :
|
||||||
|
* **Paper API 1.20.4** : API Bukkit/Paper cross-compatible.
|
||||||
|
* **Kyori Adventure & MiniMessage** : Couleurs HEX, gradients et composants de texte.
|
||||||
|
* **XSeries (13.0.0)** : Abstraction cross-version des matériaux (`XMaterial`), sons et particules de la 1.16 à la 1.21+.
|
||||||
|
* **ShadowJar (8.3.6)** : Embarquement et relocation des dépendances isolées dans le jar final.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Configuration Initiale du Projet Gradle
|
||||||
|
* Création du projet Gradle dans `C:\Développement\gamingcore`.
|
||||||
|
* **Fichiers créés** :
|
||||||
|
* `build.gradle.kts` : Définition des dépôts, dépendances, toolchain et configuration du plugin Shadow.
|
||||||
|
* `src/main/resources/plugin.yml` : Manifeste du plugin.
|
||||||
|
* `src/main/resources/config.yml` : Configuration initiale avec préfixe et messages formatés en MiniMessage.
|
||||||
|
* `src/main/java/fr/luc/gamingcore/GamingCore.java` : Classe principale (`JavaPlugin`).
|
||||||
|
* `.gitignore` : Exclusion des dossiers `.gradle`, `.idea`, `build/`, etc.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Résolution de l'erreur IntelliJ (Java 26 vs Gradle 8.12)
|
||||||
|
* **Problème rencontré** :
|
||||||
|
`Your build is currently configured to use incompatible Java 26.0.2 and Gradle 8.12. Cannot sync the project.`
|
||||||
|
* **Cause** : IntelliJ a téléchargé par défaut une version expérimentale de Java (Java 26), incompatible avec Gradle 8.12 (supportant jusqu'à Java 23).
|
||||||
|
* **Solution appliquée** :
|
||||||
|
* Définir le SDK du projet sur **Java 21 LTS**.
|
||||||
|
* Définir la JVM Gradle dans les paramètres IntelliJ sur Java 21.
|
||||||
|
* Re-synchroniser Gradle.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Simplification & Standardisation du Skeleton
|
||||||
|
* À la demande de l'utilisateur, simplification vers une structure classique :
|
||||||
|
* `GamingCore.java` : Classe épurée avec `onEnable()`, `onDisable()`, `getInstance()`, `saveDefaultConfig()`.
|
||||||
|
* `plugin.yml` : Déclaration classique minimale (`name`, `version`, `main`, `api-version: '1.16'`).
|
||||||
|
* Commit et synchronisation Git sur la branche `main`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Conception du Système de Minage (Custom Mining)
|
||||||
|
* **Objectif** : Créer un système de minerais personnalisés minables plusieurs fois avec gestion des drops et persistance SQLite.
|
||||||
|
* **Spécifications fonctionnelles & tables** :
|
||||||
|
|
||||||
|
### Table `ores` (Types de minerais)
|
||||||
|
| Champ | Type | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `id` | VARCHAR(64) PK | Identifiant unique du minerai (ex: `custom_iron`) |
|
||||||
|
| `block_material` | VARCHAR(64) | Matériau du bloc (ex: `IRON_ORE`) |
|
||||||
|
| `hardness` | DOUBLE | Dureté / résistance du bloc |
|
||||||
|
| `rarity` | VARCHAR(32) | Niveau de rareté (`COMMON`, `RARE`, `EPIC`, etc.) |
|
||||||
|
| `stock` | INTEGER | Nombre de fois où le bloc est minable avant épuisement |
|
||||||
|
| `respawnable` | BOOLEAN | Si le minerai se régénère |
|
||||||
|
| `respawn_time` | INTEGER | Temps de régénération en secondes |
|
||||||
|
| `temp_block` | VARCHAR(64) | Bloc temporaire d'attente (ex: `BEDROCK`) |
|
||||||
|
|
||||||
|
### Table `ore_drops` (Gestion des drops & taux)
|
||||||
|
| Champ | Type | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `id` | INTEGER PK AUTO | Identifiant du drop |
|
||||||
|
| `ore_id` | VARCHAR(64) FK | Référence vers le minerai parent |
|
||||||
|
| `item_material` | VARCHAR(64) | Item droppé (ex: `RAW_IRON`) |
|
||||||
|
| `default_amount` | INTEGER | Quantité de base |
|
||||||
|
| `default_chance` | DOUBLE | Taux de probabilité par défaut (0.0 à 1.0) |
|
||||||
|
| `fortunable` | BOOLEAN | Prise en compte de l'enchantement Fortune |
|
||||||
|
| `fortune_multiplier`| DOUBLE | Multiplicateur par niveau de Fortune |
|
||||||
|
| `smeltable` | BOOLEAN | Auto-smeltable si outil adéquat |
|
||||||
|
| `smelted_material`| VARCHAR(64) | Item obtenu si fondu (ex: `IRON_INGOT`) |
|
||||||
|
|
||||||
|
### Table `placed_ores` (Blocs actifs posés dans les mondes)
|
||||||
|
| Champ | Type | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `id` | INTEGER PK AUTO | Identifiant unique du bloc posé |
|
||||||
|
| `ore_id` | VARCHAR(64) FK | Type de minerai associé |
|
||||||
|
| `world` | VARCHAR(64) | Nom du monde Minecraft |
|
||||||
|
| `x`, `y`, `z` | INTEGER | Coordonnées du bloc |
|
||||||
|
| `current_stock` | INTEGER | Stock restant en temps réel |
|
||||||
|
| `is_depleted` | BOOLEAN | Indique si le bloc est en attente de réapparition |
|
||||||
|
| `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.
|
||||||
Reference in New Issue
Block a user