[] Enhancements - Improved rpm platform detection and version string - Allow specifying a packaging version - Added option --sqlite3-limit-prescan-query-size to limit the number of records queried simultaneously during a database prescan. Use this if mapping while minetest is running causes minetest to report warnings like: SQLite3 database has been locked for This may happen when mapping relatively large worlds. If minetestmapper keeps the database locked for too long, *and* if the database was modified in that time, minetestmapper will also issue a warning. Bugfixes: - Fixed compilation failure when docutils is not installed - Removed all compiler warnings on Windows When compiling a debug version, some warnings remain (intentionally). - Fixed a compilation failure on Fedora when using postgresql - Fixed failure to compile with gcc 6 - Fixed failure to compile when rpm is not installed (e.g. on non-rpm systems...) - Workaround to allow compilation with clang when using leveldb. This is broken due to libstdc++ ABI incompatibility - Fixed compilation failure on FreeBSD (10.3) using gcc - Detect when package version will not match current git commit id, and refuse to build package with wrong version. [31 May 2016] Features: - Support for postgresql backend added Compatible with two previous unofficial implementations, by ShadowNinja and johnnyjoy. Support for these will be removed in a future version of Minetestmapper. - Support for MSVC/Windows compilation (Thanks to adrido!) Enhancements: - Updated the included colors file with colors for the new tiles that were recently added to the default minetest game. - Improved the scripts and documentation for generating a colors.txt file. - HTML versions of documentation in doc/ is now generated, and included in the different packages. - Documented concurrent minetest & minetestmapper use. - Documented the different geometries reported with --verbose - Mentioned adrido's MinetestmapperGUI in the manual - The option --prescan-world was added to force or disable scanning the entire world (i.e. reading a full blocklist) (useful for postgresql, which doesn't do this by default). - Command-line options are now all case-agnostic wrt their parameters. - Allow nodes to be defined as air-type or ignore-type in colors.txt - Added an option to draw 'ignore'-nodes. - Text drawn on the map is now converted to the ISO8859-2 encoding. Due to limited font support in the drawing library, characters not in the ISO8859-2 set are not supported. Minetestmapper will attempt to render unsupported characters sensibly if it can. Bugfixes: - Fixed possible compilation failure caused by stdint.h - Fixed compilation failure when some database libraries are not installed. Even when support for some of the databases was not enabled, the libraries for those databases still needed to be installed on the system for compilation to succeed. Now the libraries no longer need to be installed if not used. - Fixed backend selection, so that there should no longer be a difference between an automatically selected backend, and the same backend specified manually. (At least one backend-specific (LevelDB-related) option was not taking effect when LevelDB was auto-selected). - Fixed problem causing existing but modified blocks not being found in SQLite3 database when mapping while minetest is running. [10 mar 2015] Enhancements: - Added an optimisation option: --disable-blocklist-prefetch. With this option, minetestmapper does not query the database to make a block list before starting map generation, but directly tries to fetch all possible blocks that might be in the mapped space. This significantly improves speed on large worlds when mapping a small part of them. When mapping a large percentage of the world, or when not adequately limiting the mapping height (--min-y and --max-y), this option can cause **excessively** long mapping times instead. Minetestmapper will try and warn about misuse of this option. If possible, it will also suggest changes to parameters to make better use of this option. - Building instructions were improved - Mimimum and maximum *mapped* Y coordinates are now reported, and can be used as a hint for setting --min-y and --max-y. Blocks containing only air are not included. This is mainly of use when using --disable-blocklist-prefetch - Minetestmapper now prints a message and does not generate an image file if the world is empty (i.e. does not contain any blocks at all). Bugfixes: - Generated packages now contain the documentation, albeit not in HTML format yet. [2 mar 2015] Features: Enhancements: - Performance of the sqlite3 database backend was improved slighty. - Searching for color files on Windows was improved. Minetestmapper will now search the directory where minetestmapper is installed. - The documentation is now included in the generated packages as well. - The user manual and building instructions have been improved. Bugfixes: - Windows builds (using MinGW) are working again - a few incompatibilities have prevented that for some time. Windows compilation has been tested using MinGW as a cross compiler, running on a Linux host. Other: - The option --sqlite-cacheworldrow was tested on a few large worlds, and minetestmapper performed consistently worse with it, than without it. The option was therefore deemed useless, and disabled. It is still recognised though, so that existing scripts will keep working. If anyone has test data available, or other experience, indicating that this option *did* have tangible benefit, please let me know. [20 feb 2015] Features: - A custom major and minor division can now be specified for the scale. - When the major scale division is divisible by 16, block numbers are also included on the scale - Instead of a regular map, a height map can now be generated as well. - It can be generated in shades of a single color, or in multiple colors. - For multiple colors, a height-map colors file is needed. Two sample versions are included: a file which produces nice maps on standard minetest worlds (mapgen v6), while still covering a reasonably large range of heights for other worlds, and a rainbow colors file. - A nodes file is also needed, which specifies which nodes should be considered (and hence, which ones should be ignored) when determining the height of a region of the world. A nodes file is included. - Optionally, a height scale can be drawn at the bottom of the map. - The map can now be generated in a reduced size. This means that it is finally possible to generate a full map of a maximal world, albeit at a lower resolution (at most 1:2 on 64-bit systems and 1:4 on 32-bit systems). Overview maps at 1:16 are another use of this feature. The following scale factors are supported: 1:1, 1:2, 1:4, 1:8 and 1:16. Note that this version of minetestmapper also supports generating a huge map in sections, and pasting them together with an external program. See below. Enhancements: - The left scale was widened, as it didn't accomodate 5-digit coordinates - The --tiles option gained the shorthand values 'block' and 'chunk', which align the tiles with minetest's block and chunk boundaries. The default chunk size is obtained from the world's data files. An option --chunksize was also added to override the default chunk size. - For a stack of only transparent nodes, the topmost height is now used. (instead of the bottom-most height) - The progress indicator was improved - Ice was made slightly transparent in the included colors file - A small number of symbolic colors are now recognised. In addition, they can be modified by mixing in several basic colors (e.g. white to make the color lighter, or black to make it darker) - It is now possible to draw a scale on just the left or the top side. This means that it is possible to generate a map in independent sections, which can be assembled into a large map later (using another application). - The documentation was improved. A separate user manual and a build manual are now included. Bugfixes: - Fixed incorrect shading near 'holes' in the world map. - Fixed wrong color for default:water_source in colors.txt - Parts of the scale are no longer written into the top-left corner of the map, where they would sometimes clobber the axis names or each other. (Some other bugs were fixed as a side-effect of the new features and enhancements. Unfortunately, no good record exists...) [20 jun 2014] Features: - Added the ability to select a method of transparency computation for drawalpha. Three methods are supported when transparency is enabled: - cumulative: The original mode. Colors become slightly darker and more opaque as the number of stacked transparent blocks increases - cumulative-darken: Same as cumulative, except that when the color has become opaque, the color is progressively darkened to visually simulate greater depth. Eventually, this will cause the color to become black. This used to be the default and only method since commit 8faa2d (on 10 april 2014) - average: Transparent blocks always remain transparent, regardless of their stacking height. This means that the bottom of deep oceans, and any artefacts that exist there remains visible. When different types of transparent blocks sit on top of each other, their average color and transparency is used. This method is now the default. Enhancements: - The default lava color has been changed to slightly transparent. - The default water color has been made slightly lighter. - Alternative color definitions are provided for different methods of transparency computation Bugfixes: - Minetestmapper should now build correctly on clang/freebsd [18 jun 2014] Features: - The package generation code for Linux was extensively reworked and extended. Besides two types of .tar.gz packages, .deb and .rpm packages can now be generated as well. In addition, make install now installs packages in an appropriate directory hierarchy. The rpm package has an installation glitch: it tries to create a directory which already exists (system default), causing an installation conflict. This is harmless, but the rpm package must therefore be installed with --replacefiles. Package generation on OSX and Windows platforms remains unchanged. - 'Air' nodes can now have a color. Their color should be defined as fully transparent (alpha = 0), so that they don't obscure underlying blocks. With alpha = 0, air will only be drawn if no other blocks are beneath it. As it comes at a significant performance penalty, this feature is subject to a command-line option: --drawair. Full transparency is supported for other blocks as well, enabled by setting their alpha value to 0. Nodes with alpha value 0 never participate in shading. - A default color can be specified for invisible/undefined nodes in rendered blocks. Normally, such nodes are not drawn, so they have the background color; If a different default color is specified, undefined/invisible nodes in defined blocks get the default color, and can be distinguished from undefined blocks (which still have the regular background color). This option is really only useful to get a better idea of what is actually in the database. - A color file can now include other color files. It is therefore no longer necessary to create an entirely new copy to be able to change one or two colors. Instead, an empty file can be created. In that file, the master copy is simply referred to ('@include '), and then just the desired differences are added to it. It is not only possible to override colors in the new file, but colors can also be undefined if necessary. - Freeminer maps are now supported (and tested). In particular, this means that the new key format used in the leveldb database (a,,) is now supported. Please note that freeminer maps will probably contain a lot of holes and other 'unrendered' areas (e.g. missing plains, making the grey rocks beneath visible; missing water, showing only the bottom of the lake/sea, etc. This is caused by the fact the freeminer does not store unchanged blocks in the database, but prefers to regenerate them later. As minetestmapper can only render what's in the database, this causes the holes etc. Enhancements: - Minetestmapper now has a version number (which is (partially) computed). - A system-wide colors.txt file is now supported as well. Its location is hardcoded at compile-time. - Redis support is now fully tested. - A command-line option to report which colors file(s) are read was added. Bugfixes: - Fixed the bug which caused compilation to fail if CMAKE_BUILD_TYPE was not configured. - Computation of transparency for nodes was improved / fixed - The return value of a redis database operation was not correctly checked. This was fixed. [22 may 2014] General: integrated all (relevant) patches from the minetest/minetestmapper tree (only patches that actually conflict with my work were obviously not merged) Features: - redis backend support (merged from minetest/minetestmapper) The code was ported and compiles. Unfortunately, I wasn't able to test against a redis database yet. - The database backend to use is now obtained from the world.mt file by default - Additional geometrical figures can be drawn on the map Similar to the circles drawn for origin and players. Supported figures are: point, line, rectangle, ellipse (circle), text. Translucency (alpha) is supported, although for ellipses, it does not work as expected (due to a bug in libgd) Enhancements: - Failure to process a command-line option now causes a specific error message. The generic help message is often not very helpful in such a case. - The map origin color and Player colors can now be specified with an alpha value. Unfortunately, due to a bug in libgd, the effect is not what it should be... - The colors.txt file is now also searched for in the world's minetest directory (the directory containing minetest.conf) - if it can be found. - C++11 compilation is enabled if supported. If so, faster datastructures are used. instead of regular map, unordered_map is used where applicable - Colors used with drawalpha can now differ from colors used without drawalpha. Colors.txt can now have 'duplicate' entries for nodes, depending on whether alpha transparency is on or off. With 'drawalpha', a non-opaque color entry (with alpha less than 255) is preferred, whereas without 'drawalpha', a color entry with alpha 255 (or unspecified alpha) is preferred. In all other cases, later entries override former entries in the colors file. The color of water with drawalpha was changed a little. - The sqlite3 backend is now optional and can be disabled during compilation. - Failures parsing or decompressing the block data from the database are now caught and reported. Map generation continues, and aborts only after 100 or more errors. The error messages for decompression failures were also improved. - Geometry can now also be specified using 2 corners of the area (instead of corner and dimensions) - The configuration of tiles location was improved Bugfixes: - When not using a geometry option, *do* generate the smallest possible map - Fix transparency computation - libgd uses 0..127 (not 255) - Using an invalid option name no longer causes a crash, but is reported. - Fixed a crash when the top part of the generated map is empty - The computation of map size with tiles was fixed (height could be miscomputed) [16 apr 2014] General: integrated all (relevant) patches from the minetest/minetestmapper tree (only patches that actually conflict with my work were obviously not merged) Features: - A grid can now be added to the map ( with '--tiles') Gridlines are drawn 'between' map rows/columns, and therefore do not obscure map data. (as a consequence, straight lines may not look straight where they cross gridlines). - Alpha transparency was added (merged from minetest/minetestmapper) Some improvements and fixes were added to make it work as expected - An option was added to print progress information during map generation This prints the z-coordinate of every block-row being rendered. - The map geometry can now be specified with node-granularity The geometry is no longer always rounded away from zero, to a multiple of 16. I.e. requesting a 80x82 map will result in a 80x82 map, not a 80x96 map (or even 96x112). The old behavior (i.e. block-granularity) is still available as well. - The colors.txt file is now searched for in different locations The mapper looks in the world directory for a colors.txt file by default Alternatively, the colors.txt file in $HOME/.minetest is used if it exists. A colors.txt file in the current directory is a last resort case, and causes a warning message. Enhancements: - Colors.txt is no longer included in the executable (merged from minetest/minetestmapper) - Option and colors parsing failures are handled more gracefully Bugfixes: - The computation of origin location and player locations was fixed (off-by-one) - Colors.txt is now parsed line-by-line, and errors are reported. Errors no longer cause the remainder of the file to be silently ignored. - A failure to create the image for lack of memory is now caught. When a lack of memory is to be expected during image generation, a warning is printed before image generation starts. - The handling of an alpha component in colors was fixed [26 mar 2014] Features: - A map of the *requested* size can now be generated (after rounding to blocks) The option --forcegeometry makes sure the map is not reduced in size if the world is smaller than the requested geometry. Rounding to a multiple of the block size (i.e. 16) still happens. Enhancements: - The size of the map is not limited by default By default, only part of the world was included in the map - Performance was significantly improved - An ability to report the sizes of the world and of the map was added Bugfixes: - Fix geometry so that w and h are the map dimensions - Vertical limits handling (--min-y and --max-y) was fixed, and now works as expected - Failure to open the output file is now caught and handled gracefully - The computation of block number bounds was fixed (off-by-one) [16 feb 2014] Forked from sfan5/minetest-mapper-cpp