Browse Source

Start Test with BlockColor

The goal is to modify the multicraft / minetest sources to run blockcolor on and to provide a legal and valid source to compile for windows, android, linux.

The goal is to modify the multicraft / minetest sources to run blockcolor on and to provide a legal and valid source to compile for windows, android, linux.

It may be that the project does not compile correctly or badly, I have not finished. Any help is welcome and I would soon open a forum for this.
tags/v2.0.1
Mrchiantos 3 months ago
parent
commit
291d35fe69
100 changed files with 2182 additions and 1135 deletions
  1. 0
    121
      .gitignore
  2. BIN
      .vs/BlockColor/v15/.suo
  3. BIN
      .vs/BlockColor/v15/Browse.VC.db
  4. 3
    0
      .vs/ProjectSettings.json
  5. 6
    0
      .vs/VSWorkspaceState.json
  6. BIN
      .vs/slnx.sqlite
  7. 13
    13
      CMakeLists.txt
  8. 7
    6
      README.md
  9. 1850
    0
      blockcolor.conf.example
  10. 2
    2
      build/WindowsApp/README.txt
  11. 3
    3
      build/WindowsApp/build.sh
  12. 2
    2
      build/WindowsApp/buildwin32.sh
  13. 2
    2
      build/WindowsApp/buildwin64.sh
  14. 4
    4
      build/WindowsApp/package.bat
  15. 14
    14
      build/android/Makefile
  16. 9
    9
      build/android/README.md
  17. 1
    1
      build/android/build.gradle
  18. 1
    1
      build/android/jni/Android.mk
  19. 1
    1
      build/android/jni/Application.mk
  20. 6
    6
      build/android/src/main/AndroidManifest.xml
  21. 2
    0
      build/android/src/main/java/com/multicraft/desktop.ini
  22. 1
    1
      build/android/src/main/java/com/multicraft/game/AlertDialogHelper.java
  23. 1
    1
      build/android/src/main/java/com/multicraft/game/CallBackListener.java
  24. 1
    1
      build/android/src/main/java/com/multicraft/game/CheckConnectionTask.java
  25. 2
    2
      build/android/src/main/java/com/multicraft/game/CopyZipTask.java
  26. 1
    1
      build/android/src/main/java/com/multicraft/game/DeleteTask.java
  27. 1
    1
      build/android/src/main/java/com/multicraft/game/DialogsCallback.java
  28. 8
    8
      build/android/src/main/java/com/multicraft/game/GameActivity.java
  29. 1
    1
      build/android/src/main/java/com/multicraft/game/InputDialogActivity.java
  30. 8
    8
      build/android/src/main/java/com/multicraft/game/MainActivity.java
  31. 2
    2
      build/android/src/main/java/com/multicraft/game/PreferencesHelper.java
  32. 1
    1
      build/android/src/main/java/com/multicraft/game/RateMe.java
  33. 1
    1
      build/android/src/main/java/com/multicraft/game/Transliteration.java
  34. 6
    6
      build/android/src/main/java/com/multicraft/game/UnzipService.java
  35. 1
    1
      build/android/src/main/java/com/multicraft/game/WVersionManager.java
  36. 4
    4
      build/android/src/main/res/values-ru/strings.xml
  37. 5
    5
      build/android/src/main/res/values/strings.xml
  38. 2
    2
      build/android/src/main/res/xml/my_backup_rules.xml
  39. 2
    0
      build/iOS/MultiCraft/MultiCraft.xcodeproj/desktop.ini
  40. 33
    33
      build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj
  41. 4
    4
      build/iOS/MultiCraft/MultiCraft/Info.plist
  42. 2
    0
      build/iOS/MultiCraft/MultiCraft/desktop.ini
  43. 2
    0
      build/iOS/MultiCraft/desktop.ini
  44. 2
    2
      build/iOS/Podfile
  45. 1
    1
      build/iOS/Start.sh
  46. 1
    1
      build/iOS/appicon.sh
  47. 1
    1
      build/iOS/assets.sh
  48. 9
    3
      builtin/mainmenu/tab_credits.lua
  49. 0
    2
      client/serverlist/.gitignore
  50. 1
    1
      cmake/Modules/FindGettextLib.cmake
  51. 114
    0
      doc/BlockColor.6
  52. 2
    0
      doc/BlockColorServer.6
  53. 0
    114
      doc/MultiCraft.6
  54. 0
    2
      doc/MultiCraftServer.6
  55. 2
    2
      doc/Other License.md
  56. 29
    29
      doc/Readme.md
  57. 3
    3
      doc/main_page.dox
  58. 1
    1
      doc/protocol.txt
  59. 1
    1
      doc/texture_packs.txt
  60. 0
    26
      games/default/files/3d_armor/LICENSE.txt
  61. 0
    450
      games/default/files/3d_armor/api.lua
  62. 0
    185
      games/default/files/3d_armor/armor.lua
  63. 0
    39
      games/default/files/3d_armor/hud.lua
  64. 0
    4
      games/default/files/3d_armor/init.lua
  65. BIN
      games/default/files/3d_armor/textures/3d_armor_boots_chain.png
  66. BIN
      games/default/files/3d_armor/textures/3d_armor_boots_diamond.png
  67. BIN
      games/default/files/3d_armor/textures/3d_armor_boots_gold.png
  68. BIN
      games/default/files/3d_armor/textures/3d_armor_boots_leather.png
  69. BIN
      games/default/files/3d_armor/textures/3d_armor_boots_steel.png
  70. BIN
      games/default/files/3d_armor/textures/3d_armor_chestplate_chain.png
  71. BIN
      games/default/files/3d_armor/textures/3d_armor_chestplate_diamond.png
  72. BIN
      games/default/files/3d_armor/textures/3d_armor_chestplate_gold.png
  73. BIN
      games/default/files/3d_armor/textures/3d_armor_chestplate_leather.png
  74. BIN
      games/default/files/3d_armor/textures/3d_armor_chestplate_steel.png
  75. BIN
      games/default/files/3d_armor/textures/3d_armor_helmet_chain.png
  76. BIN
      games/default/files/3d_armor/textures/3d_armor_helmet_diamond.png
  77. BIN
      games/default/files/3d_armor/textures/3d_armor_helmet_gold.png
  78. BIN
      games/default/files/3d_armor/textures/3d_armor_helmet_leather.png
  79. BIN
      games/default/files/3d_armor/textures/3d_armor_helmet_steel.png
  80. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_boots_chain.png
  81. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_boots_diamond.png
  82. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_boots_gold.png
  83. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_boots_leather.png
  84. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_boots_steel.png
  85. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_chestplate_chain.png
  86. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_chestplate_diamond.png
  87. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_chestplate_gold.png
  88. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_chestplate_leather.png
  89. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_chestplate_steel.png
  90. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_helmet_chain.png
  91. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_helmet_diamond.png
  92. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_helmet_gold.png
  93. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_helmet_leather.png
  94. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_helmet_steel.png
  95. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_leggings_chain.png
  96. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_leggings_diamond.png
  97. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_leggings_gold.png
  98. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_leggings_leather.png
  99. BIN
      games/default/files/3d_armor/textures/3d_armor_inv_leggings_steel.png
  100. 0
    0
      games/default/files/3d_armor/textures/3d_armor_leggings_chain.png

+ 0
- 121
.gitignore View File

