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.
This commit is contained in:
Mrchiantos 2019-07-19 12:41:33 +02:00
parent df06d60f29
commit 291d35fe69
2730 changed files with 98389 additions and 59433 deletions

121
.gitignore vendored
View File

@ -1,121 +0,0 @@
## Editors and Development environments
*~
*.swp
*.bak*
*.orig
# Vim
*.vim
# Kate
.*.kate-swp
.swp.*
# KDevelop4
.kdev4/
*.kdev4
# Eclipse (CDT and LDT)
.project
.cproject
.settings/
.buildpath
.metadata
# GNU Global
tags
!tags/
gtags.files
# OS X
.DS_Store
.idea/*
# Codelite
*.project
desktop.ini
## Files related to minetest development cycle
/*.patch
*.diff
# GNU Patch reject file
*.rej
## Non-static MultiCraft directories or symlinks to these
/bin/
/cache
/screenshots
/sounds
/mods/*
!/mods/minetest/
/mods/minetest/*
!/mods/minetest/mods_here.txt
/worlds
/world/
/clientmods/*
!/clientmods/preview/
/client/mod_storage/
## Configuration/log files
debug.txt
multicraft.conf
## Other files generated by minetest
screenshot_*.png
## Doxygen files
doc/Doxyfile
doc/html/
doc/doxygen_*
## Build files
CMakeFiles
Makefile
!build/android/Makefile
cmake_install.cmake
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
src/android_version.h
src/android_version_githash.h
src/cmake_config.h
src/cmake_config_githash.h
src/lua/build/
locale/
.directory
.gradle/
*.cbp
*.layout
*.o
*.a
*.ninja
.ninja*
*.gch
*.iml
test_config.h
cmake-build-debug/
cmake-build-release/
## Android build files
build/android/src/main/assets
build/android/build
build/android/deps
build/android/libs
build/android/jni/lib
build/android/jni/src
build/android/src/main/jniLibs
build/android/obj
build/android/local.properties
build/android/.gradle
timestamp
.idea
## iOS build files
build/iOS/MultiCraft/MultiCraft.xcodeproj/xcuserdata
build/iOS/MultiCraft/MultiCraft.xcodeproj/project.xcworkspace
# build/iOS/MultiCraft/MultiCraft/Assets.xcassets/AppIcon.appiconset/*.png
build/iOS/MultiCraft.xcworkspace
build/iOS/Pods
build/iOS/Podfile.lock
build/iOS/deps/*
!build/iOS/deps/*.sh
build/iOS/assets.zip
build/iOS/worlds.zip
build/iOS/Ads
## WindowsApp files
build/WindowsApp/multicraft-windows.zip

BIN
.vs/BlockColor/v15/.suo Normal file

Binary file not shown.

Binary file not shown.

3
.vs/ProjectSettings.json Normal file
View File

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

View File

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

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

View File

@ -6,8 +6,8 @@ if(${CMAKE_VERSION} STREQUAL "2.8.2")
endif()
# This can be read from ${PROJECT_NAME} after project() is called
project(MultiCraft)
set(PROJECT_NAME_CAPITALIZED "MultiCraft")
project(BlockColor)
set(PROJECT_NAME_CAPITALIZED "BlockColor")
# Works only for cmake 3.1 and greater
set(CMAKE_CXX_STANDARD 11)
@ -172,20 +172,20 @@ install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/menu_lua_api.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/texture_packs.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/world_format.txt" DESTINATION "${DOCDIR}")
install(FILES "multicraft.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")
install(FILES "blockcolor.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")
if(UNIX AND NOT APPLE)
install(FILES "doc/MultiCraft.6" "doc/MultiCraftServer.6" DESTINATION "${MANDIR}/man6")
install(FILES "misc/MultiCraft.desktop" DESTINATION "${XDG_APPS_DIR}")
install(FILES "misc/MultiCraft.appdata.xml" DESTINATION "${APPDATADIR}")
install(FILES "misc/MultiCraft.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
install(FILES "misc/MultiCraft-xorg-icon-128.png"
install(FILES "doc/BlockColor.6" "doc/BlockColorServer.6" DESTINATION "${MANDIR}/man6")
install(FILES "misc/BlockColor.desktop" DESTINATION "${XDG_APPS_DIR}")
install(FILES "misc/BlockColor.appdata.xml" DESTINATION "${APPDATADIR}")
install(FILES "misc/BlockColor.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
install(FILES "misc/BlockColor-xorg-icon-128.png"
DESTINATION "${ICONDIR}/hicolor/128x128/apps"
RENAME "MultiCraft.png")
RENAME "BlockColor.png")
endif()
if(APPLE)
install(FILES "misc/MultiCraft-icon.icns" DESTINATION "${SHAREDIR}")
install(FILES "misc/BlockColor-icon.icns" DESTINATION "${SHAREDIR}")
install(FILES "misc/Info.plist" DESTINATION "${BUNDLE_PATH}/Contents")
endif()
@ -202,12 +202,12 @@ add_subdirectory(src)
# CPack
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An Minecraft inspired game")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Sandbox Creative Game with 8 Colors")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VENDOR "MoNTE48")
set(CPACK_PACKAGE_CONTACT "MoNTE48@mail.ua")
set(CPACK_PACKAGE_VENDOR "MrChiantos")
set(CPACK_PACKAGE_CONTACT "julienetnel@gmail.com")
if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)

View File

@ -1,16 +1,17 @@
MultiCraft Open Source Project
Blockcolor Open Source Project
==============================
MultiCraft is an Open Source sandbox game inspired by [Minecraft](https://minecraft.net/).
Blockcolor is an Open Source sandbox creative game with 8 Colors. [Blockcolor.net(https://blockcolor.net/).
MultiCraft is based on the Minetest project, which is developed by a [number of contributors](https://github.com/minetest/minetest/graphs/contributors).
Blockcolor is based on Multicraft/Minetest projects.
Copyright © 2014-2019 Maksim Gamarnik [MoNTE48] <MoNTE48@mail.ua> & MultiCraft Development Team.
Copyright © 2018-2019 - MrChiantos & BlockColor Community.
The engine and the game is licensed under LGPLv3 (or higher). Resources games licensed under CC-BY-SA 3.0, unless otherwise stated.
You can help in the development. But you should always publish your source code after any changes.
Before any use of the MultiCraft source code or any part of it, you should be familiar with [LGPL-3.0](doc/LGPL-3.0.md) and [Other License.txt](doc/Other%20License.md)
Before any use of the blockcolor source code or any part of it, you should be familiar with [LGPL-3.0](doc/LGPL-3.0.md) and [Other License.txt](doc/Other%20License.md)
Any code that you push to this repository is automatically licensed as LGPLv3 (or higher) and belongs blockcolor Project and/or the owner of the project without exception.
Any code that you push to this repository is automatically licensed as LGPLv3 (or higher) and belongs MultiCraft Project and/or the owner of the project without exception.
Adding code under another license is possible only by agreement with the project owner and the creation of appropriate notes.

1850
blockcolor.conf.example Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -18,7 +18,7 @@ export PATH="$mingw/bin:$PATH"
EXISTING_DIR=$PWD/../.. \
./buildwin${bit}.sh /tmp/build${bit}
cd /tmp/build${bit}/MultiCraft/_build/_CPack_Packages/*/ZIP/
cd /tmp/build${bit}/BlockColor/_build/_CPack_Packages/*/ZIP/
rm *.zip; dir=$(echo *)
if [ $bit -eq 64 ]; then
base=$mingw/x86_64-w64-mingw32/bin
@ -27,6 +27,6 @@ else
fi
cp -pv $base/lib{gcc,stdc++,winpthread}*.dll $dir/bin/
rm -f $OLDPWD/multicraft-windows.zip
zip -r $OLDPWD/multicraft-windows.zip $dir
rm -f $OLDPWD/blockcolor-windows.zip
zip -r $OLDPWD/blockcolor-windows.zip $dir
echo "Done"

View File

@ -69,10 +69,10 @@ cd $libdir
# Get the source
cd $builddir
[ -d MultiCraft ] || ln -s "$EXISTING_DIR" MultiCraft
[ -d BlockColor ] || ln -s "$EXISTING_DIR" BlockColor
# Build the thing
cd MultiCraft
cd BlockColor
[ -d _build ] && rm -Rf _build/
mkdir _build
cd _build

View File

@ -70,10 +70,10 @@ cd $libdir
# Get the source
cd $builddir
[ -d MultiCraft ] || ln -s "$EXISTING_DIR" MultiCraft
[ -d BlockColor ] || ln -s "$EXISTING_DIR" BlockColor
# Build the thing
cd MultiCraft
cd BlockColor
[ -d _build ] && rm -Rf _build/
mkdir _build
cd _build

View File

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

View File

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

View File

@ -1,4 +1,4 @@
MultiCraft Android version
BlockColor Android version
=====================
Controls
@ -32,8 +32,8 @@ When a menu or inventory is displayed:
Special settings
----------------
There are some settings especially useful for Android users. MultiCraft's config
file can usually be found at /sdcard/Android/data/mobi.MultiCraft/files.
There are some settings especially useful for Android users. BlockColor's config
file can usually be found at /sdcard/Android/data/mobi.BlockColor/files.
* gui_scaling: this is a user-specified scaling factor for the GUI- In case
main menu is too big or small on your device, try changing this
@ -54,9 +54,9 @@ Not all issues are fixed by now:
Requirements
------------
In order to build, your PC has to be set up to build MultiCraft in the usual
manner (see the regular MultiCraft documentation for how to get this done).
In addition to what is required for MultiCraft in general, you will need the
In order to build, your PC has to be set up to build BlockColor in the usual
manner (see the regular BlockColor documentation for how to get this done).
In addition to what is required for BlockColor in general, you will need the
following software packages. The version number in parenthesis denotes the
version that was tested at the time this README was drafted; newer/older
versions may or may not work.
@ -80,7 +80,7 @@ Debug build:
* Wait for build to finish
After the build is finished, the resulting apk can be fond in
build/android/bin/. It will be called MultiCraft-debug.apk
build/android/bin/. It will be called BlockColor-debug.apk
Release build:
@ -93,12 +93,12 @@ Release build:
file "ant.properties" there. Add following lines to that file:
> key.store=<path to your keystore>
> key.alias=MultiCraft
> key.alias=BlockColor
* Execute "make release"
* Enter your keystore as well as your Mintest key password once asked. Be
careful it's shown on console in clear text!
* The result can be found at "bin/MultiCraft-release.apk"
* The result can be found at "bin/BlockColor-release.apk"
Other things that may be nice to know
------------

View File

@ -26,7 +26,7 @@ android {
buildToolsVersion "29.0.0"
defaultConfig {
applicationId 'com.multicraft.game'
applicationId 'net.blockcolor.game'
minSdkVersion 16
targetSdkVersion 29
versionCode 1

View File

@ -38,7 +38,7 @@ LOCAL_SRC_FILES := deps/luajit/src/libluajit.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := MultiCraft
LOCAL_MODULE := BlockColor
LOCAL_CFLAGS += \
-DJSONCPP_NO_LOCALE_SUPPORT \

View File

@ -2,7 +2,7 @@ APP_PLATFORM := ${APP_PLATFORM}
APP_ABI := ${TARGET_ABI}
APP_STL := ${APP_STL}
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
APP_MODULES := MultiCraft
APP_MODULES := BlockColor
APP_CPPFLAGS := -Ofast -fvisibility=hidden -fpic -fexceptions -Wno-deprecated-declarations

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.multicraft.game"
package="net.blockcolor.game"
android:installLocation="auto"
android:versionName="@string/ver">
@ -37,7 +37,7 @@
android:required="false" />
<activity
android:name="com.multicraft.game.MainActivity"
android:name="net.blockcolor.game.MainActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:screenOrientation="sensorLandscape"
android:theme="@style/AppTheme">
@ -47,7 +47,7 @@
</intent-filter>
</activity>
<activity
android:name="com.multicraft.game.GameActivity"
android:name="net.blockcolor.game.GameActivity"
android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenSize|smallestScreenSize"
android:hardwareAccelerated="true"
android:launchMode="singleTask"
@ -55,19 +55,19 @@
android:theme="@style/AppTheme">
<meta-data
android:name="android.app.lib_name"
android:value="MultiCraft" />
android:value="BlockColor" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name="com.multicraft.game.InputDialogActivity"
android:name="net.blockcolor.game.InputDialogActivity"
android:theme="@style/Theme.Transparent"
android:windowSoftInputMode="stateAlwaysHidden" />
<service
android:name="com.multicraft.game.UnzipService"
android:name="net.blockcolor.game.UnzipService"
android:enabled="true"
android:exported="false" />
</application>

View File

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

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.app.Activity;
import android.app.AlertDialog;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
public interface CallBackListener {
void updateViews(int text, int textVisibility, int progressVisibility);

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.content.Context;
import android.os.AsyncTask;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.app.Activity;
import android.app.AlarmManager;
@ -16,7 +16,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
import static com.multicraft.game.MainActivity.unzipLocation;
import static net.blockcolor.game.MainActivity.unzipLocation;
public class CopyZipTask extends AsyncTask<String, Void, String[]> implements DialogsCallback {

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.os.AsyncTask;
import android.view.View;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
public interface DialogsCallback {
void onPositive(String source);

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
@ -14,22 +14,22 @@ import android.view.WindowManager;
import com.crashlytics.android.Crashlytics;
/*import static com.multicraft.game.AdManager.initAd;
import static com.multicraft.game.AdManager.setAdsCallback;
import static com.multicraft.game.AdManager.startAd;
import static com.multicraft.game.AdManager.stopAd;*/
/*import static net.blockcolor.game.AdManager.initAd;
import static net.blockcolor.game.AdManager.setAdsCallback;
import static net.blockcolor.game.AdManager.startAd;
import static net.blockcolor.game.AdManager.stopAd;*/
public class GameActivity extends NativeActivity {
static {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64")) {
//System.loadLibrary("c++_shared"); // uncomment when upgrading to Clang
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
} else {
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
}
} else {
System.loadLibrary("MultiCraft");
System.loadLibrary("BlockColor");
}
}

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.annotation.SuppressLint;
import android.app.Activity;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.annotation.SuppressLint;
import android.app.Activity;
@ -47,11 +47,11 @@ import java.util.List;
import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static com.multicraft.game.PreferencesHelper.TAG_BUILD_NUMBER;
import static com.multicraft.game.PreferencesHelper.TAG_CONSENT_ASKED;
import static com.multicraft.game.PreferencesHelper.TAG_COPY_WORLDS;
import static com.multicraft.game.PreferencesHelper.TAG_LAUNCH_TIMES;
import static com.multicraft.game.PreferencesHelper.TAG_SHORTCUT_CREATED;
import static net.blockcolor.game.PreferencesHelper.TAG_BUILD_NUMBER;
import static net.blockcolor.game.PreferencesHelper.TAG_CONSENT_ASKED;
import static net.blockcolor.game.PreferencesHelper.TAG_COPY_WORLDS;
import static net.blockcolor.game.PreferencesHelper.TAG_LAUNCH_TIMES;
import static net.blockcolor.game.PreferencesHelper.TAG_SHORTCUT_CREATED;
public class MainActivity extends Activity implements WVersionManager.ActivityListener, CallBackListener, DialogsCallback {
public final static int REQUEST_CODE = 104;
@ -68,9 +68,9 @@ public class MainActivity extends Activity implements WVersionManager.ActivityLi
"HU", "IE", "IT", "LV", "LT", "LU",
"MT", "NL", "PL", "PT", "RO", "SK",
"SI", "ES", "SE", "GB", "IS", "LI", "NO"};
private static String dataFolder = "/Android/data/com.multicraft.game/files/";
private static String dataFolder = "/Android/data/net.blockcolor.game/files/";
public static String unzipLocation = EXTERNAL_STORAGE + dataFolder;
private static String worldPath = EXTERNAL_STORAGE + "/Android/data/mobi.MultiCraft/files/worlds";
private static String worldPath = EXTERNAL_STORAGE + "/Android/data/mobi.BlockColor/files/worlds";
private int height, width;
private boolean consent;
private ProgressBar mProgressBar;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.content.Context;
import android.content.SharedPreferences;
@ -13,7 +13,7 @@ class PreferencesHelper {
static final String RV_LOADED = "rewardedVideoLoaded";
static final String ADS_DELAY = "adsDelay";
static final String ADS_REPEAT = "adsRepeat";
private static final String SETTINGS = "MultiCraftSettings";
private static final String SETTINGS = "BlockColorSettings";
private static PreferencesHelper instance;
private static SharedPreferences sharedPreferences;

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.app.Activity;
import android.app.Dialog;

View File

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

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.app.IntentService;
import android.app.Notification;
@ -20,7 +20,7 @@ import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class UnzipService extends IntentService {
public static final String ACTION_UPDATE = "mobi.MultiCraft.UPDATE";
public static final String ACTION_UPDATE = "mobi.BlockColor.UPDATE";
public static final String EXTRA_KEY_IN_FILE = "file";
public static final String EXTRA_KEY_IN_LOCATION = "location";
public static final String ACTION_PROGRESS = "progress";
@ -28,7 +28,7 @@ public class UnzipService extends IntentService {
private int id = 1;
public UnzipService() {
super("com.multicraft.game.UnzipService");
super("net.blockcolor.game.UnzipService");
}
private void isDir(String dir, String unzipLocation) {
@ -49,9 +49,9 @@ public class UnzipService extends IntentService {
private void createNotification() {
// There are hardcoding only for show it's just strings
String name = "mobi.MultiCraft";
String channelId = "MultiCraft channel"; // The user-visible name of the channel.
String description = "notifications from MultiCraft"; // The user-visible description of the channel.
String name = "mobi.BlockColor";
String channelId = "BlockColor channel"; // The user-visible name of the channel.
String description = "notifications from BlockColor"; // The user-visible description of the channel.
Notification.Builder builder;
if (mNotifyManager == null) {
mNotifyManager =

View File

@ -1,4 +1,4 @@
package com.multicraft.game;
package net.blockcolor.game;
import android.annotation.SuppressLint;
import android.app.Activity;

View File

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

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">MultiCraft</string>
<string name="app_name" translatable="false">BlockColor</string>
<string name="ver" translatable="false">1.2</string>
<!-- preparation for start -->
<string name="rm_old">Preparing to update&#8230;</string>
<string name="loading">Loading&#8230;</string>
<string name="notification_title">Loading MultiCraft</string>
<string name="notification_title">Loading BlockColor</string>
<string name="notification_description">Less than 1 minute&#8230;</string>
<string name="restart">Unexpected issue, the game will be restarted automatically</string>
<string name="no_space">No space left for game files, please free space on SD card</string>
@ -17,9 +17,9 @@
<string name="location">Location permission provide you better interaction with game</string>
<string name="close_game">Close game</string>
<string name="settings">App settings</string>
<string name="denied">You cannot use MultiCraft without storage permission. \nPlease turn on it at [Settings] -> [Permissions]></string>
<string name="denied">You cannot use BlockColor without storage permission. \nPlease turn on it at [Settings] -> [Permissions]></string>
<!-- rate input_dialog -->
<string name="rta_dialog_title">Please, rate MultiCraft!</string>
<string name="rta_dialog_title">Please, rate BlockColor!</string>
<string name="rate_title">Title</string>
<string name="rate_description">Description</string>
<string name="rate_submit">SUBMIT</string>
@ -33,7 +33,7 @@
<!-- reminder -->
<!-- no connection dialog -->
<string name="conn_message">MultiCraft requires an internet connection to use all game features.\nOtherwise, you will not get updates and multiplayer will be not available!</string>
<string name="conn_message">BlockColor requires an internet connection to use all game features.\nOtherwise, you will not get updates and multiplayer will be not available!</string>
<string name="conn_wifi">Wi-Fi</string>
<string name="conn_mobile">Mobile Data</string>

View File

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

View File

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

View File

@ -38,7 +38,7 @@
844B495F228606B200EB60EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 844B495D228606B200EB60EF /* Main.storyboard */; };
8465A76522A7D4500095B7CA /* libintl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8465A76422A7D4500095B7CA /* libintl.cpp */; };
849C4F86209656D3005EB041 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 849C4F85209656D2005EB041 /* ru.lproj */; };
EB4367AE23CAD13A43ADF4B1 /* libPods-MultiCraft.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */; };
EB4367AE23CAD13A43ADF4B1 /* libPods-BlockColor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */; };
F810D7052080E48100D109B8 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F810D7042080E48000D109B8 /* en.lproj */; };
F84D3A951DE79AB400ADE1A0 /* ads.mm in Sources */ = {isa = PBXBuildFile; fileRef = F84D3A941DE79AB400ADE1A0 /* ads.mm */; };
F85119A71F4476FC00BFA9AF /* libcurl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F85119A61F4476FC00BFA9AF /* libcurl.a */; };
@ -266,8 +266,8 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MultiCraft.release.xcconfig"; path = "../Pods/Target Support Files/Pods-MultiCraft/Pods-MultiCraft.release.xcconfig"; sourceTree = "<group>"; };
32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MultiCraft.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-MultiCraft/Pods-MultiCraft.debug.xcconfig"; sourceTree = "<group>"; };
1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlockColor.release.xcconfig"; path = "../Pods/Target Support Files/Pods-BlockColor/Pods-BlockColor.release.xcconfig"; sourceTree = "<group>"; };
32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlockColor.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-BlockColor/Pods-BlockColor.debug.xcconfig"; sourceTree = "<group>"; };
4B0F49C81E424F910003953D /* map_settings_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = map_settings_manager.cpp; path = ../../../../src/map_settings_manager.cpp; sourceTree = "<group>"; };
4B0F49CA1E424FAE0003953D /* reflowscan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = reflowscan.cpp; path = ../../../../src/reflowscan.cpp; sourceTree = "<group>"; };
4B0F49CC1E424FC20003953D /* remoteplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = remoteplayer.cpp; path = ../../../../src/remoteplayer.cpp; sourceTree = "<group>"; };
@ -324,7 +324,7 @@
8465A76322A7D4500095B7CA /* Util.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Util.hpp; path = ../../../../lib/intl/Util.hpp; sourceTree = "<group>"; };
8465A76422A7D4500095B7CA /* libintl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = libintl.cpp; path = ../../../../lib/intl/libintl.cpp; sourceTree = "<group>"; };
849C4F85209656D2005EB041 /* ru.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ru.lproj; sourceTree = "<group>"; };
8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MultiCraft.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BlockColor.a"; sourceTree = BUILT_PRODUCTS_DIR; };
F810D7042080E48000D109B8 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = en.lproj; sourceTree = "<group>"; };
F84D3A931DE79AB400ADE1A0 /* ads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ads.h; path = ../../Ads/ads.h; sourceTree = "<group>"; };
F84D3A941DE79AB400ADE1A0 /* ads.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ads.mm; path = ../../Ads/ads.mm; sourceTree = "<group>"; };
@ -332,7 +332,7 @@
F856B5C21F55F7EE00FE9494 /* bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bg.png; path = ../../../../textures/base/bg.png; sourceTree = "<group>"; };
F87DC8B8210887C600393B64 /* mapgen_v7p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mapgen_v7p.h; path = ../../../../src/mapgen_v7p.h; sourceTree = "<group>"; };
F87DC8B9210887C700393B64 /* mapgen_v7p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mapgen_v7p.cpp; path = ../../../../src/mapgen_v7p.cpp; sourceTree = "<group>"; };
F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MultiCraft.app; sourceTree = BUILT_PRODUCTS_DIR; };
F8E6C4D91DCA3B7900F64426 /* BlockColor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlockColor.app; sourceTree = BUILT_PRODUCTS_DIR; };
F8E6C4E81DCA3B7900F64426 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
F8E6C4EB1DCA3B7900F64426 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
F8E6C4ED1DCA3B7900F64426 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -809,7 +809,7 @@
F8E6C7DD1DCA47A300F64426 /* libvorbis.a in Frameworks */,
F8E6C7DF1DCA47AF00F64426 /* libvorbisfile.a in Frameworks */,
F85119A71F4476FC00BFA9AF /* libcurl.a in Frameworks */,
EB4367AE23CAD13A43ADF4B1 /* libPods-MultiCraft.a in Frameworks */,
EB4367AE23CAD13A43ADF4B1 /* libPods-BlockColor.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -839,8 +839,8 @@
87D06CD2CC310BE5E73639F4 /* Pods */ = {
isa = PBXGroup;
children = (
32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */,
1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */,
32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */,
1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
@ -857,7 +857,7 @@
F8E6C4D01DCA3B7900F64426 = {
isa = PBXGroup;
children = (
F8E6C4DB1DCA3B7900F64426 /* MultiCraft */,
F8E6C4DB1DCA3B7900F64426 /* BlockColor */,
F8E6C4DA1DCA3B7900F64426 /* Products */,
F8E6C7C31DCA42F300F64426 /* Frameworks */,
87D06CD2CC310BE5E73639F4 /* Pods */,
@ -868,12 +868,12 @@
F8E6C4DA1DCA3B7900F64426 /* Products */ = {
isa = PBXGroup;
children = (
F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */,
F8E6C4D91DCA3B7900F64426 /* BlockColor.app */,
);
name = Products;
sourceTree = "<group>";
};
F8E6C4DB1DCA3B7900F64426 /* MultiCraft */ = {
F8E6C4DB1DCA3B7900F64426 /* BlockColor */ = {
isa = PBXGroup;
children = (
849C4F85209656D2005EB041 /* ru.lproj */,
@ -885,7 +885,7 @@
F8E6C4DC1DCA3B7900F64426 /* Supporting Files */,
F8E6C4F61DCA3EAF00F64426 /* src */,
);
path = MultiCraft;
path = BlockColor;
sourceTree = "<group>";
};
F8E6C4DC1DCA3B7900F64426 /* Supporting Files */ = {
@ -1501,7 +1501,7 @@
F8E6C7C81DCA430300F64426 /* OpenGLES.framework */,
F8E6C7C61DCA42FA00F64426 /* UIKit.framework */,
F8E6C7C41DCA42F300F64426 /* QuartzCore.framework */,
8758CE009FCB7E91F4C84C28 /* libPods-MultiCraft.a */,
8758CE009FCB7E91F4C84C28 /* libPods-BlockColor.a */,
);
name = Frameworks;
sourceTree = "<group>";
@ -1509,9 +1509,9 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
F8E6C4D81DCA3B7900F64426 /* MultiCraft */ = {
F8E6C4D81DCA3B7900F64426 /* BlockColor */ = {
isa = PBXNativeTarget;
buildConfigurationList = F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "MultiCraft" */;
buildConfigurationList = F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "BlockColor" */;
buildPhases = (
C73312165F97B96FC254B124 /* [CP] Check Pods Manifest.lock */,
F8E6C4D51DCA3B7900F64426 /* Sources */,
@ -1523,9 +1523,9 @@
);
dependencies = (
);
name = MultiCraft;
productName = MultiCraft;
productReference = F8E6C4D91DCA3B7900F64426 /* MultiCraft.app */;
name = BlockColor;
productName = BlockColor;
productReference = F8E6C4D91DCA3B7900F64426 /* BlockColor.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@ -1535,7 +1535,7 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = MultiCraft;
ORGANIZATIONNAME = BlockColor;
TargetAttributes = {
F8E6C4D81DCA3B7900F64426 = {
CreatedOnToolsVersion = 8.0;
@ -1547,7 +1547,7 @@
};
};
};
buildConfigurationList = F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "MultiCraft" */;
buildConfigurationList = F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "BlockColor" */;
compatibilityVersion = "Xcode 10.0";
developmentRegion = en;
hasScannedForEncodings = 0;
@ -1560,7 +1560,7 @@
projectDirPath = "";
projectRoot = "";
targets = (
F8E6C4D81DCA3B7900F64426 /* MultiCraft */,
F8E6C4D81DCA3B7900F64426 /* BlockColor */,
);
};
/* End PBXProject section */
@ -1595,7 +1595,7 @@
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-MultiCraft-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-BlockColor-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@ -1608,15 +1608,15 @@
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources-${CONFIGURATION}-input-files.xcfilelist",
"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources-${CONFIGURATION}-output-files.xcfilelist",
"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MultiCraft/Pods-MultiCraft-resources.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlockColor/Pods-BlockColor-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@ -1932,7 +1932,7 @@
};
F8E6C4F11DCA3B7900F64426 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 32528F14AAB9EA0E9CAB8526 /* Pods-MultiCraft.debug.xcconfig */;
baseConfigurationReference = 32528F14AAB9EA0E9CAB8526 /* Pods-BlockColor.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
@ -1965,7 +1965,7 @@
"${SRCROOT}/../deps/freetype/include/freetype2",
"${SRCROOT}/../Pods/libCurlPod/include",
);
INFOPLIST_FILE = MultiCraft/Info.plist;
INFOPLIST_FILE = BlockColor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -2019,14 +2019,14 @@
"-L${SRCROOT}/../Pods/libCurlPod/lib",
"-Wl,-dead_strip",
);
PRODUCT_BUNDLE_IDENTIFIER = mobi.MultiCraft;
PRODUCT_BUNDLE_IDENTIFIER = mobi.BlockColor;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
F8E6C4F21DCA3B7900F64426 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1E76DCA01B51A98F0CA4C480 /* Pods-MultiCraft.release.xcconfig */;
baseConfigurationReference = 1E76DCA01B51A98F0CA4C480 /* Pods-BlockColor.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
@ -2060,7 +2060,7 @@
"${SRCROOT}/../deps/freetype/include/freetype2",
"${SRCROOT}/../Pods/libCurlPod/include",
);
INFOPLIST_FILE = MultiCraft/Info.plist;
INFOPLIST_FILE = BlockColor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -2114,7 +2114,7 @@
"-L${SRCROOT}/../Pods/libCurlPod/lib",
"-Wl,-dead_strip",
);
PRODUCT_BUNDLE_IDENTIFIER = mobi.MultiCraft;
PRODUCT_BUNDLE_IDENTIFIER = mobi.BlockColor;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@ -2122,7 +2122,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "MultiCraft" */ = {
F8E6C4D41DCA3B7900F64426 /* Build configuration list for PBXProject "BlockColor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F8E6C4EE1DCA3B7900F64426 /* Debug */,
@ -2131,7 +2131,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "MultiCraft" */ = {
F8E6C4F01DCA3B7900F64426 /* Build configuration list for PBXNativeTarget "BlockColor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F8E6C4F11DCA3B7900F64426 /* Debug */,

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
project 'MultiCraft/MultiCraft.xcodeproj'
project 'BlockColor/BlockColor.xcodeproj'
platform :ios, '9.0'
target 'MultiCraft' do
target 'BlockColor' do
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/appodeal/CocoaPods.git'

View File

@ -1,7 +1,7 @@
#!/bin/bash -e
echo
echo "Starting build MultiCraft for iOS..."
echo "Starting build BlockColor for iOS..."
echo
echo "Build Libraries:"

View File

@ -5,7 +5,7 @@
# (install: brew install imagemagick)
SIZES="76 120 152 167 180"
SRCFILE=icon.png
DSTDIR=MultiCraft/MultiCraft/Assets.xcassets/AppIcon.appiconset
DSTDIR=BlockColor/BlockColor/Assets.xcassets/AppIcon.appiconset
for sz in $SIZES; do
echo "Creating ${sz}x${sz} icon"

View File

@ -1,6 +1,6 @@
#!/bin/bash -e
if [ ! -d MultiCraft/MultiCraft.xcodeproj ]; then
if [ ! -d BlockColor/BlockColor.xcodeproj ]; then
echo "Run this in build/iOS"
exit 1
fi

View File

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

View File

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

View File

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

114
doc/BlockColor.6 Normal file
View File

@ -0,0 +1,114 @@
.TH blockcolor 6 "10 September 2013" "" ""
.SH NAME
BlockColor, BlockColorServer \- Multiplayer infinite-world block sandbox
.SH SYNOPSIS
.B BlockColor
[\fB--server SERVER OPTIONS\fR | \fBCLIENT OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]
.B BlockColorServer
[\fBSERVER OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]
.SH DESCRIPTION
.B BlockColor
is one of the first InfiniMiner/Minecraft(/whatever) inspired games (started October 2010), with a goal of taking the survival multiplayer gameplay to a slightly different direction.
.PP
The main design philosophy is to keep it technically simple, stable and portable. It will be kept lightweight enough to run on fairly old hardware.
.SH COMMON OPTIONS
.TP
.B \-\-help
Print allowed options and exit
.TP
.B \-\-version
Print version information and exit
.TP
.B \-\-config <value>
Load configuration from specified file
.TP
.B \-\-logfile <value>
Set logfile path (debug.txt)
.TP
.B \-\-info
Print more information to console
.TP
.B \-\-verbose
Print even more information to console
.TP
.B \-\-trace
Print enormous amounts of information to console
.TP
.B \-\-gameid <value>
Set gameid
.TP
.B \-\-worldname <value>
Set world path by name
.TP
.B \-\-world <value> | list
Set world path or list worlds
.TP
.B \-\-map\-dir <value>
Same as \-\-world (deprecated)
.TP
.B \-\-port <value>
Set network port (UDP) to use
.TP
.B \-\-run\-unittests
Run unit tests and exit
.SH CLIENT OPTIONS
.TP
.B \-\-address <value>
Address to connect to
.TP
.B \-\-go
Disable main menu
.TP
.B \-\-name <value>
Set player name
.TP
.B \-\-password <value>
Set password
.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP
.B \-\-videomodes
List available video modes (client only)
.TP
.B \-\-speedtests
Run speed tests
.SH SERVER OPTIONS
.TP
.B \-\-migrate <value>
Migrate from current map backend to another. Possible values are sqlite3,
leveldb, redis, and dummy.
.TP
.B \-\-terminal
Display an interactive terminal over ncurses during execution.
.SH ENVIRONMENT
.TP
.B BLOCKCOLOR_SUBGAME_PATH
Colon delimited list of directories to search for subgames.
.SH BUGS
Please report all bugs to Perttu Ahola <celeron55@gmail.com>.
.SH AUTHOR
.PP
Perttu Ahola <celeron55@gmail.com>
and contributors.
.PP
This man page was originally written by
Juhani Numminen <juhaninumminen0@gmail.com>.
.SH WWW
http://www.minetest.net/

2
doc/BlockColorServer.6 Normal file
View File

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

View File

@ -1,114 +0,0 @@
.TH MultiCraft 6 "10 September 2013" "" ""
.SH NAME
MultiCraft, MultiCraftServer \- Multiplayer infinite-world block sandbox
.SH SYNOPSIS
.B MultiCraft
[\fB--server SERVER OPTIONS\fR | \fBCLIENT OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]
.B MultiCraftServer
[\fBSERVER OPTIONS\fR]
[\fBCOMMON OPTIONS\fR]
[\fBWORLD PATH\fR]
.SH DESCRIPTION
.B MultiCraft
is one of the first InfiniMiner/Minecraft(/whatever) inspired games (started October 2010), with a goal of taking the survival multiplayer gameplay to a slightly different direction.
.PP
The main design philosophy is to keep it technically simple, stable and portable. It will be kept lightweight enough to run on fairly old hardware.
.SH COMMON OPTIONS
.TP
.B \-\-help
Print allowed options and exit
.TP
.B \-\-version
Print version information and exit
.TP
.B \-\-config <value>
Load configuration from specified file
.TP
.B \-\-logfile <value>
Set logfile path (debug.txt)
.TP
.B \-\-info
Print more information to console
.TP
.B \-\-verbose
Print even more information to console
.TP
.B \-\-trace
Print enormous amounts of information to console
.TP
.B \-\-gameid <value>
Set gameid
.TP
.B \-\-worldname <value>
Set world path by name
.TP
.B \-\-world <value> | list
Set world path or list worlds
.TP
.B \-\-map\-dir <value>
Same as \-\-world (deprecated)
.TP
.B \-\-port <value>
Set network port (UDP) to use
.TP
.B \-\-run\-unittests
Run unit tests and exit
.SH CLIENT OPTIONS
.TP
.B \-\-address <value>
Address to connect to
.TP
.B \-\-go
Disable main menu
.TP
.B \-\-name <value>
Set player name
.TP
.B \-\-password <value>
Set password
.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP
.B \-\-videomodes
List available video modes (client only)
.TP
.B \-\-speedtests
Run speed tests
.SH SERVER OPTIONS
.TP
.B \-\-migrate <value>
Migrate from current map backend to another. Possible values are sqlite3,
leveldb, redis, and dummy.
.TP
.B \-\-terminal
Display an interactive terminal over ncurses during execution.
.SH ENVIRONMENT
.TP
.B MULTICRAFT_SUBGAME_PATH
Colon delimited list of directories to search for subgames.
.SH BUGS
Please report all bugs to Perttu Ahola <celeron55@gmail.com>.
.SH AUTHOR
.PP
Perttu Ahola <celeron55@gmail.com>
and contributors.
.PP
This man page was originally written by
Juhani Numminen <juhaninumminen0@gmail.com>.
.SH WWW
http://www.minetest.net/

View File

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

View File

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

View File

@ -1,4 +1,4 @@
MultiCraft Docs
BlockColor Docs
========
Default controls
@ -61,24 +61,24 @@ Where each location is on each platform:
* user = .
* Linux installed:
* bin = /usr/bin
* share = /usr/share/MultiCraft
* user = ~/.MultiCraft
* share = /usr/share/BlockColor
* user = ~/.BlockColor
* macOS:
* bin = Contents/MacOS
* share = Contents/Resources
* user = Contents/User OR ~/Library/Application Support/MultiCraft
* user = Contents/User OR ~/Library/Application Support/BlockColor
Worlds can be found as separate folders in: user/worlds/
Configuration file:
-------------------
- Default location:
$user/MultiCraft.conf
- It is created by MultiCraft when it is ran the first time.
$user/BlockColor.conf
- It is created by BlockColor when it is ran the first time.
- A specific file can be specified on the command line:
--config <path-to-file>
- A run-in-place build will look for the configuration file in
$location_of_exe/../MultiCraft.conf and also $location_of_exe/../../MultiCraft.conf
$location_of_exe/../BlockColor.conf and also $location_of_exe/../../BlockColor.conf
Command-line options:
---------------------
@ -122,13 +122,13 @@ For Fedora users:
$ sudo dnf install git
Download source (this is the URL to the latest of source repository, which might not work at all times) using git:
$ git clone --depth 1 https://github.com/MultiCraft/MultiCraft.git
$ cd MultiCraft
$ git clone --depth 1 https://github.com/BlockColor/BlockColor.git
$ cd BlockColor
Download source, without using git:
$ wget https://github.com/MultiCraft/MultiCraft/archive/master.tar.gz
$ wget https://github.com/BlockColor/BlockColor/archive/master.tar.gz
$ tar xf master.tar.gz
$ cd MultiCraft-master
$ cd BlockColor-master
#### Build
@ -139,7 +139,7 @@ Build a version that runs directly from the source directory:
Run it:
$ ./bin/MultiCraft
$ ./bin/BlockColor
- Use cmake . -LH to see all CMake options and their current state
- If you want to install it system-wide (or are making a distribution package),
@ -155,8 +155,8 @@ Run it:
General options:
BUILD_CLIENT - Build MultiCraft client
BUILD_SERVER - Build MultiCraft server
BUILD_CLIENT - Build BlockColor client
BUILD_SERVER - Build BlockColor server
CMAKE_BUILD_TYPE - Type of build (Release vs. Debug)
Release - Release build
Debug - Debug build
@ -178,7 +178,7 @@ General options:
ENABLE_SYSTEM_JSONCPP - Use JsonCPP from system
RUN_IN_PLACE - Create a portable install (worlds, settings etc. in current directory)
USE_GPROF - Enable profiling using GProf
VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> MultiCraft 0.4.9-foobar)
VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> BlockColor 0.4.9-foobar)
Library specific options:
@ -256,8 +256,8 @@ Library specific options:
* Optional: gettext library and tools:
http://gnuwin32.sourceforge.net/downlinks/gettext.php
* This is used for other UI languages. Feel free to leave it out.
* And, of course, MultiCraft:
https://github.com/MultiCraftProject/MultiCraft
* And, of course, BlockColor:
https://github.com/BlockColorProject/BlockColor
* Steps:
* Select a directory called DIR hereafter in which you will operate.
* Make sure you have CMake and a compiler installed.
@ -278,7 +278,7 @@ Library specific options:
* irrlicht-1.8.3.zip
* sqlite-amalgamation-3130000.zip (SQLite3 headers)
* sqlite-dll-win32-x86-3130000.zip (SQLite3 library for 32bit system)
* MultiCraft-source.zip
* BlockColor-source.zip
+ zlib-1.2.5
* zlib.h
+ win32
@ -300,18 +300,18 @@ Library specific options:
+bin
+include
+lib
+ MultiCraft
+ BlockColor
+ src
+ doc
* CMakeLists.txt
...
-----------------
* Start up the CMake GUI
* Select "Browse Source..." and select DIR/MultiCraft
* Select "Browse Source..." and select DIR/BlockColor
* Now, if using MSVC:
* Select "Browse Build..." and select DIR/MultiCraft-build
* Select "Browse Build..." and select DIR/BlockColor-build
* Else if using MinGW:
* Select "Browse Build..." and select DIR/MultiCraft
* Select "Browse Build..." and select DIR/BlockColor
* Select "Configure"
* Select your compiler
* It will warn about missing stuff, ignore that at this point. (later don't)
@ -321,7 +321,7 @@ Library specific options:
BUILD_CLIENT [X]
BUILD_SERVER [ ]
CMAKE_BUILD_TYPE Release
CMAKE_INSTALL_PREFIX DIR/MultiCraft-install
CMAKE_INSTALL_PREFIX DIR/BlockColor-install
IRRLICHT_SOURCE_DIR DIR/irrlicht-1.8.3
RUN_IN_PLACE [X]
WARN_ALL [ ]
@ -336,21 +336,21 @@ Library specific options:
* If CMake complains it couldn't find SQLITE3, choose "Advanced" box on the
right top corner, then specify the location of SQLITE3_INCLUDE_DIR and
SQLITE3_LIBRARY manually.
* If you want to build 64-bit MultiCraft, you will need to build 64-bit version
* If you want to build 64-bit BlockColor, you will need to build 64-bit version
of irrlicht engine manually, as only 32-bit pre-built library is provided.
* Hit "Configure"
* Hit "Configure" once again 8)
* If something is still coloured red, you have a problem.
* Hit "Generate"
If using MSVC:
* Open the generated MultiCraft.sln
* Open the generated BlockColor.sln
* The project defaults to the "Debug" configuration. Make very sure to
select "Release", unless you want to debug some stuff (it's slower
and might not even work at all)
* Build the ALL_BUILD project
* Build the INSTALL project
* You should now have a working game with the executable in
DIR/MultiCraft-install/bin/MultiCraft.exe
DIR/BlockColor-install/bin/BlockColor.exe
* Additionally you may create a zip package by building the PACKAGE
project.
If using MinGW:
@ -359,14 +359,14 @@ Library specific options:
* You may need to copy some of the downloaded DLLs into bin/, see what
running the produced executable tells you it doesn't have.
* You should now have a working game with the executable in
DIR/MultiCraft/bin/MultiCraft.exe
DIR/BlockColor/bin/BlockColor.exe
### Bat script to build Windows releases of MultiCraft
### Bat script to build Windows releases of BlockColor
This is how we build Windows releases.
set sourcedir=%CD%
set installpath="C:\tmp\MultiCraft_install"
set installpath="C:\tmp\BlockColor_install"
set irrlichtpath="C:\tmp\irrlicht-1.7.2"
set builddir=%sourcedir%\bvc10

View File

@ -1,7 +1,7 @@
/** @mainpage The MultiCraft engine internal documentation
/** @mainpage The BlockColor engine internal documentation
Welcome to the MultiCraft engine Doxygen documentation site!\n
This page documents the internal structure of the MultiCraft engine's C++ code.\n
Welcome to the BlockColor engine Doxygen documentation site!\n
This page documents the internal structure of the BlockColor engine's C++ code.\n
Use the tree view at the left to navigate.
*/

View File

@ -1,4 +1,4 @@
MultiCraft protocol (incomplete, early draft):
BlockColor protocol (incomplete, early draft):
Updated 2011-06-18
A custom protocol over UDP.

View File

@ -1,4 +1,4 @@
MultiCraft Texture Pack Reference
BlockColor Texture Pack Reference
===============================
Texture packs allow you to replace textures provided by a mod with your own

View File

@ -1,26 +0,0 @@
MultiCraft Game mod: 3d_armor
=============================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3.0 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2013 Vattic
Copyright (C) 2017-2019 Maksim Gamarnik [MoNTE48] MoNTE48@mail.ua & MultiCraft Development Team

View File

@ -1,451 +0,0 @@
ARMOR_INIT_DELAY = 1
ARMOR_INIT_TIMES = 1
ARMOR_BONES_DELAY = 1
ARMOR_UPDATE_TIME = 1
ARMOR_DROP = minetest.get_modpath("bones") ~= nil
ARMOR_DESTROY = false
ARMOR_LEVEL_MULTIPLIER = 1
ARMOR_HEAL_MULTIPLIER = 1
local modpath = minetest.get_modpath("3d_armor")
local time = 0
local armor_def = setmetatable({}, {
__index = function()
return setmetatable({
groups = setmetatable({}, {
__index = function()
return 0
end})
}, {
__index = function()
return 0
end
})
end,
})
local armor_textures = setmetatable({}, {
__index = function()
return setmetatable({}, {
__index = function()
return "blank.png"
end
})
end
})
armor = {
player_hp = {},
elements = {"head", "torso", "legs", "feet"},
physics = {"jump","speed","gravity"},
--[[formspec = "size[8,8.5]list[detached:player_name_armor;armor;0,1;2,3;]"
.."image[2,0.75;2,4;armor_preview]"
.."list[current_player;main;0,4.5;8,4;]"
.."list[current_player;craft;4,1;3,3;]"
.."list[current_player;craftpreview;7,2;1,1;]",]]
def = armor_def,
textures = armor_textures,
default_skin = "character",
}
armor.update_player_visuals = function(self, player)
if not player then
return
end
local name = player:get_player_name()
if self.textures[name] then
player_api.set_textures(player, {
self.textures[name].skin,
self.textures[name].armor,
self.textures[name].wielditem,
self.textures[name].cube,
})
end
end
armor.set_player_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local armor_inv = self:get_armor_inventory(player)
if not name then
minetest.log("error", "Failed to read player name")
return
elseif not armor_inv then
minetest.log("error", "Failed to read player inventory")
return
end
local armor_texture = "blank.png"
local armor_level = 0
local armor_heal = 0
local state = 0
local items = 0
local elements = {}
local textures = {}
local physics_o = {speed=1,gravity=1,jump=1}
local material = {type=nil, count=1}
--local preview = armor:get_player_skin(name).."_preview.png"
for _,v in ipairs(self.elements) do
elements[v] = false
end
for i=1, 4 do
local stack = armor_inv:get_stack("armor", i)
local item = stack:get_name()
if stack:get_count() == 1 then
local def = stack:get_definition()
for k, v in pairs(elements) do
if v == false then
local level = def.groups["armor_"..k]
if level then
local texture = item:gsub("%:", "_")
table.insert(textures, texture..".png")
--preview = preview.."^"..texture.."_preview.png"
armor_level = armor_level + level
state = state + stack:get_wear()
items = items + 1
local heal = def.groups["armor_heal"] or 0
armor_heal = armor_heal + heal
for kk,vv in ipairs(self.physics) do
local o_value = def.groups["physics_"..vv]
if o_value then
physics_o[vv] = physics_o[vv] + o_value
end
end
local mat = string.match(item, "%:.+_(.+)$")
if material.type then
if material.type == mat then
material.count = material.count + 1
end
else
material.type = mat
end
elements[k] = true
end
end
end
end
end
--[[if minetest.get_modpath("shields") then
armor_level = armor_level * 0.9
end]]
if material.type and material.count == #self.elements then
armor_level = armor_level * 1.1
end
armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER
armor_heal = armor_heal * ARMOR_HEAL_MULTIPLIER
if #textures > 0 then
armor_texture = table.concat(textures, "^")
end
local armor_groups = {fleshy=100}
if armor_level > 0 then
armor_groups.level = math.floor(armor_level / 20)
armor_groups.fleshy = 100 - armor_level
end
player:set_armor_groups(armor_groups)
player:set_physics_override(physics_o)
self.textures[name].armor = armor_texture
--self.textures[name].preview = preview
self.def[name].state = state
self.def[name].count = items
self.def[name].level = armor_level
self.def[name].heal = armor_heal
self.def[name].jump = physics_o.jump
self.def[name].speed = physics_o.speed
self.def[name].gravity = physics_o.gravity
self:update_player_visuals(player)
end
armor.update_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local hp = player:get_hp() or 0
if hp == 0 then
return
end
local armor_inv = self:get_armor_inventory(player)
if not armor_inv then
minetest.log("error", "Failed to read detached inventory")
return
end
local state = 0
local items = 0
for i=1, 4 do
local stack = armor_inv:get_stack("armor", i)
if stack:get_count() > 0 then
local use = stack:get_definition().groups["armor_use"] or 0
local item = stack:get_name()
stack:add_wear(use)
armor_inv:set_stack("armor", i, stack)
state = state + stack:get_wear()
items = items + 1
if stack:get_count() == 0 then
local desc = minetest.registered_items[item].description
if desc then
minetest.chat_send_player(name, "Your "..desc.." got destroyed!")
end
self:set_player_armor(player)
armor:update_inventory(player)
end
end
end
self:save_armor_inventory(player)
self.def[name].state = state
self.def[name].count = items
end
armor.get_player_skin = function(self, name)
local skin = nil
if skins then
skin = skins.skins[name]
elseif u_skins then
skin = u_skins.u_skins[name]
end
return skin or armor.default_skin
end
armor.get_armor_formspec = function(self, name)
local formspec = armor.formspec:gsub("player_name", name)
--formspec = formspec:gsub("armor_preview", armor.textures[name].preview)
formspec = formspec:gsub("armor_level", armor.def[name].level)
return formspec:gsub("armor_heal", armor.def[name].heal)
end
--[[armor.update_inventory = function(self, player)
local name = player:get_player_name()
if unified_inventory then
if unified_inventory.current_page[name] == "armor" then
unified_inventory.set_inventory_formspec(player, "armor")
end
else
local formspec = armor:get_armor_formspec(name)
if inventory_plus then
local page = player:get_inventory_formspec()
if page:find("detached:"..name.."_armor") then
inventory_plus.set_inventory_formspec(player, formspec)
end
else
player:set_inventory_formspec(formspec)
end
end
end]]
armor.update_inventory = function(self, player) end
armor.get_armor_inventory = function(self, player)
local name = player:get_player_name()
if name then
return minetest.get_inventory({type="detached", name=name.."_armor"})
end
end
armor.serialize_inventory_list = function(self, list)
local list_table = {}
for _, stack in ipairs(list) do
table.insert(list_table, stack:to_string())
end
return minetest.serialize(list_table)
end
armor.deserialize_inventory_list = function(self, list_string)
local list_table = minetest.deserialize(list_string)
local list = {}
for _, stack in ipairs(list_table or {}) do
table.insert(list, ItemStack(stack))
end
return list
end
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)

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
local modpath = minetest.get_modpath("3d_armor")
dofile(modpath .. "/api.lua")
dofile(modpath .. "/armor.lua")
dofile(modpath .. "/hud.lua")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 764 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Some files were not shown because too many files have changed in this diff Show More