Git Product home page Git Product logo

multicraft's Introduction

MultiCraft Open Source

Build Status License License: CC BY-SA 4.0

MultiCraft Open Source is a free open-source voxel game engine with easy modding and game creation.

MultiCraft is based on the Minetest project, which is developed by a number of contributors.

Copyright Š 2014-2023 Maksim Gamarnik [MoNTE48] [email protected] & MultiCraft Development Team.

License

Special thanks to JetBrains for their support of our community!

Table of Contents

  1. Further Documentation
  2. Default Controls
  3. Paths
  4. Configuration File
  5. Command-line Options
  6. Compiling
  7. Docker
  8. Version Scheme

Further documentation

Default controls

All controls are re-bindable using settings. Some can be changed 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)
P Enable/disable pitch move mode
J Enable/disable fast mode (needs fast privilege)
H Enable/disable noclip mode (needs noclip privilege)
E Move fast in fast mode
C Cycle through camera modes
V Cycle through minimap modes
Shift + V Change minimap orientation
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 information screens
F6 Cycle through profiler info screens
F10 Show/hide console
F12 Take screenshot

Paths

Locations:

  • bin - Compiled binaries
  • share - Distributed read-only data
  • user - User-created modifiable data

Where each location is on each platform:

  • Windows .zip / RUN_IN_PLACE source:
    • bin = bin
    • share = .
    • user = .
  • Windows installed:
    • bin = C:\Program Files\MultiCraft\bin (Depends on the install location)
    • share = C:\Program Files\MultiCraft (Depends on the install location)
    • user = %APPDATA%\MultiCraft
  • Linux installed:
    • bin = /usr/bin
    • share = /usr/share/multicraft
    • user = ~/.multicraft
  • macOS:
    • bin = Contents/MacOS
    • share = Contents/Resources
    • user = Contents/User OR ~/Library/Application Support/multicraft

Worlds can be found as separate folders in: user/worlds/

Configuration file

  • Default location: user/multicraft.conf
  • This file is created by closing MultiCraft for the first time.
  • A specific file can be specified on the command line: --config <path-to-file>
  • A run-in-place build will look for the configuration file in location_of_exe/../multicraft.conf and also location_of_exe/../../multicraft.conf

Command-line options

  • Use --help

Compiling

Compiling on GNU/Linux

Dependencies

Dependency Version Commentary
GCC 4.9+ Can be replaced with Clang 3.4+
CMake 2.6+
Irrlicht 1.7.3+
SQLite3 3.0+
LuaJIT 2.0+ Bundled Lua 5.1 is used if not present
GMP 5.0.0+ Bundled mini-GMP is used if not present
JsonCPP 1.0.0+ Bundled JsonCPP is used if not present

For Debian/Ubuntu users:

sudo apt install g++ make libc6-dev libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev

For Fedora users:

sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel

For Arch users:

sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm irrlicht libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses

For Alpine users:

sudo apk add build-base irrlicht-dev cmake bzip2-dev libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev

Download

You can install Git for easily keeping your copy up to date. If you don’t want Git, read below on how to get the source without Git. This is an example for installing Git on Debian/Ubuntu:

sudo apt install git

For Fedora users:

sudo dnf install git

Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:

git clone --depth 1 https://github.com/MultiCraft/MultiCraft.git
cd MultiCraft

Download source, without using Git:

wget https://github.com/MultiCraft/MultiCraft/archive/main.tar.gz
tar xf main.tar.gz
cd MultiCraft-main

Build

Build a version that runs directly from the source directory:

cmake . -DRUN_IN_PLACE=TRUE
make -j$(nproc)

Run it:

./bin/multicraft
  • 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=FALSE.
  • You can build a bare server by specifying -DBUILD_SERVER=TRUE.
  • You can disable the client build by specifying -DBUILD_CLIENT=FALSE.
  • You can select between Release and Debug build by -DCMAKE_BUILD_TYPE=<Debug or Release>.
    • 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.

CMake options

General options and their default values:

BUILD_CLIENT=TRUE          - Build MultiCraft client
BUILD_SERVER=FALSE         - Build MultiCraft server
BUILD_UNITTESTS=TRUE       - Build unittest sources
CMAKE_BUILD_TYPE=Release   - Type of build (Release vs. Debug)
    Release                - Release build
    Debug                  - Debug build
    SemiDebug              - Partially optimized debug build
    RelWithDebInfo         - Release build with debug information
    MinSizeRel             - Release build with -Os passed to compiler to make executable as small as possible