@@ -1,121 +0,0 @@
## Editors and Development environments
*~
*.swp
*.bak*
*.orig
# Vim
*.vim
# Kate
.*.kate-swp
.swp.*
# KDevelop4
.kdev4/
*.kdev4
# Eclipse (CDT and LDT)
.project
.cproject
.settings/
.buildpath
.metadata
# GNU Global
tags
!tags/
gtags.files
# OS X
.DS_Store
.idea/*
# Codelite
*.project
desktop.ini

## Files related to minetest development cycle
/*.patch
*.diff
# GNU Patch reject file
*.rej


## Non-static MultiCraft directories or symlinks to these
/bin/
/cache
/screenshots
/sounds
/mods/*
!/mods/minetest/
/mods/minetest/*
!/mods/minetest/mods_here.txt
/worlds
/world/
/clientmods/*
!/clientmods/preview/
/client/mod_storage/

## Configuration/log files
debug.txt
multicraft.conf

## Other files generated by minetest
screenshot_*.png

## Doxygen files
doc/Doxyfile
doc/html/
doc/doxygen_*

## Build files
CMakeFiles
Makefile
!build/android/Makefile
cmake_install.cmake
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
src/android_version.h
src/android_version_githash.h
src/cmake_config.h
src/cmake_config_githash.h
src/lua/build/
locale/
.directory
.gradle/
*.cbp
*.layout
*.o
*.a
*.ninja
.ninja*
*.gch
*.iml
test_config.h
cmake-build-debug/
cmake-build-release/

## Android build files
build/android/src/main/assets
build/android/build
build/android/deps
build/android/libs
build/android/jni/lib
build/android/jni/src
build/android/src/main/jniLibs
build/android/obj
build/android/local.properties
build/android/.gradle
timestamp
.idea

## iOS build files
build/iOS/MultiCraft/MultiCraft.xcodeproj/xcuserdata
build/iOS/MultiCraft/MultiCraft.xcodeproj/project.xcworkspace
# build/iOS/MultiCraft/MultiCraft/Assets.xcassets/AppIcon.appiconset/*.png
build/iOS/MultiCraft.xcworkspace
build/iOS/Pods
build/iOS/Podfile.lock
build/iOS/deps/*
!build/iOS/deps/*.sh
build/iOS/assets.zip
build/iOS/worlds.zip
build/iOS/Ads

## WindowsApp files
build/WindowsApp/multicraft-windows.zip

BIN
.vs/BlockColor/v15/.suo View File


BIN
.vs/BlockColor/v15/Browse.VC.db View File


+ 3
- 0
.vs/ProjectSettings.json View File

@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

+ 6
- 0
.vs/VSWorkspaceState.json View File

@@ -0,0 +1,6 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite View File


+ 13
- 13
CMakeLists.txt View File

@@ -6,8 +6,8 @@ if(${CMAKE_VERSION} STREQUAL "2.8.2")
endif()

# This can be read from ${PROJECT_NAME} after project() is called
project(MultiCraft)
set(PROJECT_NAME_CAPITALIZED "MultiCraft")
project(BlockColor)
set(PROJECT_NAME_CAPITALIZED "BlockColor")

# Works only for cmake 3.1 and greater
set(CMAKE_CXX_STANDARD 11)
@@ -172,20 +172,20 @@ install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/menu_lua_api.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/texture_packs.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/world_format.txt" DESTINATION "${DOCDIR}")
install(FILES "multicraft.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")
install(FILES "blockcolor.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")

if(UNIX AND NOT APPLE)
install(FILES "doc/MultiCraft.6" "doc/MultiCraftServer.6" DESTINATION "${MANDIR}/man6")
install(FILES "misc/MultiCraft.desktop" DESTINATION "${XDG_APPS_DIR}")
install(FILES "misc/MultiCraft.appdata.xml" DESTINATION "${APPDATADIR}")
install(FILES "misc/MultiCraft.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
install(FILES "misc/MultiCraft-xorg-icon-128.png"
install(FILES "doc/BlockColor.6" "doc/BlockColorServer.6" DESTINATION "${MANDIR}/man6")
install(FILES "misc/BlockColor.desktop" DESTINATION "${XDG_APPS_DIR}")
install(FILES "misc/BlockColor.appdata.xml" DESTINATION "${APPDATADIR}")
install(FILES "misc/BlockColor.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
install(FILES "misc/BlockColor-xorg-icon-128.png"
DESTINATION "${ICONDIR}/hicolor/128x128/apps"
RENAME "MultiCraft.png")
RENAME "BlockColor.png")
endif()

if(APPLE)
install(FILES "misc/MultiCraft-icon.icns" DESTINATION "${SHAREDIR}")
install(FILES "misc/BlockColor-icon.icns" DESTINATION "${SHAREDIR}")
install(FILES "misc/Info.plist" DESTINATION "${BUNDLE_PATH}/Contents")
endif()

@@ -202,12 +202,12 @@ add_subdirectory(src)

# CPack

set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An Minecraft inspired game")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Sandbox Creative Game with 8 Colors")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VENDOR "MoNTE48")
set(CPACK_PACKAGE_CONTACT "MoNTE48@mail.ua")
set(CPACK_PACKAGE_VENDOR "MrChiantos")
set(CPACK_PACKAGE_CONTACT "julienetnel@gmail.com")

if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)

+ 7
- 6
README.md View File

@@ -1,16 +1,17 @@
MultiCraft Open Source Project
Blockcolor Open Source Project
==============================

MultiCraft is an Open Source sandbox game inspired by [Minecraft](https://minecraft.net/).
Blockcolor is an Open Source sandbox creative game with 8 Colors. [Blockcolor.net(https://blockcolor.net/).

MultiCraft is based on the Minetest project, which is developed by a [number of contributors](https://github.com/minetest/minetest/graphs/contributors).
Blockcolor is based on Multicraft/Minetest projects.

Copyright © 2014-2019 Maksim Gamarnik [MoNTE48] <MoNTE48@mail.ua> & MultiCraft Development Team.
Copyright © 2018-2019 - MrChiantos & BlockColor Community.

The engine and the game is licensed under LGPLv3 (or higher). Resources games licensed under CC-BY-SA 3.0, unless otherwise stated.

You can help in the development. But you should always publish your source code after any changes.
Before any use of the MultiCraft source code or any part of it, you should be familiar with [LGPL-3.0](doc/LGPL-3.0.md) and [Other License.txt](doc/Other%20License.md)
Before any use of the blockcolor source code or any part of it, you should be familiar with [LGPL-3.0](doc/LGPL-3.0.md) and [Other License.txt](doc/Other%20License.md)

Any code that you push to this repository is automatically licensed as LGPLv3 (or higher) and belongs blockcolor Project and/or the owner of the project without exception.

Any code that you push to this repository is automatically licensed as LGPLv3 (or higher) and belongs MultiCraft Project and/or the owner of the project without exception.
Adding code under another license is possible only by agreement with the project owner and the creation of appropriate notes.

+ 1850
- 0
blockcolor.conf.example
File diff suppressed because it is too large
View File


+ 2
- 2
build/WindowsApp/README.txt View File

@@ -2,6 +2,6 @@ Instructions:
1) on Linux: sudo apt install unzip zip gettext cmake p7zip-full
2) on Windows: install DesktopAppConverter and the Windows 10 SDK
3) Run build.sh to create the ZIP file
4) Transfer multicraft-windows.zip to Windows and extract it
4) Transfer blockcolor-windows.zip to Windows and extract it
5) Edit the settings in the .bat file
6) Run the .bat file as Administrator to generate an Appx package
6) Run the .bat file as Administrator to generate an Appx package

+ 3
- 3
build/WindowsApp/build.sh View File

@@ -18,7 +18,7 @@ export PATH="$mingw/bin:$PATH"
EXISTING_DIR=$PWD/../.. \
./buildwin${bit}.sh /tmp/build${bit}

cd /tmp/build${bit}/MultiCraft/_build/_CPack_Packages/*/ZIP/
cd /tmp/build${bit}/BlockColor/_build/_CPack_Packages/*/ZIP/
rm *.zip; dir=$(echo *)
if [ $bit -eq 64 ]; then
base=$mingw/x86_64-w64-mingw32/bin
@@ -27,6 +27,6 @@ else
fi
cp -pv $base/lib{gcc,stdc++,winpthread}*.dll $dir/bin/

rm -f $OLDPWD/multicraft-windows.zip
zip -r $OLDPWD/multicraft-windows.zip $dir
rm -f $OLDPWD/blockcolor-windows.zip
zip -r $OLDPWD/blockcolor-windows.zip $dir
echo "Done"

+ 2
- 2
build/WindowsApp/buildwin32.sh View File

@@ -69,10 +69,10 @@ cd $libdir

# Get the source
cd $builddir
[ -d MultiCraft ] || ln -s "$EXISTING_DIR" MultiCraft
[ -d BlockColor ] || ln -s "$EXISTING_DIR" BlockColor

# Build the thing
cd MultiCraft
cd BlockColor
[ -d _build ] && rm -Rf _build/
mkdir _build
cd _build

+ 2
- 2
build/WindowsApp/buildwin64.sh View File

@@ -70,10 +70,10 @@ cd $libdir

# Get the source
cd $builddir
[ -d MultiCraft ] || ln -s "$EXISTING_DIR" MultiCraft
[ -d BlockColor ] || ln -s "$EXISTING_DIR" BlockColor

# Build the thing
cd MultiCraft
cd BlockColor
[ -d _build ] && rm -Rf _build/
mkdir _build
cd _build

+ 4
- 4
build/WindowsApp/package.bat View File

@@ -1,7 +1,7 @@
@echo off

REM --- change these ---
SET folderpath=C:\Users\Doge\Desktop\MultiCraft-1.1.8-dev-win32
SET folderpath=C:\Users\Doge\Desktop\BlockColor-1.1.8-dev-win32
SET outputpath=C:\Users\Doge\Desktop
SET version=1.1.8.0
SET publisher=example text
@@ -22,11 +22,11 @@ popd
echo Please wait...
powershell -NoProfile -NoLogo -ExecutionPolicy Bypass^
-File "%ProgramFiles%\WindowsApps\%appname%\DesktopAppConverter.ps1"^
-Installer "%folderpath%" -AppExecutable MultiCraft.exe^
-Destination "%outputpath%" -PackageName MultiCraft^
-Installer "%folderpath%" -AppExecutable BlockColor.exe^
-Destination "%outputpath%" -PackageName BlockColor^
-Publisher "CN=%publisher%" -Version %version%
"%ProgramFiles(x86)%\Windows Kits\10\bin\%sdkver%\x64\MakeAppx.exe"^
pack /l^
/d "%outputpath%\MultiCraft\PackageFiles" /p "%outputpath%\MultiCraft.appx"
/d "%outputpath%\BlockColor\PackageFiles" /p "%outputpath%\BlockColor.appx"

pause

+ 14
- 14
build/android/Makefile View File

@@ -598,7 +598,7 @@ $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
touch ${IRRLICHT_DIR}/media/timestamp; \
touch ${ASSETS_TIMESTAMP}; \
fi; \
if [ ${PROJ_ROOT}/multicraft.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \
if [ ${PROJ_ROOT}/blockcolor.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \
echo "conf changed"; \
touch ${ASSETS_TIMESTAMP}; \
fi; \
@@ -672,16 +672,16 @@ assets : $(ASSETS_TIMESTAMP)
if [ $$REFRESH -ne 0 ] ; then \
echo "assets changed, refreshing..."; \
$(MAKE) clean_assets; \
mkdir -p ${APP_ROOT}/assets/MultiCraft; \
cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/MultiCraft; \
mkdir ${APP_ROOT}/assets/MultiCraft/fonts; \
cp -r ${PROJ_ROOT}/fonts/retrovillenc.ttf ${APP_ROOT}/assets/MultiCraft/fonts/; \
cp -r ${PROJ_ROOT}/games ${APP_ROOT}/assets/MultiCraft; \
mkdir -p ${APP_ROOT}/assets/MultiCraft/locale; \
mkdir -p ${APP_ROOT}/assets/BlockColor; \
cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/BlockColor; \
mkdir ${APP_ROOT}/assets/BlockColor/fonts; \
cp -r ${PROJ_ROOT}/fonts/retrovillenc.ttf ${APP_ROOT}/assets/BlockColor/fonts/; \
cp -r ${PROJ_ROOT}/games ${APP_ROOT}/assets/BlockColor; \
mkdir -p ${APP_ROOT}/assets/BlockColor/locale; \
pushd ${PROJ_ROOT}/po; \
for lang in *; do \
[ $${#lang} -ne 2 ] && continue; \
MOPATH=${APP_ROOT}/assets/MultiCraft/locale/$$lang/LC_MESSAGES; \
MOPATH=${APP_ROOT}/assets/BlockColor/locale/$$lang/LC_MESSAGES; \
mkdir -p $$MOPATH; \
pushd $$lang; \
for fn in *.po; do \
@@ -691,8 +691,8 @@ assets : $(ASSETS_TIMESTAMP)
popd; \
done; \
popd; \
cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/MultiCraft; \
cp -r ${PROJ_ROOT}/worlds ${APP_ROOT}/assets/MultiCraft; \
cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/BlockColor; \
cp -r ${PROJ_ROOT}/worlds ${APP_ROOT}/assets/BlockColor; \
cd ${APP_ROOT}/assets || exit 1; \
find . -name "timestamp" -exec rm {} \; ; \
find . -name "*.blend" -exec rm {} \; ; \
@@ -700,7 +700,7 @@ assets : $(ASSETS_TIMESTAMP)
find . -type d -path "*.git" -exec rm -rf {} \; ; \
find . -type d -path "*.svn" -exec rm -rf {} \; ; \
find . -type f -path "*.gitignore" -exec rm -rf {} \; ; \
cd MultiCraft; \
cd BlockColor; \
ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > ../index.txt; \
find -L . | cut -c 3- > ../filelist.txt; \
echo "Creating worlds.zip"; \
@@ -728,14 +728,14 @@ apk: local.properties $(IRRLICHT_LIB) $(CURL_LIB) $(LEVELDB_LIB) $(LUAJIT_LIB)
fi; \
export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') && \
./gradlew assemble$$BUILD_TYPE_C && \
echo "APK stored at: build/outputs/apk/MultiCraft-$$BUILD_TYPE.apk" && \
echo "APK stored at: build/outputs/apk/BlockColor-$$BUILD_TYPE.apk" && \
echo "You can install it with \'make install_$$BUILD_TYPE\'"

install_debug:
${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/MultiCraft-debug.apk
${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/BlockColor-debug.apk

install_release:
${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/MultiCraft-release.apk
${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/BlockColor-release.apk

prep_srcdir :
@if [ ! -e ${ANDR_ROOT}/jni/src ]; then \

+ 9
- 9
build/android/README.md View File

@@ -1,4 +1,4 @@
MultiCraft Android version
BlockColor Android version
=====================

Controls
@@ -32,8 +32,8 @@ When a menu or inventory is displayed:

Special settings
----------------
There are some settings especially useful for Android users. MultiCraft's config
file can usually be found at /sdcard/Android/data/mobi.MultiCraft/files.
There are some settings especially useful for Android users. BlockColor's config
file can usually be found at /sdcard/Android/data/mobi.BlockColor/files.

* gui_scaling: this is a user-specified scaling factor for the GUI- In case
main menu is too big or small on your device, try changing this
@@ -54,9 +54,9 @@ Not all issues are fixed by now:
Requirements
------------

In order to build, your PC has to be set up to build MultiCraft in the usual
manner (see the regular MultiCraft documentation for how to get this done).
In addition to what is required for MultiCraft in general, you will need the
In order to build, your PC has to be set up to build BlockColor in the usual
manner (see the regular BlockColor documentation for how to get this done).
In addition to what is required for BlockColor in general, you will need the
following software packages. The version number in parenthesis denotes the
version that was tested at the time this README was drafted; newer/older
versions may or may not work.
@@ -80,7 +80,7 @@ Debug build:
* Wait for build to finish

After the build is finished, the resulting apk can be fond in
build/android/bin/. It will be called MultiCraft-debug.apk
build/android/bin/. It will be called BlockColor-debug.apk

Release build:

@@ -93,12 +93,12 @@ Release build:
file "ant.properties" there. Add following lines to that file:

> key.store=<path to your keystore>
> key.alias=MultiCraft
> key.alias=BlockColor

* Execute "make release"
* Enter your keystore as well as your Mintest key password once asked. Be
careful it's shown on console in clear text!
* The result can be found at "bin/MultiCraft-release.apk"
* The result can be found at "bin/BlockColor-release.apk"

Other things that may be nice to know
------------

+ 1
- 1
build/android/build.gradle View File

@@ -26,7 +26,7 @@ android {
buildToolsVersion "29.0.0"

defaultConfig {
applicationId 'com.multicraft.game'
applicationId 'net.blockcolor.game'
minSdkVersion 16
targetSdkVersion 29
versionCode 1

+ 1
- 1
build/android/jni/Android.mk View File

@@ -38,7 +38,7 @@ LOCAL_SRC_FILES := deps/luajit/src/libluajit.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := MultiCraft
LOCAL_MODULE := BlockColor

LOCAL_CFLAGS += \
-DJSONCPP_NO_LOCALE_SUPPORT \

+ 1
- 1
build/android/jni/Application.mk View File

@@ -2,7 +2,7 @@ APP_PLATFORM := ${APP_PLATFORM}
APP_ABI := ${TARGET_ABI}
APP_STL := ${APP_STL}
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
APP_MODULES := MultiCraft
APP_MODULES := BlockColor

APP_CPPFLAGS := -Ofast -fvisibility=hidden -fpic -fexceptions -Wno-deprecated-declarations


+ 6
- 6
build/android/src/main/AndroidManifest.xml View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.multicraft.game"
package="net.blockcolor.game"
android:installLocation="auto"
android:versionName="@string/ver">

@@ -37,7 +37,7 @@
android:required="false" />

<activity
android:name="com.multicraft.game.MainActivity"
android:name="net.blockcolor.game.MainActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:screenOrientation="sensorLandscape"
android:theme="@style/AppTheme">
@@ -47,7 +47,7 @@
</intent-filter>
</activity>
<activity
android:name="com.multicraft.game.GameActivity"
android:name="net.blockcolor.game.GameActivity"
android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenSize|smallestScreenSize"
android:hardwareAccelerated="true"
android:launchMode="singleTask"
@@ -55,19 +55,19 @@
android:theme="@style/AppTheme">
<meta-data
android:name="android.app.lib_name"
android:value="MultiCraft" />
android:value="BlockColor" />

<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name="com.multicraft.game.InputDialogActivity"
android:name="net.blockcolor.game.InputDialogActivity"
android:theme="@style/Theme.Transparent"
android:windowSoftInputMode="stateAlwaysHidden" />

<service
android:name="com.multicraft.game.UnzipService"
android:name="net.blockcolor.game.UnzipService"
android:enabled="true"
android:exported="false" />
</application>

+ 2
- 0
build/android/src/main/java/com/multicraft/desktop.ini View File

@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=blockcolor

+ 1
- 1
build/android/src/main/java/com/multicraft/game/AlertDialogHelper.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.app.Activity;
import android.app.AlertDialog;

+ 1
- 1
build/android/src/main/java/com/multicraft/game/CallBackListener.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

public interface CallBackListener {
void updateViews(int text, int textVisibility, int progressVisibility);

+ 1
- 1
build/android/src/main/java/com/multicraft/game/CheckConnectionTask.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.content.Context;
import android.os.AsyncTask;

+ 2
- 2
build/android/src/main/java/com/multicraft/game/CopyZipTask.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.app.Activity;
import android.app.AlarmManager;
@@ -16,7 +16,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;

import static com.multicraft.game.MainActivity.unzipLocation;
import static net.blockcolor.game.MainActivity.unzipLocation;

public class CopyZipTask extends AsyncTask<String, Void, String[]> implements DialogsCallback {


+ 1
- 1
build/android/src/main/java/com/multicraft/game/DeleteTask.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.os.AsyncTask;
import android.view.View;

+ 1
- 1
build/android/src/main/java/com/multicraft/game/DialogsCallback.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

public interface DialogsCallback {
void onPositive(String source);

+ 8
- 8
build/android/src/main/java/com/multicraft/game/GameActivity.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.annotation.SuppressLint;
import android.app.ActivityManager;
@@ -14,22 +14,22 @@ import android.view.WindowManager;

import com.crashlytics.android.Crashlytics;

/*import static com.multicraft.game.AdManager.initAd;
import static com.multicraft.game.AdManager.setAdsCallback;
import static com.multicraft.game.AdManager.startAd;
import static com.multicraft.game.AdManager.stopAd;*/
/*import static net.blockcolor.game.AdManager.initAd;
import static net.blockcolor.game.AdManager.setAdsCallback;
import static net.blockcolor.game.AdManager.startAd;
import static net.blockcolor.game.AdManager.stopAd;*/

