[CI-SKIP] Add technical diagrams

This commit is contained in:
TuxCoding
2026-05-05 13:41:10 +02:00
parent 65a379c3c2
commit 948613876e
3 changed files with 105 additions and 6 deletions
+71
View File
@@ -0,0 +1,71 @@
# Contributing Guide
## Architectural overview
```mermaid
graph TB
subgraph "Minecraft Server Platforms"
SPIGOT["Spigot/Paper<br/>(Bukkit Module)"]
BUNGEE["BungeeCord<br/>(Proxy Module)"]
VELOCITY["Velocity<br/>(Velocity Module)"]
end
subgraph "FastLogin Core"
CORE["FastLoginCore<br/>Main Logic Engine"]
SESSION["LoginSession<br/>Session Management"]
AUTH["AuthPlugin Hook<br/>Auth Integration"]
RESOLVER["ProxyAgnosticMojangResolver<br/>Profile Resolution"]
STORAGE["SQLStorage<br/>Database Layer"]
ANTIBOT["AntiBotService<br/>Rate Limiting"]
end
subgraph "Bedrock Support"
FLOODGATE["FloodgateManagement<br/>Bedrock Players"]
GEYSER["GeyserService<br/>Geyser Integration"]
BEDROCK["BedrockService<br/>Base Service"]
end
subgraph "External Services"
MOJANG["Mojang API<br/>api.mojang.com"]
SESSION_SERVER["Session Server<br/>sessionserver.mojang.com"]
DATABASE[(SQL Database<br/>MySQL/SQLite)]
end
subgraph "Async Processing"
SCHEDULER["AbstractAsyncScheduler<br/>Thread Pool Management"]
end
subgraph "Messaging"
MESSAGES["ChannelMessage<br/>Proxy Messages <br/>(i.e. BungeeCord)"]
NAMEKEY["NamespaceKey<br/>Message Routing"]
end
SPIGOT -->|loads| CORE
BUNGEE -->|loads| CORE
VELOCITY -->|loads| CORE
CORE -->|manages| SESSION
CORE -->|uses| AUTH
CORE -->|resolves profiles| RESOLVER
CORE -->|persists data| STORAGE
CORE -->|checks rate limits| ANTIBOT
CORE -->|handles bedrock| FLOODGATE
FLOODGATE -->|extends| BEDROCK
GEYSER -->|extends| BEDROCK
RESOLVER -->|queries| MOJANG
RESOLVER -->|verifies| SESSION_SERVER
STORAGE -->|connects to| DATABASE
CORE -->|schedules async| SCHEDULER
MESSAGES -->|uses| NAMEKEY
CORE -->|sends via| MESSAGES
AUTH -.->|delegates to| SPIGOT
AUTH -.->|delegates to| BUNGEE
ANTIBOT -->|rate limits| RESOLVER
```
+33 -5
View File
@@ -32,14 +32,42 @@ Development builds contain the latest changes from the Source-Code. They are ble
but also include features, enhancements and bug fixes that are not yet in a released version. If you click on the left
side on `Changes`, you can see iterative change sets leading to a specific build.
~~You can download them from here: [CodeMC(Jenkins)](https://ci.codemc.org/job/Games647/job/FastLogin/)~~
Currently broken due changed usernames. Download it from [here](https://github.com/TuxCoding/FastLogin/releases)
You can download them from here: [CodeMC(Jenkins)](https://ci.codemc.org/job/Games647/job/FastLogin/)
***
## Technical Authentication
```mermaid
sequenceDiagram
autonumber
participant C as Client
participant S as Server
participant M as Mojang
C->>S: LOGIN_START (name)
Note over S: DB: check if username is saved as premium
S->>C: ENCRYPTION_REQUEST
Note right of C: Offline clients terminates connection here
Note right of C: In Offlinemode: LOGIN_SUCCESS is sent directly
rect rgb(240, 240, 240)
C->>M: POST /session/minecraft/join
C->>S: ENCRYPTION_RESPONSE
Note right of C: Client starts encrypting
end
Note over S: Decrypt and verify token
S->>M: GET /hasJoined (async)
M->>S: {uuid, name, skin}
Note over S: Server encrypts traffic
Note over S: Inject skin and premium UUID
S->>S: Re-inject LOGIN_START(name)
S->>C: LOGIN_SUCCESS
```
## Commands
/premium [player] Label the invoker or the argument as paid account
@@ -235,7 +235,7 @@ public class ConnectListener implements Listener {
// delay sending force command, because Paper will process the login event asynchronously
// In this case it means that the force command (plugin message) is already received and processed while
// player is still in the login phase and reported to be offline.
// player is still in the login phase and reported to be offline
Runnable loginTask = new ForceLoginTask(plugin.getCore(), player, server, session);
plugin.getScheduler().runAsync(loginTask);
}