docs: document MessagesService — single per-plugin YAML, defaults in jar
features.md: new section 8 "Service de messages" with the single-file model, two-layer in-memory (jar defaults + user file), API examples, template-override mechanism, and override-the-impl extension point. Bootstrap section renumbered to 9. decisions.md: new decision logging the choice of MessagesService design (YAML, single per-plugin file, in-jar fallback for new keys, template priority from the game plugin's own resource, programmatic set() for dynamic cases). README.md: feature list mentions externalized messages; diagrams index adds messages-class-diagram.puml. setup.md: new "Fichier messages" section explaining the file location, how to seed it from a game plugin's bundled template, and the API for hot reload / extras / programmatic set(). New diagram: docs/diagrams/messages-class-diagram.puml — MessagesService interface, YamlMessagesService impl, link to CRCore, with explanatory note on the two-source merge and template fallback at first boot. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -257,6 +257,35 @@ CitesPlugin/ # dossier IntelliJ (renommer plus t
|
||||
└── PlayerScoreChangeEvent.java
|
||||
```
|
||||
|
||||
## Fichier messages
|
||||
|
||||
Au premier `enable()`, CR-Core crée :
|
||||
|
||||
```
|
||||
<plugin-dataFolder>/<plugin-name-lowercase>-messages.yml
|
||||
```
|
||||
|
||||
(ex. `cites-messages.yml` si ton plugin s'appelle `Cites`)
|
||||
|
||||
Édite ce fichier pour customiser tous les messages des commandes `/core team
|
||||
...`. Les clés non présentes retombent sur les defaults CR-Core (dans le jar)
|
||||
— donc tu peux n'inclure que ce que tu veux changer.
|
||||
|
||||
Pour pré-remplir ce fichier avec tes overrides + tes propres messages dès la
|
||||
première exécution, bundle un fichier au **même nom** dans tes ressources
|
||||
plugin (`src/main/resources/cites-messages.yml`). Si présent, c'est lui qui
|
||||
sert de template au lieu des defaults CR-Core.
|
||||
|
||||
API en code :
|
||||
```java
|
||||
core.messages().get("team.create.success",
|
||||
"name", team.getName(), "tag", team.getTag());
|
||||
|
||||
core.messages().set("mygame.custom", "&aHello {player} !");
|
||||
core.messages().loadAdditional("my-extras.yml");
|
||||
core.messages().reload(); // hot reload depuis le disque
|
||||
```
|
||||
|
||||
## Tables SQLite créées par CR-Core
|
||||
|
||||
Au premier `enable()`, les tables suivantes sont créées (en `IF NOT EXISTS`) :
|
||||
|
||||
Reference in New Issue
Block a user