ENABLE_CURL=ON             - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
ENABLE_CURSES=ON           - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
ENABLE_FREETYPE=ON         - Build with FreeType2; Allows using TTF fonts
ENABLE_GETTEXT=ON          - Build with Gettext; Allows using translations
ENABLE_GLES=OFF            - Build for OpenGL ES instead of OpenGL (requires support by Irrlicht)
ENABLE_LEVELDB=ON          - Build with LevelDB; Enables use of LevelDB map backend
ENABLE_POSTGRESQL=ON       - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended)
ENABLE_REDIS=ON            - Build with libhiredis; Enables use of Redis map backend
ENABLE_SPATIAL=ON          - Build with LibSpatial; Speeds up AreaStores
ENABLE_SOUND=ON            - Build with OpenAL, libogg & libvorbis; in-game sounds
ENABLE_LUAJIT=ON           - Build with LuaJIT (much faster than non-JIT Lua)
ENABLE_PROMETHEUS=OFF      - Build with Prometheus metrics exporter (listens on tcp/30000 by default)
ENABLE_SYSTEM_GMP=ON       - Use GMP from system (much faster than bundled mini-gmp)
ENABLE_SYSTEM_JSONCPP=OFF  - Use JsonCPP from system
OPENGL_GL_PREFERENCE=LEGACY - Linux client build only; See CMake Policy CMP0072 for reference
RUN_IN_PLACE=FALSE         - Create a portable install (worlds, settings etc. in current directory)
ENABLE_UPDATE_CHECKER=TRUE - Whether to enable update checks by default
USE_GPROF=FALSE            - Enable profiling using GProf
VERSION_EXTRA=             - Text to append to version (e.g. VERSION_EXTRA=foobar -> MultiCraft 0.4.9-foobar)
ENABLE_TOUCH=FALSE         - Enable Touchscreen support (requires support by IrrlichtMt)

Library specific options:

BZIP2_INCLUDE_DIR               - Linux only; directory where bzlib.h is located
BZIP2_LIBRARY                   - Linux only; path to libbz2.a/libbz2.so
CURL_DLL                        - Only if building with cURL on Windows; path to libcurl.dll
CURL_INCLUDE_DIR                - Only if building with cURL; directory where curl.h is located
CURL_LIBRARY                    - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
EGL_INCLUDE_DIR                 - Only if building with GLES; directory that contains egl.h
EGL_LIBRARY                     - Only if building with GLES; path to libEGL.a/libEGL.so
FREETYPE_INCLUDE_DIR_freetype2  - Only if building with FreeType 2; directory that contains an freetype directory with files such as ftimage.h in it
FREETYPE_INCLUDE_DIR_ft2build   - Only if building with FreeType 2; directory that contains ft2build.h
FREETYPE_LIBRARY                - Only if building with FreeType 2; path to libfreetype.a/libfreetype.so/freetype.lib
FREETYPE_DLL                    - Only if building with FreeType 2 on Windows; path to libfreetype.dll
GETTEXT_DLL                     - Only when building with gettext on Windows; path to libintl3.dll
GETTEXT_ICONV_DLL               - Only when building with gettext on Windows; path to libiconv2.dll
GETTEXT_INCLUDE_DIR             - Only when building with gettext; directory that contains iconv.h
GETTEXT_LIBRARY                 - 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/libpq.lib
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
ZLIB_INCLUDE_DIR                - Directory that contains zlib.h
ZLIB_LIBRARY                    - Path to libz.a/libz.so/zlib.lib

Compiling on Windows

Requirements

Compiling and installing the dependencies

It is highly recommended to use vcpkg as package manager.

a) Using vcpkg to install dependencies

After you successfully built vcpkg you can easily install the required libraries:

vcpkg install irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows
  • curl is optional, but required to read the serverlist, curl[winssl] is required to use the content store.
  • openal-soft, libvorbis and libogg are optional, but required to use sound.
  • freetype is optional, it allows true-type font rendering.
  • luajit is optional, it replaces the integrated Lua interpreter with a faster just-in-time interpreter.
  • gmp and jsoncpp are optional, otherwise the bundled versions will be compiled

There are other optional libraries, but they are not tested if they can build and link correctly.

Use --triplet to specify the target triplet, e.g. x64-windows or x86-windows.

b) Compile the dependencies on your own

This is outdated and not recommended. Follow the instructions on https://dev.minetest.net/Build_Win32_Minetest_including_all_required_libraries#VS2012_Build

Compile MultiCraft

a) Using the vcpkg toolchain and CMake GUI

  1. Start up the CMake GUI
  2. Select Browse Source... and select DIR/multicraft
  3. Select Browse Build... and select DIR/multicraft-build
  4. Select Configure
  5. Choose the right visual Studio version and target platform. It has to match the version of the installed dependencies
  6. Choose Specify toolchain file for cross-compiling
  7. Click Next
  8. Select the vcpkg toolchain file e.g. D:/vcpkg/scripts/buildsystems/vcpkg.cmake
  9. Click Finish
  10. Wait until cmake have generated the cash file
  11. If there are any errors, solve them and hit Configure
  12. Click Generate
  13. Click Open Project
  14. Compile MultiCraft inside Visual studio.

b) Using the vcpkg toolchain and the commandline

Run the following script in PowerShell:

cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF -DENABLE_SYSTEM_JSONCPP=ON
cmake --build . --config Release

Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct.

c) Using your own compiled libraries

This is outdated and not recommended

Follow the instructions on https://dev.minetest.net/Build_Win32_Minetest_including_all_required_libraries#VS2012_Build

Windows Installer using WiX Toolset

Requirements:

In the Visual Studio 2017 Installer select Optional Features -> WiX Toolset.

Build the binaries as described above, but make sure you unselect RUN_IN_PLACE.

Open the generated project file with Visual Studio. Right-click Package and choose Generate. It may take some minutes to generate the installer.

multicraft's People

Contributors

blockmen avatar celeron55 avatar clobberxd avatar desour avatar ekdohibs avatar erlehmann avatar est31 avatar hybriddog avatar kahrl avatar kilbith avatar kwolekr avatar lhofhansl avatar luk3yx avatar monte48 avatar nerzhul avatar numberzero avatar oblomov avatar paramat avatar pilzadam avatar proller avatar realbadangel avatar red-001 avatar rubenwardy avatar sfan5 avatar shadowninja avatar smalljoker avatar sofar avatar speedprog avatar wuzzy2 avatar zeno- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multicraft's Issues

crash, when I don't know - mod default, item_entity.lua:27

Minetest version
MultiCraft 2.0.0 (Linux)
OS / Hardware

Operating system: Ubuntu 18.04
CPU: I7-4770

Summary

no idea ...
I sleep at this time, and no clue

Steps to reproduce
2021-09-12 04:11:19: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'default' in callback luaentity_Step(): ...multicraft/games/BrainCraft/mods/default/item_entity.lua:27: attempt to index local 'p' (a nil value)
2021-09-12 04:11:19: ERROR[Main]: stack traceback:
2021-09-12 04:11:19: ERROR[Main]: 	...multicraft/games/BrainCraft/mods/default/item_entity.lua:27: in function 'burn_up'
2021-09-12 04:11:19: ERROR[Main]: 	...multicraft/games/BrainCraft/mods/default/item_entity.lua:58: in function 'func'
2021-09-12 04:11:19: ERROR[Main]: 	...al/share/multicraft/builtin/profiler/instrumentation.lua:106: in function <...al/share/multicraft/builtin/profiler/instrumentation.lua:100>

[crash bug] multicraft's implementation of "fake_player" causes crash when 'pipeworks:dispenser_off' is triggered w/ a blinky plant

Minetest version
1hit@EdgyNet:~$ multicraft/bin/multicraftserver --version
MultiCraft 2.0.0 (Linux)
Using LuaJIT 2.1.0-beta3
BUILD_TYPE=Release
RUN_IN_PLACE=1
USE_CURL=1
STATIC_SHAREDIR="."
OS / Hardware

Linux EdgyNet 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64

GPU model:
OpenGL version:

Summary

See mt-mods/pipeworks#9 for details.

IIUC, this bug would allow anyone to poison a mapblock on any multicraft-2 server that also runs the pipeworks mod.

The emergency mitigation is to disable the "dispenser" in the worldmods/pipeworks/defaults.lua file.

Steps to reproduce

Triggered on EdenLost, today, using the latest pipeworks.

  1. This was done as an ADMIN player w/ full creative privs. IDK if this matters.
  2. Place a "pipeworks:dispenser".
  3. Place into the dispenser a stack of "pipeworks:deployer_off" (other nodes might work).
  4. Place an adjustable blinky plant next to the dispenser. (regular blinky might work?)
  5. The item ejects, but the server then crashes.
ServerError: AsyncErr: environment_Step: Runtime error from mod 'default' in callback environment_Step(): /home/1hit/multicraft/bin/../builtin/game/item.lua:544: attempt to call method 'get_player_velocity' (a nil value)
stack traceback:
        /home/1hit/multicraft/bin/../builtin/game/item.lua:544: in function 'on_drop'
        /home/1hit/worlds/world/worldmods/pipeworks/wielder.lua:457: in function 'act'
        /home/1hit/worlds/world/worldmods/pipeworks/wielder.lua:111: in function 'wielder_on'
        /home/1hit/worlds/world/worldmods/pipeworks/wielder.lua:147: in function 'old_action_on'
        ...1hit/worlds/world/worldmods/mesecons_ratelimiter/api.lua:36: in function 'action_on'
        ...it/worlds/world/worldmods/mesecons/mesecons/internal.lua:192: in function <...it/worlds/world/worldmods/mesecons/mesecons/internal.lua:185>
        ...worlds/world/worldmods/mesecons/mesecons/actionqueue.lua:137: in function 'old_execute'
        ...1hit/worlds/world/worldmods/mesecons_debug/overrides.lua:7: in function 'execute'
        ...worlds/world/worldmods/mesecons/mesecons/actionqueue.lua:111: in function <...worlds/world/worldmods/mesecons/mesecons/actionqueue.lua:73>
        /home/1hit/multicraft/bin/../builtin/game/register.lua:441: in function </home/1hit/multicraft/bin/../builtin/game/register.lua:425>

