BlueMap — Plugin for Generating an Interactive 3D World Map in the Browser for Minecraft

BlueMap is a Minecraft plugin that reads world files and builds a three-dimensional surface model accessible in a browser via a built-in web server. The standard client renders the world only around the player and does not provide an aerial or external view. The plugin generates a full map with the ability to rotate the camera, switch between perspective or isometric (flat) modes, and view structures simply by following a URL. It solves one main problem: external viewing of the server world without the need to log into the game.

How Rendering Works

The plugin splits chunks into tiles and generates two layers of detail: hires models with full block geometry and a lowres map for distant viewing. The hires layer is active at close zoom, revealing specific blocks, textures, and elevations. At further zooms, a simplified layer featuring colored biome patches and landscapes is loaded.

The plugin splits chunks into tiles and generates two layers of detail: hires models with full block geometry and a lowres…

The rendering process in the web interface: tiles load gradually upon zooming. 

Rendering is executed asynchronously in a separate thread pool. This means the main Minecraft server thread is not blocked — as long as the CPU has free cores, players will not experience lag from map generation. The plugin tracks world changes independently: BlueMap periodically checks mca files, detects modified chunks, and re-renders only those. Manual commands like /bluemap update are rarely needed, primarily serving diagnostic purposes.

Rendering is executed asynchronously in a separate thread pool. This means the main Minecraft server thread is not blocked…

First-person rendering in the web interface 

Commands

The plugin registers a single root command /bluemap with various subcommands. Most scenarios do not require any commands, as rendering happens automatically.

CommandWhat it does
/bluemapdisplays render status and queue
/bluemap reload [light]reloads configs; light skips resource packs
/bluemap stop / startpauses and resumes all rendering (persists after restart)
/bluemap freeze <map> / unfreeze <map>freezes a specific map (disables updates)
/bluemap purge <map>completely deletes map data; it will be re-rendered
/bluemap update [map] [x z] [radius]forces an update of changed chunks within the radius
/bluemap force-update [map] [x z] [radius]re-renders everything, even if there were no changes
/bluemap troubleshoot [map] [x z]checks for common map issues at the specified point

displays render status and queue

/bluemap reload [light]

reloads configs; light skips resource packs

/bluemap stop / start

pauses and resumes all rendering (persists after restart)

/bluemap freeze <map> / unfreeze <map>

freezes a specific map (disables updates)

/bluemap purge <map>

completely deletes map data; it will be re-rendered

/bluemap update [map] [x z] [radius]

forces an update of changed chunks within the radius

/bluemap force-update [map] [x z] [radius]

re-renders everything, even if there were no changes

/bluemap troubleshoot [map] [x z]

checks for common map issues at the specified point

CommandWhat it does/bluemapdisplays render status and queue/bluemap reload [light]reloads configs; light skips resource…

Executing the /bluemap command 

Configuration

The plugin folder contains four configuration files: core.conf, plugin.conf, webapp.conf, and webserver.conf. There are also three subfolders: maps/ (one .conf file per world), packs/ (resource packs for rendering), and storages/ (file.conf for the file system, sql.conf for an SQL database).

core.conf

The main file. A key parameter is accept-download, which must be set to true for the first launch. The render-thread-count parameter (default is 1) sets the number of render threads — a negative value signifies "number of CPU cores minus the absolute value". The metrics (true) setting controls the transmission of anonymous statistics.

plugin.conf

Parameters for player visibility on the map and rendering behavior:

ParameterWhat it does
live-player-markerstransmits the positions of online players to the web application
hidden-game-modesmodes in which the player is not visible. Values: survival , creative , spectator , adventure
hide-vanishedhides players obscured by a vanish plugin
hide-invisiblehides players with the Invisibility potion effect
hide-sneakinghides sneaking players
hide-below-sky-lightsunlight threshold; 0 — do not hide. Works in tandem with hide-below-block-light — both must be below the threshold simultaneously
hide-below-block-lightblock light threshold
hide-different-worldremoves players currently in another world from the list
write-markers-intervalseconds between writing markers to storage; 0 — do not write
write-players-intervalseconds between writing player positions
skin-downloaddownloads skins from Mojang when a player joins
player-render-limitthe number of online players at which rendering stops; -1 — disabled
full-update-intervalminutes between full scans for missed changes

transmits the positions of online players to the web application 

modes in which the player is not visible. Values: survival, creative, spectator, adventure

hides players obscured by a vanish plugin 

hides players with the Invisibility potion effect

hides sneaking players

hide-below-sky-light

sunlight threshold; 0 — do not hide. Works in tandem with hide-below-block-light — both must be below the threshold simultaneously

hide-below-block-light

block light threshold

hide-different-world

removes players currently in another world from the list

write-markers-interval

seconds between writing markers to storage; 0 — do not write

write-players-interval

seconds between writing player positions

downloads skins from Mojang when a player joins

the number of online players at which rendering stops; -1 — disabled

full-update-interval

minutes between full scans for missed changes 

webapp.conf

Web application settings. default-to-flat-view (false) determines the default viewing mode — perspective or isometric. The sliders hires-slider-default (100) and lowres-slider-default (2000) set the distance for detailed and simplified rendering in blocks. resolution-default (1) accepts the values 0.5, 1, or 2. The scripts and styles arrays integrate custom JS and CSS files.

webserver.conf

The built-in web server. enabled (true) — enables or disables it. port (8100) — the port. webroot ("bluemap/web") — the directory containing web application files (must match webroot in webapp.conf). The log section configures HTTP activity recording to a file.

Conclusion

BlueMap allows you to view your world externally as a fully-fledged 3D model with camera rotation and free flight. The plugin is highly suited for survival and RPG servers, where sharing coordinates and inspecting builds is crucial; however, it is largely unnecessary for minigame servers lacking a persistent world.

Installation

A typical installation takes about 5 minutes. The flow is the same; only the loader and the matching build differ.

  1. Stop your Minecraft server.
  2. Drop the plugin .jar into the server /plugins folder.
  3. Start the server once so the plugin generates its config files.
  4. Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.