A lightweight, fully server-side browser world map for Fabric, Quilt, NeoForge, Spigot and Paper servers.
Install one JAR on the server — players join with a completely vanilla client and open the live map in their browser. No client mod, no custom network protocol, nothing for players to install. (Putting the JAR into a client instance is harmless: singleplayer worlds get a map through the integrated server.)
🎨 Mod blocks just work. On startup the mod inventories every installed mod JAR (SHA-256 content identity, nested jar-in-jar included), resolves each registered block through its blockstate → model → texture chain and computes a representative map color from the actual texture — in linear color space, alpha-aware, with outlier trimming. Everything is cached content-addressed: unchanged mods are never scanned twice, and a typical modpack re-scan after adding one mod takes milliseconds.
⚡ Minimal server impact. Nothing heavy ever runs on the server thread. Live world access is limited to hard-budgeted chunk snapshots (default ≤ 1.5 ms and ≤ 4 chunks per tick); full renders read region files from disk on worker threads without loading a single chunk. All queues are bounded with backpressure and job merging, and an MSPT-based auto-throttle pauses background rendering while the server is busy.
🗺️ Complete map features.
/efmap render)/efmap marker ... with a built-in icon library and
user-supplied custom icons, plus banner markers: rename a banner in an anvil
and place it — it appears on the map with its actual pattern; breaking it removes it🔒 Safe and private by default. Binds to 127.0.0.1 until you decide otherwise
(reverse-proxy guide included). Strict path validation, zip/PNG-bomb limits, bounded
connections. Player layer: invisible/spectator filtering, position rounding and delay,
name anonymization, per-player opt-out — or turn it off entirely.
📊 Observable. Structured console summaries, /api/v1/status JSON diagnostics and
an optional Prometheus /metrics endpoint.
mods/ (Fabric/Quilt/NeoForge) or plugins/ (Spigot/Paper).
Fabric/Quilt additionally need Fabric API.http://localhost:8080/./efmap render minecraft:overworld
(Spigot/Paper: /efmap render minecraft_overworld)On dedicated servers the first start downloads the vanilla client JAR once from Mojang's official servers (block textures are not in the server JAR; SHA-1-verified, cached, can be disabled).
Every stable Minecraft version from 1.21.1 to 26.2 is covered. Install exactly one Explorer's Friend file matching your platform and version:
| Platform | File | Minecraft | Java |
|---|---|---|---|
| Fabric / Quilt | …-fabric-1.21.1 / -1.21.2-1.21.4 / -1.21.5-1.21.8 / -1.21.9-1.21.10 / -1.21.11 |
as named | 21 |
| Fabric / Quilt | …-fabric-26.1 / -26.2 |
26.1–26.2 | 25 |
| NeoForge | …-neoforge-1.21.1 / …-neoforge-26.2 |
1.21.1 / 26.2 | 21 / 25 |
| Spigot / Paper / Purpur | …-spigot-paper — one file for all versions |
1.21.1 – 26.x | 21 / 25 |
Loader minimums (Fabric): ≥0.16 (1.21.1–1.21.8), ≥0.17.0 (1.21.9+), ≥0.17.3 (1.21.11), ≥0.19 (26.x). Fabric API is required on Fabric/Quilt only.
Optional integrations per platform:
Source, issues, full documentation (configuration reference, reverse proxy, performance, API): https://github.com/CptGummiball/explorers-friend
License: MIT. Original implementation — no code or assets from other map projects.