Players have 0 hunger when joining first time

Minetest version
game : minetest-game
commit : multicraft2 - 8c2db140cebfdaa2e8f4468f6d611c1d71a4dbb8
OS / Hardware

Operating system: Debian

Summary

Players joining first time has 0 hunger as a result they lose health and die within few seconds

Steps to reproduce

enable_hunger=true in multicraft.conf
Try joining as new player, you will have zero hunger and you will take damage.

Possible fix and some suggestions

Minetest never shipped hunger/stamina in core i believe.
Try declaring a register_on_newplayer in hunger.lua in builtin

0 fps after a short time on IOS multicraft and PC minetest v=0.4.17.1

Minetest version
MultiCraft 2.0.0 (Linux)
Using Irrlicht 1.8.4
BUILD_TYPE=Release
RUN_IN_PLACE=1
USE_GETTEXT=1
USE_SOUND=1
USE_CURL=1
USE_FREETYPE=1
USE_LUAJIT=0
STATIC_SHAREDIR="."
STATIC_LOCALEDIR="locale"
git hash:
4fbfe9443b09ff35fe1c7cd9e7017ac8cbe418cc
OS / Hardware

Operating system:

Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal

CPU:
server:
model name : Intel(R) Core(TM)2 Quad CPU Q6700 @ 2.66GHz

GPU model: multiple (clients)
OpenGL version:

Summary

PC minetest 0.4.17.1 and IOS multicraft clients are experiencing massive fps drop leading to the game going unresponsive.

PC minetest 5.4 has none such issue on the same hardware and OS

PC minetest 0.4.17.1 complains about:
2021-06-09 20:59:28: INFO[Main]: collisionMoveSimple: maximum step interval exceeded, lost movement details!
Not sure if relevent.

Steps to reproduce

I'm trying to run my potatoland world on multicraft. This world has a LOT of mods. Server wise it seems to run great and current minetest PC client runs smooth on it but most of my players are mobile multicraft players.

Ubuntu 21.10: Building multicraft server only: /MultiCraft/src/porting.cpp:966:16: error: ‘posix_spawnp’ was not declared in this scope; did you mean ‘posix_openpt’?

Minetest version
marc@multicraft-srv:~/MultiCraft$ minetestserver --version
Minetest 5.3.0 (Linux)
BUILD_TYPE=Release
RUN_IN_PLACE=0
USE_GETTEXT=1
USE_SOUND=1
USE_CURL=1
USE_FREETYPE=1
USE_LUAJIT=1
STATIC_SHAREDIR="/usr/share/games/minetest"
STATIC_LOCALEDIR="/usr/share/locale"
marc@multicraft-srv:~/MultiCraft$

--> might be the version installed via apt.
Additionally i got the git sources into the multicraft dir via:

git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
OS / Hardware

Operating system:

marc@multicraft-srv:~/MultiCraft$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 21.10
Release:	21.10
Codename:	impish

GPU model:
OpenGL version:

Summary

Can't build the Multicraft server

Steps to reproduce

i tried to build the Multicraft server, but i end up with this error:

/home/marc/MultiCraft/src/porting.cpp:966:16: error: ‘posix_spawnp’ was not declared in this scope; did you mean ‘posix_openpt’?
  966 |         return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0;
      |                ^~~~~~~~~~~~
      |                posix_openpt
make[2]: *** [src/CMakeFiles/MultiCraftserver.dir/build.make:1655: src/CMakeFiles/MultiCraftserver.dir/porting.cpp.o] Error 1

Full output:

marc@multicraft-srv:~/MultiCraft$ cmake . -DRUN_IN_PLACE=TRUE -DBUILD_SERVER=TRUE -DBUILD_CLIENT=FALSE
-- *** Will build version 1.15.6 ***
-- Using GMP provided by system.
-- Using bundled JSONCPP library.
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (LuaJit)
  does not match the name of the calling package (LuaJIT).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/Modules/FindLuaJIT.cmake:46 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/Modules/FindLua.cmake:11 (find_package)
  CMakeLists.txt:195 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Using LuaJIT provided by system.
-- cURL support enabled.
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (GetText)
  does not match the name of the calling package (GettextLib).  This can lead
  to problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/Modules/FindGettextLib.cmake:58 (find_package_handle_standard_args)
  src/CMakeLists.txt:64 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- GetText enabled; locales found: be;ca;cs;da;de;dv;eo;es;et;fr;he;hu;id;it;ja;jbo;ko;ky;lt;ms;nb;nl;pl;pt;pt_BR;ro;ru;sl;sr_Cyrl;sv;sw;tr;uk;zh_CN;zh_TW
