Spawner Kinetic Energy (SKE)
Detect. Track. Destroy.
A server-side Fabric mod for Minecraft 26.1.2 / 26.2. Craft a recovery compass with a mob part and receive a detector that points at the nearest known spawner of that mob. Works for vanilla Java clients and Bedrock players via Geyser — no client mod, no resource pack.
After losing his 47th skeleton farm to an unmarked cave, a desperate engineer duct-taped a zombie's head to a recovery compass and invented the field of Spawner Kinetic Energy detection. Peer review was not kind. Spawners, the reviewers noted, are stationary and possess no kinetic energy of any kind. The engineer has declined to explain why it works. It works.
Detectors
Craft shapeless: recovery compass + mob part (configurable). The default catalogue covers 75+ mobs — every vanilla mob with a sensible signature item has a recipe, from the classics (zombie head, blaze rod) through gunpowder → creeper, feather → chicken, iron ingot → iron golem, emerald → villager, sculk catalyst → warden, all the way to oak log + bucket → sulfur cube. Some highlights:
| Ingredient(s) | Detector |
|---|---|
| Zombie Head | Zombie SKE |
| Skeleton Skull | Skeleton SKE |
| Blaze Rod | Blaze SKE |
| Gunpowder | Creeper SKE |
| Golden Apple | Zombie Villager SKE |
| Wet Sponge | Elder Guardian SKE |
| Cookie (for crafting. NEVER feed it.) | Parrot SKE |
| Bone + Skeleton Skull | Skeleton Horse SKE |
| Saddle + Zombie Head | Zombie Horse SKE |
| Oak Log + Bucket | Sulfur Cube SKE |
The full list lives in config/ske/detectors.json, one annotated entry per
mob. Combo recipes (three items in the grid) never collide with single-item
recipes. A few mobs drop nothing usable and stay head-only: bat, tadpole,
mule, trader llama. The bat has nothing to offer science.
The needle points at the nearest matching spawner — including trial
spawners from trial chambers (config-toggleable). If the mob has no spawner
on record, the needle falls back to the nearest living mob of that kind
(loaded chunks only) — the meter shows a green LIVE tag when it's tracking
a creature rather than a cage. Spawners always win when one is known; a
per-entry mode field can force "spawner"-only or "entity"-only service.
If nothing is found at all, the needle spins. Within range (default 64
blocks) an action-bar meter appears with a signal-strength readout and a ping
that rises in pitch as you close in.
Sneak + right-click locks the needle on its current signal (a gold LOCKED tag appears) so it stops re-aiming at nearer finds while you clear dungeons one at a time; sneak-click again to release. Arriving at a spawner (within 4 blocks, configurable) plays a jingle, announces "Signal source located," and adds one to the compass's "Spawners located" tally on its lore — each detector keeps its own lifetime score.
Manhunt & the entity blacklist
A custom entry mapping any item to minecraft:player makes a
player-tracking compass — instant manhunt games. The flip side:
"entity-blacklist" in config.json lets admins forbid tracking any entity
(players and wardens being the usual suspects). Blacklisted mobs can't be
crafted for, and existing detectors for them just spin.
BlueMap
Running BlueMap? Set
"bluemap-markers": true and every indexed spawner appears as a POI marker
in a "Spawners (SKE)" layer (hidden by default in the map UI). Note that map
viewers can toggle the layer on — don't enable it if spawner locations are
meant to stay secret. SKE runs fine without BlueMap installed.
More Mob Heads / every other mob
With the auto-head rule (on by default), any player head named
"<Mob> Head" crafts a detector for that mob — no configuration needed. If you
run Vanilla Tweaks' More Mob Heads, that means every mob in the game gets
a working detector the moment its head drops: "Cow Head" tracks cows,
"Warden Head" tracks wardens, variant names resolve too ("Red Sheep Head" →
sheep, "Farmer Villager Head" → villager). Head names are resolved against
the live entity registry at craft time, so new vanilla mobs and modded
mobs are picked up automatically — a "Troll Head" finds somemod:troll
with no configuration and no SKE update. Mobs with spawners point at
spawners; everything else tracks the living mob.
Running the datapack and want heads to stay the meaningful gate? Set
"more-mob-heads": true in config.json — the mob-drop recipes switch off
(a feather no longer finds chickens) while real head/skull recipes, combo
recipes, and your own custom entries stay active. Yes, an anvil and a lie will
fool it. The device is not smart. It is only effective.
How detection works
A detector only knows about spawners in chunks the server has loaded at least once since SKE was installed — the index fills in as players explore, and is saved with the world. Two admin escape hatches:
/ske scan [radius]rescans the loaded chunks around you.magic-x-ray: truein the config lets detectors quietly sweep generated region files around their holder, off-thread. No chunks are loaded or generated by this; it just reads what's already on disk.
Commands
/skeor/ske list— the detector catalogue (everyone)/ske stats— indexed spawner counts per dimension (gamemaster)/ske scan [radius]— rescan nearby loaded chunks (gamemaster)/ske give <players> <entity>— issue detectors; selector-friendly for command blocks and quest rewards (gamemaster)/ske reload— reload config, detectors and recipes live (admin)
Configuration
Two annotated files appear in config/ske/ on first run (comments allowed —
they survive because SKE never rewrites your files):
config.json— needle update rate, detection range, proximity meter, entity detection, the auto-head rule, magic x-ray, autosave.detectors.json— the recipe catalogue. Add entries for modded mobs freely: a spawner is a spawner. Pointitemat the mod's signature drop andentityat its mob id. Optional per-entry fields:mode(auto/spawner/entity) andhead-name(display-name match for shared-item player heads).
For mod developers
Two integration routes, no hard dependency required:
- Datapack: ship
data/<yournamespace>/ske_detectors/anything.jsonin your mod jar — an array of the same entries used bydetectors.json. It is read only when SKE is present and inert otherwise. - Java entrypoint: declare
"ske": ["com.example.MySkeHook"]in yourfabric.mod.jsonentrypoints and implementcom.ske.api.SkeEntrypoint.
Server owners can override either route per item in config/ske/detectors.json.
Building
./gradlew build
Targets Minecraft 26.1.2 by default. To build for 26.2, swap the version
block at the top of gradle.properties and rebuild. Requires JDK 25.
License
MIT