A lightweight client-side finder for Minecraft (Fabric). Cyclea locates nearby chests, spawners/vaults, villages, and caves and points you to the nearest one — a "mod-of-mods" companion that pairs with any minimap.
By John Rydell · MIT licensed · single-player / your-own-server use.
- Base finder (the "cluster bomb"): every container and workstation a player builds — chests, barrels, shulkers, ender chests, furnaces, hoppers, brewing stands, beacons, signs, lecterns, campfires, beehives, jukeboxes, enchanting tables, crafters — is a block entity. Cyclea gathers that whole fingerprint set across your render distance and flood-fills it into clusters. A dense cluster of them is a base. It counts them and points you at the nearest one.
- On-screen HUD (top-left): live tallies — Bases / Chests≤20 / Shulkers — plus the active target and the nearest hit with heading + coordinates.
- Target modes (cycle with
]): Bases → Loot (chests≤Y20 + shulkers) → Shulkers (all levels) → Spawners & Vaults (≤Y20) → Caves. - Deep-loot filter: chests/barrels/ender chests and spawners/vaults report only at Y ≤ 20. Shulkers are unfiltered (every level).
- Xaero minimap integration: detected bases auto-pin as red waypoints on
your Xaero's Minimap / World Map (press
Pto pin the whole session). Soft dependency — Cyclea runs fine without Xaero installed. - Red clump alert: bunched chests/shulkers (double chests, shulker walls,
storage rooms) flash
⚠ CLUMP found!in red so a stash stands out.
All in Options → Controls → Cyclea (unique keys, no clashes with Xaero or vanilla):
| Key | Action |
|---|---|
[ |
Toggle the finder on/off |
] |
Cycle target (Bases → Loot → Shulkers → Spawners → Caves) |
- |
Lower the deep-loot Y cutoff by 8 |
= |
Raise the deep-loot Y cutoff by 8 |
\ |
Compact / full HUD |
P |
Pin detected bases to your Xaero minimap |
Two ways — pick either.
build-noloom.sh compiles straight against your installed game jars with
javac and packages the mod. No mappings download, no build plugin:
MCROOT=~/.minecraft ./build-noloom.sh
# -> cyclea-1.1.0.jar (drop into ~/.minecraft/mods/)./gradlew build # build/libs/cyclea-1.1.0.jarLoom needs Mojang's official mapping file for your version. If it errors with "Failed to find official mojang mappings for 26.2", that file isn't published yet for that exact version — use method A in the meantime (see below).
If Loom can't fetch mappings for a bleeding-edge version, you're not stuck. The key observation for 26.2:
- The client jar at
versions/26.2/26.2.jarships already de-obfuscated — 10k+ classes under real names likenet.minecraft.client.Camera, zero obfuscated single-letter classes. - Mods load in that same official (mojmap) namespace at runtime.
So you can skip Loom entirely and compile with plain javac:
- Classpath = the client jar + everything under
.minecraft/libraries+ the extracted Fabric API modules in.minecraft/.fabric/processedMods. javac --release 21your sources against that classpath.- Package classes +
fabric.mod.json+ assets into a jar. No remap step — you're already in the runtime namespace.
Watch for 26.2 API drift when porting older code:
| Old (≤1.21) | 26.2 |
|---|---|
KeyBindingHelper.registerKeyBinding |
KeyMappingHelper.registerKeyMapping |
new KeyMapping(name, key, "category") |
new KeyMapping(name, key, new KeyMapping.Category(id)) |
net.minecraft.world.entity.npc.Villager |
...npc.villager.Villager |
net.minecraft.client.renderer.RenderType |
...renderer.rendertype.RenderType |
HudRenderCallback |
HudElementRegistry + HudElement (extract/render states) |
WorldRenderEvents / WorldRenderContext |
level.LevelRenderEvents / LevelRenderContext |
javap -p -cp <classpath> <FQCN> against the de-obfuscated jar is your friend
for pinning exact signatures. See build-noloom.sh for the full recipe.
MIT — see LICENSE. Do what you like, keep the notice.
Cyclea is a client finder that reveals things through terrain. Keep it to single-player and servers you own — most public servers treat finders as cheating, and this project makes no attempt to hide from anti-cheat.