Files

4.6 KiB

📜 Instructions & Consignes du Projet - GamingCore (Système de Guilde)

Ce document consigne les directives d'architecture, règles de développement et spécifications fonctionnelles du projet GamingCore.


🎯 1. Vision du Projet

Développement d'un système de Guilde complet, modulaire et hautement configurable pour Minecraft (Paper 1.20.1+ / Java 21 LTS - target Java 17).


📐 2. Règles & Standards de Développement

🔹 Conception du Code

  • Méthodes & Logique Métier d'Abord : Tout le système doit reposer sur des méthodes et services métier découplés (Managers, Repositories, Calculators), indépendants du système de commande ou d'UI.
  • Dynamisme & Modularité : Le code doit être découpé en parties logiques claires et évolutives.
  • Documentation Obligatoire : Chaque méthode doit comporter une Javadoc / un commentaire détaillé explicitant :
    • Son rôle et son comportement.
    • Ses paramètres (@param).
    • Sa valeur de retour (@return).
    • Les éventuelles exceptions levées (@throws).

🔹 Dépendances & Intégrations

  • Paper API 1.20.4 : API Bukkit/Paper cross-version.
  • Vault API 1.7.1 : Gestion de l'économie (dépôt, retrait, vérification de solde).
  • WorldGuard 7.0.9 & WorldEdit 7.3.0 : Intégration et compatibilité régionale.
  • Kyori Adventure & MiniMessage : Couleurs HEX, gradients et composants de texte modernes.
  • XSeries 13.0.0 : Abstraction des matériaux, sons et particules.

🏰 3. Spécifications Métier du Système de Guilde

1. Structure d'une Guilde

  • Création soumise à un coût économique (Vault) et au claim obligatoire du chunk initial.
  • Données : UUID, nom, tag, description, solde bancaire, point de ralliement (home), membres, rangs, claims.

2. Rangs & Permissions Dynamiques par Guilde

  • Chaque guilde peut créer, renommer, hiérarchiser (priorité) et supprimer ses propres rangs.
  • Rangs initiaux par défaut à la création :
    • 👑 Chef (Leader) : Priorité maximale (100), toutes les permissions, non supprimable.
    • ⚔ Officier (Officer) : Priorité intermédiaire (50), gestion des membres et claims.
    • 🛡 Membre (Member) : Priorité de base (1), rang par défaut des recrues.
  • Permissions granulaires configurables par rang :
    • CLAIM, UNCLAIM, SET_HOME, HOME, INVITE, KICK, PROMOTE, DEMOTE, MANAGE_RANKS, BANK_DEPOSIT, BANK_WITHDRAW, BUILD, BREAK, INTERACT, CONTAINER.

3. Moteur Économique & Calcul Spatio-Temporel des Chunks

Le prix d'acquisition d'un nouveau chunk suit la formule spatio-temporelle avec surchauffe glissante sur 24h :

\text{PrixFinal}(N, R) = \left[ P_{\text{base}} \times (1 + \text{Taux})^{(N - 1)^\alpha} + (N - 1) \times \text{Palier} \right] \times \left[ 1 + \left( k_{\text{base}} + k_{\text{taille}} \times \left(\frac{N}{10}\right) \right) \times R^{\delta} \right]
  • $N$ : Nombre total de chunks possédés.
  • $R$ : Nombre de chunks achetés dans les dernières 24h (décroissance automatique).
  • Effet d'échelle : La surchauffe temporelle est plus sévère pour une grande guilde que pour une petite.

4. Banque de Guilde

  • Solde partagé avec dépôts libres et retraits sécurisés par permissions de rang.

5. Invitations

  • Invitations temporaires expirables (ex: 60s) avec acceptation/refus.

6. Protection Territoriale & Listeners

  • Protection des blocs, conteneurs, portes et explosions sur les chunks de guilde en fonction des permissions de rang du joueur.

🗂️ 4. Organisation des Packages

fr.luc.gamingcore/
 ├── Main.java                          (Point d'entrée du plugin)
 ├── model/                             (Entités et Enums du domaine)
 │    ├── Guild.java
 │    ├── GuildMember.java
 │    ├── GuildRank.java
 │    ├── GuildPermission.java
 │    ├── GuildClaim.java
 │    └── GuildInvite.java
 ├── economy/                           (Gestion économique & Formule mathématique)
 │    ├── EconomyManager.java
 │    └── ChunkPriceCalculator.java
 ├── database/                          (Persistance SQLite/MySQL)
 │    ├── DatabaseManager.java
 │    └── GuildRepository.java
 ├── manager/                           (Logique métier et services)
 │    ├── GuildManager.java
 │    └── InviteManager.java
 ├── listener/                          (Interception des événements et protection)
 │    └── TerritoryProtectionListener.java
 └── util/                              (Utilitaires de texte et formatage)
      └── TextUtil.java