Files
Cites_Plugins/docs/diagrams/util/messages-class-diagram.puml
T
Antone Barbaud b02e532563 docs: organize diagrams to mirror code layout (util/ + features/)
Move flat docs/diagrams/*.puml into a hierarchy matching the source
package structure:

  docs/diagrams/
  ├── bootstrap-sequence.puml         (cross-cutting)
  ├── events-diagram.puml             (cross-feature)
  ├── util/
  │   ├── command-class-diagram.puml
  │   ├── database-diagram.puml
  │   ├── messages-class-diagram.puml
  │   ├── broadcasts-class-diagram.puml
  │   └── gui-class-diagram.puml
  └── features/
      ├── team/
      │   ├── team-class-diagram.puml
      │   ├── team-config-class-diagram.puml
      │   ├── builtin-commands-diagram.puml
      │   ├── team-create-sequence.puml
      │   ├── team-create-activity.puml
      │   └── team-join-sequence.puml
      ├── player/
      │   └── player-class-diagram.puml
      └── moderation/
          └── moderation-class-diagram.puml

README.md diagram index split into 4 sections (overview, util,
features/team, features/player, features/moderation) for readability;
all links updated. features.md auto-updated by sed for the new paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 13:58:48 +02:00

64 lines
1.9 KiB
Plaintext

@startuml messages-class-diagram
title CR-Core — Messages service (class diagram)
skinparam classAttributeIconSize 0
hide empty members
package "fr.luc.crcore.util.message" {
interface MessagesService {
+ get(key, placeholderPairs...): String
+ raw(key): String
+ has(key): boolean
+ set(key, template): void
+ reload(): void
+ loadAdditional(resourceName): void
+ setApplyColorCodes(enabled): void
+ isApplyColorCodes(): boolean
+ getUserFile(): File
}
class YamlMessagesService {
- plugin: JavaPlugin
- defaults: Map<String, String> ' in-memory (jar resource)
- messages: Map<String, String> ' effective (defaults + user file)
- userFileName: String ' <plugin>-messages.yml
- userFile: File
- applyColorCodes: boolean
--
+ YamlMessagesService(plugin: JavaPlugin)
--
- loadDefaultsFromResource(): void ' charge crcore-messages.yml (jar)
- ensureUserFile(): void ' copie template si absent
- rebuildEffectiveMessages(): void ' defaults + user file
- {static} flatten(section, prefix, out): void
}
YamlMessagesService ..|> MessagesService
}
package "fr.luc.crcore" {
class CRCore {
+ messages(): MessagesService
# buildMessagesService(): MessagesService ' override point
}
CRCore "1" *-- "1" MessagesService : owns
}
note bottom of YamlMessagesService
Modèle "un seul fichier par plugin" :
Sources en mémoire (la 2e écrase la 1ère sur clés communes) :
1. crcore-messages.yml ← jar (toujours présent, fallback)
2. <plugin>-messages.yml ← dataFolder (édité par l'admin)
Création du fichier user au 1er boot :
Priorité 1 : ressource du plugin de jeu sous le même nom
Priorité 2 : copie des defaults CR-Core
Placeholders : {name} via varargs key/value
Codes couleur : &a → §a (toggle)
end note
@enduml