ffc77c4213
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>
59 lines
2.6 KiB
Markdown
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.
|