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.
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"CurrentProjectSetting": null
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
|
@ -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)
|
||||
|
|
13
README.md
|
@ -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.
|
|
@ -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
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
------------
|
||||
|
|
|
@ -26,7 +26,7 @@ android {
|
|||
buildToolsVersion "29.0.0"
|
||||
|
||||
defaultConfig {
|
||||
applicationId 'com.multicraft.game'
|
||||
applicationId 'net.blockcolor.game'
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[.ShellClassInfo]
|
||||
LocalizedResourceName=blockcolor
|
|
@ -1,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
public interface CallBackListener {
|
||||
void updateViews(int text, int textVisibility, int progressVisibility);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
public interface DialogsCallback {
|
||||
void onPositive(String source);
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
class Transliteration {
|
||||
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
package com.multicraft.game;
|
||||
package net.blockcolor.game;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<!-- подготовка к запуску -->
|
||||
<string name="rm_old">Подготовка к обновлению…</string>
|
||||
<string name="loading">Загрузка…</string>
|
||||
<string name="notification_title">Загрузка MultiCraft</string>
|
||||
<string name="notification_title">Загрузка BlockColor</string>
|
||||
<string name="notification_description">Осталось меньше минуты…</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>
|
||||
|
||||
|
|
|
@ -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…</string>
|
||||
<string name="loading">Loading…</string>
|
||||
<string name="notification_title">Loading MultiCraft</string>
|
||||
<string name="notification_title">Loading BlockColor</string>
|
||||
<string name="notification_description">Less than 1 minute…</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,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>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[.ShellClassInfo]
|
||||
LocalizedResourceName=Blockcolor.xcodeproj
|
|
@ -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 */,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[.ShellClassInfo]
|
||||
LocalizedResourceName=BlockColor
|
|
@ -0,0 +1,2 @@
|
|||
[.ShellClassInfo]
|
||||
LocalizedResourceName=BlockColor
|
|
@ -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,7 +1,7 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
echo
|
||||
echo "Starting build MultiCraft for iOS..."
|
||||
echo "Starting build BlockColor for iOS..."
|
||||
|
||||
echo
|
||||
echo "Build Libraries:"
|
||||
|
|
|
@ -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,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
|
||||
|
|
|
@ -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") .. ",," ..
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
*
|
||||
!.gitignore
|
|
@ -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})
|
||||
|
|
|
@ -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/
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
.so man6/BlockColor.6
|
||||
|
114
doc/MultiCraft.6
|
@ -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/
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
.so man6/MultiCraft.6
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
MultiCraft protocol (incomplete, early draft):
|
||||
BlockColor protocol (incomplete, early draft):
|
||||
Updated 2011-06-18
|
||||
|
||||
A custom protocol over UDP.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
armor.load_armor_inventory = function(self, player)
|
||||
local inv = self:get_armor_inventory(player)
|
||||
if inv then
|
||||
local armor_list_string = player:get_attribute("3d_armor_inventory")
|
||||
if armor_list_string then
|
||||
inv:set_list("armor",
|
||||
self:deserialize_inventory_list(armor_list_string))
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
armor.save_armor_inventory = function(self, player)
|
||||
local inv = self:get_armor_inventory(player)
|
||||
if inv then
|
||||
player:set_attribute("3d_armor_inventory",
|
||||
self:serialize_inventory_list(inv:get_list("armor")))
|
||||
end
|
||||
end
|
||||
|
||||
-- Register Callbacks
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local name = player:get_player_name()
|
||||
--if inventory_plus and fields.armor then
|
||||
--local formspec = armor:get_armor_formspec(name)
|
||||
--inventory_plus.set_inventory_formspec(player, formspec)
|
||||
--return
|
||||
--end
|
||||
for field, _ in pairs(fields) do
|
||||
if string.find(field, "skins_set_") then
|
||||
minetest.after(0, function(player)
|
||||
local skin = armor:get_player_skin(name)
|
||||
armor.textures[name].skin = skin..".png"
|
||||
armor:set_player_armor(player)
|
||||
end, player)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local name = player:get_player_name()
|
||||
local armor_inv = minetest.create_detached_inventory(name.."_armor",{
|
||||
allow_put = function(inv, listname, index, stack, player)
|
||||
local item = stack:get_name()
|
||||
if not minetest.registered_items[item] then return end
|
||||
if not minetest.registered_items[item].groups then return end
|
||||
if minetest.registered_items[item].groups['armor_head']
|
||||
and index == 1
|
||||
then
|
||||
return 1
|
||||
end
|
||||
if minetest.registered_items[item].groups['armor_torso']
|
||||
and index == 2
|
||||
then
|
||||
return 1
|
||||
end
|
||||
if minetest.registered_items[item].groups['armor_legs']
|
||||
and index == 3
|
||||
then
|
||||
return 1
|
||||
end
|
||||
if minetest.registered_items[item].groups['armor_feet']
|
||||
and index == 4
|
||||
then
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
armor:save_armor_inventory(player)
|
||||
armor:set_player_armor(player)
|
||||
--armor:update_inventory(player)
|
||||
end,
|
||||
on_take = function(inv, listname, index, stack, player)
|
||||
armor:save_armor_inventory(player)
|
||||
armor:set_player_armor(player)
|
||||
--armor:update_inventory(player)
|
||||
end,
|
||||
on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||
armor:save_armor_inventory(player)
|
||||
armor:set_player_armor(player)
|
||||
--armor:update_inventory(player)
|
||||
end,
|
||||
allow_take = function(inv, listname, index, stack, player)
|
||||
return stack:get_count()
|
||||
end,
|
||||
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||
return 0
|
||||
end,
|
||||
}, name)
|
||||
|
||||
armor_inv:set_size("armor", 4)
|
||||
if not armor:load_armor_inventory(player) then
|
||||
local player_inv = player:get_inventory()
|
||||
if player_inv then
|
||||
player_inv:set_size("armor", 4)
|
||||
for i=1, 4 do
|
||||
local stack = player_inv:get_stack("armor", i)
|
||||
armor_inv:set_stack("armor", i, stack)
|
||||
end
|
||||
player_inv:set_size("armor", 0)
|
||||
end
|
||||
armor:save_armor_inventory(player)
|
||||
end
|
||||
|
||||
armor.player_hp[name] = 0
|
||||
armor.def[name] = {
|
||||
state = 0,
|
||||
count = 0,
|
||||
level = 0,
|
||||
heal = 0,
|
||||
jump = 1,
|
||||
speed = 1,
|
||||
gravity = 1,
|
||||
}
|
||||
armor.textures[name] = {
|
||||
skin = armor.default_skin..".png",
|
||||
armor = "blank.png",
|
||||
wielditem = "blank.png",
|
||||
cube = "blank.png",
|
||||
preview = armor.default_skin.."_preview.png",
|
||||
}
|
||||
if minetest.get_modpath("skins") then
|
||||
local skin = skins.skins[name]
|
||||
if skin and skins.get_type(skin) == skins.type.MODEL then
|
||||
armor.textures[name].skin = skin..".png"
|
||||
end
|
||||
elseif minetest.get_modpath("simple_skins") then
|
||||
local skin = skins.skins[name]
|
||||
if skin then
|
||||
armor.textures[name].skin = skin..".png"
|
||||
end
|
||||
--[[elseif minetest.get_modpath("u_skins") then
|
||||
local skin = u_skins.u_skins[name]
|
||||
if skin and u_skins.get_type(skin) == u_skins.type.MODEL then
|
||||
armor.textures[name].skin = skin..".png"
|
||||
end]]
|
||||
end
|
||||
if minetest.get_modpath("player_textures") then
|
||||
local filename = minetest.get_modpath("player_textures").."/textures/player_"..name
|
||||
local f = io.open(filename..".png")
|
||||
if f then
|
||||
f:close()
|
||||
armor.textures[name].skin = "player_"..name..".png"
|
||||
end
|
||||
end
|
||||
for i=1, ARMOR_INIT_TIMES do
|
||||
minetest.after(ARMOR_INIT_DELAY * i, function(player)
|
||||
armor:set_player_armor(player)
|
||||
--if inventory_plus == nil and unified_inventory == nil then
|
||||
--armor:update_inventory(player)
|
||||
--end
|
||||
end, player)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_dieplayer(function(player)
|
||||
local name = player:get_player_name()
|
||||
local pos = player:get_pos()
|
||||
if name and pos then
|
||||
local drop = {}
|
||||
local armor_inv = armor:get_armor_inventory(player)
|
||||
if armor_inv then
|
||||
for i=1, armor_inv:get_size("armor") do
|
||||
local stack = armor_inv:get_stack("armor", i)
|
||||
if stack:get_count() > 0 then
|
||||
minetest.item_drop(stack, player, pos)
|
||||
armor_inv:set_stack("armor", i, nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
armor:save_armor_inventory(player)
|
||||
armor:set_player_armor(player)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_player_hpchange(function(player, hp_change)
|
||||
if player and hp_change < 0 then
|
||||
local name = player:get_player_name()
|
||||
if name then
|
||||
if armor.def[name].heal > math.random(100) then
|
||||
hp_change = 0
|
||||
end
|
||||
end
|
||||
armor:update_armor(player)
|
||||
end
|
||||
return hp_change
|
||||
end)
|
|
@ -1,190 +0,0 @@
|
|||
-- Regisiter Head Armor
|
||||
|
||||
minetest.register_tool("3d_armor:helmet_leather", {
|
||||
description = "Leather Helmet",
|
||||
inventory_image = "3d_armor_inv_helmet_leather.png",
|
||||
groups = {armor_head=5, armor_heal=0, armor_use=100},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:helmet_steel", {
|
||||
description = "Steel Helmet",
|
||||
inventory_image = "3d_armor_inv_helmet_steel.png",
|
||||
groups = {armor_head=10, armor_heal=5, armor_use=250},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:helmet_gold", {
|
||||
description = "Golden Helmet",
|
||||
inventory_image = "3d_armor_inv_helmet_gold.png",
|
||||
groups = {armor_head=15, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:helmet_diamond",{
|
||||
description = "Diamond Helmet",
|
||||
inventory_image = "3d_armor_inv_helmet_diamond.png",
|
||||
groups = {armor_head=20, armor_heal=15, armor_use=750},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:helmet_chain", {
|
||||
description = "Chain Helmet",
|
||||
inventory_image = "3d_armor_inv_helmet_chain.png",
|
||||
groups = {armor_head=15, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
-- Regisiter Torso Armor
|
||||
|
||||
minetest.register_tool("3d_armor:chestplate_leather", {
|
||||
description = "Leather Chestplate",
|
||||
inventory_image = "3d_armor_inv_chestplate_leather.png",
|
||||
groups = {armor_torso=15, armor_heal=0, armor_use=100},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:chestplate_steel", {
|
||||
description = "Steel Chestplate",
|
||||
inventory_image = "3d_armor_inv_chestplate_steel.png",
|
||||
groups = {armor_torso=20, armor_heal=5, armor_use=250},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:chestplate_gold", {
|
||||
description = "Golden Chestplate",
|
||||
inventory_image = "3d_armor_inv_chestplate_gold.png",
|
||||
groups = {armor_torso=25, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:chestplate_diamond",{
|
||||
description = "Diamond Chestplate",
|
||||
inventory_image = "3d_armor_inv_chestplate_diamond.png",
|
||||
groups = {armor_torso=30, armor_heal=15, armor_use=750},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:chestplate_chain", {
|
||||
description = "Chain Chestplate",
|
||||
inventory_image = "3d_armor_inv_chestplate_chain.png",
|
||||
groups = {armor_torso=25, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
-- Regisiter Leg Armor
|
||||
|
||||
minetest.register_tool("3d_armor:leggings_leather", {
|
||||
description = "Leather Leggings",
|
||||
inventory_image = "3d_armor_inv_leggings_leather.png",
|
||||
groups = {armor_legs=10, armor_heal=0, armor_use=100},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:leggings_steel", {
|
||||
description = "Steel Leggings",
|
||||
inventory_image = "3d_armor_inv_leggings_steel.png",
|
||||
groups = {armor_legs=15, armor_heal=5, armor_use=250},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:leggings_gold", {
|
||||
description = "Golden Leggings",
|
||||
inventory_image = "3d_armor_inv_leggings_gold.png",
|
||||
groups = {armor_legs=20, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:leggings_diamond",{
|
||||
description = "Diamond Helmet",
|
||||
inventory_image = "3d_armor_inv_leggings_diamond.png",
|
||||
groups = {armor_legs=25, armor_heal=15, armor_use=750},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:leggings_chain", {
|
||||
description = "Chain Leggings",
|
||||
inventory_image = "3d_armor_inv_leggings_chain.png",
|
||||
groups = {armor_legs=20, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
-- Regisiter Boots
|
||||
|
||||
minetest.register_tool("3d_armor:boots_leather", {
|
||||
description = "Leather Boots",
|
||||
inventory_image = "3d_armor_inv_boots_leather.png",
|
||||
groups = {armor_feet=5, armor_heal=0, armor_use=100},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:boots_steel", {
|
||||
description = "Steel Boots",
|
||||
inventory_image = "3d_armor_inv_boots_steel.png",
|
||||
groups = {armor_feet=10, armor_heal=5, armor_use=250},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:boots_gold", {
|
||||
description = "Golden Boots",
|
||||
inventory_image = "3d_armor_inv_boots_gold.png",
|
||||
groups = {armor_feet=15, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:boots_diamond",{
|
||||
description = "Diamond Helmet",
|
||||
inventory_image = "3d_armor_inv_boots_diamond.png",
|
||||
groups = {armor_feet=20, armor_heal=15, armor_use=750},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
minetest.register_tool("3d_armor:boots_chain", {
|
||||
description = "Chain Boots",
|
||||
inventory_image = "3d_armor_inv_boots_chain.png",
|
||||
groups = {armor_feet=15, armor_heal=10, armor_use=500},
|
||||
wear = 0,
|
||||
})
|
||||
|
||||
-- Register Craft Recipies
|
||||
|
||||
local craft_ingreds = {
|
||||
leather = "mobs:leather",
|
||||
steel = "default:steel_ingot",
|
||||
gold = "default:gold_ingot",
|
||||
diamond = "default:diamond",
|
||||
chain = "fire:fire",
|
||||
}
|
||||
|
||||
for k, v in pairs(craft_ingreds) do
|
||||
minetest.register_craft({
|
||||
output = "3d_armor:helmet_"..k,
|
||||
recipe = {
|
||||
{v, v, v},
|
||||
{v, "", v},
|
||||
{"", "", ""},
|
||||
},
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "3d_armor:chestplate_"..k,
|
||||
recipe = {
|
||||
{v, "", v},
|
||||
{v, v, v},
|
||||
{v, v, v},
|
||||
},
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "3d_armor:leggings_"..k,
|
||||
recipe = {
|
||||
{v, v, v},
|
||||
{v, "", v},
|
||||
{v, "", v},
|
||||
},
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "3d_armor:boots_"..k,
|
||||
recipe = {
|
||||
{v, "", v},
|
||||
{v, "", v},
|
||||
},
|
||||
})
|
||||
end
|
|
@ -1,40 +0,0 @@
|
|||
-- (c) Copyright BlockMen (2013-2016), LGPLv3.0+
|
||||
|
||||
if minetest.settings:get_bool("enable_damage") then
|
||||
|
||||
hud.register("armor", {
|
||||
hud_elem_type = "statbar",
|
||||
position = {x = 0.5, y = 1},
|
||||
alignment = {x = -1, y = -1},
|
||||
offset = {x = -247, y = -134},
|
||||
size = {x = 24, y = 24},
|
||||
text = "3d_armor_statbar_fg.png",
|
||||
background = "3d_armor_statbar_bg.png",
|
||||
number = 0,
|
||||
max = 20,
|
||||
autohide_bg = true,
|
||||
})
|
||||
|
||||
local armor_org_func = armor.set_player_armor
|
||||
local function get_armor_lvl(def)
|
||||
-- items/protection based display
|
||||
local lvl = def.level or 0
|
||||
local max = 63 -- full diamond armor
|
||||
local ret = lvl/max
|
||||
if ret > 1 then
|
||||
ret = 1
|
||||
end
|
||||
return tonumber(20 * ret)
|
||||
end
|
||||
|
||||
function armor.set_player_armor(self, player)
|
||||
armor_org_func(self, player)
|
||||
local name = player:get_player_name()
|
||||
local def = self.def
|
||||
local armor_lvl = 0
|
||||
if def[name] and def[name].level then
|
||||
armor_lvl = get_armor_lvl(def[name])
|
||||
end
|
||||
hud.change_item(player, "armor", {number = armor_lvl})
|
||||
end
|
||||
end
|
|
@ -1,4 +0,0 @@
|
|||
local modpath = minetest.get_modpath("3d_armor")
|
||||
dofile(modpath .. "/api.lua")
|
||||
dofile(modpath .. "/armor.lua")
|
||||
dofile(modpath .. "/hud.lua")
|
Before Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 438 B |
Before Width: | Height: | Size: 433 B |
Before Width: | Height: | Size: 392 B |
Before Width: | Height: | Size: 353 B |
Before Width: | Height: | Size: 338 B |
Before Width: | Height: | Size: 764 B |
Before Width: | Height: | Size: 789 B |
Before Width: | Height: | Size: 687 B |
Before Width: | Height: | Size: 732 B |
Before Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 666 B |
Before Width: | Height: | Size: 681 B |
Before Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 585 B |
Before Width: | Height: | Size: 462 B |
Before Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 334 B |
Before Width: | Height: | Size: 336 B |
Before Width: | Height: | Size: 440 B |
Before Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 372 B |
Before Width: | Height: | Size: 292 B |
Before Width: | Height: | Size: 286 B |
Before Width: | Height: | Size: 276 B |
Before Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 346 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 383 B |