MO
Mod Detector Plugin
1.3.0-velocityMonitors plugin message channels to detect client mods and optionally kick players using blocked mods.
1.3.0-velocitylatestMod Detector Plugin 1.3.0-velocitylast week - Added player exemptions, history tools, rule previews, and temporary exceptions. - Expanded mod detection and fixed logging and kick issues. - Verified Minecraft 26.3 support on Velocity 4.2.0.1.3.0Mod Detector Plugin 1.3.0last week - Added Folia support and player exemptions. - Added history tools, rule previews, and temporary exceptions. - Expanded mod detection and fixed logging and kick issues.1.2.4-velocityMod Detector Plugin 1.2.4-velocityAug 9, 2026 1.2.4Mod Detector Plugin 1.2.4Aug 9, 2026 Added
- Added 99 mod and protocol definitions, bringing the built-in database to 169 definitions. - Added coverage for all 240 submitted plugin-message channels across 102 observed namespaces. - Added definitions for FTB Chunks, FTB Library, FTB Teams, JEI, VoxelMap, Emotecraft, Easy Anvils, Easy Magic, Open Parties and Claims, and many more. - Added Fabric Menu API and Pick Up Notifier patterns to their existing definitions. - Added a dependency-free mod-definition generator that acceptsdiscovered-channels.json, pasted channel lists, plain text, or stdin.Changed
- The full bundled definition database is now copied to an editablemods.ymlin the plugin data directory when the file does not already exist. - Server owners can add definitions directly tomods.ymland apply them with/md reload. -/md reloadnow reloads bothconfig.ymlandmods.yml. - Existing externalmods.ymlfiles are never overwritten during plugin updates. - Invalidmods.ymledits keep the last successfully loaded definitions active. - Shared protocol namespaces such asminecraft,forge, andadventureuse exact channel matches where namespace-wide wildcards could cause incorrect identification.Upgrade notes
Replace the existing platform-specific JAR and restart the server or proxy. If no externalmods.ymlexists, one will be generated automatically. Existing configuration and definition files are preserved.1.2.3-velocityMod Detector Plugin 1.2.3-velocityJan 18, 2026 Velocity1.2.3Mod Detector Plugin 1.2.3Jan 18, 2026 Added
- Per-Session Mod Tracking - Each session now records which mods the player was using -/md infodisplays the full mod list for each session - Useful for tracking mod usage changes over time - Delta Compression for Sessions - Sessions use smart delta compression to minimize storage - First session stores full mod list - Subsequent sessions store only changes (added/removed) if < 3 mods changed - Large changes (3+ mods) trigger a new full snapshot - Unchanged sessions store only time data - Enhanced `/md info` Display - ShowsfirstSeentimestamp - Shows total playtime formatted (e.g., "1h 30m") - Sessions display reconstructed mod list with durationChanged
- Storage Efficiency - Typical player with same mods across 100 sessions: ~3KB (was ~25KB) - ~88% reduction in storage for players with stable mod configurations - Backwards compatible with existing data (old sessions show as-is)Example Detection Entry
{ "uuid": "f999e944-a15d-4287-bff4-34f63a97832e", "username": "PlayerName", "mods": ["Simple Voice Chat", "Jade", "Minimap"], "channels": ["unknown:channel"], "firstSeen": "2026-01-16T17:28:01Z", "lastSeen": "2026-01-18T12:00:00Z", "totalTimePlayedSeconds": 3600, "sessionCount": 4, "sessions": [ {"joinTime": "2026-01-16T17:27:59Z", "leaveTime": "2026-01-16T17:30:00Z", "durationSeconds": 121, "mods": ["Jade", "Voice Chat"]}, {"joinTime": "2026-01-17T10:00:00Z", "leaveTime": "2026-01-17T10:30:00Z", "durationSeconds": 1800, "added": ["Minimap"]}, {"joinTime": "2026-01-17T14:00:00Z", "leaveTime": "2026-01-17T14:20:00Z", "durationSeconds": 1200}, {"joinTime": "2026-01-18T12:00:00Z", "leaveTime": "2026-01-18T12:08:00Z", "durationSeconds": 479, "removed": ["Jade"]} ] }1.2.1-velocityMod Detector Plugin 1.2.1-velocityJan 16, 2026 Velocity1.2.1Mod Detector Plugin 1.2.1Jan 16, 2026 Added
- Session Tracking - TrackstotalTimePlayedSecondsacross all sessions - RecordssessionCountfor each player - Maintainssessionsarray with join/leave times and duration for each session - Clickable Player Names - Player names in/md playersare now clickable - Click to run/md info <player>automatically - Hover text shows "Click to view channels"Changed
- Simplified Action Config - Replacedaction: kick/log/bothwith simplekick: true/false- Detections are now ALWAYS logged regardless of kick setting - Cleaner config, same functionality - Smarter Detection Logging - Only creates new JSON entry when player's modlist changes - Returning players with same mods just add session info to existing entry - Reduces file size and improves readability - Separated Mods and Channels -modsfield now contains resolved mod names (e.g., "Simple Voice Chat") -channelsfield now only contains unrecognized/unknown channels -/md infocommand updated to show both sections separately - Internal Improvements - Replaced manual JSON parsing with Gson library - Atomic file writes (write to .tmp, then move) prevents corruption - Batched I/O with 30-second flush interval reduces disk writes - Memory cleanup task removes stale player data every 5 minutes - Proper shutdown handling ensures pending writes are flushedFixed
- Console no longer showsTextComponentImpl{...}blobs for admin notificationsExample Detection Entry
{ "uuid": "f999e944-a15d-4287-bff4-34f63a97832e", "username": "PlayerName", "mods": ["Simple Voice Chat", "Noxesium", "AppleSkin", "Fabric API"], "channels": ["civ:handshake", "civ:class_xp"], "firstSeen": "2026-01-16T17:28:01Z", "lastSeen": "2026-01-16T17:32:04Z", "totalTimePlayedSeconds": 243, "sessionCount": 2, "sessions": [ {"joinTime": "2026-01-16T17:27:59Z", "leaveTime": "2026-01-16T17:28:01Z", "durationSeconds": 2}, {"joinTime": "2026-01-16T17:29:20Z", "leaveTime": "2026-01-16T17:32:04Z", "durationSeconds": 241} ] }1.2.0-velocityMod Detector Plugin 1.2.0-velocityJan 16, 2026 Velocity1.2.0Mod Detector Plugin 1.2.0Jan 16, 2026 Added
- Log All Channels Mode - Newlog-all-channelsconfig option to log ALL channel registrations to file - Tracks every mod channel a player registers, not just blocked ones - No console logging for better performance - `/md info <player>` Command - View all registered channels for a specific player - Shows current session channels and historical data - Color-coded output: red = blocked, green = allowed - Displays resolved mod names alongside raw channel strings - `/md discovered` Command - Lists all unique channels ever discovered on the server - Useful for documentation and discovering new mods - Persists across server restarts - Discovered Channels File - Newdiscovered-channels.jsonfile tracks all unique channels ever seen - JSON array format for easy parsing - Automatically updated when new channels are registered - Smart Mod Name Resolution - Channel-to-mod resolution now works for ALL mods inmods.yml, not just blocked ones - Detection logs show pretty mod names (e.g., "Simple Voice Chat" instead of "voicechat:state") - Unknown channels remain as raw strings for identificationChanged
- Consolidated Player Entries -detections.jsonnow uses one entry per player (updated in place) - Multiple channels from the same mod are grouped together - Format changed from"channels"to"mods"array with resolved names - `/md players` Command - Now shows all registered channels whenlog-all-channelsis enabled - Displays channel count per player - Added hint to use/md info <player>for details - `/md status` Command - Now showsLog All Channelssetting status - Help Command - Updated to show all new commands - Commands now displayed with/mdshorthandExample Detection Entry
{"uuid":"f999e944-a15d-4287-bff4-34f63a97832e","username":"PlayerName","mods":["AppleSkin","Simple Voice Chat","Noxesium","Flashback","civ:class_xp"],"lastSeen":"2026-01-16T12:00:00Z"}Example Discovered Channels
[ "xaerominimap:main", "voicechat:state", "noxesium-v2:server_info", "fabric:registry/sync" ]1.1.1-velocityMod Detector Plugin 1.1.1-velocityJan 12, 2026 Velocity1.1.1Mod Detector Plugin 1.1.1Jan 12, 2026 Changed
- JSON Detection Logging - Detection logs now output in JSON format instead of plain text - Log file changed fromdetections.txttodetections.json- Each line is a valid JSON object for easy parsing - Player Session Tracking - Logs now include player UUID - Session join time (sessionJoinTime) recorded when player connects - Session leave time (sessionLeaveTime) recorded on disconnect/kick - Session duration in seconds (sessionDurationSeconds) calculated automaticallyExample Log Entry
{"timestamp":"2026-01-12T14:30:45Z","uuid":"f999e944-a15d-4287-bff4-34f63a97832e","username":"PlayerName","mods":["Jade","XaerosMinimap"],"sessionJoinTime":"2026-01-12T14:25:00Z","sessionLeaveTime":"2026-01-12T14:30:45Z","sessionDurationSeconds":345}1.1.0-velocityMod Detector Plugin 1.1.0-velocityJan 3, 2026 Velocity Support1.1.0Mod Detector Plugin 1.1.0Jan 3, 2026 Added
- Silent Listener Mode - Setaction: logandnotify-admins: falseto track players without kicking - Detections logged immediately to file (not just on player quit) - Use/moddetector playersto view online players with detected mods - `/moddetector players` Command - Shows all online players with their detected mods - Useful for monitoring without taking action - Custom Mod Definitions - Newcustom-modsconfig section with full mod definition support - Define ID, name, description, and multiple channel patterns - Custom mods shown in/moddetector modscommand - Same features as built-in mod definitionsChanged
- Immediate file logging in LOG mode (previously only logged on player quit) - Updated config.yml with custom-mods documentation and examples1.0.0Mod Detector Plugin 1.0.0Jan 3, 2026 Initial Release
ModDetectorPlugin is a Paper plugin for detecting and managing client-side mods through plugin message channels.Features
- Mod Detection System - Detects client mods via plugin message channel registration - Monitors common mod channels (Xaero's maps, Jade, JourneyMap, etc.) - Real-time detection when players join - Flexible Filtering Modes - Blacklist mode: Block specific mods, allow everything else - Whitelist mode: Allow only specific mods, block everything else - Configurable Actions - Kick players using blocked mods - Log detections without kicking - Both kick and log simultaneously - Known Mod Database - Pre-configured detection patterns for 15+ popular mods - Easy to extend with new mod definitions - Wildcard pattern support - Admin Features -/moddetectorcommand with reload, status, mods, and debug subcommands - Real-time notifications for admins when mods are detected - Detection logging to file for audit purposes - Permissions System -moddetector.admin- Admin command access -moddetector.notify- Receive detection notifications -moddetector.bypass- Bypass mod detection - Customization - MiniMessage formatted kick messages - Custom channel patterns via config - Configurable log format
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta