Files
Cites_Plugins/docs/diagrams/features/team/builtin-commands-diagram.puml
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

125 lines
3.2 KiB
Plaintext

@startuml builtin-commands-diagram
title CR-Core — Default /core team commands (admin / joueur)
skinparam classAttributeIconSize 0
hide empty members
package "fr.luc.crcore.util.command" {
abstract class BaseCommand
abstract class SubCommand
}
package "fr.luc.crcore.builtin" {
class CoreCommand
CoreCommand --|> BaseCommand
package "fr.luc.crcore.features.team.command" {
class TeamGroupSubCommand {
+ TeamGroupSubCommand(service)
}
TeamGroupSubCommand --|> SubCommand
class TeamArgumentTypes <<utility>> {
+ {static} teamByName(service): ArgumentType<Team>
}
' ─── ADMIN commands (permission seule, team par argument) ───
package "admin" <<Rectangle>> {
class TeamCreateSubCommand {
perm: crcore.team.create
args: name, tag, color, [leader]
}
class TeamDeleteSubCommand {
perm: crcore.team.delete
args: <team>
}
class TeamSetLeaderSubCommand {
perm: crcore.team.setleader
args: <team> <player>
}
class TeamScoreSubCommand {
perm: crcore.team.score
args: <team> <name> <add|set> <value>
}
class TeamAddSubCommand {
perm: crcore.team.add
args: <team> <player>
}
class TeamRemoveSubCommand {
perm: crcore.team.remove
args: <team> <player>
}
class TeamTransferSubCommand {
perm: crcore.team.transfer
args: <team> <player>
}
class TeamVisibilitySubCommand {
perm: crcore.team.visibility
args: <team> <vis>
}
class TeamSetSpawnSubCommand {
perm: crcore.team.setspawn
args: <team>
playerOnly
}
}
' ─── PLAYER commands ───
package "player" <<Rectangle>> {
class TeamJoinSubCommand {
perm: crcore.team.join
args: <team>
}
class TeamLeaveSubCommand {
perm: crcore.team.leave
}
class TeamInfoSubCommand {
perm: crcore.team.info
args: [team]
}
class TeamListSubCommand {
perm: crcore.team.list
}
class TeamTopSubCommand {
perm: crcore.team.top
args: [score]
}
}
TeamCreateSubCommand --|> SubCommand
TeamDeleteSubCommand --|> SubCommand
TeamSetLeaderSubCommand --|> SubCommand
TeamScoreSubCommand --|> SubCommand
TeamAddSubCommand --|> SubCommand
TeamRemoveSubCommand --|> SubCommand
TeamTransferSubCommand --|> SubCommand
TeamVisibilitySubCommand --|> SubCommand
TeamSetSpawnSubCommand --|> SubCommand
TeamJoinSubCommand --|> SubCommand
TeamLeaveSubCommand --|> SubCommand
TeamInfoSubCommand --|> SubCommand
TeamListSubCommand --|> SubCommand
TeamTopSubCommand --|> SubCommand
CoreCommand "1" *-- "1" TeamGroupSubCommand : contains
TeamGroupSubCommand "1" *-- "14" SubCommand : contains
}
}
note bottom of TeamGroupSubCommand
Le rôle LEADER reste dans le modèle Team
(utilisable par les game plugins via l'API)
mais n'accorde aucun privilège de commande
dans le set par défaut.
Override d'une feuille :
core.getCoreCommand()
.findSubCommand("team")
.replaceSubCommand("create",
new MyCreate(svc));
end note
@enduml