DiscordAuth-Plugin
A plugin designed to make your server more secure while (trying to be) as little a pain in the a*s as possible by sending 2FA messages to discord using a bot and password based authentication for users that don't have discord.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
DiscordAuth-Plugin
DiscordAuth Plugin
A Discord verification authentication plugin for Minecraft servers (Paper 1.21+) by theTWIXhunter. Links player accounts to Discord via DM verification codes or allows password-based authentication using the new dialogs feature.
Features
- Experimental Features: Players verify by entering their Discord User ID and receiving a 4-digit code via bot DM - Experimental Features: Set backup passwords for when Discord access is lost - Experimental Features: Allow registration with just a password (no Discord required) - Experimental Features: Built-in support for multiple languages (English UK, Dutch Belgium) - Experimental Features: Skip login for premium accounts or matching IPs (configurable) - Experimental Features: Players can unlink Discord accounts, logout, and manage passwords - Experimental Features: - Max accounts per Discord account limit - Verification timeout - Force authentication for OPs/specific permissions - Experimental Features: - Discord role sync (grant Minecraft permissions based on Discord roles) - DiscordSRV compatibility mode
Commands
- `/discordauth <reload|unlink|logout>` - Main command (aliases: `/dauth`) - `reload` - Reload the plugin configuration (admin) - `unlink [player]` - Unlink Discord account - `logout [player]` - Logout from verification session - `/password <set|change|forgot>` - Manage backup passwords (aliases: `/pw`, `/passwd`) - `/logout [player]` - Quick logout command - `/unlink [player]` - Quick unlink command
Permissions
- `discordauth.use` - Allows use of basic commands (default: true) - `discordauth.admin` - Allows use of admin commands (default: op) - `discordauth.force.login` - Force players with this permission to always authenticate
Default Configuration
```yaml
+--------------------------------------------------------------------------+
| ------====== DISCORD AUTH PLUGIN ======------ |
| --- By TheTWIXhunter --- |
+--------------------------------------------------------------------------+
| | |
| More information about this config file can be found here: |
| https://thetwixhunter.nekoweb.org/discordauth/guides/configuration.html |
| |
| !!!! ---MAKE SURE TO SET THE BOT TOKEN IN bottoken.yml--- !!!! |
| |
| The initial setup guide can be found here: |
| https://thetwixhunter.nekoweb.org/discordauth/guides/initial-setup.html |
+--------------------------------------------------------------------------+
+--------------------------------------------------------------------------+
| ------====== GENERAL SETTINGS ======------ |
+--------------------------------------------------------------------------+
Server name (shown in Discord messages)
server-name: "My Minecraft Server"
Discord server invite link (shown when DMs fail)
discord-invite: "https://discord.gg/YOUR_INVITE_CODE"
Maximum number of Minecraft accounts allowed per Discord account (0 = unlimited)
max-accounts-per-discord: 0
Language file to use (from the languages folder)
Available: en-uk.yml, nl-be.yml
language: "en-uk"
Verification timeout in seconds (0 to disable, recommended: 600 for 10 minutes)
Players will be kicked if they don't verify within this time
verification-timeout: 600
Kick players after X failed login attempts (default 3, 0 to disable)
This helps prevent brute-force attacks on accounts
max-login-attempts: 3
+--------------------------------------------------------------------------+
| ------====== VERIFICATION METHODS ======------ |
+--------------------------------------------------------------------------+
| |
| Control how players verify their accounts (Discord, password, etc.) |
| |
+--------------------------------------------------------------------------+
Discord verification (default method)
Allow registration with a Discord account
When enabled, players can register by entering their User ID or by linking their account with Discord
allow-discord-registration: true
Allow registration without Discord account
When enabled, players can register using just a password instead of linking Discord
Players enter a password during registration instead of a Discord ID
allow-password-only-registration: true
Allow players to login with password even when they have Discord linked
(for when players lose Discord access)
Players can set a password and use it to verify instead of Discord when they lost access to their account
enable-backup-password: true
+--------------------------------------------------------------------------+
| ------====== AUTHENTICATION SKIP SETTINGS ======------ |
+--------------------------------------------------------------------------+
| Authentication Skip Settings |
| Control who needs to authenticate and who can skip the login process |
| |
| - A user does not need to authenticate if any of the enabled skip rules |
| apply to them |
| - A user won't have to register if "require-registration" is false for |
| !any! of the skip rules that apply to them. |
| (They will still be required to register if all of them are False) |
| |
+--------------------------------------------------------------------------+
authentication-skip:
Skip authentication for premium (Microsoft/Mojang authenticated) accounts
Only applies when the player joins with proper Microsoft authentication
Offline mode players will still be required to login
skip-premium-accounts: enabled: true
Require premium accounts to still register initially (even if they skip login later)
require-registration: true
Skip authentication when player's IP matches their last known IP
This provides convenience for players connecting from the same location
skip-matching-ip: enabled: true
Require players to still register initially (even if they skip login later)
require-registration: true
Skip authentication for specific players (DEBUG ONLY - NOT RECOMMENDED)
Players listed here will never be asked to authenticate
Use player usernames (case-sensitive)
skip-specific-players: enabled: false
Require these players to still register initially
require-registration: false players: - "DebugPlayer1" - "TestAccount"
Force authentication overrides
Players matching these criteria MUST authenticate even if skip rules apply
force-authentication:
Force OPs to always authenticate regardless of skip rules
force-ops: true
Force players with specific permission to always authenticate
Permission: discordauth.force.login
force-permission: true ```
Initial Setup
1. Create a Discord Bot - Go to Create a Discord Bot - Create a new application - Add a bot and copy the bot token - Enable these Privileged Gateway Intents: - Server Members Intent - Message Content Intent
2. Configure the Plugin - Edit `plugins/DiscordAuth/bot-token.yml` - Replace `PUT_YOUR_BOT_TOKEN_HERE` with your bot token - Edit `plugins/DiscordAuth/config.yml` to your preferences - Set your `server-name` and `discord-invite` link
3. Invite the Bot - Use your bot's OAuth2 URL with these scopes: `bot` - Required permissions: Send Messages, Read Messages, Embed Links
For detailed setup instructions, visit: https://thetwixhunter.nekoweb.org/discordauth/guides/initial-setup.html (This site is still work in progress)
Building
Run `mvn clean package` to build the plugin. The compiled JAR will be in the `target` folder.
Installation
1. Build the plugin or download the JAR 2. Place the JAR in your server's `plugins` folder 3. Restart the server 4. Follow the Initial Setup guide above 5. Configure `plugins/DiscordAuth/bot-token.yml` and `config.yml` 6. Reload or restart the server
How It Works
First-Time Registration
1. Player joins the server 2. Plugin prompts for Discord User ID or password setup using a dialog 3. If Discord: Bot sends 4-digit code via DM → Player enters code 4. If password-only: Player sets a password 5. Account is registered and player can join
Returning Players
1. Player joins the server 2. If skip rules apply (premium/IP match), player joins immediately 3. Otherwise, player must verify with Discord code or password 4. After verification, player can join
Author
me.theTWIXhunter