# bearlessdev/lobbymanager architecture

> Architecture diagram of the GitHub repository bearlessdev/lobbymanager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bearlessdev/lobbymanager
- Repository: https://github.com/bearlessdev/lobbymanager

## Overview

LobbyManager is a Spigot lobby plugin. Players use spawn commands or are handled by join, movement, chat, combat, and block events; administrators set the spawn and reload settings. Runtime configuration drives those behaviors, while tablist/chat formatting and optional LuckPerms prefixes customize presentation. The graph follows explicit initialization and calls in sampled source; broader configuration capabilities such as default player settings are documented in the README, but their implementation details were not sampled.

Main entry points: [`src/main/java/fr/bearless/lobbymanager/LobbyManager.java`](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/LobbyManager.java) (Plugin Bootstrap), [`src/main/java/fr/bearless/lobbymanager/listeners/PlayerListener.java`](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/listeners/PlayerListener.java) (Player Event Rules), [`src/main/java/fr/bearless/lobbymanager/components/TablistUpdater.java`](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/components/TablistUpdater.java) (Tablist Updater), [`src/main/java/fr/bearless/lobbymanager/configs/BaseConfig.java`](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/configs/BaseConfig.java) (Core Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lifecycle["Plugin Lifecycle"]
  node_plugin["Plugin Bootstrap<br/>[LobbyManager.java]"]
  node_base_config["Core Settings<br/>[BaseConfig.java]"]
  node_message_config["Message Settings<br/>[MessageConfig.java]"]
  node_reload_command["Reload Command<br/>[ReloadCommand.java]"]
  node_update_checker["Update Checker<br/>[UpdateChecker.java]"]
end

subgraph group_spawn["Spawn Management"]
  node_spawn_command["Spawn Command<br/>[SpawnCommand.java]"]
  node_set_spawn["Set Spawn Command"]
end

subgraph group_players["Player Experience"]
  node_player_listener["Player Event Rules"]
  node_tablist_updater["Tablist Updater"]
  node_tablist_sender["Tablist Sender<br/>[Tablist.java]"]
  node_formatter["Text Formatter<br/>[FormatText.java]"]
  node_permissions["Prefix Lookup"]
end

subgraph group_world["World Rules"]
  node_world_listener["World Event Rules<br/>[WorldListener.java]"]
end

node_player(("Player"))
node_admin(("Administrator"))
node_server["Spigot Server"]
node_luckperms["LuckPerms"]
node_update_service["Spigot Update Service"]

node_plugin -->|"initializes"| node_base_config
node_plugin -->|"initializes"| node_message_config
node_plugin -->|"registers"| node_spawn_command
node_plugin -->|"registers"| node_set_spawn
node_plugin -->|"registers"| node_reload_command
node_plugin -->|"registers"| node_player_listener
node_plugin -->|"registers"| node_world_listener
node_plugin -->|"starts"| node_tablist_updater
node_plugin -->|"creates"| node_permissions
node_plugin -->|"starts check"| node_update_checker
node_player -->|"invokes"| node_spawn_command
node_spawn_command -->|"reads spawn"| node_base_config
node_spawn_command -->|"reads messages"| node_message_config
node_spawn_command -->|"teleports"| node_player
node_admin -->|"invokes"| node_set_spawn
node_set_spawn -->|"writes spawn"| node_base_config
node_set_spawn -->|"reads messages"| node_message_config
node_set_spawn -->|"confirms"| node_player
node_admin -->|"invokes"| node_reload_command
node_reload_command -->|"reloads settings"| node_base_config
node_reload_command -->|"reloads messages"| node_message_config
node_reload_command -->|"sends response"| node_admin
node_player -->|"raises events"| node_player_listener
node_player_listener -->|"reads settings"| node_base_config
node_player_listener -->|"reads messages"| node_message_config
node_player_listener -->|"gets prefix"| node_permissions
node_player_listener -->|"formats text"| node_formatter
node_player_listener -->|"applies rules"| node_player
node_player_listener -->|"checks status"| node_update_checker
node_player_listener -.->|"notifies availability"| node_update_service
node_permissions -.->|"queries prefix"| node_luckperms
node_tablist_updater -->|"reads tablist text"| node_message_config
node_tablist_updater -->|"gets prefix"| node_permissions
node_tablist_updater -->|"formats text"| node_formatter
node_tablist_updater -->|"sends header/footer"| node_tablist_sender
node_tablist_updater -->|"sets list name"| node_player
node_tablist_sender -->|"sends packet"| node_player
node_world_listener -->|"reads rules"| node_base_config
node_world_listener -->|"cancels world events"| node_server
node_update_checker -->|"fetches version"| node_update_service
node_plugin -->|"registers runtime"| node_server

click node_plugin "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/LobbyManager.java"
click node_base_config "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/configs/BaseConfig.java"
click node_message_config "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/configs/MessageConfig.java"
click node_spawn_command "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/SpawnCommand.java"
click node_set_spawn "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/SetSpawnCommand.java"
click node_player_listener "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/listeners/PlayerListener.java"
click node_world_listener "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/listeners/WorldListener.java"
click node_reload_command "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/ReloadCommand.java"
click node_tablist_updater "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/components/TablistUpdater.java"
click node_tablist_sender "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/components/Tablist.java"
click node_formatter "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/utils/FormatText.java"
click node_permissions "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/managers/LuckPermsManager.java"
click node_update_checker "https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/utils/UpdateChecker.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_plugin,node_base_config,node_message_config,node_reload_command,node_update_checker toneBlue
class node_spawn_command,node_set_spawn toneAmber
class node_player_listener,node_tablist_updater,node_tablist_sender,node_formatter,node_permissions,node_server toneMint
class node_world_listener toneRose
class node_player,node_admin,node_luckperms,node_update_service toneIndigo
```

## Components

### Plugin Lifecycle

- [Plugin Bootstrap](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/LobbyManager.java): `src/main/java/fr/bearless/lobbymanager/LobbyManager.java`
- [Core Settings](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/configs/BaseConfig.java): `src/main/java/fr/bearless/lobbymanager/configs/BaseConfig.java`
- [Message Settings](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/configs/MessageConfig.java): `src/main/java/fr/bearless/lobbymanager/configs/MessageConfig.java`
- [Reload Command](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/ReloadCommand.java): `src/main/java/fr/bearless/lobbymanager/commands/ReloadCommand.java`
- [Update Checker](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/utils/UpdateChecker.java): `src/main/java/fr/bearless/lobbymanager/utils/UpdateChecker.java`

### Spawn Management

- [Spawn Command](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/SpawnCommand.java): `src/main/java/fr/bearless/lobbymanager/commands/SpawnCommand.java`
- [Set Spawn Command](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/commands/SetSpawnCommand.java): `src/main/java/fr/bearless/lobbymanager/commands/SetSpawnCommand.java`

### Player Experience

- [Player Event Rules](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/listeners/PlayerListener.java): `src/main/java/fr/bearless/lobbymanager/listeners/PlayerListener.java`
- [Tablist Updater](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/components/TablistUpdater.java): `src/main/java/fr/bearless/lobbymanager/components/TablistUpdater.java`
- [Tablist Sender](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/components/Tablist.java): `src/main/java/fr/bearless/lobbymanager/components/Tablist.java`
- [Text Formatter](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/utils/FormatText.java): `src/main/java/fr/bearless/lobbymanager/utils/FormatText.java`
- [Prefix Lookup](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/managers/LuckPermsManager.java): `src/main/java/fr/bearless/lobbymanager/managers/LuckPermsManager.java`

### World Rules

- [World Event Rules](https://github.com/bearlessdev/lobbymanager/blob/main/src/main/java/fr/bearless/lobbymanager/listeners/WorldListener.java): `src/main/java/fr/bearless/lobbymanager/listeners/WorldListener.java`

### Other components

- **Player**
- **Administrator**
- **Spigot Server**
- **LuckPerms**
- **Spigot Update Service**

## Connections

- Plugin Bootstrap → Core Settings: initializes
- Plugin Bootstrap → Message Settings: initializes
- Plugin Bootstrap → Spawn Command: registers
- Plugin Bootstrap → Set Spawn Command: registers
- Plugin Bootstrap → Reload Command: registers
- Plugin Bootstrap → Player Event Rules: registers
- Plugin Bootstrap → World Event Rules: registers
- Plugin Bootstrap → Tablist Updater: starts
- Plugin Bootstrap → Prefix Lookup: creates
- Plugin Bootstrap → Update Checker: starts check
- Player → Spawn Command: invokes
- Spawn Command → Core Settings: reads spawn
- Spawn Command → Message Settings: reads messages
- Spawn Command → Player: teleports
- Administrator → Set Spawn Command: invokes
- Set Spawn Command → Core Settings: writes spawn
- Set Spawn Command → Message Settings: reads messages
- Set Spawn Command → Player: confirms
- Administrator → Reload Command: invokes
- Reload Command → Core Settings: reloads settings
- Reload Command → Message Settings: reloads messages
- Reload Command → Administrator: sends response
- Player → Player Event Rules: raises events
- Player Event Rules → Core Settings: reads settings
- Player Event Rules → Message Settings: reads messages
- Player Event Rules → Prefix Lookup: gets prefix
- Player Event Rules → Text Formatter: formats text
- Player Event Rules → Player: applies rules
- Player Event Rules → Update Checker: checks status
- Player Event Rules → Spigot Update Service: notifies availability
- Prefix Lookup → LuckPerms: queries prefix
- Tablist Updater → Message Settings: reads tablist text
- Tablist Updater → Prefix Lookup: gets prefix
- Tablist Updater → Text Formatter: formats text
- Tablist Updater → Tablist Sender: sends header/footer
- Tablist Updater → Player: sets list name
- Tablist Sender → Player: sends packet
- World Event Rules → Core Settings: reads rules
- World Event Rules → Spigot Server: cancels world events
- Update Checker → Spigot Update Service: fetches version
- Plugin Bootstrap → Spigot Server: registers runtime