-- Freetype enabled.
-- ncurses console enabled.
-- PostgreSQL backend enabled
-- PostgreSQL includes: /usr/include/postgresql;/usr/include/postgresql/13/server
-- LevelDB backend enabled.
-- Redis not found!
-- SpatialIndex AreaStore backend enabled.
-- Locale blacklist applied; Locales used: ca;cs;da;de;dv;eo;es;et;fr;hu;id;it;ja;jbo;lt;ms;nb;nl;pl;pt;pt_BR;ro;ru;sl;sr_Cyrl;sv;sw;tr;uk
-- Configuring done
-- Generating done
-- Build files have been written to: /home/marc/MultiCraft


marc@multicraft-srv:~/MultiCraft$ make -j$(nproc)
[  2%] Built target luachacha
[  2%] Built target jsoncpp
[  3%] Built target luautf8
[  3%] mo update
[ 31%] Built target translations
[ 31%] Built target GenerateVersion
[ 33%] Building CXX object src/CMakeFiles/MultiCraftserver.dir/remoteplayer.cpp.o
[ 33%] Building CXX object src/CMakeFiles/MultiCraftserver.dir/raycast.cpp.o
[ 33%] Building CXX object src/CMakeFiles/MultiCraftserver.dir/porting.cpp.o
[ 33%] Building CXX object src/CMakeFiles/MultiCraftserver.dir/reflowscan.cpp.o
[ 34%] Building CXX object src/CMakeFiles/MultiCraftserver.dir/rollback_interface.cpp.o
/home/marc/MultiCraft/src/porting.cpp: In function ‘bool porting::open_uri(const string&)’:
/home/marc/MultiCraft/src/porting.cpp:966:16: error: ‘posix_spawnp’ was not declared in this scope; did you mean ‘posix_openpt’?
  966 |         return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0;
      |                ^~~~~~~~~~~~
      |                posix_openpt
make[2]: *** [src/CMakeFiles/MultiCraftserver.dir/build.make:1655: src/CMakeFiles/MultiCraftserver.dir/porting.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:503: src/CMakeFiles/MultiCraftserver.dir/all] Error 2
make: *** [Makefile:171: all] Error 2
marc@multicraft-srv:~/MultiCraft$

Any idea?

crash, when an existing logged in user log in again

Minetest version
multicraft 2.0.0 (Linux)
OS / Hardware

Operating system: Ubuntu 18.04
CPU: I7-4770

Summary

It seams, someone try to login with same name then another existing user, or try to login with same own nick same time.
As I was not there at this time, I couldn't see my own report on admin client get a pre-join info who try to login.
Happened now 2 or 3 times, and as I know under 5.2.0 that made NOT a crash, as sometime I did the same mistake, try login with Thailand, but was logged in already.
(translation short:
It seems as if someone is trying to copy another user who is already logged in or to log in twice with his own user name)

Steps to reproduce

2021-09-11 18:36:27: ERROR[Server]: TOSERVER_CLIENT_READY stage 2 client init failed peer_id=150
...
2021-09-11 23:55:31: ERROR[Main]: Failed to finalize m_stmt_create: UNIQUE constraint failed: auth.name
2021-09-11 23:55:32: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod '' in callback createAuth(): : UNIQUE constraint failed: auth.name
2021-09-11 23:55:32: ERROR[Main]: stack traceback:
2021-09-11 23:55:32: ERROR[Main]: [C]: at 0x5567448a6d00

Problem when hosting server

Hi!
I hosted a MultiCraft server and installed some mods.
when I started it via cmd line, the address was 0.0.0.0. when I tried to give the address to someone it didn't load the server how do I change the address.
Thanks!

No singleplayer in the Android build?

