Mod Detector Plugin
Monitors plugin message channels to detect client mods and optionally kick players using blocked mods.
- Загрузки
- 1K
- Подписчики
- 4
- Обновлён
- 9 августа 2026 г.
- Лицензия
- GPL-3.0-or-later
Опубликован 29 декабря 2025 г.
ModDetectorPlugin
A Paper plugin that detects and manages client-side mods through plugin message channels. Server administrators can configure which mods are allowed or blocked, with options to kick players, log detections, or both.
Features
- Mod Detection - Automatically detects client mods that register plugin message channels
- Flexible Filtering - Whitelist or blacklist mode for granular control
- Configurable Actions - Kick players, log detections, or both
- Known Mod Database - Pre-configured detection patterns for popular mods
- Custom Patterns - Add your own channel patterns with wildcard support
- Admin Notifications - Real-time alerts when mods are detected
- Detection Logging - Track all detections to a file for review
- MiniMessage Support - Customizable kick messages with formatting
Requirements
- Paper 1.21 or higher
- Java 21 or higher
Installation
- Download the latest release JAR
- Place it in your server's
plugins/folder - Restart your server
- Configure the plugin in
plugins/ModDetectorPlugin/config.yml
Commands
| Command | Description | Permission |
|---|---|---|
/moddetector |
Show help | moddetector.admin |
/moddetector reload |
Reload configuration | moddetector.admin |
/moddetector status |
Show current status | moddetector.admin |
/moddetector mods |
List known mod definitions | moddetector.admin |
/moddetector debug |
Show debug status | moddetector.admin |
Alias: /md
Permissions
| Permission | Description | Default |
|---|---|---|
moddetector.admin |
Access to admin commands | OP |
moddetector.notify |
Receive detection notifications | OP |
moddetector.bypass |
Bypass mod detection (won't be kicked) | false |
Available Mods
The following mod IDs are pre-configured in mods.yml:
| ID | Mod Name | Description |
|---|---|---|
xaeros-worldmap |
Xaero's World Map | Full world map mod |
xaeros-minimap |
Xaero's Minimap | Minimap mod |
jade |
Jade | Block/entity information overlay |
journeymap |
JourneyMap | Real-time mapping mod |
litematica |
Litematica | Schematic mod (via Servux) |
minihud |
MiniHUD | HUD overlay mod (via Servux) |
servux |
Servux | Server-side data provider |
simple-voice-chat |
Simple Voice Chat | Voice chat mod |
noxesium |
Noxesium | Performance/feature mod |
flashback |
Flashback | Replay recording mod |
appleskin |
AppleSkin | Food/hunger HUD additions |
Detection Logging
When track-detections: true, all detections are logged to plugins/ModDetectorPlugin/detections.txt:
[2025-01-15 14:30:22] uuid-here | PlayerName | Xaero's World Map, Jade
How It Works
ModDetectorPlugin monitors plugin message channels that clients register when connecting. Many client-side mods register channels to communicate with servers, even if the server doesn't have a corresponding plugin. By detecting these channel registrations, the plugin can identify which mods a player is using.
Ченджлог
1.2.4Релиз1.21.9, 1.21.10, 1.21.11 · 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 accepts
discovered-channels.json, pasted channel lists, plain text, or stdin.
Changed
- The full bundled definition database is now copied to an editable
mods.ymlin the plugin data directory when the file does not already exist. - Server owners can add definitions directly to
mods.ymland apply them with/md reload. /md reloadnow reloads bothconfig.ymlandmods.yml.- Existing external
mods.ymlfiles are never overwritten during plugin updates. - Invalid
mods.ymledits keep the last successfully loaded definitions active. - Shared protocol namespaces such as
minecraft,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 external mods.yml exists, one will be generated automatically. Existing configuration and definition files are preserved.
1.2.3-velocityРелиз1.21.9, 1.21.10, 1.21.11 · 18 января 2026 г.
Velocity
1.2.3Релиз1.21.9, 1.21.10, 1.21.11 · 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 infoDisplay- Shows
firstSeentimestamp - Shows total playtime formatted (e.g., "1h 30m")
- Sessions display reconstructed mod list with duration
- Shows
Changed
- 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-velocityРелиз1.21.9, 1.21.10, 1.21.11 · 16 января 2026 г.
Velocity
1.2.1Релиз1.21.9, 1.21.10, 1.21.11 · 16 января 2026 г.
Added
Session Tracking
- Tracks
totalTimePlayedSecondsacross all sessions - Records
sessionCountfor each player - Maintains
sessionsarray with join/leave times and duration for each session
- Tracks
Clickable Player Names
- Player names in
/md playersare now clickable - Click to run
/md info <player>automatically - Hover text shows "Click to view channels"
- Player names in
Changed
Simplified Action Config
- Replaced
action: kick/log/bothwith simplekick: true/false - Detections are now ALWAYS logged regardless of kick setting
- Cleaner config, same functionality
- Replaced
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 flushed
Fixed
- Console no longer shows
TextComponentImpl{...}blobs for admin notifications
Example 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-velocityРелиз1.21.9, 1.21.10, 1.21.11 · 16 января 2026 г.
Velocity
1.2.0Релиз1.21.9, 1.21.10, 1.21.11 · 16 января 2026 г.
Added
Log All Channels Mode
- New
log-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
- New
/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 discoveredCommand- Lists all unique channels ever discovered on the server
- Useful for documentation and discovering new mods
- Persists across server restarts
Discovered Channels File
- New
discovered-channels.jsonfile tracks all unique channels ever seen - JSON array format for easy parsing
- Automatically updated when new channels are registered
- New
Smart Mod Name Resolution
- Channel-to-mod resolution now works for ALL mods in
mods.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 identification
- Channel-to-mod resolution now works for ALL mods in
Changed
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 playersCommand- Now shows all registered channels when
log-all-channelsis enabled - Displays channel count per player
- Added hint to use
/md info <player>for details
- Now shows all registered channels when
/md statusCommand- Now shows
Log All Channelssetting status
- Now shows
Help Command
- Updated to show all new commands
- Commands now displayed with
/mdshorthand
Example 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-velocityРелиз1.21.9, 1.21.10, 1.21.11 · 12 января 2026 г.
Velocity
Комментарии
Загружаем…