{"id":65869,"date":"2026-06-03T21:49:21","date_gmt":"2026-06-03T18:49:21","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/"},"modified":"2026-06-03T21:49:21","modified_gmt":"2026-06-03T18:49:21","slug":"even-better-whitelist","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/","title":{"rendered":"Even Better Whitelist"},"content":{"rendered":"<p># EvenBetterWhitelist &#8211; Plugin<\/p>\n<p>![Modrinth](https:\/\/modrinth.com\/plugin\/even-better-whitelist)<br \/>\n![Minecraft](https:\/\/papermc.io\/)<br \/>\n![Discord](https:\/\/img.shields.io\/badge\/Discord-Integration-5865F2?style=flat-square&#038;logo=discord)<\/p>\n<p>A modern whitelist system for Minecraft Paper 1.21.x with Discord integration. When a player attempts to join and is not whitelisted, a structured request is posted to your Discord channel. Admins can accept, deny, or ban directly from Discord using buttons.<\/p>\n<p>![Minecraft](https:\/\/img.shields.io\/badge\/Minecraft-1.21.x-green?style=flat-square&#038;logo=minecraft)<br \/>\n![Paper](https:\/\/img.shields.io\/badge\/Paper-API-blue?style=flat-square)<br \/>\n![Discord](https:\/\/img.shields.io\/badge\/Discord-Integration-5865F2?style=flat-square&#038;logo=discord)<br \/>\n![Java](https:\/\/img.shields.io\/badge\/Java-21-orange?style=flat-square&#038;logo=openjdk)<\/p>\n<p>### Installation Steps<\/p>\n<p>1. Place `WhitelistPluginButBetter-1.0.0.jar` in your server&#8217;s `plugins\/` folder<br \/>\n2. Start\/restart your server<br \/>\n3. Edit `plugins\/WhitelistPluginButBetter\/config.yml`<br \/>\n4. Download GeoLite2-City.mmdb and place it in the plugin folder<br \/>\n5. Reload with `\/wlp reload` or restart the server<\/p>\n<p>## \ud83e\udd16 Discord Bot Setup<\/p>\n<p>### 1. Create a Discord Application<\/p>\n<p>1. Go to Discord Developer Portal<br \/>\n2. Click &#8220;New Application&#8221; and give it a name<br \/>\n3. Go to &#8220;Bot&#8221; section and click &#8220;Add Bot&#8221;<br \/>\n4. Copy the **Bot Token** (keep this secret!)<br \/>\n5. Enable these **Privileged Gateway Intents**:<br \/>\n   &#8211; Message Content Intent<\/p>\n<p>### 2. Invite the Bot<\/p>\n<p>1. Go to &#8220;OAuth2&#8221; \u2192 &#8220;URL Generator&#8221;<br \/>\n2. Select scopes: `bot`, `applications.commands`<br \/>\n3. Select permissions: `Send Messages`, `Embed Links`, `Read Message History`<br \/>\n4. Copy the generated URL and open it to invite the bot<\/p>\n<p>### 3. Get Your IDs<\/p>\n<p>Enable Developer Mode in Discord (Settings \u2192 Advanced \u2192 Developer Mode)<\/p>\n<p>&#8211; **Server ID**: Right-click your server \u2192 Copy Server ID<br \/>\n&#8211; **Channel ID**: Right-click the channel \u2192 Copy Channel ID<br \/>\n&#8211; **Admin User ID**: Right-click yourself \u2192 Copy User ID<\/p>\n<p>### 4. (Optional) Create a Webhook<\/p>\n<p>1. Right-click your channel \u2192 Edit Channel<br \/>\n2. Go to Integrations \u2192 Webhooks<br \/>\n3. Create a webhook and copy the URL<\/p>\n<p>## \u2699\ufe0f Configuration<\/p>\n<p>&#8220;`yaml<br \/>\ndiscord:<br \/>\n  bot-token: &#8220;YOUR_BOT_TOKEN_HERE&#8221;<br \/>\n  webhook-url: &#8220;YOUR_WEBHOOK_URL_HERE&#8221;<br \/>\n  server-id: &#8220;YOUR_SERVER_ID_HERE&#8221;<br \/>\n  channel-id: &#8220;YOUR_CHANNEL_ID_HERE&#8221;<br \/>\n  admin-user-ids: &#8220;USER_ID_1,USER_ID_2&#8221;<br \/>\n  ping-admins: true<\/p>\n<p>cooldowns:<br \/>\n  deny-cooldown: 60        # Minutes before denied player can try again<br \/>\n  pending-cooldown: 5      # Minutes between join attempts while pending<br \/>\n  ip-cooldown: 10          # Minutes before same IP can make new request<\/p>\n<p>geoip:<br \/>\n  enabled: true<br \/>\n  database-path: &#8220;plugins\/WhitelistPluginButBetter\/GeoLite2-City.mmdb&#8221;<br \/>\n&#8220;`<\/p>\n<p>See the full [config.yml](src\/main\/resources\/config.yml) for all options!<\/p>\n<p>## \ud83d\udcdd Commands<\/p>\n<p>| Command | Description |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `\/wlp accept <player>` | Accept a pending whitelist request |<br \/>\n| `\/wlp deny <player>` | Deny a pending whitelist request |<br \/>\n| `\/wlp pending` | View all pending requests |<br \/>\n| `\/wlp list [page]` | View whitelisted players |<br \/>\n| `\/wlp add <player>` | Manually add a player to whitelist |<br \/>\n| `\/wlp remove <player>` | Remove a player from whitelist |<br \/>\n| `\/wlp info <player>` | View detailed player info |<br \/>\n| `\/wlp status` | View plugin status |<br \/>\n| `\/wlp reload` | Reload configuration |<\/p>\n<p>## \ud83d\udd10 Permissions<\/p>\n<p>| Permission | Description | Default |<br \/>\n|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;|<br \/>\n| `whitelistplugin.admin` | Access to all commands | OP |<br \/>\n| `whitelistplugin.bypass` | Bypass whitelist check | OP |<\/p>\n<p>## Discord Embed Preview<\/p>\n<p>When a player tries to join, admins receive an embed like this:<\/p>\n<p>&#8220;`<br \/>\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502 New Whitelist Request                   \u2502<br \/>\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524<br \/>\n\u2502 Player: Steve                           \u2502<br \/>\n\u2502 UUID: 069a79f4-&#8230;                      \u2502<br \/>\n\u2502 IP: ||192.168.1.1||                     \u2502<br \/>\n\u2502 Location: New York, United States       \u2502<br \/>\n\u2502 Client: fabric                          \u2502<br \/>\n\u2502 Language: en_US                         \u2502<br \/>\n\u2502 Requested: 2024-01-15 14:30 UTC         \u2502<br \/>\n\u2502                                         \u2502<br \/>\n\u2502 Same IP as: Alex (1 other request)      \u2502<br \/>\n\u2502                                         \u2502<br \/>\n\u2502 [Accept]  [Deny]  [Ban]                 \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n&#8220;`<\/p>\n<p>## \ud83d\uddc2\ufe0f File Structure<\/p>\n<p>&#8220;`<br \/>\nplugins\/WhitelistPluginButBetter\/<br \/>\n\u251c\u2500\u2500 config.yml              # Main configuration<br \/>\n\u251c\u2500\u2500 whitelist.json          # Whitelisted players<br \/>\n\u251c\u2500\u2500 pending-requests.json   # Pending requests<br \/>\n\u251c\u2500\u2500 denied-players.json     # Denied players (for cooldowns)<br \/>\n\u251c\u2500\u2500 requests.log            # Action log<br \/>\n\u2514\u2500\u2500 GeoLite2-City.mmdb      # GeoIP database (you provide this)<br \/>\n&#8220;`<\/p>\n<p>## Troubleshooting<\/p>\n<p>### Bot not responding to buttons?<br \/>\n&#8211; Make sure the bot token is correct<br \/>\n&#8211; Ensure the bot has permissions in the channel<br \/>\n&#8211; Check console for connection errors<\/p>\n<p>### GeoIP not working?<br \/>\n&#8211; Download GeoLite2-City.mmdb from MaxMind<br \/>\n&#8211; Place it in the plugin folder<br \/>\n&#8211; Check the path in config.yml<\/p>\n<p>### Players not being kicked?<br \/>\n&#8211; Make sure the plugin is loaded (`\/plugins`)<br \/>\n&#8211; Check if player has `whitelistplugin.bypass` permission<br \/>\n&#8211; Look for errors in console<\/p>\n<p>### Seeing Private IP (10.x.x.x, 192.168.x.x)?<br \/>\nThis happens when using a **reverse proxy** (BungeeCord, Velocity, TCPShield, etc.)<\/p>\n<p>**For BungeeCord:**<br \/>\n1. Set `bungeecord: true` in `spigot.yml`<br \/>\n2. Restart the server<\/p>\n<p>**For Velocity:**<br \/>\n1. Edit `config\/paper-global.yml`<br \/>\n2. Set `proxies.velocity.enabled: true`<br \/>\n3. Set the `secret` to match Velocity&#8217;s forwarding secret<br \/>\n4. Restart the server<\/p>\n<p>**For TCPShield\/Other:**<br \/>\nFollow your proxy&#8217;s documentation for IP forwarding.<\/p>\n<p>### Client\/Language shows &#8220;N\/A (Pre-login)&#8221;?<br \/>\nThis is expected! The plugin intercepts players **before** they fully connect, so client brand and locale data isn&#8217;t available yet. This is a Minecraft limitation, not a bug.<\/p>\n<p>The data we DO capture (IP, UUID, GeoIP location) is still very useful for identifying players and alts!<\/p>\n<p>## \ud83d\udcdc License<\/p>\n<p>All Rights Reserved.Any modifications without informing is illegal.<\/p>\n<p>Made for the Minecraft community!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A professional whitelist workflow with Discord actions, dual VPN\/Proxy detection, GeoIP, optional captcha, Discord account linking, and statistics. Built for production servers.<\/p>\n","protected":false},"featured_media":65870,"template":"","meta":{"_minecraft_slug":"even-better-whitelist","_minecraft_project_id":"89beS55w","_minecraft_author":"zeusdagoat","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":32,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"even-better-whitelist.zip","_minecraft_size_bytes":35576950,"_minecraft_version_count":2,"_minecraft_updated_at":"2026-05-15T21:58:07.030307Z","_minecraft_date_created":"2026-02-07T06:52:33.685200Z","_minecraft_date_modified":"2026-02-22T10:01:38.838360Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/even-better-whitelist","_minecraft_icon_attachment_id":65870,"_minecraft_imported_at":"2026-06-03T18:49:21+00:00","_minecraft_import_hash":"b875262754ede4770b2fc4d196e4bd15","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[89,126,90,127,128,867,129,92],"mod_loader":[132,133,134],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-65869","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-game-mechanics","mod_category-management","mod_category-optimization","mod_category-paper","mod_category-purpur","mod_category-social","mod_category-spigot","mod_category-utility","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Even Better Whitelist - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Even Better Whitelist - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A professional whitelist workflow with Discord actions, dual VPN\/Proxy detection, GeoIP, optional captcha, Discord account linking, and statistics. Built for production servers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/\",\"name\":\"Even Better Whitelist - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp\",\"datePublished\":\"2026-06-03T18:49:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/even-better-whitelist\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Even Better Whitelist\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Even Better Whitelist - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/","og_locale":"en_US","og_type":"article","og_title":"Even Better Whitelist - Minecraft","og_description":"A professional whitelist workflow with Discord actions, dual VPN\/Proxy detection, GeoIP, optional captcha, Discord account linking, and statistics. Built for production servers.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/","name":"Even Better Whitelist - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp","datePublished":"2026-06-03T18:49:21+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/even-better-whitelist-icon-0879355b02d775b63f0c967e0f5fc8c10d05a19d_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/even-better-whitelist\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Even Better Whitelist"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/65869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/65870"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=65869"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=65869"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=65869"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=65869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}