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>
2.6 KiB
2.6 KiB
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 | Classe | Domaine Team + abstractions communes |
| team-create-sequence.puml | Séquence | Création d'une équipe |
| team-join-sequence.puml | Séquence | Auto-join sur une équipe publique |
| team-create-activity.puml | Activité | Flux de validation à la création |
| player-class-diagram.puml | Classe | Domaine Player (profils + scores + classements) |
| 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ésprotected, hooksonBefore…/onAfter…et factoriesnew…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.