public class GameActivity extends NativeActivity {
static {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64")) {
//System.loadLibrary("c++_shared"); // uncomment when upgrading to Clang
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
} else {
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
}
} else {
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
}
}


+ 1
- 1
build/android/src/main/java/com/multicraft/game/InputDialogActivity.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.annotation.SuppressLint;
import android.app.Activity;

+ 8
- 8
build/android/src/main/java/com/multicraft/game/MainActivity.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.annotation.SuppressLint;
import android.app.Activity;
@@ -47,11 +47,11 @@ import java.util.List;

import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static com.multicraft.game.PreferencesHelper.TAG_BUILD_NUMBER;
import static com.multicraft.game.PreferencesHelper.TAG_CONSENT_ASKED;
import static com.multicraft.game.PreferencesHelper.TAG_COPY_WORLDS;
import static com.multicraft.game.PreferencesHelper.TAG_LAUNCH_TIMES;
import static com.multicraft.game.PreferencesHelper.TAG_SHORTCUT_CREATED;
import static net.blockcolor.game.PreferencesHelper.TAG_BUILD_NUMBER;
import static net.blockcolor.game.PreferencesHelper.TAG_CONSENT_ASKED;
import static net.blockcolor.game.PreferencesHelper.TAG_COPY_WORLDS;
import static net.blockcolor.game.PreferencesHelper.TAG_LAUNCH_TIMES;
import static net.blockcolor.game.PreferencesHelper.TAG_SHORTCUT_CREATED;

