
Entity Detective
A server-side Fabric mod that gives admins commands to find, count, profile and locate entities across all dimensions
Screenshots




About this Mod
Entity Detective
Entity Detective is a server-side Fabric mod that gives admins surgical visibility into entity accumulation — find exactly where mobs, persistent creatures, and dropped items are piling up across every loaded dimension, without needing a client mod. Works in singleplayer without enabling cheats.
What it does
- Per-dimension summaries — See every entity type sorted by count, one block per dimension, across overworld, nether, and end simultaneously
- Clickable teleport links — Every chunk header and individual entity line is clickable in chat and pastes
/tp @s x y zdirectly to the chunk centre or exact entity location - Lazy mob detection — Pinpoint mobs stranded in chunks with no player within 128 blocks — the exact threshold Minecraft uses for despawn checks — where the server will never clean them up naturally
- Persistent mob detection — Find name-tagged mobs, item-holders, leashed animals, and vehicle riders that will never despawn even when they do tick
- MSPT profiling — Measure how many milliseconds per tick any entity type is consuming, or profile every type at once sorted by cost, over a configurable rolling window
- Chunk loader detection — List all active portal chunk loaders (paired OW ↔ Nether) and ender pearl stasis chambers across every dimension. Coordinates are clickable
/tplinks when you're in the right dimension. - Block entity ticking audit — Use
--ticking-onlyto find which block entities in a large farm actually ticked during an observation window, and--debugto see per-position tick counts instead of aggregate MSPT. - Live mob cap — Check current vs. maximum entities per category with colour-coded saturation so you can spot mob cap pressure at a glance
Command structure
/entitydetective
├── mob <category>
│ │ category: monster | creature | ambient | axolotls | water_creature | water_ambient
│ │ (bare) — Type-count summary per dimension
│ │ --lazy-only — Type-count table, non-persistent mobs in lazy chunks
│ │ --persistent — Type-count table, persistent mobs only
│ │ --world <dim> — Scope to overworld | nether | end
│ │ --range <chunks> — Scope to (2N+1)×(2N+1) chunk square (0 = single chunk)
│ │ --detail — Expand to chunk-grouped entity list with clickable /tp links
│ └── cap — Live mob cap (current vs max, colour-coded)
│
├── entity
│ │ (bare) — Summary of all entity types by count, per dimension
│ │ --lazy-only — Type-count table, non-persistent entities in lazy chunks
│ │ --persistent — Type-count table, persistent entities only
│ │ --world <dim> — Scope to a specific dimension
│ │ --detail — Expand to chunk-grouped entity list with clickable /tp links
│ ├── --range <chunks> — Instant census of every entity type within range (0 = single chunk; no tick window)
│ ├── locate <type> — Locate any entity type (tab-complete from live world, substring match)
│ │ --lazy-only, --world <dim>, --range <chunks>, --detail
│ │ --ticking-only (block entities only) — filter to positions that actually ticked
│ ├── profile <type> [ticks]
│ │ Measure MSPT cost over a tick window (default 100 ticks / 5 s; max 6 000 ticks / 5 min)
│ │ --world <dim>, --range <chunks>
│ │ --debug (block entities only) — per-position tick counts instead of aggregate MSPT
│ └── profile all [ticks]
│ Profile every entity type simultaneously, sorted by MSPT cost descending
│ (bare): all dimensions | --world <dim>: one dimension | --range <chunks>: local
│
└── item
│ (bare) — Dropped item summary per dimension, colour-coded by severity
│ --lazy-only — Type-count table, lazy chunks only
│ --world <dim> — Scope to a specific dimension
│ --range <chunks> — Scope to chunk square around your position
│ --detail — Expand to chunk-grouped item list with clickable /tp links
└── locate <item_id>
Find chunks with a specific item type (tab-complete, substring match)
--lazy-only, --world <dim>, --range <chunks>, --detail
chunks — Detect active chunk loaders across all dimensions
Portal loaders shown as paired OW ↔ Nether lines; stasis chambers listed separately
Coordinates are clickable /tp when you're in the matching dimension
--detail must always be the last flag. --range and --world are mutually exclusive. Use /ed as a shorthand alias for /entitydetective.
Why lazy and persistent mobs matter
Lazy mobs are non-persistent mobs in chunks with no player within 128 blocks — the exact threshold Minecraft's despawn logic uses. Because those chunks never tick entities, the normal despawn check never runs. Mobs accumulate there indefinitely. Use
--lazy-onlyto get a type-count table of what's building up, then add--detailfor chunk-grouped clickable/tplinks to teleport directly to the problem.
Persistent mobs are flagged by the game engine to never despawn, even in fully-ticking chunks. This includes name-tagged mobs, any mob that has picked up a dropped item off the ground, leashed animals, and mobs riding vehicles. Because they never despawn, they accumulate over time and increase the server's tick cost. Use
--persistentto see where they are building up.
Sample output
/entitydetective mob monster --lazy-only (type-count table)
-- lazy monster [overworld]: 45 entities --
minecraft:zombie 28
minecraft:skeleton 12
minecraft:creeper 5
Total: 45 entities across 3 types
/entitydetective mob monster --lazy-only --detail (chunk-grouped, clickable)
-- monster [overworld] (lazy, --detail): 45 entities in 2 chunks --
Chunk (12, -4) × 31 → /tp @s 192 ~ -64
[196, 63, -61] — minecraft:zombie
[191, 64, -68] — minecraft:skeleton "Bob" (name tagged)
...
/entitydetective entity profile all --range 10
-- Base Profile: 10-chunk range (100 ticks) --
3.636mspt TOTAL ×102
1.779mspt avg: 0.040ms piglin ×44
1.188mspt avg: 0.043ms hoglin ×28
0.402mspt avg: 0.040ms strider ×10
3.636mspt TOTAL ×102
/entitydetective item (severity-coloured)
-- Item Types [overworld]: 2 847 items --
2 130 items (142 entities) minecraft:cobblestone ← red
480 items ( 48 entities) minecraft:gravel ← yellow
12 items ( 4 entities) minecraft:diamond ← green
No client mod required · Works cross-dimension · Singleplayer compatible · Respects LuckPerms
Singleplayer world owner has full access without enabling cheats. On servers, requires op level 2 or the entitydetective.command LuckPerms node.
Releases · Source · License: MIT
Available Versions
How to Install Entity Detective on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set fabric Loader
In the panel under "Egg", select the fabric loader and matching Minecraft version (26.1.2).
Install Mod
Open the mod browser in the dashboard and search for "Entity Detective". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
26.1.2, 26.1.1, 26.1
Server-side
✓ RequiredRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
Entity Detective server crashes on startup – what to do?
Most common cause: wrong fabric version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (26.1.2). You can switch loaders with one click in the panel.
Is Entity Detective compatible with fabric?
Entity Detective officially supports fabric for Minecraft 26.1.2, 26.1.1, 26.1. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with Entity Detective – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Entity Detective consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install Entity Detective with just one click on your server.