mirror of
https://github.com/TuxCoding/FastLogin.git
synced 2026-07-05 08:00:47 +02:00
[CI-SKIP] Add technical diagrams
This commit is contained in:
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user