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.
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