b02e532563
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>
125 lines
3.2 KiB
Plaintext
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
|