public class MainActivity extends Activity implements WVersionManager.ActivityListener, CallBackListener, DialogsCallback {
public final static int REQUEST_CODE = 104;
@@ -68,9 +68,9 @@ public class MainActivity extends Activity implements WVersionManager.ActivityLi
"HU", "IE", "IT", "LV", "LT", "LU",
"MT", "NL", "PL", "PT", "RO", "SK",
"SI", "ES", "SE", "GB", "IS", "LI", "NO"};
private static String dataFolder = "/Android/data/com.multicraft.game/files/";
private static String dataFolder = "/Android/data/net.blockcolor.game/files/";
public static String unzipLocation = EXTERNAL_STORAGE + dataFolder;
private static String worldPath = EXTERNAL_STORAGE + "/Android/data/mobi.MultiCraft/files/worlds";
private static String worldPath = EXTERNAL_STORAGE + "/Android/data/mobi.BlockColor/files/worlds";
private int height, width;
private boolean consent;
private ProgressBar mProgressBar;

+ 2
- 2
build/android/src/main/java/com/multicraft/game/PreferencesHelper.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.content.Context;
import android.content.SharedPreferences;
@@ -13,7 +13,7 @@ class PreferencesHelper {
static final String RV_LOADED = "rewardedVideoLoaded";
static final String ADS_DELAY = "adsDelay";
static final String ADS_REPEAT = "adsRepeat";
private static final String SETTINGS = "MultiCraftSettings";
private static final String SETTINGS = "BlockColorSettings";

private static PreferencesHelper instance;
private static SharedPreferences sharedPreferences;

+ 1
- 1
build/android/src/main/java/com/multicraft/game/RateMe.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.app.Activity;
import android.app.Dialog;

+ 1
- 1
build/android/src/main/java/com/multicraft/game/Transliteration.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

class Transliteration {


+ 6
- 6
build/android/src/main/java/com/multicraft/game/UnzipService.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.app.IntentService;
import android.app.Notification;
@@ -20,7 +20,7 @@ import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class UnzipService extends IntentService {
public static final String ACTION_UPDATE = "mobi.MultiCraft.UPDATE";
public static final String ACTION_UPDATE = "mobi.BlockColor.UPDATE";
public static final String EXTRA_KEY_IN_FILE = "file";
public static final String EXTRA_KEY_IN_LOCATION = "location";
public static final String ACTION_PROGRESS = "progress";
@@ -28,7 +28,7 @@ public class UnzipService extends IntentService {
private int id = 1;

public UnzipService() {
super("com.multicraft.game.UnzipService");
super("net.blockcolor.game.UnzipService");
}

private void isDir(String dir, String unzipLocation) {
@@ -49,9 +49,9 @@ public class UnzipService extends IntentService {

private void createNotification() {
// There are hardcoding only for show it's just strings
String name = "mobi.MultiCraft";
String channelId = "MultiCraft channel"; // The user-visible name of the channel.
String description = "notifications from MultiCraft"; // The user-visible description of the channel.
String name = "mobi.BlockColor";
String channelId = "BlockColor channel"; // The user-visible name of the channel.
String description = "notifications from BlockColor"; // The user-visible description of the channel.
Notification.Builder builder;
if (mNotifyManager == null) {
mNotifyManager =

+ 1
- 1
build/android/src/main/java/com/multicraft/game/WVersionManager.java View File

@@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;

import android.annotation.SuppressLint;
import android.app.Activity;

+ 4
- 4
build/android/src/main/res/values-ru/strings.xml View File

@@ -4,7 +4,7 @@
<!-- подготовка к запуску -->
<string name="rm_old">Подготовка к обновлению&#8230;</string>
<string name="loading">Загрузка&#8230;</string>
<string name="notification_title">Загрузка MultiCraft</string>
<string name="notification_title">Загрузка BlockColor</string>
<string name="notification_description">Осталось меньше минуты&#8230;</string>
<string name="restart">Произошла ошибка, игра будет перезапущена автоматически</string>
<string name="no_space">Недостаточно места для записи файлов игры, пожалуйста освободите место SD карте</string>
@@ -13,9 +13,9 @@
<string name="location">Доступ к местоположению обеспечивает Вам лучшее взаимодействие с игрой</string>
<string name="close_game">Закрыть игру</string>
<string name="settings">Настройки</string>
<string name="denied">Вы не можете использовать MultiCraft без разрешения на запись. \nПожалуйста, включите его в [Настройки] -> [Разрешения]></string>
<string name="denied">Вы не можете использовать BlockColor без разрешения на запись. \nПожалуйста, включите его в [Настройки] -> [Разрешения]></string>
<!-- диалог оценки -->
<string name="rta_dialog_title">Оцените MultiCraft!</string>
<string name="rta_dialog_title">Оцените BlockColor!</string>
<string name="rate_title">Название</string>
<string name="rate_description">Описание</string>
<string name="rate_submit">ОЦЕНИТЬ</string>
@@ -28,7 +28,7 @@
<!-- reminder -->

<!-- no connection dialog -->
<string name="conn_message">Для полноценной игры, MultiCraft требует подключение к интернету.\nВ противном случае невозможно обновление игры, а так же не доступен мультиплеер!</string>
<string name="conn_message">Для полноценной игры, BlockColor требует подключение к интернету.\nВ противном случае невозможно обновление игры, а так же не доступен мультиплеер!</string>
<string name="conn_wifi">Wi-Fi</string>
<string name="conn_mobile">3G/4G</string>


+ 5
- 5
build/android/src/main/res/values/strings.xml View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name" translatable="false">MultiCraft</string>
<string name="app_name" translatable="false">BlockColor</string>
<string name="ver" translatable="false">1.2</string>
<!-- preparation for start -->

<string name="rm_old">Preparing to update&#8230;</string>
<string name="loading">Loading&#8230;</string>
<string name="notification_title">Loading MultiCraft</string>
<string name="notification_title">Loading BlockColor</string>
<string name="notification_description">Less than 1 minute&#8230;</string>
<string name="restart">Unexpected issue, the game will be restarted automatically</string>
<string name="no_space">No space left for game files, please free space on SD card</string>
@@ -17,9 +17,9 @@
<string name="location">Location permission provide you better interaction with game</string>
<string name="close_game">Close game</string>
<string name="settings">App settings</string>
<string name="denied">You cannot use MultiCraft without storage permission. \nPlease turn on it at [Settings] -> [Permissions]></string>
<string name="denied">You cannot use BlockColor without storage permission. \nPlease turn on it at [Settings] -> [Permissions]></string>
<!-- rate input_dialog -->
<string name="rta_dialog_title">Please, rate MultiCraft!</string>
<string name="rta_dialog_title">Please, rate BlockColor!</string>
<string name="rate_title">Title</string>
<string name="rate_description">Description</string>
<string name="rate_submit">SUBMIT</string>
@@ -33,7 +33,7 @@
<!-- reminder -->

<!-- no connection dialog -->
<string name="conn_message">MultiCraft requires an internet connection to use all game features.\nOtherwise, you will not get updates and multiplayer will be not available!</string>
<string name="conn_message">BlockColor requires an internet connection to use all game features.\nOtherwise, you will not get updates and multiplayer will be not available!</string>
<string name="conn_wifi">Wi-Fi</string>
<string name="conn_mobile">Mobile Data</string>


+ 2
- 2
build/android/src/main/res/xml/my_backup_rules.xml View File

@@ -2,11 +2,11 @@
<full-backup-content>
<exclude
domain="sharedpref"
path="MultiCraftSettings.xml" />
path="BlockColorSettings.xml" />
<exclude
domain="sharedpref"
path="RateMe.xml" />
<exclude
domain="sharedpref"
path="mobi.MultiCraft_preferences.xml" />
path="mobi.BlockColor_preferences.xml" />
</full-backup-content>

+ 2
- 0
build/iOS/MultiCraft/MultiCraft.xcodeproj/desktop.ini View File

@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=Blockcolor.xcodeproj

+ 33
- 33
build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj View File

@@ -38,7 +38,7 @@
844B495F228606B200EB60EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 844B495D228606B200EB60EF /* Main.storyboard */; };
8465A76522A7D4500095B7CA /* libintl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8465A76422A7D4500095B7CA /* libintl.cpp */; };
849C4F86209656D3005EB041 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 849C4F85209656D2005EB041 /* ru.lproj */; };
EB4367AE23CAD13A43ADF4B1 /* libPods-MultiCraft.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */; };
EB4367AE23CAD13A43ADF4B1 /* libPods-BlockColor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */; };
F810D7052080E48100D109B8 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F810D7042080E48000D109B8 /* en.lproj */; };
F84D3A951DE79AB400ADE1A0 /* ads.mm in Sources */ = {isa = PBXBuildFile; fileRef = F84D3A941DE79AB400ADE1A0 /* ads.mm */; };
F85119A71F4476FC00BFA9AF /* libcurl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F85119A61F4476FC00BFA9AF /* libcurl.a */; };
@@ -266,8 +266,8 @@
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MultiCraft.release.xcconfig"; path = "../Pods/Target Support Files/Pods-MultiCraft/Pods-MultiCraft.release.xcconfig"; sourceTree = "<group>"; };
32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MultiCraft.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-MultiCraft/Pods-MultiCraft.debug.xcconfig"; sourceTree = "<group>"; };
1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlockColor.release.xcconfig"; path = "../Pods/Target Support Files/Pods-BlockColor/Pods-BlockColor.release.xcconfig"; sourceTree = "<group>"; };
32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlockColor.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-BlockColor/Pods-BlockColor.debug.xcconfig"; sourceTree = "<group>"; };
4B0F49C81E424F910003953D /* map_settings_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = map_settings_manager.cpp; path = ../../../../src/map_settings_manager.cpp; sourceTree = "<group>"; };
4B0F49CA1E424FAE0003953D /* reflowscan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = reflowscan.cpp; path = ../../../../src/reflowscan.cpp; sourceTree = "<group>"; };
4B0F49CC1E424FC20003953D /* remoteplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = remoteplayer.cpp; path = ../../../../src/remoteplayer.cpp; sourceTree = "<group>"; };
@@ -324,7 +324,7 @@
8465A76322A7D4500095B7CA /* Util.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Util.hpp; path = ../../../../lib/intl/Util.hpp; sourceTree = "<group>"; };
8465A76422A7D4500095B7CA /* libintl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = libintl.cpp; path = ../../../../lib/intl/libintl.cpp; sourceTree = "<group>"; };
849C4F85209656D2005EB041 /* ru.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ru.lproj; sourceTree = "<group>"; };
8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MultiCraft.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BlockColor.a"; sourceTree = BUILT_PRODUCTS_DIR; };
F810D7042080E48000D109B8 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = en.lproj; sourceTree = "<group>"; };
F84D3A931DE79AB400ADE1A0 /* ads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ads.h; path = ../../Ads/ads.h; sourceTree = "<group>"; };
F84D3A941DE79AB400ADE1A0 /* ads.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ads.mm; path = ../../Ads/ads.mm; sourceTree = "<group>"; };
@@ -332,7 +332,7 @@
F856B5C21F55F7EE00FE9494 /* bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bg.png; path = ../../../../textures/base/bg.png; sourceTree = "<group>"; };
F87DC8B8210887C600393B64 /* mapgen_v7p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mapgen_v7p.h; path = ../../../../src/mapgen_v7p.h; sourceTree = "<group>"; };
F87DC8B9210887C700393B64 /* mapgen_v7p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mapgen_v7p.cpp; path = ../../../../src/mapgen_v7p.cpp; sourceTree = "<group>"; };
F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MultiCraft.app; sourceTree = BUILT_PRODUCTS_DIR; };
F8E6C4D91DCA3B7900F64426 /* BlockColor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlockColor.app; sourceTree = BUILT_PRODUCTS_DIR; };
F8E6C4E81DCA3B7900F64426 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
F8E6C4EB1DCA3B7900F64426 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
F8E6C4ED1DCA3B7900F64426 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -809,7 +809,7 @@
F8E6C7DD1DCA47A300F64426 /* libvorbis.a in Frameworks */,
F8E6C7DF1DCA47AF00F64426 /* libvorbisfile.a in Frameworks */,
F85119A71F4476FC00BFA9AF /* libcurl.a in Frameworks */,
EB4367AE23CAD13A43ADF4B1 /* libPods-MultiCraft.a in Frameworks */,
EB4367AE23CAD13A43ADF4B1 /* libPods-BlockColor.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -839,8 +839,8 @@
87D06CD2CC310BE5E73639F4 /* Pods */ = {
isa = PBXGroup;
children = (
32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */,
1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */,
32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */,
1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
@@ -857,7 +857,7 @@
F8E6C4D01DCA3B7900F64426 = {
isa = PBXGroup;
children = (
F8E6C4DB1DCA3B7900F64426 /* MultiCraft */,
F8E6C4DB1DCA3B7900F64426 /* BlockColor */,
F8E6C4DA1DCA3B7900F64426 /* Products */,
F8E6C7C31DCA42F300F64426 /* Frameworks */,
87D06CD2CC310BE5E73639F4 /* Pods */,
@@ -868,12 +868,12 @@
F8E6C4DA1DCA3B7900F64426 /* Products */ = {
isa = PBXGroup;
children = (
F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */,
F8E6C4D91DCA3B7900F64426 /* BlockColor.app */,
);
name = Products;
sourceTree = "<group>";
};
F8E6C4DB1DCA3B7900F64426 /* MultiCraft */ = {
F8E6C4DB1DCA3B7900F64426 /* BlockColor */ = {
isa = PBXGroup;
children = (
849C4F85209656D2005EB041 /* ru.lproj */,
@@ -885,7 +885,7 @@
F8E6C4DC1DCA3B7900F64426 /* Supporting Files */,
F8E6C4F61DCA3EAF00F64426 /* src */,
);
path = MultiCraft;
path = BlockColor;
sourceTree = "<group>";
};
F8E6C4DC1DCA3B7900F64426 /* Supporting Files */ = {
@@ -1501,7 +1501,7 @@
F8E6C7C81DCA430300F64426 /* OpenGLES.framework */,
F8E6C7C61DCA42FA00F64426 /* UIKit.framework */,
F8E6C7C41DCA42F300F64426 /* QuartzCore.framework */,
8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */,
8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -1509,9 +1509,9 @@
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
F8E6C4D81DCA3B7900F64426 /* MultiCraft */ = {
F8E6C4D81DCA3B7900F64426 /* BlockColor */ = {
isa = PBXNativeTarget;
buildConfigurationList = F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "MultiCraft" */;
buildConfigurationList = F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "BlockColor" */;
buildPhases = (
C73312165F97B96FC254B124 /* [CP] Check Pods Manifest.lock */,
F8E6C4D51DCA3B7900F64426 /* Sources */,
@@ -1523,9 +1523,9 @@
);
dependencies = (
);
name = MultiCraft;
productName = MultiCraft;
productReference = F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */;
name = BlockColor;
productName = BlockColor;
productReference = F8E6C4D91DCA3B7900F64426 /* BlockColor.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -1535,7 +1535,7 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = MultiCraft;
ORGANIZATIONNAME = BlockColor;
TargetAttributes = {
F8E6C4D81DCA3B7900F64426 = {
CreatedOnToolsVersion = 8.0;
@@ -1547,7 +1547,7 @@
};
};
};
buildConfigurationList = F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "MultiCraft" */;
buildConfigurationList = F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "BlockColor" */;
compatibilityVersion = "Xcode 10.0";
developmentRegion = en;
hasScannedForEncodings = 0;
@@ -1560,7 +1560,7 @@
projectDirPath = "";
projectRoot = "";
targets = (
F8E6C4D81DCA3B7900F64426 /* MultiCraft */,
F8E6C4D81DCA3B7900F64426 /* BlockColor */,
);
};
/* End PBXProject section */
@@ -1595,7 +1595,7 @@
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-MultiCraft-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-BlockColor-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -1608,15 +1608,15 @@
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources-${CONFIGURATION}-input-files.xcfilelist",
"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources-${CONFIGURATION}-output-files.xcfilelist",
"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -1932,7 +1932,7 @@
};
F8E6C4F11DCA3B7900F64426 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */;
baseConfigurationReference = 32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -1965,7 +1965,7 @@
"${SRCROOT}/../deps/freetype/include/freetype2",
"${SRCROOT}/../Pods/libCurlPod/include",
);
INFOPLIST_FILE = MultiCraft/Info.plist;
INFOPLIST_FILE = BlockColor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -2019,14 +2019,14 @@
"-L${SRCROOT}/../Pods/libCurlPod/lib",
"-Wl,-dead_strip",
);
PRODUCT_BUNDLE_IDENTIFIER = mobi.MultiCraft;
PRODUCT_BUNDLE_IDENTIFIER = mobi.BlockColor;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
F8E6C4F21DCA3B7900F64426 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */;
baseConfigurationReference = 1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -2060,7 +2060,7 @@
"${SRCROOT}/../deps/freetype/include/freetype2",
"${SRCROOT}/../Pods/libCurlPod/include",
);
INFOPLIST_FILE = MultiCraft/Info.plist;
INFOPLIST_FILE = BlockColor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -2114,7 +2114,7 @@
"-L${SRCROOT}/../Pods/libCurlPod/lib",
"-Wl,-dead_strip",
);
PRODUCT_BUNDLE_IDENTIFIER = mobi.MultiCraft;
PRODUCT_BUNDLE_IDENTIFIER = mobi.BlockColor;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -2122,7 +2122,7 @@
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "MultiCraft" */ = {
F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "BlockColor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F8E6C4EE1DCA3B7900F64426 /* Debug */,
@@ -2131,7 +2131,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "MultiCraft" */ = {
F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "BlockColor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F8E6C4F11DCA3B7900F64426 /* Debug */,

+ 4
- 4
build/iOS/MultiCraft/MultiCraft/Info.plist View File

@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>MultiCraft</string>
<string>BlockColor</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleGetInfoString</key>
@@ -30,11 +30,11 @@
<true/>
</dict>
<key>NSCalendarsUsageDescription</key>
<string>MultiCraft needs your calendar to provide personalised advertising experience tailored to you</string>
<string>BlockColor needs your calendar to provide personalised advertising experience tailored to you</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>MultiCraft needs your location to provide personalised advertising experience tailored to you</string>
<string>BlockColor needs your location to provide personalised advertising experience tailored to you</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>MultiCraft needs your location to provide personalised advertising experience tailored to you</string>
<string>BlockColor needs your location to provide personalised advertising experience tailored to you</string>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>

+ 2
- 0
build/iOS/MultiCraft/MultiCraft/desktop.ini View File

@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=BlockColor

+ 2
- 0
build/iOS/MultiCraft/desktop.ini View File

@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=BlockColor

+ 2
- 2
build/iOS/Podfile View File

@@ -1,7 +1,7 @@
project 'MultiCraft/MultiCraft.xcodeproj'
project 'BlockColor/BlockColor.xcodeproj'
platform :ios, '9.0'

target 'MultiCraft' do
target 'BlockColor' do
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/appodeal/CocoaPods.git'


+ 1
- 1
build/iOS/Start.sh View File

@@ -1,7 +1,7 @@
#!/bin/bash -e

echo
echo "Starting build MultiCraft for iOS..."
echo "Starting build BlockColor for iOS..."

echo
echo "Build Libraries:"

+ 1
- 1
build/iOS/appicon.sh View File

@@ -5,7 +5,7 @@
# (install: brew install imagemagick)
SIZES="76 120 152 167 180"
SRCFILE=icon.png
DSTDIR=MultiCraft/MultiCraft/Assets.xcassets/AppIcon.appiconset
DSTDIR=BlockColor/BlockColor/Assets.xcassets/AppIcon.appiconset

for sz in $SIZES; do
echo "Creating ${sz}x${sz} icon"

+ 1
- 1
build/iOS/assets.sh View File

@@ -1,6 +1,6 @@
#!/bin/bash -e

if [ ! -d MultiCraft/MultiCraft.xcodeproj ]; then
if [ ! -d BlockColor/BlockColor.xcodeproj ]; then
echo "Run this in build/iOS"
exit 1
fi

+ 9
- 3
builtin/mainmenu/tab_credits.lua View File

@@ -17,6 +17,10 @@

--------------------------------------------------------------------------------

local blockcolor_developers = {
"MrChiantos",
}

local multicraft_developers = {
"Maksim Gamarnik (MoNTE48) <MoNTE48@mail.ua>",
"Bektur Mambetov (ubulem) <berkut87@gmail.com>",
@@ -96,13 +100,15 @@ return {
caption = fgettext("Credits"),
cbf_formspec = function(tabview, name, tabdata)
local version = core.get_version()
return "label[0.1,-0.1;MultiCraft Open Source Project, ver. " .. version.string .. "]" ..
"label[0.1,0.3;Copyright (c) 2014-2019 MultiCraft Development Team]" ..
"label[0.1,0.7;Home page: https://github.com/MultiCraftProject/MultiCraft]" ..
return "label[0.1,-0.1;Blockcolor Open Source Project, ver. " .. version.string .. "]" ..
"label[0.1,0.3;Copyright (c) 2018-2019 BlockColor Development Team]" ..
"label[0.1,0.7;Home page: https://github.com/MrChiantos/]" ..
"label[0.1,1.1;Licence: LGPLv3.0+ and CC-BY-SA 3.0]" ..
"tablecolumns[color;text]" ..
"tableoptions[background=#999999;highlight=#00000000;border=true]" ..
"table[0,1.6;11.8,3.8;list_credits;" ..
"#FFFF00," .. fgettext("BlockColor Developers") .. ",," ..
buildCreditList(blockcolor_developers) .. ",,," ..
"#FFFF00," .. fgettext("MultiCraft Developers") .. ",," ..
buildCreditList(multicraft_developers) .. ",,," ..
"#FFFF00," .. fgettext("Minetest Developers") .. ",," ..

+ 0
- 2
client/serverlist/.gitignore View File

@@ -1,2 +0,0 @@
*
!.gitignore

+ 1
- 1
cmake/Modules/FindGettextLib.cmake View File

@@ -68,7 +68,7 @@ if(GETTEXT_FOUND)
set(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
set(GETTEXT_MO_DEST_PATH ${LOCALEDIR}/<locale>/LC_MESSAGES)
file(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*")
list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES MultiCraft.pot)
list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES BlockColor.pot)
list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES timestamp)
macro(SET_MO_PATHS _buildvar _destvar _locale)
string(REPLACE "<locale>" ${_locale} ${_buildvar} ${GETTEXT_MO_BUILD_PATH})

+ 114
- 0
doc/BlockColor.6 View File

@@ -0,0 +1,114 @@
.TH blockcolor 6 "10 September 2013" "" ""

.SH NAME
BlockColor, BlockColorServer \- Multiplayer infinite-world block sandbox

.SH SYNOPSIS
.B BlockColor
[\fB--server SERVER OPTIONS\fR | \fBCLIENT OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]

.B BlockColorServer
[\fBSERVER OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]

.SH DESCRIPTION
.B BlockColor
is one of the first InfiniMiner/Minecraft(/whatever) inspired games (started October 2010), with a goal of taking the survival multiplayer gameplay to a slightly different direction.
.PP
The main design philosophy is to keep it technically simple, stable and portable. It will be kept lightweight enough to run on fairly old hardware.

.SH COMMON OPTIONS
.TP
.B \-\-help
Print allowed options and exit
.TP
.B \-\-version
Print version information and exit
.TP
.B \-\-config <value>
Load configuration from specified file
.TP
.B \-\-logfile <value>
Set logfile path (debug.txt)
.TP
.B \-\-info
Print more information to console
.TP
.B \-\-verbose
Print even more information to console
.TP
.B \-\-trace
Print enormous amounts of information to console
.TP
.B \-\-gameid <value>
Set gameid
.TP
.B \-\-worldname <value>
Set world path by name
.TP
.B \-\-world <value> | list
Set world path or list worlds
.TP
.B \-\-map\-dir <value>
Same as \-\-world (deprecated)
.TP
.B \-\-port <value>
Set network port (UDP) to use
.TP
.B \-\-run\-unittests
Run unit tests and exit

.SH CLIENT OPTIONS
.TP
.B \-\-address <value>
Address to connect to
.TP
.B \-\-go
Disable main menu
.TP
.B \-\-name <value>
Set player name
.TP
.B \-\-password <value>
Set password
.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP
.B \-\-videomodes
List available video modes (client only)
.TP
.B \-\-speedtests
Run speed tests

.SH SERVER OPTIONS
.TP
.B \-\-migrate <value>
Migrate from current map backend to another. Possible values are sqlite3,
leveldb, redis, and dummy.
.TP
.B \-\-terminal
Display an interactive terminal over ncurses during execution.

.SH ENVIRONMENT
.TP
.B BLOCKCOLOR_SUBGAME_PATH
Colon delimited list of directories to search for subgames.

.SH BUGS
Please report all bugs to Perttu Ahola <celeron55@gmail.com>.

.SH AUTHOR
.PP
Perttu Ahola <celeron55@gmail.com>
and contributors.
.PP
This man page was originally written by
Juhani Numminen <juhaninumminen0@gmail.com>.

.SH WWW
http://www.minetest.net/


+ 2
- 0
doc/BlockColorServer.6 View File

@@ -0,0 +1,2 @@
.so man6/BlockColor.6


+ 0
- 114
doc/MultiCraft.6 View File

@@ -1,114 +0,0 @@
.TH MultiCraft 6 "10 September 2013" "" ""

.SH NAME
MultiCraft, MultiCraftServer \- Multiplayer infinite-world block sandbox

.SH SYNOPSIS
.B MultiCraft
[\fB--server SERVER OPTIONS\fR | \fBCLIENT OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]

.B MultiCraftServer
[\fBSERVER OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]

.SH DESCRIPTION
.B MultiCraft
is one of the first InfiniMiner/Minecraft(/whatever) inspired games (started October 2010), with a goal of taking the survival multiplayer gameplay to a slightly different direction.
.PP
The main design philosophy is to keep it technically simple, stable and portable. It will be kept lightweight enough to run on fairly old hardware.

.SH COMMON OPTIONS
.TP
.B \-\-help
Print allowed options and exit
.TP
.B \-\-version
Print version information and exit
.TP
.B \-\-config <value>
Load configuration from specified file
.TP
.B \-\-logfile <value>
Set logfile path (debug.txt)
.TP
.B \-\-info
Print more information to console
.TP
.B \-\-verbose
Print even more information to console
.TP
.B \-\-trace
Print enormous amounts of information to console
.TP
.B \-\-gameid <value>
Set gameid
.TP
.B \-\-worldname <value>
Set world path by name
.TP
.B \-\-world <value> | list
Set world path or list worlds
.TP
.B \-\-map\-dir <value>
Same as \-\-world (deprecated)
.TP
.B \-\-port <value>
Set network port (UDP) to use
.TP
.B \-\-run\-unittests
Run unit tests and exit

.SH CLIENT OPTIONS
.TP
.B \-\-address <value>
Address to connect to
.TP
.B \-\-go
Disable main menu
.TP
.B \-\-name <value>
Set player name
.TP
.B \-\-password <value>
Set password
.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP
.B \-\-videomodes
List available video modes (client only)
.TP
.B \-\-speedtests
Run speed tests

.SH SERVER OPTIONS
.TP
.B \-\-migrate <value>
Migrate from current map backend to another. Possible values are sqlite3,
leveldb, redis, and dummy.
.TP
.B \-\-terminal
Display an interactive terminal over ncurses during execution.

.SH ENVIRONMENT
.TP
.B MULTICRAFT_SUBGAME_PATH
Colon delimited list of directories to search for subgames.

.SH BUGS
Please report all bugs to Perttu Ahola <celeron55@gmail.com>.

.SH AUTHOR
.PP
Perttu Ahola <celeron55@gmail.com>
and contributors.
.PP
This man page was originally written by
Juhani Numminen <juhaninumminen0@gmail.com>.

.SH WWW
http://www.minetest.net/


+ 0
- 2
doc/MultiCraftServer.6 View File

@@ -1,2 +0,0 @@
.so man6/MultiCraft.6


+ 2
- 2
doc/Other License.md View File

@@ -1,8 +1,8 @@
MultiCraft Open Source Project:
BlockColor Open Source Project:
=================================

LGPLv3.0+, CC-BY-SA 3.0 and a little bit proprietary textures. The list in the file nearby.
You can use these textures without restriction in the MultiCraft Project.
You can use these textures without restriction in the BlockColor Project.
You cannot use them in another project.
They are an integral part of this project and are created or purchased exclusively for it.


+ 29
- 29
doc/Readme.md View File

@@ -1,4 +1,4 @@
MultiCraft Docs
BlockColor Docs
========

Default controls
@@ -61,24 +61,24 @@ Where each location is on each platform:
* user = .
* Linux installed:
* bin = /usr/bin
* share = /usr/share/MultiCraft
* user = ~/.MultiCraft
* share = /usr/share/BlockColor
* user = ~/.BlockColor
* macOS:
* bin = Contents/MacOS
* share = Contents/Resources
* user = Contents/User OR ~/Library/Application Support/MultiCraft
* user = Contents/User OR ~/Library/Application Support/BlockColor

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

Configuration file:
-------------------
- Default location:
$user/MultiCraft.conf
- It is created by MultiCraft when it is ran the first time.
$user/BlockColor.conf
- It is created by BlockColor when it is ran 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
$location_of_exe/../BlockColor.conf and also $location_of_exe/../../BlockColor.conf

Command-line options:
---------------------
@@ -122,13 +122,13 @@ 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
$ git clone --depth 1 https://github.com/BlockColor/BlockColor.git
$ cd BlockColor

Download source, without using git:
$ wget https://github.com/MultiCraft/MultiCraft/archive/master.tar.gz
$ wget https://github.com/BlockColor/BlockColor/archive/master.tar.gz
$ tar xf master.tar.gz
$ cd MultiCraft-master
$ cd BlockColor-master

#### Build

@@ -139,7 +139,7 @@ Build a version that runs directly from the source directory:

Run it:

$ ./bin/MultiCraft
$ ./bin/BlockColor

- 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),
@@ -155,8 +155,8 @@ Run it:

General options:

BUILD_CLIENT - Build MultiCraft client
BUILD_SERVER - Build MultiCraft server
BUILD_CLIENT - Build BlockColor client
BUILD_SERVER - Build BlockColor server
CMAKE_BUILD_TYPE - Type of build (Release vs. Debug)
Release - Release build
Debug - Debug build
@@ -178,7 +178,7 @@ General options:
ENABLE_SYSTEM_JSONCPP - Use JsonCPP from system
RUN_IN_PLACE - Create a portable install (worlds, settings etc. in current directory)
USE_GPROF - Enable profiling using GProf
VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> MultiCraft 0.4.9-foobar)
VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> BlockColor 0.4.9-foobar)

Library specific options:
@@ -256,8 +256,8 @@ Library specific options:
* 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, MultiCraft:
https://github.com/MultiCraftProject/MultiCraft
* And, of course, BlockColor:
https://github.com/BlockColorProject/BlockColor
* Steps:
* Select a directory called DIR hereafter in which you will operate.
* Make sure you have CMake and a compiler installed.
@@ -278,7 +278,7 @@ Library specific options:
* irrlicht-1.8.3.zip
* sqlite-amalgamation-3130000.zip (SQLite3 headers)
* sqlite-dll-win32-x86-3130000.zip (SQLite3 library for 32bit system)
* MultiCraft-source.zip
* BlockColor-source.zip
+ zlib-1.2.5
* zlib.h
+ win32
@@ -300,18 +300,18 @@ Library specific options:
+bin
+include
+lib
+ MultiCraft
+ BlockColor
+ src
+ doc
* CMakeLists.txt
...
-----------------
* Start up the CMake GUI
* Select "Browse Source..." and select DIR/MultiCraft
* Select "Browse Source..." and select DIR/BlockColor
* Now, if using MSVC:
* Select "Browse Build..." and select DIR/MultiCraft-build
* Select "Browse Build..." and select DIR/BlockColor-build
* Else if using MinGW:
* Select "Browse Build..." and select DIR/MultiCraft
* Select "Browse Build..." and select DIR/BlockColor
* Select "Configure"
* Select your compiler
* It will warn about missing stuff, ignore that at this point. (later don't)
@@ -321,7 +321,7 @@ Library specific options:
BUILD_CLIENT [X]
BUILD_SERVER [ ]
CMAKE_BUILD_TYPE Release
CMAKE_INSTALL_PREFIX DIR/MultiCraft-install
CMAKE_INSTALL_PREFIX DIR/BlockColor-install
IRRLICHT_SOURCE_DIR DIR/irrlicht-1.8.3
RUN_IN_PLACE [X]
WARN_ALL [ ]
@@ -336,21 +336,21 @@ Library specific options:
* 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 MultiCraft, you will need to build 64-bit version
* If you want to build 64-bit BlockColor, 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 MultiCraft.sln
* Open the generated BlockColor.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/MultiCraft-install/bin/MultiCraft.exe
DIR/BlockColor-install/bin/BlockColor.exe
* Additionally you may create a zip package by building the PACKAGE
project.
If using MinGW:
@@ -359,14 +359,14 @@ Library specific options:
* 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/MultiCraft/bin/MultiCraft.exe
DIR/BlockColor/bin/BlockColor.exe

### Bat script to build Windows releases of MultiCraft
### Bat script to build Windows releases of BlockColor

This is how we build Windows releases.

set sourcedir=%CD%
set installpath="C:\tmp\MultiCraft_install"
set installpath="C:\tmp\BlockColor_install"
set irrlichtpath="C:\tmp\irrlicht-1.7.2"
set builddir=%sourcedir%\bvc10

+ 3
- 3
doc/main_page.dox View File

@@ -1,7 +1,7 @@
/** @mainpage The MultiCraft engine internal documentation
/** @mainpage The BlockColor engine internal documentation

Welcome to the MultiCraft engine Doxygen documentation site!\n
This page documents the internal structure of the MultiCraft engine's C++ code.\n
Welcome to the BlockColor engine Doxygen documentation site!\n
This page documents the internal structure of the BlockColor engine's C++ code.\n
Use the tree view at the left to navigate.

*/

+ 1
- 1
doc/protocol.txt View File

@@ -1,4 +1,4 @@
MultiCraft protocol (incomplete, early draft):
BlockColor protocol (incomplete, early draft):
Updated 2011-06-18

A custom protocol over UDP.

+ 1
- 1
doc/texture_packs.txt View File

@@ -1,4 +1,4 @@
MultiCraft Texture Pack Reference
BlockColor Texture Pack Reference
===============================

Texture packs allow you to replace textures provided by a mod with your own

+ 0
- 26
games/default/files/3d_armor/LICENSE.txt View File

@@ -1,26 +0,0 @@
MultiCraft Game mod: 3d_armor
=============================

License Source Code
-------------------

Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@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 3.0 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.

License Textures
----------------
Copyright (C) 2013 Vattic
Copyright (C) 2017-2019 Maksim Gamarnik [MoNTE48] MoNTE48@mail.ua & MultiCraft Development Team

+ 0
- 450
games/default/files/3d_armor/api.lua View File

@@ -1,451 +0,0 @@
ARMOR_INIT_DELAY = 1
ARMOR_INIT_TIMES = 1
ARMOR_BONES_DELAY = 1
ARMOR_UPDATE_TIME = 1
ARMOR_DROP = minetest.get_modpath("bones") ~= nil
ARMOR_DESTROY = false
ARMOR_LEVEL_MULTIPLIER = 1
ARMOR_HEAL_MULTIPLIER = 1

local modpath = minetest.get_modpath("3d_armor")

local time = 0

local armor_def = setmetatable({}, {
__index = function()
return setmetatable({
groups = setmetatable({}, {
__index = function()
return 0
end})
}, {
__index = function()
return 0
end
})
end,
})

local armor_textures = setmetatable({}, {
__index = function()
return setmetatable({}, {
__index = function()
return "blank.png"
end
})
end
})

armor = {
player_hp = {},
elements = {"head", "torso", "legs", "feet"},
physics = {"jump","speed","gravity"},
--[[formspec = "size[8,8.5]list[detached:player_name_armor;armor;0,1;2,3;]"
.."image[2,0.75;2,4;armor_preview]"
.."list[current_player;main;0,4.5;8,4;]"
.."list[current_player;craft;4,1;3,3;]"
.."list[current_player;craftpreview;7,2;1,1;]",]]
def = armor_def,
textures = armor_textures,
default_skin = "character",
}

armor.update_player_visuals = function(self, player)
if not player then
return
end
local name = player:get_player_name()
if self.textures[name] then
player_api.set_textures(player, {
self.textures[name].skin,
self.textures[name].armor,
self.textures[name].wielditem,
self.textures[name].cube,
})
end
end

armor.set_player_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local armor_inv = self:get_armor_inventory(player)
if not name then
minetest.log("error", "Failed to read player name")
return
elseif not armor_inv then
minetest.log("error", "Failed to read player inventory")
return
end
local armor_texture = "blank.png"
local armor_level = 0
local armor_heal = 0
local state = 0
local items = 0
local elements = {}
local textures = {}
local physics_o = {speed=1,gravity=1,jump=1}
local material = {type=nil, count=1}
--local preview = armor:get_player_skin(name).."_preview.png"
for _,v in ipairs(self.elements) do
elements[v] = false
end
for i=1, 4 do
local stack = armor_inv:get_stack("armor", i)
local item = stack:get_name()
if stack:get_count() == 1 then
local def = stack:get_definition()
for k, v in pairs(elements) do
if v == false then
local level = def.groups["armor_"..k]
if level then
local texture = item:gsub("%:", "_")
table.insert(textures, texture..".png")
--preview = preview.."^"..texture.."_preview.png"
armor_level = armor_level + level
state = state + stack:get_wear()
items = items + 1
local heal = def.groups["armor_heal"] or 0
armor_heal = armor_heal + heal
for kk,vv in ipairs(self.physics) do
local o_value = def.groups["physics_"..vv]
if o_value then
physics_o[vv] = physics_o[vv] + o_value
end
end
local mat = string.match(item, "%:.+_(.+)$")
if material.type then
if material.type == mat then
material.count = material.count + 1
end
else
material.type = mat
end
elements[k] = true
end
end
end
end
end
--[[if minetest.get_modpath("shields") then
armor_level = armor_level * 0.9
end]]
if material.type and material.count == #self.elements then
armor_level = armor_level * 1.1
end
armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER
armor_heal = armor_heal * ARMOR_HEAL_MULTIPLIER
if #textures > 0 then
armor_texture = table.concat(textures, "^")
end
local armor_groups = {fleshy=100}
if armor_level > 0 then
armor_groups.level = math.floor(armor_level / 20)
armor_groups.fleshy = 100 - armor_level
end
player:set_armor_groups(armor_groups)
player:set_physics_override(physics_o)
self.textures[name].armor = armor_texture
--self.textures[name].preview = preview
self.def[name].state = state
self.def[name].count = items
self.def[name].level = armor_level
self.def[name].heal = armor_heal
self.def[name].jump = physics_o.jump
self.def[name].speed = physics_o.speed
self.def[name].gravity = physics_o.gravity
self:update_player_visuals(player)
end

armor.update_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local hp = player:get_hp() or 0
if hp == 0 then
return
end

local armor_inv = self:get_armor_inventory(player)
if not armor_inv then
minetest.log("error", "Failed to read detached inventory")
return
end
local state = 0
local items = 0
for i=1, 4 do
local stack = armor_inv:get_stack("armor", i)
if stack:get_count() > 0 then
local use = stack:get_definition().groups["armor_use"] or 0
local item = stack:get_name()
stack:add_wear(use)
armor_inv:set_stack("armor", i, stack)
state = state + stack:get_wear()
items = items + 1
if stack:get_count() == 0 then
local desc = minetest.registered_items[item].description
if desc then
minetest.chat_send_player(name, "Your "..desc.." got destroyed!")
end
self:set_player_armor(player)
armor:update_inventory(player)
end
end
end
self:save_armor_inventory(player)
self.def[name].state = state
self.def[name].count = items
end

armor.get_player_skin = function(self, name)
local skin = nil
if skins then
skin = skins.skins[name]
elseif u_skins then
skin = u_skins.u_skins[name]
end
return skin or armor.default_skin
end

armor.get_armor_formspec = function(self, name)
local formspec = armor.formspec:gsub("player_name", name)
--formspec = formspec:gsub("armor_preview", armor.textures[name].preview)
formspec = formspec:gsub("armor_level", armor.def[name].level)
return formspec:gsub("armor_heal", armor.def[name].heal)
end

--[[armor.update_inventory = function(self, player)
local name = player:get_player_name()
if unified_inventory then
if unified_inventory.current_page[name] == "armor" then
unified_inventory.set_inventory_formspec(player, "armor")
end
else
local formspec = armor:get_armor_formspec(name)
if inventory_plus then
local page = player:get_inventory_formspec()
if page:find("detached:"..name.."_armor") then
inventory_plus.set_inventory_formspec(player, formspec)
end
else
player:set_inventory_formspec(formspec)
end
end
end]]
armor.update_inventory = function(self, player) end

armor.get_armor_inventory = function(self, player)
local name = player:get_player_name()
if name then
return minetest.get_inventory({type="detached", name=name.."_armor"})
end
end

armor.serialize_inventory_list = function(self, list)
local list_table = {}
for _, stack in ipairs(list) do
table.insert(list_table, stack:to_string())
end
return minetest.serialize(list_table)
end

armor.deserialize_inventory_list = function(self, list_string)
local list_table = minetest.deserialize(list_string)
local list = {}
for _, stack in ipairs(list_table or {}) do
table.insert(list, ItemStack(stack))
end
return list
end