I just git cloned the source repository and built it for Android. (also i inserted #define _IRR_DEBUG_BREAK_IF(x) assert(x); into src/irrlicht_changes/irrUString.h due to a build error).
It did build fine (although it had some warnings), but when I actually loaded the client, there was no singleplayer tab. Only multiplayer. Is this a known thing, or do I have incorrect build settings?

undefined reference to `irr::video::IdentityMaterial'

Minetest version
i do not build minetest.. is multicraft! or what? licence problem?
OS / Hardware

Operating system: Debian
CPU: Xeon gold 4500 120 cores

GPU model: Radeon Xpress 400 (integrated)
OpenGL version: 3.0

Summary

Readme said IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib but that is incorrect.. must said IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib including filename so if only path are defined will raise this error: (i guess)

undefined reference to `irr::video::IdentityMaterial'
Steps to reproduce

configuring with IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib but that is incorrect.. must said IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib including filename

MultiCraft vs Minetest

What performance improvements does Multicraft have that minetest are missing? (server side only)

Please implement `minetest.colorspec_to_colorstring`, for parity with Minetest-5.5.0 to address crash in a mod

Please see minetest-mods/drawers#78 (comment)

The drawers mod was updated to start calling minetest.colorspec_to_colorstring, which (per the comment) does not exist in Multicraft. This caused lots of crashes on the server EdenLost (runs Multicraft-2.0.x) on EdgyNet. I've rolled back the drawers update. However, I humbly request that Mutlicraft add the implementation of this minetest function.

How to mod MultiCraft?

I am sure Minetest mods (not all but some) can be used in MultiCraft as in the source code there is a file that says to put mods in that folder. But the problem is when you install MultiCraft, there is no folder to put the mods.

So please tell me how to mod MultiCraft.

9th slot issue

the 9th slot is an issue in (as far as i know) almost all minetest servers that can run multicraft.
it cant be modified to a diffrent amount for example the default number of minetest 8, and allows the client to locally place blocks untill they have placed a block that is not in the 9th slot which basicly makes it client sided flying for survival servers and gives building issues on creative servers. would highly be appriciated if you could just allow servers to modify inventory slots so this wouldn't be an issue.

(proof from somone on discord)

RPReplay_Final1642871572.mov

No audio output of the game on iOS device speaker

MultiCraft version
2.0.36
OS / Hardware

Operating system: iOS 16.6

Summary

When the headphones are not connected, the game sounds are not available. The sound volume or hardware volume setting does not affect the output of the volume. Advertisements will show with proper sound. When the headphones are connected, game and advertisement sounds work properly.

There is a closed issue with ID #123 which is described to be fixed for Android.

Steps to reproduce
  1. Update to the latest version of MultiCraft
  2. Launching the app without headphones connected
  3. Enabling sound from the settings
  4. Click Play in a Single player game or join a Multiplayer server
  5. Move, break a block, do actions that usually produce a sound
  6. No audio output from the game

Not working in Pixel 5

Bug summary

Game does not boot on Pixel 5. It get's stuck on loading screen, after the loading bar is 100%.
Device: Google Pixel 5, API 30 (Android 12.0)

Steps to reproduce

Just opening the game on Pixel 5.

a bug ? - how to false buildin 'hud'

Minetest version

2.0.0 on 5.4.1 fork

OS / Hardware

on two server diff, both Ubuntu 20.04

Summary

at test, I make (local) and after change init.lua in builtin without do hud / hunger, and even delete them both not started
at main server, I did sudo make install but found the buildin in usr/local/share/multicraft, did the same change in init.lua NOT to start hunger and hud, also did it for safety in source MultiCraft2 folder with the cmake, make ... but hud still starts with and so I have warnings when my hud works and logins

so where else could the start of hud from MultiCraft been hidden ?

Steps to reproduce

see above

`math.round` does not exist

Please add this code to builtin/common/misc_helpers.lua:

function math.round(x)
	if x >= 0 then
		return math.floor(x + 0.5)
	end
	return math.ceil(x - 0.5)
end

Compare with MineTest

Hi! Could you please add some kind of overview of the idea behind this project, maybe a comparison with MineTest?

Crash when attempting to call hud_change

Minetest version
MultiCraft 2.0.0 (Linux)
Using Irrlicht 1.8.5
Using LuaJIT 2.0.5
BUILD_TYPE=Release
RUN_IN_PLACE=1
USE_CURL=1
USE_GETTEXT=1
USE_SOUND=1
USE_FREETYPE=1
STATIC_SHAREDIR="."
STATIC_LOCALEDIR="locale"
Summary

Calling player:hud_change(hud_id, stat, value) crashes the server when value is not a number. This does not reflect the behavior of minetest nor the multicraft documentation. See entuland/rhotator#5 for an example of this causing problems in practice. The bug seems to be in here:
https://github.com/MultiCraft/MultiCraft2/blob/bb25210dd00e522b1dc141115a22a916aaa31c6e/src/script/common/c_content.cpp#L1997-L2065

Compare https://github.com/minetest/minetest/blob/258ae994915e1b9fc5b3a72627886f2ce4334902/src/script/common/c_content.cpp#L2007-L2082

Steps to reproduce

Install the version of the rhotator that was mentioned, and click on a few things with it.

Linux support

Problem

Currently, MultiCraft does not have official release for Linux platform. However, Minetest already supports all major desktop platforms including Linux; it should be fairly easy to get support for Linux therefore. Would you consider supporting MultiCraft on Linux? Thanks!

Solutions

The official website should contain an official binary for Linux too.

Alternatives

I have compiled the project from source, but only the development version is available for compilation. Is it possible to join MultiCraft custom (hosted) server from Minetest? If yes, that would be enough, since Minetest does indeed support Linux just fine.

New players and respawns after death are always moved to (0,0,0) rather than spawnpoint

Minetest version

Commit number : #67

Upto this commit : 357d3aaf8e05824142b1c26ceaa7e1bdb3cb3a96 (main)
OS / Hardware

Operating system: Debian bullseye
CPU: 64 cores threadripper
base_game : minetest_game

Summary

After this commit, If a new person joins the server, he/she is teleported to 0,0,0 instead of static_spawnpoint defined in either multicraft.conf or world.mt file. The same is the case when a player dies.

Steps to reproduce

Just join a server with a new account while static_spawnpoint is set to some value other than {0,0,0}

Last 2.0.2 isn't working

MultiCraft version
2.0.2 (commit 0810698)
OS / Hardware

Operating system: Windows 7 (x64)
CPU: AMD Athlon(tm) II X4 640 Processor (3.00 GHz)

Summary

MultiCraft isn't working anymore, installed it from Actions tab (as a MSVC artifact binary) and nothing. Just this.
Updated by replacing old bin, builtin and client folders with new ones (works almost always)

image

Several bugs

Minetest version
MultiCraft 2.0.0
OS / Hardware

Operating system: Android 11 / Linux 5.10.0-8-amd64 (Debian 11)
CPU: Snapdragon 845 / Intel(R) Core(TM) i3-4160

GPU model: Adreno 630 / GeForce GTX 1050Ti with the proprietary driver
OpenGL version: OpenGL ES 3.2 / OpenGL 4.6

Summary

Several bugs:

  • The engine did not pick up MultiCraft_game when I tried to add it, i had to rename the files folder in the game root to mods to get it to partially work (on both Android and Linux build)
  • The graphics settings are missing in the menu (on Android build only)
  • Low performance with the default (uneditable) video settings (on Android build only)
Steps to reproduce

For Android:

  • Clone the git: git clone --depth 1 https://github.com/MultiCraft/MultiCraft2
  • Clone the game: cd MultiCraft2 && mkdir games && git clone --depth 1 https://github.com/MultiCraft/MultiCraft_game
  • Rename the required folders to get the default game to work: cd games && mv ./MultiCraft_game default && cd default && mv ./files mods
  • Add the patch for it to compile: add #include <cassert> after line 39 and add #define _IRR_DEBUG_BREAK_IF(x) assert(x); after line 60 in source file src/irrlicht_changes/irrUString.h
  • Build for Android: cd .. && cd .. && cd build/android/ && ./gradlew assembleDebug
  • Install the finished build: cd app/build/outputs/apk/debug && adb install ./app-arm64-v8a-debug.apk
  • Start the app
  • Notice that the graphics settings are absent
  • Try to play in a world
  • Get 20-30 frames per second framerate after joining the world and an error about the engine being unable to load wool_red texture

For Linux build:

  • Clone the git: git clone --depth 1 https://github.com/MultiCraft/MultiCraft2
  • Clone the game: cd MultiCraft2 && mkdir games && git clone --depth 1 https://github.com/MultiCraft/MultiCraft_game
  • Rename the required folders to get the default game to work: cd games && mv ./MultiCraft_game default && cd default && mv ./files mods
  • Create the build folder: cd .. && cd .. && mkdir build-cmake && cd build-cmake
  • Configure with cmake: cmake .. -DRUN_IN_PLACE=TRUE -DBUILD_SERVER=TRUE -DBUILD_CLIENT=TRUE -DCMAKE_BUILD_TYPE=Release
  • Build: make -j16
  • Launch the resulting build: cd .. && cd bin && ./multicraft
  • Note that the graphics settings are present unlike on the Android build
  • Try to play in a world
  • Get an error about the engine being unable to load wool_red texture

MultiCraft Server won‘t start - Game specified in default_game [default] is invalid

Hi everyone,
I try to set up a MultiCraft server for my daughter and her friends.
So I rent a Vserver running Debian 11 (8 GB RAM + a lot of disk space).
I followed all steps from the README.md page for Debian and as the ‚server only‘ options.
Building works perfect, multicraft server is executable.
So far, so good!
But as I try starting the server, I‘ll get the following warning and error:

WARNING[Main]: Game specified in default_game [default] is invalid
ERROR[Main]: ServerError: Supplied invalid gamespec

I checked the available games (multicraftserver —gameid list) and guess what, only devtest is available.
Running ‚multicraftserver —gameid devtest‘ works … but that won‘t start a playable server, right?

I did some research and found the following thread in a minetest forum:
https://forum.minetest.net/viewtopic.php?t=15281

One of the answers seemed helpful to me, asking - ‚Did you clone the game?‘
So I additionally tried the non-git version of downloading the game and copied the MultiCraft-main folder to the games folder … But the only game available is still ‚devtest‘.

What am I missing?
How should the games folder look like, what should it content?

I know for sure, this not a real bug, but more the case of PEBCAC.

Thanks for helping me out anyway.
h3b0

MultiCraft version

OS / Hardware

Operating system:
CPU:

GPU model:
OpenGL version:

Summary
Steps to reproduce

Help me with hack clients, please!

Problem

Meeting, currently several hack clients that allow a lot on servers.
Immense help help to see a way to prevent users from entering the server with these clients.
Help me please!

Solutions

I found a name server "Survivalgo", which managed to prevent, in some way, to enter with hack clients in the game and only allow original.
Whenever someone tries to enter some client cheating, it appears the message "This client is not supported".

Alternatives

I wanted some shape, configuration, mod whatever to prevent them from using it because I have a server and I need more than something like that.

Additional context

I beg for help! The "Survivalgo" name server uses MULTICRAFT2 as client-server.

error when creating world

when I try to make a world it says: Failed to initialize world: Failed to update config
Please give instructions of how to fix.
Thank you

`/status` chatcommand does't display a list of installed mods

Problem

I miss /status
as of easier to see the lag,
and other side the logged in gamer

and one mod technic, might change then it's behavior ir higher (had to change code there)

Not only me ... some gamer miss also

Solutions

Where did you cut that out, I struggle at get_ ...(status,true) command in chat, builtin ... to track back,
even compare with mt 5.3.0 was not successful yet

Alternatives

I see a maybe mod for the gamer logged in, have to try else ...

Additional context

Reason you disabled this ?
or did I make a unseen setting, as .conf, I don't see ?
The lag and gamer are anyway listed in servers. ... .

Readme should explain where to download binaries and find servers

I cannot find download instructions in the readme's table of contents, and everything in the "Further documentation" section is about MineTest. Even here this bug template asks me for my MineTest version. Which confuses me, because I'm trying to find binary downloads for MultiCraft. Or do I use my already-installed MineTest client to play MultiCraft?

Also I need advice on how to find servers, because my search engine strongly prefers the Minecraft hosting manager thingy that happens to also be named Multicraft.

Make windows builds

i've played this game before on windows that were previously available to download in the releases tab and i want to play this game again on my pc

I call it bug, when mobile android / IPAD useer have 9 slot, but server ignore nr 9

Minetest version
multicraft2.0.0 server - and I don't know versions multicraft on android / IPAD
OS / Hardware

CPU: ignore

GPU model: ignore
OpenGL version: ignore

Summary

mobile android / IPAD user have like Slot 9
server tell in terminal : ignoring ...
but gamer is able to build himself up with not seen or detectable nodes

Steps to reproduce

lol, your the programmer ... that's funny : both multicraft but different set of slots

Content Tab shouldn't show only games

MultiCraft version
2.1.0-dev (d31d238)
Summary

Content tab (if we can call it that way) currently only show some games which you can download and play, but in MultiCraft there're some buttons that lead to the same Content tab with text like "Find More Mods", but user can't find any mods around it

Steps to reproduce
  1. Go to the Singleplayer tab
  2. Create a new world
  3. Select it
  4. Press Select Mods
  5. Press Find More Mods

Partially re-enable support for `minetest.get_server_status()` (for use with mapserver and Prometheus monitoring)

Problem

In 2aa0400, the server side support for minetest.get_server_status() was nerfed with the comment // Disabled due to misuse. (search for "Server::getStatusString()").

This causes the stock mapserver (minetest-mapserver/mapserver_mod#20) and prometheus monitoring (minetest-monitoring/monitoring#21) to both crashloop the multicraft server.

While it is possible to modify those mods to be tolerant of minetest.get_server_status() returning a nil, it is important for monitoring to know the server's "lag" and player counts.

It is unclear to me what "abuse" resulted in the decision to disable the "/status" chat command (I assume someone was using a bot to harvest player names?).

I propose that this concern be re-evaluated, and "/status" being restored; at least such that it can return the metrics for "lag" and "player count", even if it omits the player names. If this is rejected, then please consider adding a LUA api to minetest and multicraft to return those values directly, and then we can adapt the mods mapserver_mod and monitoring to fallback to this new API should minetest.get_server_status() return nil.

No sound output from the game

MultiCraft version
2.0.4
OS / Hardware

Operating system: Android version 13 (LineageOS)
CPU:

GPU model:
OpenGL version:

Summary

Ever since I installed the Feb 10, 2023 update to the game, there's no sound output when playing it. The phone's media volume is at max, other games and media produce sounds as usual, but there's no audio in MultiCraft at all now. The "Sound" checkbox in Settings is checked, and the Sound volume within the game is at 100%.

Steps to reproduce
  1. Update to the latest version of MultiCraft
  2. click Play in a Single player game or join a Multiplayer server
  3. move, break a block, do actions that usually produce sound
  4. there's no audio at all from the game

Drowning while standing in doors using the official Minetest client

The server seems to be running Multicraft 2.0.0 and my Minetest client is 5.5.1

OS / Hardware

Operating system: All operating systems
CPU: AMD Ryzen 3 (I can't remember the specific model)

Summary

I am sure that Multicraft<->Minetest client-server protocol compatibility isn't necessarily high on your list, but I figured I would mention it in-case you get a chance to look into it. When joining the SurvivalGo server from Minetest 5.5.1, I start drowning while standing in doorways. This apparently doesn't happen on the Multicraft client.

Steps to reproduce

Download Minetest 5.5.1 and log into SurvivalGo or start a server using multicraft's server executable and join it using the latest stable minetest client, then stand in a doorway. You should start drowning.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.