Minetest ============ An InfiniMiner/Minecraft inspired game. Copyright (c) 2010-2013 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 project too: https://github.com/minetest/minetest_game/ See the README.txt in it. Further documentation ---------------------- - Website: http://minetest.net/ - Wiki: http://wiki.minetest.com/ - 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 ----------------- - WASD: move - Space: jump/climb - Shift: sneak/go down - Q: drop item - I: inventory - Mouse: turn/look - Mouse left: dig/punch - Mouse right: place/use - Mouse wheel: select item - Esc: pause menu - T: chat - Settable in the configuration file, see the section below. Paths ------ $bin - Compiled binaries $share - Distributed read-only data $user - User-created modifiable data Windows .zip / RUN_IN_PLACE source: $bin = bin $share = . $user = . Linux installed: $bin = /usr/bin $share = /usr/share/minetest $user = ~/.minetest OS X: $bin = ? $share = ? $user = ~/Library/Application Support/minetest World directory ---------------- - Worlds can be found as separate folders in: $user/worlds/ Configuration file: ------------------- - Default location: $user/minetest.conf - It is created by Minetest when it is ran the first time. - A specific file can be specified on the command line: --config Command-line options: --------------------- - Use --help Compiling on GNU/Linux: ----------------------- Install dependencies. Here's an example for Debian/Ubuntu: $ apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev Download source, extract (this is the URL to the latest of source repository, which might not work at all times): $ wget https://github.com/minetest/minetest/tarball/master -O master.tar.gz $ tar xf master.tar.gz $ cd minetest-minetest-286edd4 (or similar) Download minetest_game (otherwise only the "Minimal development test" game is available) $ cd games/ $ wget https://github.com/minetest/minetest_game/tarball/master -O minetest_game.tar.gz $ tar xf minetest_game.tar.gz $ mv minetest-minetest_game-* minetest_game $ cd .. Build a version that runs directly from the source directory: $ cmake . -DRUN_IN_PLACE=1 $ make -j2 Run it: $ cd bin $ ./minetest - Use cmake . -LH to see all CMake options and their current state - If you want to install it system-wide (or are making a distribution package), you will want to use -DRUN_IN_PLACE=0 - You can build a bare server or a bare client by specifying -DBUILD_CLIENT=0 or -DBUILD_SERVER=0 - You can select between Release and Debug build by -DCMAKE_BUILD_TYPE= - Debug build is slower, but gives much more useful output in a debugger - If you build a bare server, you don't need to have Irrlicht installed. In that case use -DIRRLICHT_SOURCE_DIR=/the/irrlicht/source 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 * MinGW or Visual Studio http://www.mingw.org/ 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 * 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.php - 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 - 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.7.1.zip - 110214175330.zip (or whatever, this is the minetest source) + zlib-1.2.5 - zlib.h + win32 ... + zlib125dll - readme.txt + dll32 ... + irrlicht-1.7.1 + lib + include ... + 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.7.1 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 ----------------- - 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-instal/* Minetest-c55 Copyright (C) 2010-2012 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 "pointedthing.h" #include "serialize.h" #include <sstream> PointedThing::PointedThing(): type(POINTEDTHING_NOTHING), node_undersurface(0,0,0), node_abovesurface(0,0,0), object_id(-1) {} std::string PointedThing::dump() const { std::ostringstream os(std::ios::binary); if(type == POINTEDTHING_NOTHING) { os<<"[nothing]"; } else if(type == POINTEDTHING_NODE) { const v3s16 &u = node_undersurface; const v3s16 &a = node_abovesurface; os<<"[node under="<<u.X<<","<<u.Y<<","<<u.Z << " above="<<a.X<<","<<a.Y<<","<<a.Z<<"]"; } else if(type == POINTEDTHING_OBJECT) { os<<"[object "<<object_id<<"]"; } else { os<<"[unknown PointedThing]"; } return os.str(); } void PointedThing::serialize(std::ostream &os) const { writeU8(os, 0); // version writeU8(os, (u8)type); if(type == POINTEDTHING_NOTHING