mcmap is a map renderer for Minecraft Alpha/Beta. It will create images of your world from an isometric perspective. This will not create deep zooms, but rather images that could be considered pixel art. Still, if your world is huge, it might create large files.
What does it look like?
(Click image to see original size)
World rendered by Donkey Kong, using custom colors.txt by NotTarts.
(Click for 20MiB full sized image)
This is the GUI for Windows:
Pre-compiled EXE + GUI for Windows, 32bit (Use this on WinXP or if you're not sure whether you're on 32 or 64 bit Windows)
Pre-compiled EXE + GUI for Windows, 64bit (Should be a bit faster but only works on 64 bit Windows)
Source code (Should compile on Win/Linux/OSX/BSD; if you don't know what source code means you don't want this)
(Obsolete as of 1.2: Pre-compiled EXE + GUI for Windows, for MCR ymod/fishtaco worlds 256-4096 blocks height!)
Tools using/based on mcmap:
MCMap Live for MacOS X by Donkey Kong - an easy to use, interactive map viewer that uses mcmap for rendering. Intel and PowerPC.
Minemapper by Pup05 is a clone of MCMap Live for Windows.
MCMapGui.Net - a Windows tool for server administrators that can do timed renders of your map, keeps a history of images to a definable extent and has other neat features.
mcmapDZ - a Windows tool by NotTarts that splits up the output and creates an html view where you can scroll and zoom
If you want to apply biome colors, you need to run Donkey Kong's biome extractor first.
On Linux/BSD it should be trivial to compile. All you need is g++, make, zlib and libpng. (If they're missing and you're on debian or Ubuntu, try "apt-get install zlib1g-dev build-essential g++ libc6-dev libpng-dev", on CentOS you need to do "yum install libpng-devel zlib-devel gcc-c++")
Just cd into the directory containing the source code and type "make". "make turbo" would optimize the binary for your CPU. Makes it a few microseconds faster.
And for all you crazy githubbers: http://github.com/Zahl/mcmap
The version there might not always be the most stable one, but I try my best to only commit working stuff.
As stated above, this tool was written to be used on a server, so it does not have a graphical user interface integrated.
However, there is a separate GUI included for Windows that takes care of launching mcmap with the proper command line options. (see screenshot above)
If you want to use the command line and need help, just run mcmap without any arguments to get information on how to use it.
If you want to render the whole world as a png file:
Windows: mcmap c:\path\to\world
Linux/MacOS: ./mcmap /path/to/world
/path/to/world or c:\path\to\world is the directory where the world is stored. It can be absolute or relative.
If you want to render a specific part of the map:
mcmap -from -5 -6 -to 8 9 c:\path\to\world
-5 and -6 would be the coordinates of the starting point (chunk coordinate). So in this example, you would start at chunk X=-5 Z=-6
8 and 9 are the coordinates of the end point: X=8 Z=9
For more options, see the help output.
I successfully compiled and ran mcmap on Windows using MSVC++ (32bit, VS2008. Its a bit tricky to get libpng to work) and MinGW's gcc (4.5.0, 32 and 64 bit), on Linux using gcc, (4.3.2, 64bit and 32bit), MacOSX Leopard (gcc 32bit) and Haiku (gcc, 32bit). According to phlux, it also works on FreeBSD 7.3 and 8.0 without any changes, Donkey Kong managed to compile it for PowerPC MacOS X, so porting to any other *nix flavor should require little to no changes to the code. If you manage to compile mcmap on other platforms please let me know.
As mentioned before, I'm mainly using this to create a map history on my server, so I have this little script run every hour:
#!/bin/bash ## full path to mcmap binary cd /home/minecraft/mcmap/ ## path to your world WORLD=/home/minecraft/world/ ## path to write output image to OUTPUT="/var/www/minecraft/maps" ## see below to change the area to render (lines that start with ##) ################################ FILE=history-`date +%s`.png OLD5=none OLD6=none if [ -e "$OUTPUT/output.day.png" ]; then OLD5=`md5sum $OUTPUT/output.day.png | cut -b 1-32` fi if [ -e "$OUTPUT/output.night.png" ]; then OLD6=`md5sum $OUTPUT/output.night.png | cut -b 1-32` fi CHECK=`date +%k` if [ $CHECK -ge "7" ] && [ $CHECK -le "20" ]; then NIGHT="-skylight" NIGHTSTATUS="0" else NIGHT="-skylight -night" NIGHTSTATUS="1" fi ## change the values here to define the area to render ./mcmap -png $NIGHT -from -40 -60 -to 20 20 "$WORLD" > /dev/null ## if you want the whole world, use: # ./mcmap -png "$WORLD" $NIGHT > /dev/null RET=$? if [ "$RET" -ne "0" ]; then echo "Error creating image for $FILE" exit 1; fi NEW5=`md5sum output.png | cut -b 1-32` if [ "$OLD5" != "$NEW5" ] && [ "$OLD6" != "$NEW5" ]; then mkdir -p $OUTPUT/history/ pngcrush output.png $OUTPUT/history/$FILE > /dev/null convert -scale 600 -depth 5 output.png thumb.png pngcrush -brute thumb.png $OUTPUT/history/thumb.$FILE > /dev/null if [ "$NIGHTSTATUS" -eq "1" ]; then mv output.png $OUTPUT/output.night.png mv thumb.png $OUTPUT/thumb.night.png else mv output.png $OUTPUT/output.day.png mv thumb.png $OUTPUT/thumb.day.png fi fiIt requires ImageMagick for thumbnail generation and pngcrush installed for further image compression.
It will render a new image and only save it to the history when the content changed, so you won't get new images when nobody was on the server and nothing happened.
It will also create a sized down version of the map as a "thumbnail" (if 800px is a thumbnail for you ;-))
Also it will decide whether or not to use night mode depending on the time of day (realtime)
Just run it using your crontab and there you go: A nice png history for your server :-)
- multi threading
Last but not least, any bugs that come up need to be fixed. :-)