@startuml events-diagram title CR-Core — Bukkit events (team + player) skinparam classAttributeIconSize 0 hide empty members package "org.bukkit.event" { abstract class Event } package "fr.luc.crcore.features.team.event" { abstract class TeamEvent { - team: Team + getTeam(): Team } TeamEvent --|> Event class TeamCreateEvent class TeamDissolveEvent class TeamMemberAddEvent { + getMember(): TeamMember } class TeamMemberRemoveEvent { + getPlayerId(): UUID } class PlayerJoinTeamEvent { + getMember(): TeamMember } class TeamLeadershipTransferEvent { + getOldLeaderId(): UUID + getNewLeaderId(): UUID } class TeamVisibilityChangeEvent { + getOldVisibility(): TeamVisibility + getNewVisibility(): TeamVisibility } class TeamScoreChangeEvent { + getScoreName(): String + getOldValue(): int + getNewValue(): int + getDelta(): int } class TeamSpawnPointChangeEvent { + getOldLocation(): Location + getNewLocation(): Location } TeamCreateEvent --|> TeamEvent TeamDissolveEvent --|> TeamEvent TeamMemberAddEvent --|> TeamEvent TeamMemberRemoveEvent --|> TeamEvent PlayerJoinTeamEvent --|> TeamEvent TeamLeadershipTransferEvent --|> TeamEvent TeamVisibilityChangeEvent --|> TeamEvent TeamScoreChangeEvent --|> TeamEvent TeamSpawnPointChangeEvent --|> TeamEvent } package "fr.luc.crcore.features.player.event" { abstract class PlayerProfileEvent { - profile: PlayerProfile + getProfile(): PlayerProfile } PlayerProfileEvent --|> Event class PlayerProfileCreateEvent class PlayerProfileDeleteEvent class PlayerScoreChangeEvent { + getScoreName(): String + getOldValue(): int + getNewValue(): int + getDelta(): int } PlayerProfileCreateEvent --|> PlayerProfileEvent PlayerProfileDeleteEvent --|> PlayerProfileEvent PlayerScoreChangeEvent --|> PlayerProfileEvent } note right of TeamEvent Tous post-events, non-cancellable. Tirés par les sous-classes BukkitEventFiring*ServiceImpl via les hooks on* hérités. end note @enduml