Files
Cites_Plugins/docs/README.md
T
Antone Barbaud ffc77c4213 feat: initial CR-Core library (team + player + command framework)
Pure Maven library for CR Minecraft game plugins, targeting Paper 1.16.5.

Common abstractions (fr.luc.crcore.common): Identifiable, Named, ScoreHolder,
AbstractEntity, Repository<T>.

Team domain (fr.luc.crcore.team): Team entity with name/tag/color/leader/
visibility (PUBLIC|PRIVATE)/members/scores/spawn point, TeamMember,
TeamRole/TeamColor/TeamVisibility enums, TeamRanking record, TeamService with
overridable hooks (factories, validations, lifecycle events), in-memory
repository, dedicated exception hierarchy.

Player domain (fr.luc.crcore.player): PlayerProfile with named scores per
player, PlayerProfileService with auto-creation, individual rankings,
exception hierarchy. Both Team and PlayerProfile implement ScoreHolder.

Command framework (fr.luc.crcore.command): Command interface,
AbstractCommand base, BaseCommand (CommandExecutor + TabCompleter), SubCommand,
CommandContext, CommandResult, ArgumentType<T> + ArgumentTypes catalogue
(STRING, INTEGER, DOUBLE, BOOLEAN, ONLINE_PLAYER, enumOf, choice).

Docs (docs/) is the single source of truth: README, setup, features,
decisions log, and 6 PlantUML diagrams (team class/sequence/activity/join,
player class, command class).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 17:17:56 +02:00

59 lines
2.6 KiB
Markdown

# 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<T>`) ;
- 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.