Links
Tags
Creators
Details
0.1.0-alpha
Compatibility
Required content
Changes
ValleyAuth v0.1.0-alpha
First alpha release. Authentication, identity, and player-data migration plugin for Paper servers (1.21+).
What's Included
Stage 1: Authentication System
Three identity types are recognized and handled automatically:
| Identity | Detection | Behavior |
|---|---|---|
| Premium | Mojang session verification (hasJoined) | Bypasses /register and /login entirely |
| Offline | Fails hasJoined + not a Bedrock player | Assigned - prefixed identity, must /register then /login |
| Bedrock | Floodgate API detection | Auth skipped entirely, Floodgate handles identity natively |
Authentication Flow (Non-Bedrock Players)
- Client sends LOGIN_START
- ValleyAuth intercepts, sends EncryptionRequest (standard Minecraft encryption handshake)
- Client responds with encrypted shared secret + verify token
- ValleyAuth enables AES/CFB8/NoPadding channel encryption
- ValleyAuth calls Mojang's
sessionserver/minecraft/hasJoinedendpoint - Premium accounts: Mojang UUID verified, player joins with real identity
- Offline accounts: Verification fails, player gets
-prefixed username + ValleyAuth UUID
Commands
/register <password> <confirmPassword>- Register a password for Offline identities/login <password>- Authenticate with a previously registered password
Enforcement
Unauthenticated Offline players are restricted to survival mode with movement, interaction, chat, and inventory blocked until /login is completed.
Dependencies
- Required: Paper 1.21+ (any recent version)
- Required: PacketEvents 2.13.0 (included)
- Optional: Floodgate 2.2+ (Bedrock player detection)
- Optional: Geyser-Spigot (Bedrock protocol translation)
- Optional: ProtocolLib (fallback packet listener if PacketEvents unavailable)
Configuration
server.propertiesonline-mode=falserequired for ValleyAuth auth to activate- When
online-mode=true, ValleyAuth runs Floodgate detection and identity tracking only (for future Stage 2 migration bookkeeping), but skips the auth handshake
Known Limitations
- Mojang sessions are one-time-use — restarting the client is required between different servers
- Passwords stored in YAML (plain text) — will be migrated to proper storage in a future stage
- No configurable restriction messages or bypass permissions yet
- No
/changepasswordor/forgotpasswordcommands yet
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:5h6Y2HxU:Iq1XeCAc"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:5h6Y2HxU:Iq1XeCAc"
}

