Files
Cites_Plugins/docs
Antone Barbaud 7ee349f206 feat: dynamic command registration + Maven publication setup
CRCore.registerCommand() now falls back to dynamic registration via the
server's internal CommandMap (reflection on CraftServer.commandMap) when
the command is absent from the host plugin's plugin.yml. Game plugins can
now use CR-Core with zero plugin.yml changes — just instantiate CRCore.
If the command IS declared in plugin.yml, CR-Core detects it and uses
setExecutor/setTabCompleter as before.

pom.xml: distributionManagement targeting Gitea Packages
(https://gitea.luc-rival.fr/api/packages/admin/maven), plus
maven-source-plugin (3.3.0) and maven-javadoc-plugin (3.6.3) so each
mvn deploy publishes the main jar, a -sources.jar and a -javadoc.jar.
doclint=none on javadoc to tolerate partial doc.

docs/setup.md: clarifies that the commands: entry in plugin.yml is now
optional. docs/decisions.md: new decision logged for the dynamic
registration approach.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 11:33:45 +02:00
..

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 Paper 1.16.5. Elle fournit, prêt à l'emploi en une ligne d'initialisation côté plugin de jeu :

  • Abstractions communesIdentifiable, Named, ScoreHolder, AbstractEntity, Repository<T>.
  • Domaine Team — équipes (nom, tag, couleur, chef, membres, visibilité PUBLIC/PRIVATE, scores nommés, classements, point de spawn), service overridable, exceptions dédiées.
  • Domaine Player — profils joueurs (scores nommés, classements individuels), service auto-créant les profils à la demande.
  • Framework de commandesBaseCommand / SubCommand imbriqués, arguments typés, tab-complétion, permissions, player-only.
  • Commandes par défaut/core team [create|delete|add|remove|join| leave|info|list|transfer|visibility|score|top|setspawn] fonctionnelles out-of-the-box, chacune substituable par sous-classe.
  • Évènements Bukkit — 9 events team + 3 events player, à écouter avec @EventHandler côté plugin de jeu.
  • Persistance SQLite — wrapper Database + TableBuilder fluide, repositories SQLite write-through, table custom en 2 lignes pour les plugins downstream.
  • Bootstrap uniquenew CRCore(this).enable() dans le onEnable() du plugin de jeu, et tout est branché.

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 détaillés.
  • 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 via la commande
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 + scores joueur
command-class-diagram.puml Classe Framework de commandes (nested)
builtin-commands-diagram.puml Classe Arbre des commandes /core team ...
events-diagram.puml Classe Évènements Bukkit team + player
database-diagram.puml Classe Wrapper SQLite + table builder
bootstrap-sequence.puml Séquence CRCore.enable() côté plugin de jeu

Conventions

  • Code : anglais standard, séparation stricte interfaces / enums / classes abstraites / classes concrètes / exceptions.
  • Doc & messages joueur : français.
  • JavaDoc en français sur les classes publiques et méthodes non triviales.
  • 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.