
Modrinth · Minecraft mod
Entity Detective
A server-side Fabric mod that gives admins commands to find, count, profile and locate entities across all dimensions
Quick answer
Which Entity Detective release should I use?
Entity Detective 26.2+v2.7.1 targets 26.2 with Fabric. Do not install it on the client. It must be installed on the dedicated server. No extra mods listed for this file.
Where it goes
Is Entity Detective required on the client, server, or both?
Do not install it on the client. It must be installed on the dedicated server.
This file is marked server-only.
What else does Entity Detective 26.2+v2.7.1 need?
26.2+v2.7.1. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional mods.
Before you install it
Add Entity Detective without breaking your instance.
Built for Entity Detective 26.2+v2.7.1. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use 26.2+v2.7.1. It targets 26.2 with Fabric; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
Do not install it on the client. It must be installed on the dedicated server.
- 04
Pick the file you checked
Use the “Get this file” button beside 26.2+v2.7.1. It opens that exact file at the source.
About this project
What does Entity Detective add?
Entity Detective
Entity Detective is a server-side Fabric mod built for one job: find entity-related lag fast. One command tells you which entity types are costing the most MSPT, where lazy mobs are silently accumulating, and where persistent creatures will never despawn — across every loaded dimension at once, no client mod needed. Works in singleplayer without enabling cheats.
What it does
- Hotspot scan — Run a 20-tick sample across all dimensions and get back the top-5 most expensive entity types ranked by MSPT, with no arguments needed — a fast first pass when you don't know where to look.
- 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, or just examine every entity inside a variable chunk range
- Chunk loader detection — Server load is often caused by chunk loaders. Find them fast. List all active portal chunk loaders (paired OW ↔ Nether) and ender pearl stasis chambers across every 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. - Player profiling (
nark) — Measure the MSPT cost of all entity types in the 21×21 chunk range surrounding any online player, to find what's expensive near their location.
Quality of life features
- 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 <playername> x y zdirectly to the chunk centre or exact entity location - 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 alias — Available as both
/entitydetectiveand/ed
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 [subtype] — Type-count table, persistent mobs only
│ │ subtype: all | name-tagged | holding-item | structure-spawn | in-vehicle | leashed | custom
│ │ --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
├── loaders — Portal loaders only (paired OW ↔ Nether lines)
└── stasis — Ender pearl stasis chambers only
Coordinates are clickable /tp when you're in the matching dimension
hotspot — Top-5 entity hotspot scan (20-tick sample, all dimensions)
nark <player> — Profile all entity types in the 21×21 chunk range around an online player
--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, and--persistent <subtype>to narrow to a specific cause.
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
Project description from Modrinth.
Pick your setup
Entity Detective by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
26.1.2
1 loader build26.1.1
1 loader build26.1
1 loader buildCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Entity Detective versions and loaders
26.2+v2.7.1
entity-detective-26.2+v2.7.1.jar
7 Aug 2026
26.2+v2.6.0
entity-detective-26.2+v2.6.0.jar
17 Jun 2026
26.1.2+v2.5.4
entity-detective-26.1.2+v2.5.4.jar
29 May 2026
26.1.2+v2.5.3
entity-detective-26.1.2+v2.5.3.jar
26 Apr 2026
26.1.2+v2.5.2
entity-detective-26.1.2+v2.5.2.jar
25 Apr 2026
26.1.2+v2.5.1
entity-detective-26.1.2+v2.5.1.jar
21 Apr 2026
26.1.2+v2.4.3
entity-detective-26.1.2+v2.4.3.jar
13 Apr 2026
26.1.1+v2.1.0
entity-detective-26.1.1+v2.1.0.jar
7 Apr 2026
Looking for an older file? The official Modrinth project page is in Resources.