How darkkingturkey/darksauth works
DarksAuth is a Paper/Spigot plugin for offline-mode Minecraft servers, combining Mojang packet-handshake verification with password-based cracked-account authentication. Players join through premium profile verification or a cracked-account login/register flow; authenticated sessions then lift gameplay restrictions. Commands, brute-force controls, SQLite persistence, and optional server integrations support that flow. The README documents several capabilities whose implementation was not sampled, so their wiring is shown only where supported by the excerpts or documentation.
Main entry points: AuthManager.java Session manager · ProtocolLoginHandler.java Login handler · AccountRepository.java Account records · DatabaseManager.java Database manager
Components 28
Plugin setup
- Plugin lifecycle
src/main/java/com/darks/auth/DarksAuthPlugin.java
Identity checks
- Login handler
src/main/java/com/darks/auth/protocol/ProtocolLoginHandler.java - Mojang lookup
src/main/java/com/darks/auth/api/MojangService.java - Handshake crypto
src/main/java/com/darks/auth/protocol/EncryptionUtils.java - Profile data
src/main/java/com/darks/auth/api/MojangProfile.java
Authentication
- Session manager
src/main/java/com/darks/auth/auth/AuthManager.java - Player sessions
src/main/java/com/darks/auth/auth/AuthSession.java - Access restrictions
src/main/java/com/darks/auth/listener/PlayerRestrictionListener.java - Register command
src/main/java/com/darks/auth/command/RegisterCommand.java - Login command
src/main/java/com/darks/auth/command/LoginCommand.java - Password hashing
src/main/java/com/darks/auth/auth/PasswordHasher.java - Lockout control
src/main/java/com/darks/auth/auth/BruteForceManager.java
Accounts and state
- Admin commands
src/main/java/com/darks/auth/command/DarksAuthAdminCommand.java - Status overrides
src/main/java/com/darks/auth/command/PremiumCommand.java - Account records
src/main/java/com/darks/auth/storage/AccountRepository.java - Mojang cache
src/main/java/com/darks/auth/storage/MojangCacheRepository.java - Login attempts
src/main/java/com/darks/auth/storage/LoginAttemptRepository.java - Database manager
src/main/java/com/darks/auth/storage/DatabaseManager.java
Server integrations
- LuckPerms context
src/main/java/com/darks/auth/hook/LuckPermsHook.java - Status placeholders
src/main/java/com/darks/auth/hook/PlaceholderApiHook.java - Voice isolation
src/main/java/com/darks/auth/hook/VoiceChatHook.java - Command log filter
src/main/java/com/darks/auth/listener/ConsoleLogFilter.java
Other components
- Minecraft player
- Paper server
- Mojang services
- SQLite database
- ProtocolLib
- Simple Voice Chat
Connections 35
- Minecraft player → Paper server: joins
- Paper server → Login handler: pre-login dispatch
- Login handler → Account records: checks overrides
- Login handler → Mojang lookup: queries profiles
- Mojang lookup → Mojang services: requests profile
- Mojang lookup → Mojang cache: reads and writes
- Login handler → Session manager: starts or completes session
- Login handler → Handshake crypto: uses handshake crypto
- Login handler → ProtocolLib: intercepts packets
- Register command → Session manager: requests registration
- Login command → Session manager: requests login
- Register command → Account records: stores account
- Login command → Account records: checks account
- Register command → Password hashing: hashes password
- Login command → Password hashing: checks password
- Login command → Lockout control: checks failures
- Lockout control → Login attempts: tracks lockouts
- Session manager → Account records: updates account state
- Session manager → Player sessions: maintains sessions
- Session manager → Access restrictions: session state checked
- Paper server → Access restrictions: game events
- Admin commands → Account records: manages records
- Status overrides → Account records: sets account status
- Plugin lifecycle → Database manager: initializes storage
- Database manager → SQLite database: opens database
- Account records → Database manager: queries and updates
- Mojang cache → Database manager: queries and updates
- Login attempts → Database manager: queries and updates
- Plugin lifecycle → Login handler: registers handler
- Plugin lifecycle → Session manager: initializes manager
- Session manager → LuckPerms context: authentication context
- Session manager → Status placeholders: status access
- Session manager → Voice isolation: authentication checks
- Voice isolation → Simple Voice Chat: mutes and filters audio
- Command log filter → Paper server: filters console commands