️ ClientDetectorExtra
ClientDetectorExtra is a high-performance client (brand) detection plugin designed for modern Minecraft servers. It allows you to precisely identify which client (Lunar, Forge, Fabric, etc.) your players are using, with full support for Bedrock players via Geyser.
---
ClientDetectorExtra is a high-performance client (brand) detection plugin designed for modern Minecraft servers. It allows you to precisely identify which client (Lunar, Forge, Fabric, etc.) your players are using, with full support for Bedrock players via Geyser.
---
Features
- ⚡ Extreme Performance: Built-in caching system (msgCache) to prevent repetitive file reading and ensure zero lag.
- Folia Compatibility: Uses foliascheduler for thread-safe execution on multi-threaded servers.
- Full HEX & MiniMessage: Complete support for Hexadecimal colors, gradients, and modern styling.
- Geyser/Bedrock Support: Automatically detects if a player is joining from Bedrock Edition.
- Flexible Notifications: Configurable alerts and automatic update verification system.
- Smart Filtering: Choose to receive Discord alerts for all players or only specific clients (Forge, Fabric, etc.).
- ⚡ Admin Actions: Teleport to suspicious players directly from the GUI.
️ Technical Specifications
Java Version: Java 21
Minecraft API: Paper / Folia 1.17+
Supported Forks: Paper, Folia, Canvas, Purpur, Pufferfish
Shaded Dependencies: foliascheduler, fastboard, adventure-minimessage
---
Configuration (config.yml)
The plugin uses the MiniMessage format. You can use tags like <gradient:#55ffff:#5555ff> or HEX codes <#FFFFFF>.
Code (YAML):
notify-console
: true
notify-admin : true
permission : "clientdetector.admin"
messages:
prefix : "<#888888>[<gradient:#55ffff:#5555ff>ClientDetector</gradient><#888888>] <#ffffff>"
reload : "<#55ff55>Configuration has been reloaded!"
no-permission : "<#ff5555>You do not have permission to do this."
player-info : "<#aaaaaa>Player: <#55ffff>%player% <#888888>| <#aaaaaa>Client: <#55ffff>%brand% <#888888>| <#aaaaaa>Bedrock: <#55ffff>%is_bedrock%"
player-check : "<#aaaaaa>Info for <#55ffff>%target% <#888888>: <#ffffff>Client: <#55ffff>%brand% <#888888>| <#aaaaaa>Bedrock: <#55ffff>%is_bedrock%"
player-not-found : "<#ff5555>That player is not online."
notify-admin : true
permission : "clientdetector.admin"
messages:
prefix : "<#888888>[<gradient:#55ffff:#5555ff>ClientDetector</gradient><#888888>] <#ffffff>"
reload : "<#55ff55>Configuration has been reloaded!"
no-permission : "<#ff5555>You do not have permission to do this."
player-info : "<#aaaaaa>Player: <#55ffff>%player% <#888888>| <#aaaaaa>Client: <#55ffff>%brand% <#888888>| <#aaaaaa>Bedrock: <#55ffff>%is_bedrock%"
player-check : "<#aaaaaa>Info for <#55ffff>%target% <#888888>: <#ffffff>Client: <#55ffff>%brand% <#888888>| <#aaaaaa>Bedrock: <#55ffff>%is_bedrock%"
player-not-found : "<#ff5555>That player is not online."
API Usage
If you are a developer, you can integrate ClientDetectorExtra into your own plugin.
Code (Java):
import
santexfr.api.ClientDetectorAPI
;
import santexfr.ClientDetectorExtra ;
import java.util.Map ;
// Get the API instance
ClientDetectorAPI api = ClientDetectorExtra. getApi ( ) ;
// Check if a player is on Bedrock
boolean isBedrock = api. isBedrock (player ) ;
// Get the client brand name
String brand = api. getClientBrand (player ) ;
// Retrieve the list of players using a specific client
List <Player > lunarPlayers = api. getPlayersByClientBrand ( "lunarclient:v1_20" ) ;
// Get global connection statistics
Map < String, Integer > stats = api. getGlobalStats ( ) ; stats. forEach ( (brand, count ) -> { System. out. println ( "Client: " + brand + " | Online: " + count ) ; } ) ;
// Clean a complex brand name
String cleanName = api. getBaseBrand ( "lunarclient:v1_20_4" ) ; // Returns "LunarClient"
import santexfr.ClientDetectorExtra ;
import java.util.Map ;
// Get the API instance
ClientDetectorAPI api = ClientDetectorExtra. getApi ( ) ;
// Check if a player is on Bedrock
boolean isBedrock = api. isBedrock (player ) ;
// Get the client brand name
String brand = api. getClientBrand (player ) ;
// Retrieve the list of players using a specific client
List <Player > lunarPlayers = api. getPlayersByClientBrand ( "lunarclient:v1_20" ) ;
// Get global connection statistics
Map < String, Integer > stats = api. getGlobalStats ( ) ; stats. forEach ( (brand, count ) -> { System. out. println ( "Client: " + brand + " | Online: " + count ) ; } ) ;
// Clean a complex brand name
String cleanName = api. getBaseBrand ( "lunarclient:v1_20_4" ) ; // Returns "LunarClient"
Commands & Permissions
- /clientdetector reload : Reloads the configuration.
- /clientdetector info <player> : Displays details for a specific player.
- /clientdetector gui : Opens an interactive menu listing all types of active clients and their respective users.
- Alias: /cdetect
---
️ Compilation
Code (Bash):
mvn clean package
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.17, 1.18, 1.19
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
⭐ClientDetectorExtra⭐- Configurable - Folia friendly ⚡ is a free Minecraft Java mod. Compatible with Minecraft 1.17, 1.18, 1.19, 1.20 and newer. Downloaded 55 times (via Spigot). Download it and open it directly in the game.