This tool was created for those that in an efficient way want to create a map/image from a Minecraft world. It proceeds its successor for being fast, easy to use and being customizable.
This is currently an open beta version where bugs may surface.
This program was completely rewritten from scratch to utilize the new functionalities in C++, allowing more efficient programming flow. The GUI version consists of ImGUI, which makes it highly portable.
#############################################
# PixelMap script - BlockColor example file #
#############################################
# Script language created to increase usability
# and future updates of block colors in
# Minecraft.
#
# This line is a comment and can be placed
# anywhere in the file and will ignore all
# characters til next line occurs.
#
# All whitespaces like space and tab, will be ignored.
#
# It currently supports block ids and damage
# values and namespace ids vlues, hexadecimal and
# rgb/argb color.
#
# Usage
# <block_id[:<damage_value>[...]]|namespace_id>[ ...] = <hex_color>|<r g b[ a]> [# comment]
#
# Examples
# 0 = f0ffff
# 1 2 = 69ff00ff
# 3:1 = 127 127 127
# 3:2 = 50 127 128 129
# minecraft:air = 255 255 255 0
#
# Advanced showoff
# 1 2:3 2:4 5:23 67 = 456789 # Assign everything
Licenses
PixelMap and all content associated with it, but third-part libraries, is licensed under CC BY-SA. The author leaves the right to change the license for the product whenever necessary.
This is the old PixelMap that only works for pre-1.2.1 worlds. It is currently not maintained and got several issues that has not been fixed.
PixelMap is an application written in C++ language designed to create bitmap images of Minecraft Beta worlds in various different styles. The program can be used with both command line and the built in GUI. If there is problems with the command line, then try out the GUI first. It's small and easy, but contains most of the program supports.
I have myself compiled and run it in both Linux and Windows without any special difficulties.
Features
Optimized in both memory consumption and speed
Option to run program in several threads (Multithreading)
No special support packages required: Just download and run
Cave mode
Standard and custom worlds supported
Only and exclude options
Slice mode
Supports Nexus/Nether rendering
Custom textures
Heightmap(line/gray/color/solid)
Rotation
Caching for gigantic worlds
Serverfriendly
GUI
Nightmode
Both Alpha and Beta save format support
License(s)
PixelMap and all content associated with it, but third-part libraries, is licensed under CC BY-SA. The author leaves the right to change the license for the product whenever necessary.
Third-party libraries: libpng, zlib
Download v0.86 x86 (32bit):RAR, ZIP, 7z x64 (64bit):RAR, ZIP, 7z
Support
As I want to keep this a free service, still I give my time for something free. I am mere human and still need to pay my dept.
PayPal donation - A small donation of what You value my work
Older versions x86 (32bit) v0.85 RAR, ZIP, 7z x86 (32bit) v0.84 RAR, ZIP, 7z
The order of parameters is irrelevant but the arguments must be after a parameter. Do not use brackets (< >) in the arguments. All parameters are optional.
-w
This parameter requires the folder name of a world. If alpha is specified a number from 1-5 could be used. If specifying a custom path, (back)slash(/ or \) is required. If this parameter is not provided, World 1 will be rendered. The path can contain spaces.
-f .png
Sets the path where you want to save the rendered image. You can only save as .png.
-l
Path to where you want the log file to be saved. Any and all file types are supported. If no argument is provided, the log will be saved as log.txt to the same folder with the PixelMap.exe.
-o
Only renders the user defined blocks, multiple blocks are supported. You can also use 'W' or 'L'(Small letters) to quickly select all, flowing and stable, water and/or lava. 'T' is used for trees.
-x
As above, but excludes blocks instead.
-s <0 or 1>
User defined slice of a world. To render all slices under the selected slice put 0 after the height or 1 to only render the selected slice.
-h
Renders a line heightmap with a user defined frequency. Using 'G' or 'C' (Small letters) allows you to see either gray gradient or color gradient. 'S' is used when disabling the normal mode and therefor showing plain colors.
-t
Sets the amount of processor (CPU) cores to be used when rendering. It is not recommended to use more threads (cores) than your processor has. Using multiple cores greatly speeds up the rendering process. Default is value for this 1.
If providing no arguments, max cores of the computer is used.
-c
Renders caves.
-r
Rotates the world 90, 180 or 270 degrees.
-n
Render the world as if it were night with torches, lava and other sources where light can come from.
--texture
Uses the colors from the terrain.png image when rendering. Any size or type of terrain.png can be used as long as it works with Minecraft.
--no-render
Disables the rendering of a map. Only useful if you wish to only write a log of a world, not render a map.
--nether
Renders the Nexus/Nether.
--cache
Instead of allocating the image directly, it creates a temporary cache-file where it stores the image data before saving it to the actually image. Default folder is in %temp%.
--silent
Does not display any message/error box when done.
--no-gui
Does not display any gui(It does everything in the background). Good for servers.
--no-heightmap
Removes the use of lightmap provided in chunks to instead display hidden objects above the light. This decreases performance but gives a more reliable result.
--auto-close
Closes the application when rendering is ready. Good for stacked renderings. --no-gui also activates this. Windows only.
--open-folder
Opens up the folder the output is in. Windows only.
--version
Chooses the version of a map. Currently it only supports alpha and beta.
--debug
Enabled debug mode where it logs interesting parts in the program.
By default, the rendered image of a world is saved to the same folder where the PixelMap file is. If you use the -f parameter you can save the rendered image where you want it.
I was unable to provide with comparison, like mcmap, Cartograph or c10t.
mcmap cannot generate top-of-view.(Way too slow too)
Cartograph crashed each time I tried to load the map.
c10t had too much dependences on several libraries that I was unable to find everyone. Therefor, it didn't start at all... And I couldn't find any documentation of how to use the tool.
If you doubt these results, then please provide with your test data here.
Edit: I got Cartograph working by placing the world in the Minecraft folder. First time it took more than 5 minutes, and second time took approximately 2:41(Used a stopwatch). It used 75MB constantly of memory, and in the end went up to about 150MB.
nice!
however; i prefer to use high-quality renderers, which is why i use overview.
I really wish it were faster (i have my server box auto run it every 4 hours) but i guess you cant really get too much faster when your having to process and render that much data! :/
however; i prefer to use high-quality renderers, which is why i use overview.
I could take that as an insult, but due that this mapper have no spreadrate, I don't blame you. If more people could test this and find bugs and suggest features, I would be more than happy to keep this more updated.
For benchmarking, what sort of setup are you using (file caching affecting times)?
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
For benchmarking, what sort of setup are you using (file caching affecting times)?
AMD 2GHz Dual Core
2GB RAM 800MHz DDR2
PM use no caching. It's pure loaded and stored in RAM, which is why the use of RAM increases slowl
Quote from OrangeXP »
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
Quote from OrangeXP »
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
Quote from OrangeXP »
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
Quote from OrangeXP »
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
Quote from McTwist »
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
Quote from McTwist »
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
I ran both programs twice, and both was faster on the second run due the filecaching.
Quote from OrangeXP »
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
Oh yeah. Drawing routines are expensive, but as long as it does not conflict with the CPU then it doesn't conflict with other threads. Even though, I should add so it remember last value so it only updates when the value is updated, or just update it 10 times a second. I could also add an another parameter/program for servers that does not display the GUI(I know that the GUI looks like ****, but it is displaying the data at least).
Quote from OrangeXP »
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I don't use boost. I know boost are fancy, and I've used it myself. However, I don't need that library to do simple tasks, even if this issue isn't as simple anymore.
Oh! i'm afraid you misunderstood me when i said "High quality mapper"; i did not mean one that was more feature rich or well made. i meant one that rendered a more detailed image!
Overview renders very detailed images, your program is really nice but i just need tons of detail in my images.
Example: http://map.smp.em32.net/map/index.html
My mapper have a lot of features, but does not support isometric nor night. I will make these features later, but need to optimize the loader first, because it seems that the only thing that makes it faster tan other mappers if is you're using the multithreaded feature.
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
Nice screenshots.
Ok,Thats good to know,I'll download it tomorrow.
My mapper have a lot of features, but does not support isometric nor night. I will make these features later, but need to optimize the loader first, because it seems that the only thing that makes it faster tan other mappers if is you're using the multithreaded feature.
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
Overview uses actual textures...try zooming in all the way on the map he posted, you'll see the difference.
Pardon me on that one. I think I knew that before, but forgot about it.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Pardon me on that one. I think I knew that before, but forgot about it.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Thats some good progress there.
Do you also need the Mirrior download?
This tool was created for those that in an efficient way want to create a map/image from a Minecraft world. It proceeds its successor for being fast, easy to use and being customizable.
This is currently an open beta version where bugs may surface.
This program was completely rewritten from scratch to utilize the new functionalities in C++, allowing more efficient programming flow. The GUI version consists of ImGUI, which makes it highly portable.
Downloads
Windows GUI 1.20 64-bit: Download (1.03 MiB)
Windows CLI 1.20 64-bit: Download (349.63 KiB)
Linux GUI 1.20 64-bit: Download (11.04 MiB)
Linux CLI 1.20 64-bit: Download (929.19 KiB)
blockcolor.conf: Download (33.53 KiB)
Features
Example Output
15GB world, 269MB 31232x31232 PNG
Block Color format
Licenses
PixelMap and all content associated with it, but third-part libraries, is licensed under CC BY-SA. The author leaves the right to change the license for the product whenever necessary.
Third-party libraries: libpng, zlib
PixelMap Beta
This is the old PixelMap that only works for pre-1.2.1 worlds. It is currently not maintained and got several issues that has not been fixed.
PixelMap is an application written in C++ language designed to create bitmap images of Minecraft Beta worlds in various different styles. The program can be used with both command line and the built in GUI. If there is problems with the command line, then try out the GUI first. It's small and easy, but contains most of the program supports.
I have myself compiled and run it in both Linux and Windows without any special difficulties.
Features
License(s)
PixelMap and all content associated with it, but third-part libraries, is licensed under CC BY-SA. The author leaves the right to change the license for the product whenever necessary.
Third-party libraries: libpng, zlib
Download v0.86
x86 (32bit):RAR, ZIP, 7z
x64 (64bit):RAR, ZIP, 7z
Support
As I want to keep this a free service, still I give my time for something free. I am mere human and still need to pay my dept.
PayPal donation - A small donation of what You value my work
Older versions
x86 (32bit) v0.85
RAR, ZIP, 7z
x86 (32bit) v0.84
RAR, ZIP, 7z
Source v0.85
GitHub
Installation
Compilation
Linux
Linux
(Command line)
Could be copied to an another location
Windows
Changelog
changelog.txt
Parameters
The order of parameters is irrelevant but the arguments must be after a parameter. Do not use brackets (< >) in the arguments. All parameters are optional.
-w
This parameter requires the folder name of a world. If alpha is specified a number from 1-5 could be used. If specifying a custom path, (back)slash(/ or \) is required. If this parameter is not provided, World 1 will be rendered. The path can contain spaces.
-f .png
Sets the path where you want to save the rendered image. You can only save as .png.
-l
Path to where you want the log file to be saved. Any and all file types are supported. If no argument is provided, the log will be saved as log.txt to the same folder with the PixelMap.exe.
-o
Only renders the user defined blocks, multiple blocks are supported. You can also use 'W' or 'L'(Small letters) to quickly select all, flowing and stable, water and/or lava. 'T' is used for trees.
-x
As above, but excludes blocks instead.
-s <0 or 1>
User defined slice of a world. To render all slices under the selected slice put 0 after the height or 1 to only render the selected slice.
-h
Renders a line heightmap with a user defined frequency. Using 'G' or 'C' (Small letters) allows you to see either gray gradient or color gradient. 'S' is used when disabling the normal mode and therefor showing plain colors.
-t
Sets the amount of processor (CPU) cores to be used when rendering. It is not recommended to use more threads (cores) than your processor has. Using multiple cores greatly speeds up the rendering process. Default is value for this 1.
If providing no arguments, max cores of the computer is used.
-c
Renders caves.
-r
Rotates the world 90, 180 or 270 degrees.
-n
Render the world as if it were night with torches, lava and other sources where light can come from.
--texture
Uses the colors from the terrain.png image when rendering. Any size or type of terrain.png can be used as long as it works with Minecraft.
--no-render
Disables the rendering of a map. Only useful if you wish to only write a log of a world, not render a map.
--nether
Renders the Nexus/Nether.
--cache
Instead of allocating the image directly, it creates a temporary cache-file where it stores the image data before saving it to the actually image. Default folder is in %temp%.
--silent
Does not display any message/error box when done.
--no-gui
Does not display any gui(It does everything in the background). Good for servers.
--no-heightmap
Removes the use of lightmap provided in chunks to instead display hidden objects above the light. This decreases performance but gives a more reliable result.
--auto-close
Closes the application when rendering is ready. Good for stacked renderings. --no-gui also activates this. Windows only.
--open-folder
Opens up the folder the output is in. Windows only.
--version
Chooses the version of a map. Currently it only supports alpha and beta.
--debug
Enabled debug mode where it logs interesting parts in the program.
By default, the rendered image of a world is saved to the same folder where the PixelMap file is. If you use the -f parameter you can save the rendered image where you want it.
Help me help you.
Left value is default and right is two threads on dual core processor. Both generated this image:
http://dl.dropbox.com/u/8304300/Minecraft/sl.png
Using this setup on first:
And this setup on second:
Also generated a log afterwards:
Which gave me this log:
http://dl.dropbox.com/u/8304300/Minecraft/log.txt
I was unable to provide with comparison, like mcmap, Cartograph or c10t.
mcmap cannot generate top-of-view.(Way too slow too)
Cartograph crashed each time I tried to load the map.
c10t had too much dependences on several libraries that I was unable to find everyone. Therefor, it didn't start at all... And I couldn't find any documentation of how to use the tool.
If you doubt these results, then please provide with your test data here.
Edit: I got Cartograph working by placing the world in the Minecraft folder. First time it took more than 5 minutes, and second time took approximately 2:41(Used a stopwatch). It used 75MB constantly of memory, and in the end went up to about 150MB.
Help me help you.
however; i prefer to use high-quality renderers, which is why i use overview.
I really wish it were faster (i have my server box auto run it every 4 hours) but i guess you cant really get too much faster when your having to process and render that much data! :/
Livestream
I could take that as an insult, but due that this mapper have no spreadrate, I don't blame you. If more people could test this and find bugs and suggest features, I would be more than happy to keep this more updated.
Help me help you.
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
AMD 2GHz Dual Core
2GB RAM 800MHz DDR2
PM use no caching. It's pure loaded and stored in RAM, which is why the use of RAM increases slowl
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
Thank you for suggesting that.
Help me help you.
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I ran both programs twice, and both was faster on the second run due the filecaching.
Oh yeah. Drawing routines are expensive, but as long as it does not conflict with the CPU then it doesn't conflict with other threads. Even though, I should add so it remember last value so it only updates when the value is updated, or just update it 10 times a second. I could also add an another parameter/program for servers that does not display the GUI(I know that the GUI looks like ****, but it is displaying the data at least).
I don't use boost. I know boost are fancy, and I've used it myself. However, I don't need that library to do simple tasks, even if this issue isn't as simple anymore.
Help me help you.
Help me help you.
Overview renders very detailed images, your program is really nice but i just need tons of detail in my images.
Example: http://map.smp.em32.net/map/index.html
Livestream
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
Help me help you.
Screenshot of what it produces?
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
Help me help you.
Nice screenshots.
Ok,Thats good to know,I'll download it tomorrow.
Overview uses actual textures...try zooming in all the way on the map he posted, you'll see the difference.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Help me help you.
Thats some good progress there.
Do you also need the Mirrior download?
As I also said in the first post:
If you encounter problems, don't hesitate to post here or pm me.
Help me help you.
I mapped a 5.4k chunk world,Took 3:15.
Help me help you.