Problems?
Send a PM to me with the commands used to run the program, what error was displayed on the console, and a text log (or picture, text log preferred) using -debug to give me lots more information. Sending the text log to a file is the easiest way to do this.
Example: AlphaVespucci.exe -w1 -obLeft -debug > output.txt
The "> output.txt" part will send all the output to the text file specified.
--------------------------
Version History
--------------------------
V.1.10 Nov. 3,2010
-Fixed -fullname/-replacename creating ".png" files (missing variable when cleaning up names).
-Added (-caveRange), works similar to -sliceRange.
-Added (-doublePixel), which adds more texture to blocks that have a better defined thickness. Causes rendering to take more time (50% longer when map is precached by file system). Applies to oblique type maps only. Probably needs more tweaking.
-Can also use (-nether) to select the nether map (maps with have "-nether" name attached for -hell or -nether).
-Reworked cave colors: gray - unlit areas, yellow - lit areas, red - lava, blue - water.
V.1.09 Oct.31,2010 (Halloween)
-Added (-hell) for rendering the hellish-looking dimension that was added for Halloween. The region is basically a large cave, so there isn't an efficient way (yet) to display the features in it without exposing some of the smaller cave areas.
-Hopefully fixed the zoom in/out bug on OpenLayers maps (inconsistency with the picture tiler).
-Removed the border CSS styling for the HTML body of an OpenLayers map, since it conflicts with mouse coordinates in Mozilla Firefox at the moment.
-May have fixed the error with one parameter not making the program work.
V.1.08 Sept.25,2010
-Added (dualmap:) for adding a layer to a map as a base layer and an overlay (uses the same set of tiles)
-Made tile processing text prettier
-Fixed some HTML output for online maps
-Fixed extraction problems when generating online maps (downside is that it's platform dependent, but now all Windows versions should work with this)
-Can add comments at the beginning of a .conf line by using //
V.1.07 Sept.23,2010 Easy Online Maps!
-Added -tilemode parameter, which converts a .png or .conf file into a browsable map using OpenLayers. More instructions are included below
-Added tiling.ves, a packed file that contains the javascript, images, and css needed to create a browsable map locally (unpacks self during map output)
-Dragging a .conf file or a .png file onto the executable will activate -tilemode
V.1.06 Sept.22,2010
-Fixed an error with attempting to access unused portions of a large map.
-Fixed positioning errors in large maps.
-Added option -recover for the rare case that a map does not finish being written to PNG (this command is most likely not applicable to anything before this version, due to the fixes mentioned above).
-Added option -exclude for pruning unusual chunk locations. Currently only acts in a square boundary around the origin (0,0) (not necessarily where you spawn).
-Minor improvement of initial usage of disk memory when rendering a large map.
-Updated some debug messages for clarity.
-Made -cavelimit have a different addon name than -cave
V.1.05 Sept.20,2010
-Fixed an error with parameter processing not seeing some options
-Fixed a bug with trying to read map chunks that contained some file errors (thanks to BreakIt)
-Fixed caves rendering large blocks of map areas affected by the pitch black lighting bug
-Slight optimization of writing unused (blank) areas of the map to PNG
-Changed -debug to -mapDebug
-"-debug" now enables -mapDebug and -memInfo
V.1.04 Sept.19,2010
-Fixed trimming errors that affected -obleft
-Added -lessDither, to reduce the "dithering" effects on oblique maps
-Added -realism (-real), which combines -noHeightColor,-gamma .8, and -lessDither in order to generate a version of the map drawn with a more twilit appearance
-Added a -debug option to show map creation information
-Dragging a folder onto the .exe will also add the -statistics parameter to the renderer
V.1.03 Sept.17,2010
-Added a rough sanity check to the boundaries of the map (for servers that generate map chunks outside of reasonable ranges). Currently bounded between -100,000<=X<=100,000 and -100,000<=Z<=100,000. (Will be improved upon later) (Thanks to Bryce@PlugPayPlay for finding.)
-Added option -noSanity to disable the exclusion process.
-Added extra warning for excluded chunks and a warning for extreme (20 GB uncompressed PNG) map sizes (Currently, program may crash trying to create maps that need more than 2 billion pixels in a dimension, which is normally unlikely)
V.1.02 Sept.16,2010
-Reworked some of the code
-Map chunk loading is faster (the largest bottleneck is currently loading files from the hard drive)
-Added slicing layers (-slice, -sliceUpto, -sliceRange)
-Added overlay option (-overlay)
-Added whitelists and blacklists (-whitelist, -blacklist)
-Added cave features (-cave, -cavelimit)
-Added some possible support for WINE users in directory finding
-Made output directory display just before rendering starts
-Added option to change output/working directory (-outputDir)
V.1.01 Sept.8,2010
-Dragging a folder onto the program icon itself will now render an oblique-left image to the Desktop if possible.
V.1.00 Sept.8,2010
-Original version.
The program is currently compiled as Windows 32bit. Please report any dependencies or errors/crashes you get while using this program. This has been shown to work in Windows XP, and Windows 7 (and therefore probably Vista as well). According to user 303 (thanks for the help), AlphaVespucci.exe can also be run under WINE (so far in Linux, MacOS is unknown currently):
It might also run on other UNIX-like OS's like Mac OS X with WINE installed, but I cannot confirm it.
You have to have WINE use the native Windows DLL of MSVCR90.dll by doing this:
[*:2ijoggjm]Install WINE. Duh.
[*:2ijoggjm]Install winetricks (http://wiki.winehq.org/winetricks) someway. Maybe it was automatically installed with the WINE package if you use a package manager. Otherwise, download the link given on that page, set the executable bit on a shell
chmod +x winetricks
or using a file manager.
[*:2ijoggjm]Run winetricks. A window should open with a list of actions to perform. Select vcrun2008 (MS Visual C++ 2008 libraries) and click OK.
Following these steps, you should be able to run AlphaVespucci under WINE.
Please note that at the moment, you will need to use the -p (-path) parameter as currently the World selection feature assumes it's looking in Windows directories.
A while ago, I found Minecraft, and another while ago, I was inspired by Cartograph's mapping ability. The result is this command line based renderer (written from scratch, C++), which has the capacity to render maps that may be too large for your computer's memory to work on all at once.
Special thanks to the Aperture Games server and PicSoul for help with testing.
Currently, the largest (personally) known map rendered with this program is ApertureGames' 996 MB SMP server map, back in the beginning of October.
To get started, run AlphaVespucci.exe on the command line (cmd.exe in Windows) or make a batch file and use some of the parameters listed below.
(Example: AlphaVespucci.exe -w1)
(Prints out a flat map of World 1.)
Output files by default are output as "<map folder>-option1-option2-etc.png" (Example: "World1-obliqueleft-day.png")
==========================
World selection
==========================
Note that this group of features are mutually exclusive, and only one will be active at a time, with "-path" taking precedence over the others.
-w1
Prints out World 1.
-w2
Prints out World 2.
-w3
Prints out World 3.
-w4
Prints out World 4.
-w5
Prints out World 5.
Each of above 5 options will read the appropriate map from the %APPDATA%/.minecraft/saves folder.
-p "<path>", -path "<path>"
This will read the map from the path given in quotes. Forward slashes (/) are __strongly__ preferred as directory separators. The last directory must be the folder containing the map directories (0-z,10-1r etc.) (the same place where level.dat is located).
Example: -p "C:/MyFolder/MyOtherFolders/MyMinecraftWorld/"
-hell,-nether
Selects the nether map, if it exists, from the map chosen. The nether and main maps will not interact with each other.
-outputDir "<output directory>"
Sets the working and output directory to a different location. If the program can't create a file here or the directory does not exist, the program will print an error.
Example: -outputdir "C:/OutputHere/"
==========================
Changing the output name
==========================
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-fullname" taking precedence over the others.
-name "<alternate mapname>"
Normally, the mapper will use the folder's name as the output prefix (example: "World1-flat-day.png"). This option replaces only the part that appears before the options.
Example: -name "Replacement" will output "Replacement-flat-day.png".
-fullName "<alternate mapname>", -replaceName "<alternate mapname>"
Instead of using the folder name and options as the output filename (example: "World1-flat-day.png"), this will replace the whole name before the .PNG extension.
Example: -fullname "Replacement" will output "Replacement.png".
==========================
Terrain display
==========================
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-obleft" taking precedence over the others.
-flat
This renders a simple overhead (flat) map. This option is active by default.
-ob
This renders an oblique (slanted) map. The map will look more textured and more features may be visible.
-obLeft
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the right", and "left" will be "up and to the left". Requires 4x the memory of the simple overhead (flat) map.
-obRight
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the left", and "right" will be "up and to the right". Requires 4x the memory of the simple overhead (flat) map.
==========================
Terrain features
==========================
(-day)
Prints a daytime version of the map. This option is active by default.
-night
Prints a nighttime version of the map. Torches and lava will still be bright in this mode.
(-water)
Renders water on the map. This option is active by default.
-noWater
Does not render any water in the map.
-cave
Renders areas underground that aren't exposed to sunlight. Blue areas are unlit and yellow areas are lit. Depending on the depth of the cave, unlit areas will range from dark blue to blue, and lit areas from dark red to yellow. Output image will be aligned to the same dimensions of a non-cave map.
-caveLimit <integer>
Renders areas underground that are up to <integer> depth from the surface. Black-blue areas are unlit, and lit areas are red. Useful for finding cave entrances close to the surface. Output image will be aligned to the same dimensions of a non-cave map.
Example: -cavelimit 15 will render cave spaces that are up to 15 blocks under the ground.
(With image editor and adding cave layer over a regular oblique-left map)
-caveRange <integerLow> <integerHigh>
Renders each layer in the cave image (to one image) in the range <integerLow> to <integerHigh> inclusive.
==========================
Slicing/Layering
==========================
Slices are aligned to the shape of the original map being rendered.
-slice <integer>
Renders only the layer at the height specified by <integer> (0-127).
(Sliced layer 64, above water level)
-sliceUpto <integer>
Renders layers starting from the bottom, up to the layer specified by <integer> (0-127).
-sliceRange <integerLow> <integerHigh>
Renders each layer in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
-sliceUptoRange <integerLow> <integerHigh>
Renders each image from the bottom up to the layer specified in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
-blacklist "<filename>"
-blacklist "<integer>,<integer>,..."
-blacklist "<name>,<name>,..."
-blacklist "<name>,<integer>,..."
Disallows only the listed items from being rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -blacklist "Grass,Dirt"
-whitelist "<filename>"
-whitelist "<integer>,<integer>,..."
-whitelist "<name>,<name>,..."
-whitelist "<name>,<integer>,..."
Allows only the listed items to be rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -whitelist "Dirt"
==========================
Color options
==========================
-realism, -real
Applies -gamma .8, -lessDither, and -noHeightColor to an oblique map (only -gamma .8 applies to a flat map).
-gamma <decimal>
Changes the overall brightness of the picture to be output. Reasonable values range from .2 to 2.0. Default is (1.0).
-noHeightColor
Removes the brightness factor applied to different altitudes of the map. Recommended to be left on for overhead (flat) maps in order to discern height.
-overlay
Sets all rendered pixels to 50% opacity, for use in layering with an external editor.
-lessDither
Tones down the "dithering" effect seen in oblique maps.
-doublePixel
Adds an extra pixel to the right of an existing picture during drawing. Image may become smoother looking, but increases rendering time.
==========================
Image output options
==========================
If one of these options causes the map to render multiple images (which is likely), a new folder, named after the map name + configuration, will be created to deposit them. Pixel based parameters will take precedence over others.
Combining the -wsplit and -hsplit settings can get you a rectangular set of cuts as opposed to getting a square grid via -squaresplit.
Files that are split will have the same base name, and _x_y appended to their name for the x,y position they represent.
-wSplit <integer>
Splits the image into <integer> pieces along the _width_ of the image. The renderer will try to make all parts equally sized.
x|x|x where x is a subimage.
-wSplitPixels <integer>
Splits the image into pieces that are <integer> pixels wide along the _width_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
-hSplit <integer>
Splits the image into <integer> pieces along the _height_ of the image. The renderer will try to make all parts equally sized.
x
_
x
_
x where x is a subimage.
-hSplitPixels <integer>
Splits the image into pieces that are <integer> pixels high along the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
-squareSplit <integer>
Splits the image into <integer> pieces along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized.
x|x|x
_____
x|x|x
_____
x|x|x where x is a subimage.
-squareSplitPixels <integer>
Splits the image into pieces <integer> pixels wide and high along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
(-meter)
Displays the current amount of rows or chunks being rendered. Also contains a small progress bar with completion percentage. This option is active by default.
-simpleMeter
Only displays the progress bar, extended to the width of the screen. The completion percentage is still present.
-noMeter
Display no indication of progress until rendering is done. No progress bar, percent meter, or timer will appear.
(-time)
Display the total time spent running the program after rendering is finished. This is also enabled if (-showtimer) is enabled. The time will still display at the end even if -nometer is enabled.
(-showTimer)
Display a timer showing the amount of time being spent on rendering. The timer will appear to the right of the progress bar (the bar will be shortened slightly). This option is active by default.
-noTimer
Removes the timer display that appears to the right of the progress bar.
-minimal
Removes almost all notifications except for completion and time elapsed if -time/-showtimer is enabled.
==========================
Memory management
==========================
If the map requires more than 200 MB of RAM in order to render an image, the image will be broken down into multiple small images at a default of 10 MB in size. These options will change fragment sizes or remove them altogether. Warning: allocating a large enough chunk of memory in Windows may simply cause the program to crash.
Maps requiring more than 1000 MB of RAM will begin to store fragments on the hard drive as the renderer requires more mapping space, as defined by the maxRAM parameter.
-memInfo, -memDebug
Turns on the notifications of memory allocation. This will print the amount of RAM needed to hold the image, along with the submaps created, stored to disk, and retrieved from disk.
-fragment <integer>
Changes the size of the submap fragments (in MB). Entering 0 will attempt to allocate the whole map as one single block. This may cause crashes as Windows sometimes has trouble allocating very large single blocks of memory.
This option is active by default, the default value is 10.
-fragmentThreshold <integer>
Sets the minimum size (in MB) the map must allocate in memory before the map is fragmented into submaps. If this is set larger than maxRAM, maxRAM will take precedence. Fragmenting the map memory helps Windows find space for memory allocation.
This option is active by default, the default value is 200.
-noCompressFragments
By default, fragments are compressed (GZIP) when they are sent to the hard drive during very large map rendering. Disabling this may result in a slight speed increase.
-maxRAM <integer>
Sets the maximum size (in MB) that the program is allowed to allocate while rendering. Large maps may crash if they attempt to allocate too much RAM. Maps that require more than this amount will use the hard drive as a temporary storage for fragments when they are not in use. A temporary folder will be created which will be mostly unique for the current map being rendered.
This option is active by default, the default is 1000. (1 GB)
-noSwap
Disables using the hard drive as a temporary storage location for fragments during rendering. Enabling this effectively disables maxRAM. Large maps may fail to find enough memory to render. -fragmentthreshold will still use -maxRAM's value.
-useMinimalRAM
The memory swapper will only hold enough submaps in memory to render the current row of map chunks. For very large maps, using this will not cause a significant performance loss. On average, the mapper will use about <100 MB of RAM.
==========================
Misc/Information
==========================
These options may have value in certain conditions.
-noTrim
Skips the cropping stage that occurs before the image is rendered to a file. The resulting file will have larger areas containing only transparency.
-noSanity
Allows chunks that are outside a reasonable range |x,y|>100000 to be rendered. Such map portions are usually generated via a bug in the SMP server. Map may be insanely sized if allowed.
-mapDebug
Shows extra information related to map generation and output.
-debug
Equivalent to using -mapDebug and -memInfo.
-stat, -statistics
Prints the total counts for each block found in the world being rendered to a file having the same name as the map, but with "-stat" appended to the name.
-exclude <integer>
Excludes all chunks that have a X or Z coordinate (absolute value) greater than the value of <integer>. Useful for chunks that like appearing over a 1000 units away from your main map.
Example: -exclude 1000 will exclude chunks that are x<-1000,x>1000,z<-1000,z>1000
-recover <temporary directory>
Attempts to redraw a map that failed to be written to file (i.e. rendering completed, but not the PNG file). Keep all arguments used to render the map the same to avoid not seeing the files. Not applicable to maps rendered with V.1.05 and earlier, if they were very large (the output will appear shifted).
--------------------------
Allowed Block Names
--------------------------
Adminium
Bookshelf
Brick
Brown mushroom
Button
Cactus
Chest
Clay
Cloth
Coal ore
Cobblestone
Cobblestone stairs
Crop
Diamond
Diamond ore
Dirt
Double step
Fence
Fire
Flower
Furnace
Glass
Gold
Gold ore
Grass
Gravel
Ice
Iron
Iron door
Iron ore
Jukebox
Ladder
Lava
Leaves
Lever
Lit furnace
Mob spawner
Mossy cobblestone
Obsidian
Rails
Red mushroom
Redstone dust
Redstone ore
Redstone torch
Reed
Rose
Sand
Sapling
Sign
Snow
Soil
Sponge
Step
Stone
Stone plate
TNT
Torch
Tree
Wall sign
Water
Wood
Wood plate
Wood stairs
Wooden door
Workbench
A new feature with V.1.07, AlphaVespucci can now automatically tile one or more maps and output necessary files to make a Google Maps-style map using the OpenLayers interface. (Note that the layer switching control is at the top right of the map.)
WARNING: This program assumes that all the input maps are the same size (all generated with the same map parameter (i.e. all -obleft, all -ob, etc.) ). Images will not overlap each other correctly if they are completely different sizes.
-tilemode <.PNG file>, -tilemode <.CONF file>
Generates an online browsable map which is tiled for efficient loading in a web page (small 50kb PNGs are easier for a webpage to handle than one 50 MB PNG).
If a PNG file is used as the parameter, the map's title will be the same name as the PNG file.
Using a .conf file, you can customize the titles of each map, and the title of the page.
All commands must be in the format "command:parameters", with no spaces around the colon.
Commands to use in the .conf file:
Example: AlphaVespucci.exe -tilemode ThisMap.png
Example: AlphaVespucci.exe -tilemode ThisConfigurationFile.conf
title:
Sets the title of the page. If this is not supplied, it will use the same name as the mainmap parameter's file/title. This also serves as the name for the folder to be output.
Example: title:My Map Title (notice there is no space around the colon separating the command from the title phrase)
outputfolder:
Sets the output directory of the map. The folder must exist beforehand.
Example: outputfolder:C:\OutputThingsHere\IntoThisFolder
(The program will output into the folder C:\OutputThingsHere\IntoThisFolder\(Title) and place index.html in the (Title) folder.
(Maps) All maps will appear in the layer switching tool in the order that they were listed in the .conf file.
mainmap: (REQUIRED)
Sets the first map that will be seen when the page loads. Can be set as <PNG file> or <MapTitle;PNG file>. If no MapTitle is supplied, it will be guessed from the PNG file's name. If this command is not supplied, the .conf file will be invalid.
Example: mainmap:Daytime Map;C:\files\etc\firstmap.png
altmap:
Adds other maps that can be switched to with the layer control. These maps will be part of the "base layer" options (i.e. background)
Example: altmap:This could be a Nighttime Map;C:\files\etc\secondmap.png
overlay:
Adds maps that can be placed on top of the map that is serving as a base layer. Generally recommended for whitelisted maps that show a few things (caves, diamonds, dungeons, etc.)
Example: overlay:Surface Caves;C:\files\etc\somecaves.png
dualmap:
Adds a map that will be both a base layer and an overlay. Same as using altmap: and overlay: for the same map.
Example: dualmap:Caves;C:\files\etc\morecaves.png
//(comments)
Can comment a line using //
--------------------------
Example Batch File
--------------------------
(You would save this file to something.bat in Windows.)
This would set the -obleft map as the main map, and the base layer can be switched between each of the slices, nighttime, and nowater maps. Overlays would include the cavelimit map, the whitelists, and the caves added again, but this time as an overlay.
Worked great on the first try! I was only mildly disappointed when it rendered World1 instead of the world I dragged and dropped on it. So, I created a shortcut where the Target had -path at the end, problem solved!
I'm REALLY loving the power and control of this tool, and most of all, the reliability. I have two suggestions:
1) Add in similar functionality to cartographer's "Cave-mode"
2) Have both blacklist and whitelist parameters, where blocks with the entered data values are either excluded from the render, or are the only blocks rendered.
Thanks to Aperture Games I had a 290 MB map to work with, and that took one hour to render successfully into a 58.4 MB PNG that needed 1.3 GB of actual pixel space. For me it was rendering 10-25 chunks per second on my 2 GHz 2 GB RAM laptop (depending if it had seen the chunk before for some reason). Most of the testing was done by forcing a small map to be fragmented using the memory swapping system.
Separately, I wasn't actually able to open the PNG from the 290 MB world except via Google Picasa's progress image display thing because it was so large pixelwise, so normally it's recommended to split the image so you can actually view it on your computer.
When you say GUI, do you mean the progress bar and the count of what rows/chunks being rendered? It doesn't have a Windowed-type interface (yet).
I mostly meant it was compiled for Windows as some of the settings (looking for %appdata% containing .minecraft, guessing that dragging a folder gives %UserProfile% as the path) are Windows based. The code itself is otherwise written to be cross-platform (using libpng, zlib, and Boost), but I'd like to fix my program structure before I release source code for it. My first goal was to get it working in Windows first, and then test on a Linux distribution I have.
I'm surprised that it does work in WINE, though. What exactly does -o do (it's not part of the options the program has)?
I've been busy refactoring the code (feature bloat made the program end up passing 20 arguments into each class, which has driven me crazy already) and trying to make it more object-oriented, and looking into making a GUI version for Windows. I noticed 64bit would be way better with memory, but I would also have to look at how my program will work (or crash) depending on how I used my integers.
Just for the record, this is a fantastic app. I couldn't get Cartograph to work on my infdev server and after fighting with wine for a bit, this works flawlessly. Thank you!
If you drag the folder on top, it tries to save it to the Desktop of the system you're currently using since that causes the working directory to start at "C:\Documents and Settings\Username\" on WinXP or what your user profile folder is in other Windows versions.
Currently it tries:
Running .exe from console - Working directory = same as console's current directory
Running .exe from batch - Working directory = same as batch
Dropping folder on program icon - Working directory = %userprofile% (C:\Documents and Settings\Username) or (C:\Users\Username); if it can find the desktop it will move the output there.
Going to add some options for regulating this, since default working directories are just all over the place.
The current modes I made assume east is the "north" direction and then tilts it (I think each new game starts with you facing the sun). It wouldn't be too hard to add more directions, but it does take time to put the math together for each of the other direction's orientations.
@kizzard: I've been aware of that problem since oblique maps worked, but at the moment, the mapper only processes one chunk at a time, so I can't blend two diagonals together yet to hide what's behind them. It's also not really applied as dithering, it's the mapper giving a slightly different color to the block before it reaches the top of a column. Using that keeps the map from looking like a giant green blob, but I can make the color difference (a % of the top color) modifiable as an option. Also, try using -gamma .7 to make the coloring a little bit darker.
As suggested, I am getting around to adding a cave-type option along with black/whitelists (currently debugging it). (Fixing my code dragged on for days.)
The blacklist and whitelist are working perfectly, I'm really glad you included my suggestion of the black/white lists.
And the addition of the cave mode means I no longer need to use any other unreliable programs to make complete maps!
Version 1.10:
https://sites.google.com/site/orangexpt ... ects=0&d=1
Most recent GUI by LrdPhoenix:
http://www.4shared.com/file/KtZ8TTOv/AVGUI.html
Previous Versions/Misc. Files:
https://sites.google.com/site/orangexptesting/cabinet
Example of OpenLayers map:
https://sites.google.com/site/orangexpt ... ects=0&d=1
Problems?
Send a PM to me with the commands used to run the program, what error was displayed on the console, and a text log (or picture, text log preferred) using -debug to give me lots more information. Sending the text log to a file is the easiest way to do this.
Example: AlphaVespucci.exe -w1 -obLeft -debug > output.txt
The "> output.txt" part will send all the output to the text file specified.
--------------------------
Version History
--------------------------
V.1.10 Nov. 3,2010
-Fixed -fullname/-replacename creating ".png" files (missing variable when cleaning up names).
-Added (-caveRange), works similar to -sliceRange.
-Added (-doublePixel), which adds more texture to blocks that have a better defined thickness. Causes rendering to take more time (50% longer when map is precached by file system). Applies to oblique type maps only. Probably needs more tweaking.
-Can also use (-nether) to select the nether map (maps with have "-nether" name attached for -hell or -nether).
-Reworked cave colors: gray - unlit areas, yellow - lit areas, red - lava, blue - water.
V.1.09 Oct.31,2010 (Halloween)
-Added (-hell) for rendering the hellish-looking dimension that was added for Halloween. The region is basically a large cave, so there isn't an efficient way (yet) to display the features in it without exposing some of the smaller cave areas.
-Hopefully fixed the zoom in/out bug on OpenLayers maps (inconsistency with the picture tiler).
-Removed the border CSS styling for the HTML body of an OpenLayers map, since it conflicts with mouse coordinates in Mozilla Firefox at the moment.
-May have fixed the error with one parameter not making the program work.
V.1.08 Sept.25,2010
-Added (dualmap:) for adding a layer to a map as a base layer and an overlay (uses the same set of tiles)
-Made tile processing text prettier
-Fixed some HTML output for online maps
-Fixed extraction problems when generating online maps (downside is that it's platform dependent, but now all Windows versions should work with this)
-Can add comments at the beginning of a .conf line by using //
V.1.07 Sept.23,2010 Easy Online Maps!
-Added -tilemode parameter, which converts a .png or .conf file into a browsable map using OpenLayers. More instructions are included below
-Added tiling.ves, a packed file that contains the javascript, images, and css needed to create a browsable map locally (unpacks self during map output)
-Dragging a .conf file or a .png file onto the executable will activate -tilemode
V.1.06 Sept.22,2010
-Fixed an error with attempting to access unused portions of a large map.
-Fixed positioning errors in large maps.
-Added option -recover for the rare case that a map does not finish being written to PNG (this command is most likely not applicable to anything before this version, due to the fixes mentioned above).
-Added option -exclude for pruning unusual chunk locations. Currently only acts in a square boundary around the origin (0,0) (not necessarily where you spawn).
-Minor improvement of initial usage of disk memory when rendering a large map.
-Updated some debug messages for clarity.
-Made -cavelimit have a different addon name than -cave
V.1.05 Sept.20,2010
-Fixed an error with parameter processing not seeing some options
-Fixed a bug with trying to read map chunks that contained some file errors (thanks to BreakIt)
-Fixed caves rendering large blocks of map areas affected by the pitch black lighting bug
-Slight optimization of writing unused (blank) areas of the map to PNG
-Changed -debug to -mapDebug
-"-debug" now enables -mapDebug and -memInfo
V.1.04 Sept.19,2010
-Fixed trimming errors that affected -obleft
-Added -lessDither, to reduce the "dithering" effects on oblique maps
-Added -realism (-real), which combines -noHeightColor,-gamma .8, and -lessDither in order to generate a version of the map drawn with a more twilit appearance
-Added a -debug option to show map creation information
-Dragging a folder onto the .exe will also add the -statistics parameter to the renderer
V.1.03 Sept.17,2010
-Added a rough sanity check to the boundaries of the map (for servers that generate map chunks outside of reasonable ranges). Currently bounded between -100,000<=X<=100,000 and -100,000<=Z<=100,000. (Will be improved upon later) (Thanks to Bryce@PlugPayPlay for finding.)
-Added option -noSanity to disable the exclusion process.
-Added extra warning for excluded chunks and a warning for extreme (20 GB uncompressed PNG) map sizes (Currently, program may crash trying to create maps that need more than 2 billion pixels in a dimension, which is normally unlikely)
V.1.02 Sept.16,2010
-Reworked some of the code
-Map chunk loading is faster (the largest bottleneck is currently loading files from the hard drive)
-Added slicing layers (-slice, -sliceUpto, -sliceRange)
-Added overlay option (-overlay)
-Added whitelists and blacklists (-whitelist, -blacklist)
-Added cave features (-cave, -cavelimit)
-Added some possible support for WINE users in directory finding
-Made output directory display just before rendering starts
-Added option to change output/working directory (-outputDir)
V.1.01 Sept.8,2010
-Dragging a folder onto the program icon itself will now render an oblique-left image to the Desktop if possible.
V.1.00 Sept.8,2010
-Original version.
The program is currently compiled as Windows 32bit. Please report any dependencies or errors/crashes you get while using this program. This has been shown to work in Windows XP, and Windows 7 (and therefore probably Vista as well). According to user 303 (thanks for the help), AlphaVespucci.exe can also be run under WINE (so far in Linux, MacOS is unknown currently):
Please note that at the moment, you will need to use the -p (-path) parameter as currently the World selection feature assumes it's looking in Windows directories.
====================
Introduction
====================
A while ago, I found Minecraft, and another while ago, I was inspired by Cartograph's mapping ability. The result is this command line based renderer (written from scratch, C++), which has the capacity to render maps that may be too large for your computer's memory to work on all at once.
Special thanks to the Aperture Games server and PicSoul for help with testing.
Currently, the largest (personally) known map rendered with this program is ApertureGames' 996 MB SMP server map, back in the beginning of October.
To get started, run AlphaVespucci.exe on the command line (cmd.exe in Windows) or make a batch file and use some of the parameters listed below.
(Example: AlphaVespucci.exe -w1)
(Prints out a flat map of World 1.)
Output files by default are output as "<map folder>-option1-option2-etc.png" (Example: "World1-obliqueleft-day.png")
==========================
World selection
==========================
Note that this group of features are mutually exclusive, and only one will be active at a time, with "-path" taking precedence over the others.
-w1
Prints out World 1.
-w2
Prints out World 2.
-w3
Prints out World 3.
-w4
Prints out World 4.
-w5
Prints out World 5.
Each of above 5 options will read the appropriate map from the %APPDATA%/.minecraft/saves folder.
-p "<path>", -path "<path>"
This will read the map from the path given in quotes. Forward slashes (/) are __strongly__ preferred as directory separators. The last directory must be the folder containing the map directories (0-z,10-1r etc.) (the same place where level.dat is located).
Example: -p "C:/MyFolder/MyOtherFolders/MyMinecraftWorld/"
-hell,-nether
Selects the nether map, if it exists, from the map chosen. The nether and main maps will not interact with each other.
==========================
Changing output directory
==========================
-outputDir "<output directory>"
Sets the working and output directory to a different location. If the program can't create a file here or the directory does not exist, the program will print an error.
Example: -outputdir "C:/OutputHere/"
==========================
Changing the output name
==========================
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-fullname" taking precedence over the others.
-name "<alternate mapname>"
Normally, the mapper will use the folder's name as the output prefix (example: "World1-flat-day.png"). This option replaces only the part that appears before the options.
Example: -name "Replacement" will output "Replacement-flat-day.png".
-fullName "<alternate mapname>", -replaceName "<alternate mapname>"
Instead of using the folder name and options as the output filename (example: "World1-flat-day.png"), this will replace the whole name before the .PNG extension.
Example: -fullname "Replacement" will output "Replacement.png".
==========================
Terrain display
==========================
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-obleft" taking precedence over the others.
-flat
This renders a simple overhead (flat) map. This option is active by default.
-ob
This renders an oblique (slanted) map. The map will look more textured and more features may be visible.
-obLeft
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the right", and "left" will be "up and to the left". Requires 4x the memory of the simple overhead (flat) map.
-obRight
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the left", and "right" will be "up and to the right". Requires 4x the memory of the simple overhead (flat) map.
==========================
Terrain features
==========================
(-day)
Prints a daytime version of the map. This option is active by default.
-night
Prints a nighttime version of the map. Torches and lava will still be bright in this mode.
(-water)
Renders water on the map. This option is active by default.
-noWater
Does not render any water in the map.
-cave
Renders areas underground that aren't exposed to sunlight. Blue areas are unlit and yellow areas are lit. Depending on the depth of the cave, unlit areas will range from dark blue to blue, and lit areas from dark red to yellow. Output image will be aligned to the same dimensions of a non-cave map.
-caveLimit <integer>
Renders areas underground that are up to <integer> depth from the surface. Black-blue areas are unlit, and lit areas are red. Useful for finding cave entrances close to the surface. Output image will be aligned to the same dimensions of a non-cave map.
Example: -cavelimit 15 will render cave spaces that are up to 15 blocks under the ground.
(With image editor and adding cave layer over a regular oblique-left map)
-caveRange <integerLow> <integerHigh>
Renders each layer in the cave image (to one image) in the range <integerLow> to <integerHigh> inclusive.
==========================
Slicing/Layering
==========================
Slices are aligned to the shape of the original map being rendered.
-slice <integer>
Renders only the layer at the height specified by <integer> (0-127).
(Sliced layer 64, above water level)
-sliceUpto <integer>
Renders layers starting from the bottom, up to the layer specified by <integer> (0-127).
-sliceRange <integerLow> <integerHigh>
Renders each layer in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
-sliceUptoRange <integerLow> <integerHigh>
Renders each image from the bottom up to the layer specified in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
==========================
Blacklisting/Whitelisting
==========================
-blacklist "<filename>"
-blacklist "<integer>,<integer>,..."
-blacklist "<name>,<name>,..."
-blacklist "<name>,<integer>,..."
Disallows only the listed items from being rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -blacklist "Grass,Dirt"
-whitelist "<filename>"
-whitelist "<integer>,<integer>,..."
-whitelist "<name>,<name>,..."
-whitelist "<name>,<integer>,..."
Allows only the listed items to be rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -whitelist "Dirt"
==========================
Color options
==========================
-realism, -real
Applies -gamma .8, -lessDither, and -noHeightColor to an oblique map (only -gamma .8 applies to a flat map).
-gamma <decimal>
Changes the overall brightness of the picture to be output. Reasonable values range from .2 to 2.0. Default is (1.0).
-noHeightColor
Removes the brightness factor applied to different altitudes of the map. Recommended to be left on for overhead (flat) maps in order to discern height.
-overlay
Sets all rendered pixels to 50% opacity, for use in layering with an external editor.
-lessDither
Tones down the "dithering" effect seen in oblique maps.
-doublePixel
Adds an extra pixel to the right of an existing picture during drawing. Image may become smoother looking, but increases rendering time.
==========================
Image output options
==========================
If one of these options causes the map to render multiple images (which is likely), a new folder, named after the map name + configuration, will be created to deposit them. Pixel based parameters will take precedence over others.
Combining the -wsplit and -hsplit settings can get you a rectangular set of cuts as opposed to getting a square grid via -squaresplit.
Files that are split will have the same base name, and _x_y appended to their name for the x,y position they represent.
-wSplit <integer>
Splits the image into <integer> pieces along the _width_ of the image. The renderer will try to make all parts equally sized.
x|x|x where x is a subimage.
-wSplitPixels <integer>
Splits the image into pieces that are <integer> pixels wide along the _width_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
-hSplit <integer>
Splits the image into <integer> pieces along the _height_ of the image. The renderer will try to make all parts equally sized.
x
_
x
_
x where x is a subimage.
-hSplitPixels <integer>
Splits the image into pieces that are <integer> pixels high along the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
-squareSplit <integer>
Splits the image into <integer> pieces along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized.
x|x|x
_____
x|x|x
_____
x|x|x where x is a subimage.
-squareSplitPixels <integer>
Splits the image into pieces <integer> pixels wide and high along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
==========================
Progress display
==========================
(-meter)
Displays the current amount of rows or chunks being rendered. Also contains a small progress bar with completion percentage. This option is active by default.
-simpleMeter
Only displays the progress bar, extended to the width of the screen. The completion percentage is still present.
-noMeter
Display no indication of progress until rendering is done. No progress bar, percent meter, or timer will appear.
(-time)
Display the total time spent running the program after rendering is finished. This is also enabled if (-showtimer) is enabled. The time will still display at the end even if -nometer is enabled.
(-showTimer)
Display a timer showing the amount of time being spent on rendering. The timer will appear to the right of the progress bar (the bar will be shortened slightly). This option is active by default.
-noTimer
Removes the timer display that appears to the right of the progress bar.
-minimal
Removes almost all notifications except for completion and time elapsed if -time/-showtimer is enabled.
==========================
Memory management
==========================
If the map requires more than 200 MB of RAM in order to render an image, the image will be broken down into multiple small images at a default of 10 MB in size. These options will change fragment sizes or remove them altogether. Warning: allocating a large enough chunk of memory in Windows may simply cause the program to crash.
Maps requiring more than 1000 MB of RAM will begin to store fragments on the hard drive as the renderer requires more mapping space, as defined by the maxRAM parameter.
-memInfo, -memDebug
Turns on the notifications of memory allocation. This will print the amount of RAM needed to hold the image, along with the submaps created, stored to disk, and retrieved from disk.
-fragment <integer>
Changes the size of the submap fragments (in MB). Entering 0 will attempt to allocate the whole map as one single block. This may cause crashes as Windows sometimes has trouble allocating very large single blocks of memory.
This option is active by default, the default value is 10.
-fragmentThreshold <integer>
Sets the minimum size (in MB) the map must allocate in memory before the map is fragmented into submaps. If this is set larger than maxRAM, maxRAM will take precedence. Fragmenting the map memory helps Windows find space for memory allocation.
This option is active by default, the default value is 200.
-noCompressFragments
By default, fragments are compressed (GZIP) when they are sent to the hard drive during very large map rendering. Disabling this may result in a slight speed increase.
-maxRAM <integer>
Sets the maximum size (in MB) that the program is allowed to allocate while rendering. Large maps may crash if they attempt to allocate too much RAM. Maps that require more than this amount will use the hard drive as a temporary storage for fragments when they are not in use. A temporary folder will be created which will be mostly unique for the current map being rendered.
This option is active by default, the default is 1000. (1 GB)
-noSwap
Disables using the hard drive as a temporary storage location for fragments during rendering. Enabling this effectively disables maxRAM. Large maps may fail to find enough memory to render. -fragmentthreshold will still use -maxRAM's value.
-useMinimalRAM
The memory swapper will only hold enough submaps in memory to render the current row of map chunks. For very large maps, using this will not cause a significant performance loss. On average, the mapper will use about <100 MB of RAM.
==========================
Misc/Information
==========================
These options may have value in certain conditions.
-noTrim
Skips the cropping stage that occurs before the image is rendered to a file. The resulting file will have larger areas containing only transparency.
-noSanity
Allows chunks that are outside a reasonable range |x,y|>100000 to be rendered. Such map portions are usually generated via a bug in the SMP server. Map may be insanely sized if allowed.
-mapDebug
Shows extra information related to map generation and output.
-debug
Equivalent to using -mapDebug and -memInfo.
-stat, -statistics
Prints the total counts for each block found in the world being rendered to a file having the same name as the map, but with "-stat" appended to the name.
-exclude <integer>
Excludes all chunks that have a X or Z coordinate (absolute value) greater than the value of <integer>. Useful for chunks that like appearing over a 1000 units away from your main map.
Example: -exclude 1000 will exclude chunks that are x<-1000,x>1000,z<-1000,z>1000
-recover <temporary directory>
Attempts to redraw a map that failed to be written to file (i.e. rendering completed, but not the PNG file). Keep all arguments used to render the map the same to avoid not seeing the files. Not applicable to maps rendered with V.1.05 and earlier, if they were very large (the output will appear shifted).
--------------------------
Allowed Block Names
--------------------------
Adminium
Bookshelf
Brick
Brown mushroom
Button
Cactus
Chest
Clay
Cloth
Coal ore
Cobblestone
Cobblestone stairs
Crop
Diamond
Diamond ore
Dirt
Double step
Fence
Fire
Flower
Furnace
Glass
Gold
Gold ore
Grass
Gravel
Ice
Iron
Iron door
Iron ore
Jukebox
Ladder
Lava
Leaves
Lever
Lit furnace
Mob spawner
Mossy cobblestone
Obsidian
Rails
Red mushroom
Redstone dust
Redstone ore
Redstone torch
Reed
Rose
Sand
Sapling
Sign
Snow
Soil
Sponge
Step
Stone
Stone plate
TNT
Torch
Tree
Wall sign
Water
Wood
Wood plate
Wood stairs
Wooden door
Workbench
(Nether block names)
Pumpkin
Brimstone
Glueblock
Hellpowder
Portal
Pumpkin lantern
--------------------------
Online Browsable Maps
--------------------------
A new feature with V.1.07, AlphaVespucci can now automatically tile one or more maps and output necessary files to make a Google Maps-style map using the OpenLayers interface. (Note that the layer switching control is at the top right of the map.)
WARNING: This program assumes that all the input maps are the same size (all generated with the same map parameter (i.e. all -obleft, all -ob, etc.) ). Images will not overlap each other correctly if they are completely different sizes.
-tilemode <.PNG file>, -tilemode <.CONF file>
Generates an online browsable map which is tiled for efficient loading in a web page (small 50kb PNGs are easier for a webpage to handle than one 50 MB PNG).
If a PNG file is used as the parameter, the map's title will be the same name as the PNG file.
Using a .conf file, you can customize the titles of each map, and the title of the page.
All commands must be in the format "command:parameters", with no spaces around the colon.
Commands to use in the .conf file:
Example: AlphaVespucci.exe -tilemode ThisMap.png
Example: AlphaVespucci.exe -tilemode ThisConfigurationFile.conf
title:
Sets the title of the page. If this is not supplied, it will use the same name as the mainmap parameter's file/title. This also serves as the name for the folder to be output.
Example: title:My Map Title (notice there is no space around the colon separating the command from the title phrase)
outputfolder:
Sets the output directory of the map. The folder must exist beforehand.
Example: outputfolder:C:\OutputThingsHere\IntoThisFolder
(The program will output into the folder C:\OutputThingsHere\IntoThisFolder\(Title) and place index.html in the (Title) folder.
(Maps) All maps will appear in the layer switching tool in the order that they were listed in the .conf file.
mainmap: (REQUIRED)
Sets the first map that will be seen when the page loads. Can be set as <PNG file> or <MapTitle;PNG file>. If no MapTitle is supplied, it will be guessed from the PNG file's name. If this command is not supplied, the .conf file will be invalid.
Example: mainmap:Daytime Map;C:\files\etc\firstmap.png
altmap:
Adds other maps that can be switched to with the layer control. These maps will be part of the "base layer" options (i.e. background)
Example: altmap:This could be a Nighttime Map;C:\files\etc\secondmap.png
overlay:
Adds maps that can be placed on top of the map that is serving as a base layer. Generally recommended for whitelisted maps that show a few things (caves, diamonds, dungeons, etc.)
Example: overlay:Surface Caves;C:\files\etc\somecaves.png
dualmap:
Adds a map that will be both a base layer and an overlay. Same as using altmap: and overlay: for the same map.
Example: dualmap:Caves;C:\files\etc\morecaves.png
//(comments)
Can comment a line using //
--------------------------
Example Batch File
--------------------------
(You would save this file to something.bat in Windows.)
AlphaVespucci.exe -w4 -obleft -fullname "webtest"
AlphaVespucci.exe -w4 -obleft -sliceupto 8 -fullname "sliced_upto_8"
AlphaVespucci.exe -w4 -obleft -sliceupto 16 -fullname "sliced_upto_16"
AlphaVespucci.exe -w4 -obleft -sliceupto 32 -fullname "sliced_upto_32"
AlphaVespucci.exe -w4 -obleft -sliceupto 48 -fullname "sliced_upto_48"
AlphaVespucci.exe -w4 -obleft -night -fullname "nighttime"
AlphaVespucci.exe -w4 -obleft -cave -fullname "caves"
AlphaVespucci.exe -w4 -obleft -cavelimit 15 -fullname "cavelimit"
AlphaVespucci.exe -w4 -obleft -nowater -fullname "nowater"
AlphaVespucci.exe -w4 -obleft -whitelist "cobblestone,mossy cobblestone" -fullname "whitelist1"
AlphaVespucci.exe -w4 -obleft -whitelist "diamond ore" -fullname "whitelist2"
AlphaVespucci.exe -w4 -obleft -whitelist "clay" -fullname "whitelist3"
Each of these maps would have a different output name, which could be applied to the configuration file below.
--------------------------
Example .conf File
--------------------------
title:World 4 Survival Map
mainmap:Original Map;C:\AlphaVespucci\webtest.png
altmap:Layer 8 Slice;C:\AlphaVespucci\sliced_upto_8.png
altmap:Layer 16 Slice;C:\AlphaVespucci\sliced_upto_16.png
altmap:Layer 32 Slice;C:\AlphaVespucci\sliced_upto_32.png
altmap:Layer 48 Slice;C:\AlphaVespucci\sliced_upto_48.png
altmap:Nighttime;C:\AlphaVespucci\nighttime.png
dualmap:Caves;C:\AlphaVespucci\caves.png
overlay:Surface Caves;C:\AlphaVespucci\cavelimit.png
altmap:Waterless;C:\AlphaVespucci\nowater.png
overlay:Dungeons;C:\AlphaVespucci\whitelist1.png
overlay:Diamond Ores;C:\AlphaVespucci\whitelist2.png
overlay:Clay;C:\AlphaVespucci\whitelist3.png
outputfolder:C:\Base\Testing\Output
The result of this output can be found here:
https://sites.google.com/site/orangexpt ... ects=0&d=1
This would set the -obleft map as the main map, and the base layer can be switched between each of the slices, nighttime, and nowater maps. Overlays would include the cavelimit map, the whitelists, and the caves added again, but this time as an overlay.
"We will absolutely not keep in mind what external mapeditors will have to do to read data from the disk, that makes no sense whatsoever." - Grum
1) Add in similar functionality to cartographer's "Cave-mode"
2) Have both blacklist and whitelist parameters, where blocks with the entered data values are either excluded from the render, or are the only blocks rendered.
I hope you keep up the good work!
Separately, I wasn't actually able to open the PNG from the 290 MB world except via Google Picasa's progress image display thing because it was so large pixelwise, so normally it's recommended to split the image so you can actually view it on your computer.
I mostly meant it was compiled for Windows as some of the settings (looking for %appdata% containing .minecraft, guessing that dragging a folder gives %UserProfile% as the path) are Windows based. The code itself is otherwise written to be cross-platform (using libpng, zlib, and Boost), but I'd like to fix my program structure before I release source code for it. My first goal was to get it working in Windows first, and then test on a Linux distribution I have.
I'm surprised that it does work in WINE, though. What exactly does -o do (it's not part of the options the program has)?
Currently it tries:
Running .exe from console - Working directory = same as console's current directory
Running .exe from batch - Working directory = same as batch
Dropping folder on program icon - Working directory = %userprofile% (C:\Documents and Settings\Username) or (C:\Users\Username); if it can find the desktop it will move the output there.
Going to add some options for regulating this, since default working directories are just all over the place.
@kizzard: I've been aware of that problem since oblique maps worked, but at the moment, the mapper only processes one chunk at a time, so I can't blend two diagonals together yet to hide what's behind them. It's also not really applied as dithering, it's the mapper giving a slightly different color to the block before it reaches the top of a column. Using that keeps the map from looking like a giant green blob, but I can make the color difference (a % of the top color) modifiable as an option. Also, try using -gamma .7 to make the coloring a little bit darker.
As suggested, I am getting around to adding a cave-type option along with black/whitelists (currently debugging it). (Fixing my code dragged on for days.)
Keep up the good work.
And the addition of the cave mode means I no longer need to use any other unreliable programs to make complete maps!
Thankyou so much for this tool.
Check out my Let's Play Series: