# Documentation CR-Core Ce dossier est la **source de vérité** du projet. Toutes les décisions, idées, mécaniques, règles et spécifications du noyau sont consignées ici. ## Objectif du projet **CR-Core** est une **librairie Maven** réutilisable pour construire des plugins Minecraft. Elle fournit : - des abstractions communes (`Identifiable`, `Named`, `ScoreHolder`, `AbstractEntity`, `Repository`) ; - un **domaine équipes** clé en main (`Team`, `TeamMember`, `TeamService`, `TeamRepository`) — visibilité, scores, classements, spawn, overridable ; - un **domaine profils joueurs** (`PlayerProfile`, `PlayerProfileService`) — scores nommés par joueur, classements individuels ; - un **framework de commandes** (`BaseCommand`, `SubCommand`, `ArgumentType`, tab-completion intégrée). Les plugins de jeu (futur `CitesPlugin`, BedWars, etc.) déclarent CR-Core en dépendance Maven `provided` (ou shadent la lib) et l'utilisent directement. - Cible runtime : **Minecraft 1.16.5** (API Paper). - Build : Maven, Java 16. ## Structure de la documentation - `README.md` — Ce fichier. Vue d'ensemble et index. - `setup.md` — Build, intégration dans un plugin de jeu, exemple d'usage. - `features.md` — Domaines fonctionnels (team, command). - `decisions.md` — Journal des décisions importantes (ADR léger). - `diagrams/` — Diagrammes PlantUML (`.puml`). ## Diagrammes | Fichier | Type | Sujet | |---|---|---| | [team-class-diagram.puml](diagrams/team-class-diagram.puml) | Classe | Domaine Team + abstractions communes | | [team-create-sequence.puml](diagrams/team-create-sequence.puml) | Séquence | Création d'une équipe | | [team-join-sequence.puml](diagrams/team-join-sequence.puml) | Séquence | Auto-join sur une équipe publique | | [team-create-activity.puml](diagrams/team-create-activity.puml) | Activité | Flux de validation à la création | | [player-class-diagram.puml](diagrams/player-class-diagram.puml) | Classe | Domaine Player (profils + scores + classements) | | [command-class-diagram.puml](diagrams/command-class-diagram.puml) | Classe | Framework de commandes | ## Conventions - Code : **anglais standard**, séparation stricte interfaces / enums / classes abstraites / classes concrètes / exceptions. - Doc & messages joueur : **français**. - Package racine : `fr.luc.crcore`. - Classes du noyau **non-`final`**, méthodes-clés `protected`, hooks `onBefore…`/`onAfter…` et factories `new…` pour l'override. ## Contribuer à la doc Chaque nouvelle idée, règle, commande ou contrainte discutée doit être ajoutée au fichier approprié, **avant ou pendant** l'implémentation. La doc précède le code.