Program That Allows You to Map Out Minecraft Pixel Art
mcmap
- Isometric map visualizer
Original projection by Simon Rettberg. All the credit goes to him for the idea and vision.
mcmap
is a tool allowing you to create isometric renders of your Minecraft save file.
This project is under heavy development, but compatible with newer versions of Minecraft.
Usage
Bones invocation
mcmap <options> path/to/<your relieve>
The standard save path is unlike betwixt OSes:
- On Linux, it is
$Domicile/.minecraft/saves
; - On macOS, under
~/Library/Application\ Support/minecraft/saves
; - On Windows, the standard path is
%AppData%\.minecraft\saves
. If using Ubuntu on Windows, the path to access the save folder is the following:/mnt/c/<Your user>/AppData/Roaming/.minecraft/saves
.
Native Windows is now supported. Pre-compiled binaries tin can be downloaded from the releases page. For now, the programme tin only be used via terminal
/powershell
on Linux/Macos or Windows respectively.
An experimental GUI is available for Windows and can be downloaded here.
Options
Name | Description |
---|---|
-from X Z | sets the coordinates of the cake to start rendering at |
-to X Z | sets the coordinates of the block to end rendering at |
-centre Ten Z | sets the center of a circular render |
-radius VAL | sets the radius of a circular render |
-min/max VAL | minimum/maximum Y index (height) of blocks to render |
-file NAME | sets the output filename to 'Proper name'; default is ./output.png |
-colors NAME | sets the custom color file to 'Name' |
-nw -ne -se -sw | controls which direction will betoken to the top corner; N-West is default |
-mark x z color | depict a marking at x z of color color in cerise ,green ,blue or white ; tin can be used upwards to 256 times |
-nowater | do not render h2o |
-nobeacons | do not render beacon beams |
-shading | toggle shading (brightens blocks depending on summit) |
-lighting | toggle lighting (brightens blocks depending on light) |
-nether | return the under |
-cease | render the end |
-dim[ension] [namespace:]id | render a dimension by namespaced ID |
-mb VAL | maximum retentivity to use at once (default 3.5G, increase for large maps if you lot take the ram) |
-fragment VAL | render terrain in regions of the specified size (default 1024x1024 blocks) |
-tile VAL | generate split output in square tiles of the specified size (in pixels) (default 0, disabled) |
-padding | padding around the terminal image, in pixels (default: 5) |
-h[elp] | display an pick summary |
-v[erbose] | toggle debug mode |
-dumpcolors | dump a json with all defined colors |
Note: Currently you need both -from
and -to
OR -centre
and -radius
to define bounds.
Tips
mcmap
volition render the terrain in batches using all the threads of your computer. Unfortunately, when those batches merge, some artifacts are created: lines appear in oceans where the merge was operated.
Apply -fragment
with a bigger value to limit the amount of batches and thus of artifacts. This is limited by the bachelor memory, as rendering a whole map iin one go may require 10+ gigabytes of ram.
Employ -fragment
with a lower value to increase performance. Fragments of 256x256 and 512x512 blocks are actually efficient.
Color file format
mcmap
supports irresolute the colors of blocks. To do and then, prepare a custom color file by editing the output of mcmap -dumpcolors
, and pass it as an argument using the -colors
statement.
The accepted format is a json
file, with a specific construction. The root contains a list of block IDs to alter, with the namespace prefix, such as namespace:cake
.
Simple block
To define a colour for a simple, regular block, provide an entry in a JSON file. The color format is a hexadecimal color code. If the alpha is non specified, it is assumed to be opaque.
"namespace:block": #rrggbbaa (or #rrggbb)
Examples:
{ "minecraft:dirt": #7b573b, "minecraft:water ice": #7dadff9f, ... }
Complex block
Some blocks are better looking when fatigued in a specific way. To specify that a block has to be drawn differently, y'all have to provide a json
construction with the following fields:
"namespace:block": { "blazon": <BlockType>, "colour": "#rrggbbaa", "accent": "#rrggbbaa" (Optional) }
The bachelor available block types are:
Proper noun | Appearance | Accent back up |
---|---|---|
Full | Default. Full-block. | No |
Hibernate | Do non return the block entirely. | No |
Clear | This cake is optimized for transparent cake in large quantities, such equally glass and water. The elevation of the block is not rendered, making for a smooth surface when blending blocks together. | No |
Sparse | Will colour only the height of the block underneath. Used for snow, runway, force per unit area plates. | No |
Slab | One-half cake. | No |
Stair | Renders a stair block. | No |
Rod | A slimmer block, used for fences and walls. | No |
Wire | Small-scale dot on the floor, used for tripwire and redstone. | No |
Head | Smaller block, too used for pots, pickles, and mushrooms. | No |
Plant | Used in a diversity of cases, renders a foliage-like block. | No |
UnderwaterPlant | Same as Institute , but the air is h2o-colored. Used for sea-grass and kelp. | No |
Burn down | Burn-similar. Used for fire. | No |
Beam | Internal cake type, used for markers and buoy beams. | No |
Torch | Three pixels in a vertical line, with the height pixel rendered with the emphasis colour. | Yes |
Ore | Block with veins of color. The vein is rendered with the accent color. | Yes |
Grown | Blocks that have a dissimilar layer on top. Grass, nylium, etc. The superlative layer is rendered with the accent color. | Yes |
Log | Directionnal block, to render logs/pillars equally close as possible. The center of the pillar is rendered with the accent colour. Used for logs, pillars, basalt. | Yep |
Lamp | Conditionnal cake, to render redstone lamps. If lit, rendered with accent color. | Yes |
NOTE: Waterlogged blocks will be rendered within water instead of air by default co-ordinate to their blockstates. However, sea-grass and kelp are hardcoded to be underwater and their blockstates won't reflect this, and so they have to be defined as UnderwaterPlants
.
Examples:
{ "minecraft:dirt": "#7b573b", // Total block with solid colour "minecraft:grass_block": { "type": "Grown", // Apply a special block type "accent": "#4c7a40", // Accent supported for `Grown` "color": "#7b573b" }, "minecraft:h2o": { "blazon": "Clear" "color": "#0734c832", // Transparency enabled }, }
Tiled output
Using the -tile
options with a non-cypher value triggers the split output. A binder will be created with the following format:
$ ls output 0 104 15 21 28 34 40 47 53 half-dozen 66 72 79 85 91 98 1 105 xvi 22 29 35 41 48 54 60 67 73 eight 86 92 99 x 106 17 23 3 36 42 49 55 61 68 74 lxxx 87 93 mapinfo.json 100 11 18 24 30 37 43 5 56 62 69 75 81 88 94 101 12 19 25 31 38 44 fifty 57 63 7 76 82 89 95 102 thirteen 2 26 32 39 45 51 58 64 seventy 77 83 nine 96 103 14 20 27 33 4 46 52 59 65 71 78 84 90 97
To view the generated map, open the HTML file in contrib/leaflet/alphabetize.html
. A file dialog will be present; give information technology the above mapinfo.json
to load the map.
Compilation
mcmap
depends on the PNG
and zlib
libraries. Development was made using gcc
version ten, and can be compiled with gcc
8 or later on or clang
10 or later. Configuration is washed using CMake
.
Linux
Getting the libraries depends on your distribution:
- Ubuntu:
apt update && apt install git brand thousand++ libpng-dev cmake
; - Archlinux:
pacman -S --needed git gcc brand libpng cmake
.
Then become the lawmaking and compile:
git clone https://github.com/spoutn1k/mcmap mkdir -p mcmap/build && cd mcmap/build cmake .. brand -j
macOS
In an Apple tree environs, you need a developer toolkit recent enough, with the version of g++ --version
superior to 10.
Using mash
:
brew install libpng libomp git clone https://github.com/spoutn1k/mcmap mkdir -p mcmap/build && cd mcmap/build cmake .. make -j
Windows
mcmap
was successfully compiled for Windows using Visual Studio/Visual C++ and MinGW. Every bit there is no bundle manager on Windows, libpng
and zlib
need to exist compiled/installed manually. If compiling the GUI version, you volition also need Qt
.
Y'all tin can also download and gear up up Ubuntu on windows then the steps are the same as Linux/Ubuntu.
Snapshot support
Snapshots are unsupported by default. One tin enable support by using the SNAPSHOT
CMake
selection. In linux/macOS:
git clone https://github.com/spoutn1k/mcmap mkdir -p mcmap/build && cd mcmap/build cmake .. -DSNAPSHOT=ane make -j
On Windows, this will depend on the software you are using to compile mcmap
.
Troubleshooting
Compilation fails
Bank check thou++ --version
. Supported versions are at to the lowest degree 8.0.0. If your version is non upwardly to date, install a more recent ane using your package director. You volition have access to the new version using g++-Y
with Y being the version number. Compile using CXX=thou++-Y brand
.
Compilation fails complaining near OMP something
Attempt compiling with OPENMP=NOTHXM8 make
. This disables the underlying threading code, so performance may drop.
Output has lines in the ocean
This is due to the merging algorithm. Try increasing the split size with the -fragment
selection, or change the color of the h2o block to utilize the Full
block type to make it less noticeable.
Source: https://github.com/spoutn1k/mcmap