Minetest ======== [![Build Status](https://travis-ci.org/minetest/minetest.svg?branch=master)](https://travis-ci.org/minetest/minetest) [![Translation status](https://hosted.weblate.org/widgets/minetest/-/svg-badge.svg)](https://hosted.weblate.org/engage/minetest/?utm_source=widget) [![License](https://img.shields.io/badge/license-LGPLv2.1%2B-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) An InfiniMiner/Minecraft inspired game. Copyright (c) 2010-2018 Perttu Ahola and contributors (see source file comments and the version control log) In case you downloaded the source code: --------------------------------------- If you downloaded the Minetest Engine source code in which this file is contained, you probably want to download the [Minetest Game](https://github.com/minetest/minetest_game/) project too. See its README.txt for more information. Further documentation ---------------------- - Website: http://minetest.net/ - Wiki: http://wiki.minetest.net/ - Developer wiki: http://dev.minetest.net/ - Forum: http://forum.minetest.net/ - Github: https://github.com/minetest/minetest/ - doc/ directory of source distribution This game is not finished -------------------------- - Don't expect it to work as well as a finished game will. - Please report any bugs. When doing that, debug.txt is useful. Default controls ---------------- All controls are re-bindable using settings. Some can be changes in the key config dialog in the settings tab. | Button | Action | |-------------------------------|----------------------------------------------------------------| | Move mouse | Look around | | W, A, S, D | Move | | Space | Jump/move up | | Shift | Sneak/move down | | Q | Drop itemstack | | Shift + Q | Drop single item | | Left mouse button | Dig/punch/take item | | Right mouse button | Place/use | | Shift + right mouse button | Build (without using) | | I | Inventory menu | | Mouse wheel | Select item | | 0-9 | Select item | | Z | Zoom (needs zoom privilege) | | T | Chat | | / | Command | | Esc | Pause menu/abort/exit (pauses only singleplayer game) | | R | Enable/disable full range view | | + | Increase view range | | - | Decrease view range | | K | Enable/disable fly mode (needs fly privilege) | | J | Enable/disable fast mode (needs fast privilege) | | H | Enable/disable noclip mode (needs noclip privilege) | | E | Move fast in fast mode | | F1 | Hide/show HUD | | F2 | Hide/show chat | | F3 | Disable/enable fog | | F4 | Disable/enable camera update (Mapblocks are not updated anymore when disabled, disabled in release builds) | | F5 | Cycle through debug info screens | | F6 | Cycle through profiler info screens | | F7 | Cycle through camera modes | | F8 | Toggle cinematic mode | | F9 | Cycle through minimap modes /* Minetest Copyright (C) 2010-2018 celeron55, Perttu Ahola <celeron55@gmail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "hud.h" #include <cmath> const struct EnumString es_HudElementType[] = { {HUD_ELEM_IMAGE, "image"}, {HUD_ELEM_TEXT, "text"}, {HUD_ELEM_STATBAR, "statbar"}, {HUD_ELEM_INVENTORY, "inventory"}, {HUD_ELEM_WAYPOINT, "waypoint"}, {HUD_ELEM_IMAGE_WAYPOINT, "image_waypoint"}, {HUD_ELEM_COMPASS, "compass"}, {HUD_ELEM_MINIMAP, "minimap"}, {0, NULL}, }; const struct EnumString es_HudElementStat[] = { {HUD_STAT_POS, "position"}, {HUD_STAT_POS, "pos"}, /* Deprecated, only for compatibility's sake */ {HUD_STAT_NAME, "name"}, {HUD_STAT_SCALE, "scale"}, {HUD_STAT_TEXT, "text"}, {HUD_STAT_NUMBER, "number"}, {HUD_STAT_ITEM, "item"}, {HUD_STAT_ITEM, "precision"}, {HUD_STAT_DIR, "direction"}, {HUD_STAT_ALIGN, "alignment"}, {HUD_STAT_OFFSET, "offset"}, {HUD_STAT_WORLD_POS, "world_pos"}, {HUD_STAT_SIZE, "size"}, {HUD_STAT_Z_INDEX, "z_index"}, {HUD_STAT_TEXT2, "text2"}, {HUD_STAT_STYLE, "style"}, {0, NULL}, }; const struct EnumString es_HudBuiltinElement[] = { {HUD_FLAG_HOTBAR_VISIBLE, "hotbar"}, {HUD_FLAG_HEALTHBAR_VISIBLE, "healthbar"}, {HUD_FLAG_CROSSHAIR_VISIBLE, "crosshair"}, {HUD_FLAG_WIELDITEM_VISIBLE, "wielditem"}, {HUD_FLAG_BREATHBAR_VISIBLE, "breathbar"}, {HUD_FLAG_MINIMAP_VISIBLE, "minimap"}, {HUD_FLAG_MINIMAP_RADAR_VISIBLE, "minimap_radar"}, {HUD_FLAG_BASIC_DEBUG, "basic_debug"}, {0, NULL}, }; - Only when building with Gettext on Windows; path to libintl.dll.a GETTEXT_MSGFMT - Only when building with Gettext; path to msgfmt/msgfmt.exe IRRLICHT_DLL - Only on Windows; path to Irrlicht.dll IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll PostgreSQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h POSTGRESQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so MINGWM10_DLL - Only if compiling with MinGW; path to mingwm10.dll OGG_DLL - Only if building with sound on Windows; path to libogg.dll OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib OPENGLES2_INCLUDE_DIR - Only if building with GLES; directory that contains gl2.h OPENGLES2_LIBRARY - Only if building with GLES; path to libGLESv2.a/libGLESv2.so SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib VORBISFILE_DLL - Only if building with sound on Windows; path to libvorbisfile-3.dll VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a VORBIS_DLL - Only if building with sound on Windows; path to libvorbis-0.dll VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a XXF86VM_LIBRARY - Only on Linux; path to libXXf86vm.a/libXXf86vm.so ZLIB_DLL - Only on Windows; path to zlib1.dll ZLIBWAPI_DLL - Only on Windows; path to zlibwapi.dll ZLIB_INCLUDE_DIR - Directory that contains zlib.h ZLIB_LIBRARY - Path to libz.a/libz.so/zlibwapi.lib ### Compiling on Windows * This section is outdated. In addition to what is described here: * In addition to minetest, you need to download minetest_game. * If you wish to have sound support, you need libogg, libvorbis and libopenal * You need: * CMake: http://www.cmake.org/cmake/resources/software.html * A compiler * MinGW: http://www.mingw.org/ * or Visual Studio: http://msdn.microsoft.com/en-us/vstudio/default * Irrlicht SDK 1.7: http://irrlicht.sourceforge.net/downloads.html * Zlib headers (zlib125.zip) http://www.winimage.com/zLibDll/index.html * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip): http://www.winimage.com/zLibDll/index.html * SQLite3 headers and library https://www.sqlite.org/download.html * Optional: gettext library and tools: http://gnuwin32.sourceforge.net/downlinks/gettext.php * This is used for other UI languages. Feel free to leave it out. * And, of course, Minetest: http://minetest.net/download * Steps: * Select a directory called DIR hereafter in which you will operate. * Make sure you have CMake and a compiler installed. * Download all the other stuff to DIR and extract them into there. ("extract here", not "extract to packagename/") * NOTE: zlib125dll.zip needs to be extracted into zlib125dll * NOTE: You need to extract sqlite3.h & sqlite3ext.h from sqlite3 source and sqlite3.dll & sqlite3.def from sqlite3 precompiled binaries into "sqlite3" directory, and generate sqlite3.lib using command "LIB /DEF:sqlite3.def /OUT:sqlite3.lib" * All those packages contain a nice base directory in them, which should end up being the direct subdirectories of DIR. * You will end up with a directory structure like this (+=dir, -=file): ----------------- + DIR * zlib-1.2.5.tar.gz * zlib125dll.zip * irrlicht-1.8.3.zip * sqlite-amalgamation-3130000.zip (SQLite3 headers) * sqlite-dll-win32-x86-3130000.zip (SQLite3 library for 32bit system) * 110214175330.zip (or whatever, this is the minetest source) + zlib-1.2.5 * zlib.h + win32 ... + zlib125dll * readme.txt + dll32 ... + irrlicht-1.8.3 + lib + include ... + sqlite3 sqlite3.h sqlite3ext.h sqlite3.lib sqlite3.dll + gettext (optional) +bin +include +lib + minetest + src + doc * CMakeLists.txt ... ----------------- * Start up the CMake GUI * Select "Browse Source..." and select DIR/minetest * Now, if using MSVC: * Select "Browse Build..." and select DIR/minetest-build * Else if using MinGW: * Select "Browse Build..." and select DIR/minetest * Select "Configure" * Select your compiler * It will warn about missing stuff, ignore that at this point. (later don't) * Make sure the configuration is as follows (note that the versions may differ for you): BUILD_CLIENT [X] BUILD_SERVER [ ] CMAKE_BUILD_TYPE Release CMAKE_INSTALL_PREFIX DIR/minetest-install IRRLICHT_SOURCE_DIR DIR/irrlicht-1.8.3 RUN_IN_PLACE [X] WARN_ALL [ ] ZLIB_DLL DIR/zlib125dll/dll32/zlibwapi.dll ZLIB_INCLUDE_DIR DIR/zlib-1.2.5 ZLIB_LIBRARIES DIR/zlib125dll/dll32/zlibwapi.lib GETTEXT_BIN_DIR DIR/gettext/bin GETTEXT_INCLUDE_DIR DIR/gettext/include GETTEXT_LIBRARIES DIR/gettext/lib/intl.lib GETTEXT_MSGFMT DIR/gettext/bin/msgfmt * If CMake complains it couldn't find SQLITE3, choose "Advanced" box on the right top corner, then specify the location of SQLITE3_INCLUDE_DIR and SQLITE3_LIBRARY manually. * If you want to build 64-bit minetest, you will need to build 64-bit version of irrlicht engine manually, as only 32-bit pre-built library is provided. * Hit "Configure" * Hit "Configure" once again 8) * If something is still coloured red, you have a problem. * Hit "Generate" If using MSVC: * Open the generated minetest.sln * The project defaults to the "Debug" configuration. Make very sure to select "Release", unless you want to debug some stuff (it's slower and might not even work at all) * Build the ALL_BUILD project * Build the INSTALL project * You should now have a working game with the executable in DIR/minetest-install/bin/minetest.exe * Additionally you may create a zip package by building the PACKAGE project. If using MinGW: * Using the command line, browse to the build directory and run 'make' (or mingw32-make or whatever it happens to be) * You may need to copy some of the downloaded DLLs into bin/, see what running the produced executable tells you it doesn't have. * You should now have a working game with the executable in DIR/minetest/bin/minetest.exe ### Bat script to build Windows releases of Minetest This is how we build Windows releases. set sourcedir=%CD% set installpath="C:\tmp\minetest_install" set irrlichtpath="C:\tmp\irrlicht-1.7.2" set builddir=%sourcedir%\bvc10 mkdir %builddir% pushd %builddir% cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=TRUE -DCMAKE_INSTALL_PREFIX=%installpath% if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail popd echo Finished. exit /b 0 :fail popd echo Failed. exit /b 1 Version scheme -------------- Minetest doesn't follow semver. Instead, we do something roughly similar to 0.major.minor. Since 0.5.0-dev and 0.4.17-dev, the dev notation refers to the next release, ie: 0.5.0-dev is the development version leading to 0.5.0. Prior to that, we used oldversion-dev.