Hey Phos, just wanted to thank your for making this a thing (and moreso for making it LGPL) - there aren't many other C/C++ libraries for interpreting world data, and I found yours the most accessible. I'm currently using your library in a personal project to actively stream Minecraft worlds into Unreal Engine 4 and utilize their full potential in an MMORPG context.
I just completed my most extensive use (which also means testing) of libmcmap to-date, uncovering and fixing a whole new crop of bugs. This and two major Minecraft versions seemed to warrant a release of libmcmap v0.3.
A change log (critical bug fixes in red):
shownbt - careless argument handling used uninitialized pointer.
nbt_print_ascii() - division wasn't protected from input value of zero.
mcmap_chunk_read() & mcmap_chunk_write() - overlooked pointers during free could be accidentally freed again.
mcmap_prime_single() - typo during delicate surgery on the memory structure.
mcmap_prime_circle() - forgot to translate away from origin.
Fixed 22 cases, in failure gray-areas, of unpopulated or outdated message buffer.
Fixed typos in block definitions & libmcmap license notice.
Added consideration of block types new in Minecraft 1.9 & 1.10.