Javascript required
Skip to content Skip to sidebar Skip to footer

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.

sample

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.

ebsworthuppossom.blogspot.com

Source: https://github.com/spoutn1k/mcmap