diff --git a/.gitignore b/.gitignore index cd6ee3e3..f9c664da 100644 --- a/.gitignore +++ b/.gitignore @@ -73,15 +73,14 @@ locale/ *.a ## Android build files -build/android/assets -build/android/bin -build/android/Debug +build/android/src/main/assets +build/android/build build/android/deps -build/android/gen -build/android/jni/src build/android/libs +build/android/jni/src +build/android/src/main/jniLibs build/android/obj -build/android/path.cfg -build/android/and_env -build/android/AndroidManifest.xml +build/android/local.properties +build/android/.gradle timestamp + diff --git a/.travis.yml b/.travis.yml index d7ee2387..9d160081 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,13 @@ language: cpp compiler: - gcc - clang +os: + - osx + - linux env: - PLATFORM=Win32 - PLATFORM=Win64 - - PLATFORM=Linux + - PLATFORM=Unix before_install: ./util/travis/before_install.sh script: ./util/travis/script.sh sudo: required @@ -18,3 +21,9 @@ matrix: compiler: clang - env: PLATFORM=Win64 compiler: clang + - env: PLATFORM=Win32 + os: osx + - env: PLATFORM=Win64 + os: osx + - compiler: gcc + os: osx diff --git a/CMakeLists.txt b/CMakeLists.txt index ea41d0d2..592feb99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ set(PROJECT_NAME_CAPITALIZED "Minetest") # Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing set(VERSION_MAJOR 0) set(VERSION_MINOR 4) -set(VERSION_PATCH 13) +set(VERSION_PATCH 14) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases @@ -113,6 +113,9 @@ endif() set(CUSTOM_DOCDIR "" CACHE STRING "Directory to install documentation into") if(NOT CUSTOM_DOCDIR STREQUAL "") set(DOCDIR "${CUSTOM_DOCDIR}") + if(NOT RUN_IN_PLACE) + set(EXAMPLE_CONF_DIR ${DOCDIR}) + endif() message(STATUS "Using DOCDIR=${DOCDIR}") endif() @@ -149,16 +152,9 @@ endif() install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/builtin" DESTINATION "${SHAREDIR}") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client" DESTINATION "${SHAREDIR}") -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minimal" DESTINATION "${SHAREDIR}/games") -set(MINETEST_GAME_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game") -if(EXISTS ${MINETEST_GAME_SOURCE} AND IS_DIRECTORY ${MINETEST_GAME_SOURCE}) - install(FILES ${MINETEST_GAME_SOURCE}/game.conf DESTINATION "${SHAREDIR}/games/minetest_game/") - install(FILES ${MINETEST_GAME_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/minetest_game/") - install(DIRECTORY ${MINETEST_GAME_SOURCE}/mods DESTINATION "${SHAREDIR}/games/minetest_game") - install(DIRECTORY ${MINETEST_GAME_SOURCE}/menu DESTINATION "${SHAREDIR}/games/minetest_game") -endif() +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games" DESTINATION "${SHAREDIR}" PATTERN ".git*" EXCLUDE) + if(BUILD_CLIENT) - #install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sounds/base/pack" DESTINATION "${SHAREDIR}/sounds/base") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base") endif() if(RUN_IN_PLACE) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..986f6002 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,107 @@ +# Contributing + +Contributions are welcome! Here's how you can help: + +- [Contributing code](#code) +- [Reporting issues](#issues) +- [Requesting features](#feature-requests) +- [Translating](#translations) +- [Donating](#donations) + +## Code + +If you are planning to start some significant coding, you would benefit from asking first on [our IRC channel](http://www.minetest.net/irc/) before starting. + +1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository and [clone](https://help.github.com/articles/cloning-a-repository/) your fork. + +2. Start coding! + - Refer to the [Lua API](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt), [Developer Wiki](http://dev.minetest.net/Main_Page) and other [documentation](https://github.com/minetest/minetest/tree/master/doc). + - Follow the [C/C++](http://dev.minetest.net/Code_style_guidelines) and [Lua](http://dev.minetest.net/Lua_code_style_guidelines) code style guidelines. + - Check your code works as expected and document any changes to the Lua API. + +3. Commit & [push](https://help.github.com/articles/pushing-to-a-remote/) your changes to a new branch (not `master`, one change per branch) + - Commit messages should: + - Use the present tense + - Have a title which begins with a capital letter + - Be descriptive. (e.g. no `Update init.lua` or `Fix a problem`) + - Have a first line with less than *80 characters* and have a second line that is *empty* + - Do **not** [sign your commits](https://git-scm.com/book/uz/v2/Git-Tools-Signing-Your-Work), as Minetest offers automatically built ppas over launchpad and it [would break](https://bugs.launchpad.net/bzr-git/+bug/1084403) if there were signed commits in master + +4. Once you are happy with your changes, submit a pull request. + - Open the [pull-request form](https://github.com/minetest/minetest/pull/new/master) + - Add a short description explaining briefly what you've done (or if it's a work-in-progress - what you need to do) + +##### A pull-request is considered merge-able when: + +1. It follows the [roadmap](https://forum.minetest.net/viewtopic.php?t=9177) in some way and fits the whole picture of the project. +2. It works. +3. It follows the code style for [C/C++](http://dev.minetest.net/Code_style_guidelines) or [Lua](http://dev.minetest.net/Lua_code_style_guidelines). +4. The code's interfaces are well designed, regardless of other aspects that might need more work in the future. +5. It uses protocols and formats which include the required compatibility. + +## Issues + +If you experience an issue, we would like to know the details - especially when a stable release is on the way. + +1. Do a quick search on GitHub to check if the issue has already been reported. +2. Is it an issue with the Minetest *engine*? If not, report it [elsewhere](http://www.minetest.net/development/#reporting-issues). +3. [Open an issue](https://github.com/minetest/minetest/issues/new) and describe the issue you are having - you could include: + - Error logs (check the bottom of the `debug.txt` file) + - Screenshots + - Ways you have tried to solve the issue, and whether they worked or not + - Your Minetest version and the content (subgames, mods or texture packs) you have installed + - Your platform (e.g. Windows 10 or Ubuntu 15.04 x64) + +After reporting you should aim to answer questions or clarifications as this helps pinpoint the cause of the issue (if you don't do this your issue may be closed after 1 month). + +## Feature requests + +Feature requests are welcome but take a moment to see if your idea follows the [roadmap](https://forum.minetest.net/viewtopic.php?t=9177) in some way and fits the whole picture of the project. You should provide a clear explanation with as much detail as possible. + +## Translations + +Translations of Minetest are performed using Weblate. You can access the project page with a list of current languages [here](https://hosted.weblate.org/projects/minetest/minetest/). + +### Donations + +If you'd like to monetarily support Minetest development, you can find donation methods on [our website](http://www.minetest.net/development/#donate). + +# Maintaining + +*This is a concise version of the [Rules & Guidelines](http://dev.minetest.net/Category:Rules_and_Guidelines) on the developer wiki.* + +These notes are for those who have push access Minetest (core developers / maintainers). + +- See the [project organisation](http://dev.minetest.net/Organisation) for the people involved. + +## Reviewing pull requests + +Pull requests should be reviewed and, if appropriate, checked if they achieve their intended purpose. You can show that you are in the process of, or will review the pull request by commenting *"Looks good"* or something similar. + +**If the pull-request is not [merge-able](#a-pull-request-is-considered-merge-able-when):** + +Submit a comment explaining to the author what they need to change to make the pull-request merge-able. + +- If the author comments or makes changes to the pull-request, it can be reviewed again. +- If no response is made from the author within 1 month (when improvements are suggested or a question is asked), it can be closed. + +**If the pull-request is [merge-able](#a-pull-request-is-considered-merge-able-when):** + +Submit a :+1: (+1) or "Looks good" comment to show you believe the pull-request should be merged. "Looks good" comments often signify that the patch might require (more) testing. + +- Two core developers must agree to the merge before it is carried out and both should +1 the pull request. +- Who intends to merge the pull-request should follow the commit rules: + - The title should follow the commit guidelines (title starts with a capital letter, present tense, descriptive). + - Don't modify history older than 10 minutes. + - Use rebase, not merge to get linear history: + - `curl https://github.com/minetest/minetest/pull/1.patch | git am` + +## Reviewing issues and feature requests + +- If an issue does not get a response from its author within 1 month (when requiring more details), it can be closed. +- When an issue is a duplicate, refer to the first ones and close the later ones. +- Tag issues with the appropriate [labels](https://github.com/minetest/minetest/labels) for devices, platforms etc. + +## Releasing a new version + +*Refer to [dev.minetest.net/Releasing_Minetest](http://dev.minetest.net/Releasing_Minetest)* diff --git a/README.txt b/README.txt index a9a57ada..9ca9b331 100644 --- a/README.txt +++ b/README.txt @@ -105,11 +105,17 @@ Compiling on GNU/Linux: Install dependencies. Here's an example for Debian/Ubuntu: $ sudo apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev +For Fedora users: +$ sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl* openal* libvorbis* libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel + You can install git for easily keeping your copy up to date. If you dont want git, read below on how to get the source without git. This is an example for installing git on Debian/Ubuntu: $ sudo apt-get install git-core +For Fedora users: +$ sudo dnf install git-core + 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/minetest/minetest.git $ cd minetest @@ -376,8 +382,8 @@ Authors of media files Everything not listed in here: Copyright (C) 2010-2012 celeron55, Perttu Ahola -BlockMen: - textures/base/pack/menuheader.png +Paramat: + textures/base/pack/menu_header.png erlehmann: misc/minetest-icon-24x24.png diff --git a/build/android/AndroidManifest.xml.template b/build/android/AndroidManifest.xml.template deleted file mode 100644 index 0f75ca64..00000000 --- a/build/android/AndroidManifest.xml.template +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - ###DEBUG_BUILD### - - - - - - - - - - - - - - diff --git a/build/android/Makefile b/build/android/Makefile index 66d12ac8..38029699 100644 --- a/build/android/Makefile +++ b/build/android/Makefile @@ -8,42 +8,21 @@ OS := $(shell uname) # build for build platform APP_PLATFORM = android-9 -# paths used for timestaps, dependencys, tree config and libs -PATHCFGFILE = path.cfg - -ROOT = $(shell pwd) +ANDR_ROOT = $(shell pwd) +PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..) +APP_ROOT = $(ANDR_ROOT)/src/main GAMES_TO_COPY = minetest_game MODS_TO_COPY = -VERSION_MAJOR := $(shell cat $(ROOT)/../../CMakeLists.txt | \ +VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ') -VERSION_MINOR := $(shell cat $(ROOT)/../../CMakeLists.txt | \ +VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ') -VERSION_PATCH := $(shell cat $(ROOT)/../../CMakeLists.txt | \ +VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ') -################################################################################ -# Android Version code -# Increase for each build! -################################################################################ -# Play Store actual version (16/03/15): 11 -ANDROID_VERSION_CODE = 13 - -################################################################################ -# toolchain config for arm old processors -################################################################################ -#TARGET_HOST = arm-linux -#TARGET_ABI = armeabi -#TARGET_LIBDIR = armeabi -#TARGET_TOOLCHAIN = arm-linux-androideabi- -#TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfp -#TARGET_ARCH = arm -#CROSS_PREFIX = arm-linux-androideabi- -#COMPILER_VERSION = 4.8 -#HAVE_LEVELDB = 1 - ################################################################################ # toolchain config for arm new processors ################################################################################ @@ -51,11 +30,11 @@ TARGET_HOST = arm-linux TARGET_ABI = armeabi-v7a TARGET_LIBDIR = armeabi-v7a TARGET_TOOLCHAIN = arm-linux-androideabi- -TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 +TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3 TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) TARGET_ARCH = armv7 CROSS_PREFIX = arm-linux-androideabi- -COMPILER_VERSION = 4.8 +COMPILER_VERSION = 4.9 HAVE_LEVELDB = 1 ################################################################################ @@ -67,7 +46,7 @@ HAVE_LEVELDB = 1 #TARGET_TOOLCHAIN = mipsel-linux-android- #TARGET_ARCH = mips32 #CROSS_PREFIX = mipsel-linux-android- -#COMPILER_VERSION = 4.8 +#COMPILER_VERSION = 4.9 #HAVE_LEVELDB = 0 ################################################################################ @@ -79,76 +58,80 @@ HAVE_LEVELDB = 1 #TARGET_TOOLCHAIN = x86- #CROSS_PREFIX = i686-linux-android- #TARGET_ARCH = x86 -#COMPILER_VERSION = 4.8 +#COMPILER_VERSION = 4.9 #HAVE_LEVELDB = 1 ################################################################################ ASSETS_TIMESTAMP = deps/assets_timestamp -LEVELDB_DIR = $(ROOT)/deps/leveldb/ +LEVELDB_DIR = $(ANDR_ROOT)/deps/leveldb/ LEVELDB_LIB = $(LEVELDB_DIR)libleveldb.a LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp -LEVELDB_TIMESTAMP_INT = $(ROOT)/deps/leveldb_timestamp +LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp LEVELDB_URL_GIT = https://github.com/google/leveldb +LEVELDB_COMMIT = 2d0320a458d0e6a20fff46d5f80b18bfdcce7018 -OPENAL_DIR = $(ROOT)/deps/openal-soft/ +OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft/ OPENAL_LIB = $(OPENAL_DIR)libs/$(TARGET_ABI)/libopenal.so OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp -OPENAL_TIMESTAMP_INT = $(ROOT)/deps/openal_timestamp +OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp OPENAL_URL_GIT = https://github.com/apportable/openal-soft -OGG_DIR = $(ROOT)/deps/libvorbis-libogg-android/ +OGG_DIR = $(ANDR_ROOT)/deps/libvorbis-libogg-android/ OGG_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so VORBIS_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so OGG_TIMESTAMP = $(OGG_DIR)timestamp -OGG_TIMESTAMP_INT = $(ROOT)/deps/ogg_timestamp +OGG_TIMESTAMP_INT = $(ANDR_ROOT)/deps/ogg_timestamp OGG_URL_GIT = https://github.com/vincentjames501/libvorbis-libogg-android -IRRLICHT_DIR = $(ROOT)/deps/irrlicht/ +IRRLICHT_REVISION = 5122 +IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht/ IRRLICHT_LIB = $(IRRLICHT_DIR)lib/Android/libIrrlicht.a IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)timestamp -IRRLICHT_TIMESTAMP_INT = $(ROOT)/deps/irrlicht_timestamp -IRRLICHT_URL_SVN = http://svn.code.sf.net/p/irrlicht/code/branches/ogl-es/ +IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp +IRRLICHT_URL_SVN = https://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION) -OPENSSL_VERSION = 1.0.1l +OPENSSL_VERSION = 1.0.2h OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION) -OPENSSL_DIR = $(ROOT)/deps/$(OPENSSL_BASEDIR)/ +OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/ OPENSSL_LIB = $(OPENSSL_DIR)/libssl.so.1.0.0 OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp -OPENSSL_TIMESTAMP_INT = $(ROOT)/deps/openssl_timestamp -OPENSSL_URL = http://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz +OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp +OPENSSL_URL = https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz -CURL_VERSION = 7.41.0 -CURL_DIR = $(ROOT)/deps/curl-$(CURL_VERSION) +CURL_VERSION = 7.48.0 +CURL_DIR = $(ANDR_ROOT)/deps/curl-$(CURL_VERSION) CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a CURL_TIMESTAMP = $(CURL_DIR)/timestamp -CURL_TIMESTAMP_INT = $(ROOT)/deps/curl_timestamp -CURL_URL_HTTP = http://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2 +CURL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/curl_timestamp +CURL_URL_HTTP = https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2 -GMP_VERSION = 6.0.0 -GMP_DIR = $(ROOT)/deps/gmp-$(GMP_VERSION) +GMP_VERSION = 6.1.0 +GMP_DIR = $(ANDR_ROOT)/deps/gmp-$(GMP_VERSION) GMP_LIB = $(GMP_DIR)/usr/lib/libgmp.so GMP_TIMESTAMP = $(GMP_DIR)/timestamp -GMP_TIMESTAMP_INT = $(ROOT)/deps/gmp_timestamp +GMP_TIMESTAMP_INT = $(ANDR_ROOT)/deps/gmp_timestamp GMP_URL_HTTP = https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 -FREETYPE_DIR = $(ROOT)/deps/freetype2-android/ +FREETYPE_DIR = $(ANDR_ROOT)/deps/freetype2-android/ FREETYPE_LIB = $(FREETYPE_DIR)/Android/obj/local/$(TARGET_ABI)/libfreetype2-static.a FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp -FREETYPE_TIMESTAMP_INT = $(ROOT)/deps/freetype_timestamp +FREETYPE_TIMESTAMP_INT = $(ANDR_ROOT)/deps/freetype_timestamp FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android ICONV_VERSION = 1.14 -ICONV_DIR = $(ROOT)/deps/libiconv/ +ICONV_DIR = $(ANDR_ROOT)/deps/libiconv/ ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so ICONV_TIMESTAMP = $(ICONV_DIR)timestamp -ICONV_TIMESTAMP_INT = $(ROOT)/deps/iconv_timestamp -ICONV_URL_HTTP = http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz +ICONV_TIMESTAMP_INT = $(ANDR_ROOT)/deps/iconv_timestamp +ICONV_URL_HTTP = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz -SQLITE3_FOLDER = sqlite-amalgamation-3080704 -SQLITE3_URL = http://www.sqlite.org/2014/$(SQLITE3_FOLDER).zip +SQLITE3_FOLDER = sqlite-amalgamation-3120200 +SQLITE3_URL = https://www.sqlite.org/2016/$(SQLITE3_FOLDER).zip --include $(PATHCFGFILE) +ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]*//') +ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//') +NDK_MODULE_PATH = $(ANDROID_NDK)/toolchains #use interim target variable to switch leveldb on or off ifeq ($(HAVE_LEVELDB),1) @@ -162,54 +145,50 @@ endif freetype_download clean_freetype freetype \ apk clean_apk \ clean_all clean prep_srcdir \ - install_debug install envpaths all \ - manifest clean_manifest\ + install_debug install_release envpaths all \ $(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \ $(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \ $(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \ - $(OPENSSL_TIMESTAMP) curl_binary \ - $(ROOT)/jni/src/android_version.h \ - $(ROOT)/jni/src/android_version_githash.h + $(OPENSSL_TIMESTAMP) \ + $(ANDR_ROOT)/jni/src/android_version.h \ + $(ANDR_ROOT)/jni/src/android_version_githash.h -debug : $(PATHCFGFILE) +debug : local.properties export NDEBUG=; \ export BUILD_TYPE=debug; \ $(MAKE) apk all : debug release -release : $(PATHCFGFILE) +release : local.properties @export NDEBUG=1; \ export BUILD_TYPE=release; \ $(MAKE) apk reconfig: delconfig - @$(MAKE) $(PATHCFGFILE) + @$(MAKE) local.properties -delconfig : - $(RM) ${PATHCFGFILE} +delconfig: + $(RM) local.properties -$(PATHCFGFILE) : +local.properties: @echo "Please specify path of ANDROID NDK"; \ - echo "e.g. /home/user/android-ndk-r9c/"; \ + echo "e.g. $$HOME/Android/ndk-r11c/"; \ read ANDROID_NDK ; \ if [ ! -d $$ANDROID_NDK ] ; then \ echo "$$ANDROID_NDK is not a valid folder"; \ exit 1; \ fi; \ - echo "ANDROID_NDK = $$ANDROID_NDK" > ${PATHCFGFILE}; \ - echo "NDK_MODULE_PATH = $$ANDROID_NDK/toolchains" >> ${PATHCFGFILE}; \ - echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";\ - echo "+ Note: NDK_MODULE_PATH is set to $$ANDROID_NDK/toolchains"; \ - echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";\ + echo "ndk.dir = $$ANDROID_NDK" > local.properties; \ echo "Please specify path of ANDROID SDK"; \ - echo "e.g. /home/user/adt-bundle-linux-x86_64-20131030/sdk/"; \ + echo "e.g. $$HOME/Android/sdk/"; \ read SDKFLDR ; \ if [ ! -d $$SDKFLDR ] ; then \ echo "$$SDKFLDR is not a valid folder"; \ exit 1; \ fi; \ - echo "SDKFOLDER = $$SDKFLDR" >> ${PATHCFGFILE}; + echo "sdk.dir = $$SDKFLDR" >> local.properties; + $(OPENAL_TIMESTAMP) : openal_download @LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ @@ -220,15 +199,15 @@ $(OPENAL_TIMESTAMP) : openal_download openal_download : @if [ ! -d ${OPENAL_DIR} ] ; then \ echo "openal sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd ${ROOT}/deps ; \ + mkdir -p ${ANDR_ROOT}/deps; \ + cd ${ANDR_ROOT}/deps ; \ git clone ${OPENAL_URL_GIT} || exit 1; \ fi openal : $(OPENAL_LIB) $(OPENAL_LIB): $(OPENAL_TIMESTAMP) - @REFRESH=0; \ + + @REFRESH=0; \ if [ ! -e ${OPENAL_TIMESTAMP_INT} ] ; then \ REFRESH=1; \ fi; \ @@ -236,14 +215,14 @@ $(OPENAL_LIB): $(OPENAL_TIMESTAMP) REFRESH=1; \ fi; \ if [ $$REFRESH -ne 0 ] ; then \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for openal detected building..."; \ cd ${OPENAL_DIR}; \ - ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH} \ - APP_ABI=${TARGET_ABI} TARGET_ARCH_ABI=${TARGET_ABI} \ - APP_PLATFORM=${APP_PLATFORM} TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ - TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ - TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ + ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \ + NDK_MODULE_PATH=${NDK_MODULE_PATH} APP_ABI=${TARGET_ABI} \ + TARGET_ARCH_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \ + TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ + TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ + TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ touch ${OPENAL_TIMESTAMP}; \ touch ${OPENAL_TIMESTAMP_INT}; \ else \ @@ -262,18 +241,18 @@ $(OGG_TIMESTAMP) : ogg_download ogg_download : @if [ ! -d ${OGG_DIR} ] ; then \ echo "ogg sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd ${ROOT}/deps ; \ + mkdir -p ${ANDR_ROOT}/deps; \ + cd ${ANDR_ROOT}/deps ; \ git clone ${OGG_URL_GIT}|| exit 1; \ cd libvorbis-libogg-android ; \ - patch -p1 < ../../libvorbis-libogg-fpu.patch || exit 1; \ + patch -p1 < ${ANDR_ROOT}/patches/libvorbis-libogg-fpu.patch || exit 1; \ sed -i 's-:-?-' jni/Application.mk; \ fi ogg : $(OGG_LIB) $(OGG_LIB): $(OGG_TIMESTAMP) - @REFRESH=0; \ + + @REFRESH=0; \ if [ ! -e ${OGG_TIMESTAMP_INT} ] ; then \ echo "${OGG_TIMESTAMP_INT} doesn't exist"; \ REFRESH=1; \ @@ -282,14 +261,14 @@ $(OGG_LIB): $(OGG_TIMESTAMP) REFRESH=1; \ fi; \ if [ $$REFRESH -ne 0 ] ; then \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for ogg detected building..."; \ cd ${OGG_DIR}; \ - ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH} \ - APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \ - TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ - TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ - TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ + ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \ + NDK_MODULE_PATH=${NDK_MODULE_PATH} \ + APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \ + TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ + TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ + TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ touch ${OGG_TIMESTAMP}; \ touch ${OGG_TIMESTAMP_INT}; \ else \ @@ -308,17 +287,17 @@ $(OPENSSL_TIMESTAMP) : openssl_download openssl_download : @if [ ! -d ${OPENSSL_DIR} ] ; then \ echo "openssl sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd ${ROOT}/deps ; \ + mkdir -p ${ANDR_ROOT}/deps; \ + cd ${ANDR_ROOT}/deps ; \ wget ${OPENSSL_URL} || exit 1; \ tar -xzf ${OPENSSL_BASEDIR}.tar.gz; \ cd ${OPENSSL_BASEDIR}; \ - patch -p1 < ../../openssl_arch.patch; \ + patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch; \ fi openssl : $(OPENSSL_LIB) -$(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) +$(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) $(GMP_LIB) @REFRESH=0; \ if [ ! -e ${OPENSSL_TIMESTAMP_INT} ] ; then \ echo "${OPENSSL_TIMESTAMP_INT} doesn't exist"; \ @@ -333,10 +312,11 @@ $(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) ln -s ${OPENSSL_DIR} ../openssl; \ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-openssl; \ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --install-dir=$${TOOLCHAIN}; \ + --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ + --install-dir=$${TOOLCHAIN}; \ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ - CC=${CROSS_PREFIX}gcc ./Configure android-${TARGET_ARCH} no-idea no-seed -no-sha0 -DL_ENDIAN;\ + CC=${CROSS_PREFIX}gcc ./Configure enable-gmp -DL_ENDIAN -I${GMP_DIR} -L${GMP_DIR}/usr/lib android-${TARGET_ARCH};\ + CC=${CROSS_PREFIX}gcc ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend; \ CC=${CROSS_PREFIX}gcc ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make build_libs; \ touch ${OPENSSL_TIMESTAMP}; \ touch ${OPENSSL_TIMESTAMP_INT}; \ @@ -347,8 +327,8 @@ $(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) clean_openssl : $(RM) -rf ${OPENSSL_DIR}; \ - $(RM) -rf $(ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz; \ - $(RM) -rf $(ROOT)/deps/openssl + $(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz; \ + $(RM) -rf $(ANDR_ROOT)/deps/openssl $(LEVELDB_TIMESTAMP) : leveldb_download @LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ @@ -359,9 +339,11 @@ $(LEVELDB_TIMESTAMP) : leveldb_download leveldb_download : @if [ ! -d ${LEVELDB_DIR} ] ; then \ echo "leveldb sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd ${ROOT}/deps ; \ + mkdir -p ${ANDR_ROOT}/deps; \ + cd ${ANDR_ROOT}/deps ; \ git clone ${LEVELDB_URL_GIT} || exit 1; \ + cd ${LEVELDB_DIR} || exit 1; \ + git checkout ${LEVELDB_COMMIT} || exit 1; \ fi leveldb : $(LEVELDB_LIB) @@ -375,22 +357,21 @@ $(LEVELDB_LIB): $(LEVELDB_TIMESTAMP) REFRESH=1; \ fi; \ if [ $$REFRESH -ne 0 ] ; then \ - export PATH=$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for leveldb detected building..."; \ cd deps/leveldb; \ export CROSS_PREFIX=${CROSS_PREFIX}; \ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb; \ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --install-dir=$${TOOLCHAIN}; \ + --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ + --install-dir=$${TOOLCHAIN}; \ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ export CC=${CROSS_PREFIX}gcc; \ export CXX=${CROSS_PREFIX}g++; \ export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ - export CPPFLAGS="$${CPPFLAGS} ${TARGET_CFLAGS_ADDON}"; \ + export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \ export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}"; \ export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \ - $(MAKE) -s || exit 1; \ + $(MAKE) || exit 1; \ touch ${LEVELDB_TIMESTAMP}; \ touch ${LEVELDB_TIMESTAMP_INT}; \ $(RM) -rf $${TOOLCHAIN}; \ @@ -410,7 +391,7 @@ $(FREETYPE_TIMESTAMP) : freetype_download freetype_download : @if [ ! -d ${FREETYPE_DIR} ] ; then \ echo "freetype sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ + mkdir -p ${ANDR_ROOT}/deps; \ cd deps; \ git clone ${FREETYPE_URL_GIT} || exit 1; \ fi @@ -418,7 +399,7 @@ freetype_download : freetype : $(FREETYPE_LIB) $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP) - @REFRESH=0; \ + + @REFRESH=0; \ if [ ! -e ${FREETYPE_TIMESTAMP_INT} ] ; then \ REFRESH=1; \ fi; \ @@ -430,14 +411,14 @@ $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP) fi; \ if [ $$REFRESH -ne 0 ] ; then \ mkdir -p ${FREETYPE_DIR}; \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for freetype detected building..."; \ cd ${FREETYPE_DIR}/Android/jni; \ - ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH} \ - APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI} \ - TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ - TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ - TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ + ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \ + NDK_MODULE_PATH=${NDK_MODULE_PATH} \ + APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI} \ + TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ + TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ + TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ touch ${FREETYPE_TIMESTAMP}; \ touch ${FREETYPE_TIMESTAMP_INT}; \ else \ @@ -456,15 +437,15 @@ $(ICONV_TIMESTAMP) : iconv_download iconv_download : @if [ ! -d ${ICONV_DIR} ] ; then \ echo "iconv sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd ${ROOT}/deps; \ + mkdir -p ${ANDR_ROOT}/deps; \ + cd ${ANDR_ROOT}/deps; \ wget ${ICONV_URL_HTTP} || exit 1; \ tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \ rm libiconv-${ICONV_VERSION}.tar.gz; \ ln -s libiconv-${ICONV_VERSION} libiconv; \ cd ${ICONV_DIR}; \ - patch -p1 < ${ROOT}/libiconv_android.patch; \ - patch -p1 < ${ROOT}/libiconv_stdio.patch; \ + patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch; \ + patch -p1 < ${ANDR_ROOT}/patches/libiconv_stdio.patch; \ fi iconv : $(ICONV_LIB) @@ -482,14 +463,13 @@ $(ICONV_LIB) : $(ICONV_TIMESTAMP) fi; \ if [ $$REFRESH -ne 0 ] ; then \ mkdir -p ${ICONV_DIR}; \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for iconv detected building..."; \ cd ${ICONV_DIR}; \ \ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --install-dir=$${TOOLCHAIN}; \ + --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ + --install-dir=$${TOOLCHAIN}; \ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ export CC=${CROSS_PREFIX}gcc; \ export CXX=${CROSS_PREFIX}g++; \ @@ -516,13 +496,13 @@ clean_iconv : irrlicht_download : @if [ ! -d "deps/irrlicht" ] ; then \ echo "irrlicht sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ + mkdir -p ${ANDR_ROOT}/deps; \ cd deps; \ svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1; \ cd irrlicht; \ - patch -p1 < ../../irrlicht-touchcount.patch || exit 1; \ - patch -p1 < ../../irrlicht-back_button.patch || exit 1; \ - patch -p1 < ../../irrlicht-texturehack.patch || exit 1; \ + patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1; \ + patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \ + patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \ fi $(IRRLICHT_TIMESTAMP) : irrlicht_download @@ -534,7 +514,7 @@ $(IRRLICHT_TIMESTAMP) : irrlicht_download irrlicht : $(IRRLICHT_LIB) $(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB) - @REFRESH=0; \ + + @REFRESH=0; \ if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then \ REFRESH=1; \ fi; \ @@ -546,14 +526,14 @@ $(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB) fi; \ if [ $$REFRESH -ne 0 ] ; then \ mkdir -p ${IRRLICHT_DIR}; \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ echo "changed timestamp for irrlicht detected building..."; \ cd deps/irrlicht/source/Irrlicht/Android; \ - ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH} \ - APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \ - TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ - TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ - TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ + ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \ + NDK_MODULE_PATH=${NDK_MODULE_PATH} \ + APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \ + TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ + TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ + TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ touch ${IRRLICHT_TIMESTAMP}; \ touch ${IRRLICHT_TIMESTAMP_INT}; \ else \ @@ -572,7 +552,7 @@ $(CURL_TIMESTAMP) : curl_download curl_download : @if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then \ echo "curl sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ + mkdir -p ${ANDR_ROOT}/deps; \ cd deps; \ wget ${CURL_URL_HTTP} || exit 1; \ tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1; \ @@ -595,20 +575,18 @@ $(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB) fi; \ if [ $$REFRESH -ne 0 ] ; then \ mkdir -p ${CURL_DIR}; \ - export PATH="$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK}"; \ echo "changed timestamp for curl detected building..."; \ cd deps/curl-${CURL_VERSION}; \ export CROSS_PREFIX=${CROSS_PREFIX}; \ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl; \ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --install-dir=$${TOOLCHAIN}; \ + --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ + --install-dir=$${TOOLCHAIN}; \ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ export CC=${CROSS_PREFIX}gcc; \ export CXX=${CROSS_PREFIX}g++; \ export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \ - export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include \ - -L${OPENSSL_DIR} ${TARGET_CFLAGS_ADDON}"; \ + export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \ export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}"; \ ./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl; \ @@ -624,18 +602,6 @@ clean_curl : $(RM) -rf deps/curl-${CURL_VERSION} \ $(RM) -f deps/curl - -curl_binary: - @if [ ! -d "deps/curl-${CURL_VERSION_BINARY}" ] ; then \ - echo "curl binary missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ - cd deps; \ - wget http://curl.haxx.se/gknw.net/7.34.0/dist-android/curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android.tar.gz || exit 1;\ - tar -xzf curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android.tar.gz || exit 1;\ - mv curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android curl-${CURL_VERSION_BINARY};\ - rm curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android.tar.gz; \ - fi - $(GMP_TIMESTAMP) : gmp_download @LAST_MODIF=$$(find ${GMP_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ @@ -645,7 +611,7 @@ $(GMP_TIMESTAMP) : gmp_download gmp_download : @if [ ! -d "${GMP_DIR}" ] ; then \ echo "gmp sources missing, downloading..."; \ - mkdir -p ${ROOT}/deps; \ + mkdir -p ${ANDR_ROOT}/deps; \ cd deps; \ wget ${GMP_URL_HTTP} || exit 1; \ tar -xjf gmp-${GMP_VERSION}.tar.bz2 || exit 1; \ @@ -668,14 +634,13 @@ $(GMP_LIB): $(GMP_TIMESTAMP) fi; \ if [ $$REFRESH -ne 0 ] ; then \ mkdir -p ${GMP_DIR}; \ - export PATH="$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK}"; \ echo "changed timestamp for gmp detected building..."; \ cd deps/gmp-${GMP_VERSION}; \ export CROSS_PREFIX=${CROSS_PREFIX}; \ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp; \ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --install-dir=$${TOOLCHAIN}; \ + --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ + --install-dir=$${TOOLCHAIN}; \ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ export CC=${CROSS_PREFIX}gcc; \ export CXX=${CROSS_PREFIX}g++; \ @@ -707,11 +672,11 @@ clean_sqlite3: $(RM) -f sqlite $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB) - @mkdir -p ${ROOT}/deps; \ + @mkdir -p ${ANDR_ROOT}/deps; \ for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do \ - LAST_MODIF=$$(find ${ROOT}/../../${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ + LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then \ - touch ${ROOT}/../../${DIRNAME}/timestamp; \ + touch ${PROJ_ROOT}/${DIRNAME}/timestamp; \ touch ${ASSETS_TIMESTAMP}; \ echo ${DIRNAME} changed $$LAST_MODIF; \ fi; \ @@ -721,11 +686,11 @@ $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB) touch ${IRRLICHT_DIR}/media/timestamp; \ touch ${ASSETS_TIMESTAMP}; \ fi; \ - if [ ${ROOT}/../../minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \ + if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \ echo "conf changed"; \ touch ${ASSETS_TIMESTAMP}; \ fi; \ - if [ ${ROOT}/../../README.txt -nt ${ASSETS_TIMESTAMP} ] ; then \ + if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then \ touch ${ASSETS_TIMESTAMP}; \ fi; \ if [ ! -e $(ASSETS_TIMESTAMP) ] ; then \ @@ -740,32 +705,34 @@ assets : $(ASSETS_TIMESTAMP) if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then \ REFRESH=1; \ fi; \ - if [ ! -d ${ROOT}/assets ] ; then \ + if [ ! -d ${APP_ROOT}/assets ] ; then \ REFRESH=1; \ fi; \ if [ $$REFRESH -ne 0 ] ; then \ echo "assets changed, refreshing..."; \ $(MAKE) clean_assets; \ - mkdir -p ${ROOT}/assets/Minetest; \ - cp ${ROOT}/../../minetest.conf.example ${ROOT}/assets/Minetest; \ - cp ${ROOT}/../../README.txt ${ROOT}/assets/Minetest; \ - cp -r ${ROOT}/../../builtin ${ROOT}/assets/Minetest; \ - cp -r ${ROOT}/../../client ${ROOT}/assets/Minetest; \ - cp -r ${ROOT}/../../doc ${ROOT}/assets/Minetest; \ - cp -r ${ROOT}/../../fonts ${ROOT}/assets/Minetest; \ - mkdir ${ROOT}/assets/Minetest/games; \ + mkdir -p ${APP_ROOT}/assets/Minetest; \ + cp ${PROJ_ROOT}/minetest.conf.example ${APP_ROOT}/assets/Minetest; \ + cp ${PROJ_ROOT}/README.txt ${APP_ROOT}/assets/Minetest; \ + cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/Minetest; \ + mkdir -p ${APP_ROOT}/assets/Minetest/client; \ + cp -r ${PROJ_ROOT}/client/shaders ${APP_ROOT}/assets/Minetest/client; \ + cp ${PROJ_ROOT}/doc/lgpl-2.1.txt ${APP_ROOT}/assets/Minetest/LICENSE.txt; \ + mkdir -p ${APP_ROOT}/assets/Minetest/fonts; \ + cp -r ${PROJ_ROOT}/fonts/*.ttf ${APP_ROOT}/assets/Minetest/fonts/; \ + mkdir -p ${APP_ROOT}/assets/Minetest/games; \ for game in ${GAMES_TO_COPY}; do \ - cp -r ${ROOT}/../../games/$$game ${ROOT}/assets/Minetest/games/; \ + cp -r ${PROJ_ROOT}/games/$$game ${APP_ROOT}/assets/Minetest/games/; \ done; \ - mkdir ${ROOT}/assets/Minetest/mods; \ + mkdir -p ${APP_ROOT}/assets/Minetest/mods; \ for mod in ${MODS_TO_COPY}; do \ - cp -r ${ROOT}/../../mods/$$mod ${ROOT}/assets/Minetest/mods/; \ + cp -r ${PROJ_ROOT}/mods/$$mod ${APP_ROOT}/assets/Minetest/mods/; \ done; \ - cp -r ${ROOT}/../../po ${ROOT}/assets/Minetest; \ - cp -r ${ROOT}/../../textures ${ROOT}/assets/Minetest; \ - mkdir -p ${ROOT}/assets/Minetest/media; \ - cp -r ${IRRLICHT_DIR}/media/Shaders ${ROOT}/assets/Minetest/media; \ - cd ${ROOT}/assets || exit 1; \ + cp -r ${PROJ_ROOT}/po ${APP_ROOT}/assets/Minetest; \ + cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/Minetest; \ + mkdir -p ${APP_ROOT}/assets/Minetest/media; \ + cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media; \ + cd ${APP_ROOT}/assets || exit 1; \ find . -name "timestamp" -exec rm {} \; ; \ find . -name "*.blend" -exec rm {} \; ; \ find . -name "*~" -exec rm {} \; ; \ @@ -773,8 +740,8 @@ assets : $(ASSETS_TIMESTAMP) find . -type d -path "*.svn" -exec rm -rf {} \; ; \ find . -type f -path "*.gitignore" -exec rm -rf {} \; ; \ ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \ - find Minetest >"filelist.txt"; \ - cp ${ROOT}/${ASSETS_TIMESTAMP} ${ROOT}/${ASSETS_TIMESTAMP}.old; \ + find -L Minetest > filelist.txt; \ + cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old; \ else \ echo "nothing to be done for assets"; \ fi @@ -782,56 +749,50 @@ assets : $(ASSETS_TIMESTAMP) clean_assets : @$(RM) -r assets -apk: $(PATHCFGFILE) assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET) \ - $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ROOT)/jni/src/android_version.h \ - $(ROOT)/jni/src/android_version_githash.h sqlite3_download - @export NDEBUG=$$NDEBUG; $(MAKE) manifest; \ - export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \ - export ANDROID_HOME=${SDKFOLDER}; \ - mkdir -p ${ROOT}/src; \ - ndk-build NDK_MODULE_PATH=${NDK_MODULE_PATH} \ - GPROF=${GPROF} APP_ABI=${TARGET_ABI} HAVE_LEVELDB=${HAVE_LEVELDB} \ - APP_PLATFORM=${APP_PLATFORM} \ - TARGET_LIBDIR=${TARGET_LIBDIR} \ - TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ - TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ - TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" && \ - ant $$BUILD_TYPE && \ - echo "++ Success!" && \ - echo "APK: bin/Minetest-$$BUILD_TYPE.apk" && \ - echo "You can install it with \`adb install -r bin/Minetest-$$BUILD_TYPE.apk\`" +apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET) \ + $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h \ + $(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download + + @${ANDROID_NDK}/ndk-build NDK_MODULE_PATH=${NDK_MODULE_PATH} \ + GPROF=${GPROF} APP_ABI=${TARGET_ABI} HAVE_LEVELDB=${HAVE_LEVELDB} \ + APP_PLATFORM=${APP_PLATFORM} \ + TARGET_LIBDIR=${TARGET_LIBDIR} \ + TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \ + TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \ + TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \ + if [ ! -e ${APP_ROOT}/jniLibs ]; then \ + ln -s ${ANDR_ROOT}/libs ${APP_ROOT}/jniLibs || exit 1; \ + fi; \ + export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" && \ + export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') && \ + gradle assemble$$BUILD_TYPE_C && \ + echo "APK stored at: build/outputs/apk/Minetest-$$BUILD_TYPE.apk" && \ + echo "You can install it with \`make install_$$BUILD_TYPE\`" + +# These Intentionally doesn't depend on their respective build steps, +# because it takes a while to verify that everything's up-to-date. +install_debug: + ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-debug.apk + +install_release: + ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-release.apk prep_srcdir : - @if [ ! -e ${ROOT}/jni/src ]; then \ - ln -s ${ROOT}/../../src ${ROOT}/jni/src; \ + @if [ ! -e ${ANDR_ROOT}/jni/src ]; then \ + ln -s ${PROJ_ROOT}/src ${ANDR_ROOT}/jni/src; \ fi -clean_apk : manifest - @export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK}; \ - export ANDROID_HOME=${SDKFOLDER}; \ - ant clean - -install_debug : - @export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK}; \ - adb install -r ${ROOT}/bin/Minetest-debug.apk - -install : - @export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK}; \ - adb install -r ${ROOT}/bin/Minetest-release.apk - -envpaths : - @echo "export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK}" > and_env;\ - echo "export ANDROID_HOME=${SDKFOLDER}" >> and_env; +clean_apk : + gradle clean clean_all : @$(MAKE) clean_apk; \ - $(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl clean_openssl \ - clean_openal clean_ogg clean_gmp clean_manifest; \ + $(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl \ + clean_openssl clean_openal clean_ogg clean_gmp; \ sleep 1; \ $(RM) -r gen libs obj deps bin Debug and_env -$(ROOT)/jni/src/android_version_githash.h : prep_srcdir - @export VERSION_FILE=${ROOT}/jni/src/android_version_githash.h; \ +$(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir + @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h; \ export VERSION_FILE_NEW=$${VERSION_FILE}.new; \ { \ echo "#ifndef ANDROID_MT_VERSION_GITHASH_H"; \ @@ -849,8 +810,8 @@ $(ROOT)/jni/src/android_version_githash.h : prep_srcdir fi -$(ROOT)/jni/src/android_version.h : prep_srcdir - @export VERSION_FILE=${ROOT}/jni/src/android_version.h; \ +$(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir + @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h; \ export VERSION_FILE_NEW=$${VERSION_FILE}.new; \ { \ echo "#ifndef ANDROID_MT_VERSION_H"; \ @@ -858,8 +819,8 @@ $(ROOT)/jni/src/android_version.h : prep_srcdir echo "#define VERSION_MAJOR ${VERSION_MAJOR}"; \ echo "#define VERSION_MINOR ${VERSION_MINOR}"; \ echo "#define VERSION_PATCH ${VERSION_PATCH}"; \ - echo "#define VERSION_STRING STR(VERSION_MAJOR)\".\"STR(VERSION_MINOR)\ - \".\"STR(VERSION_PATCH)"; \ + echo "#define VERSION_STRING STR(VERSION_MAJOR) \".\" STR(VERSION_MINOR) \ + \".\" STR(VERSION_PATCH)"; \ echo "#endif"; \ } > $${VERSION_FILE_NEW}; \ if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then \ @@ -869,22 +830,5 @@ $(ROOT)/jni/src/android_version.h : prep_srcdir rm "$${VERSION_FILE_NEW}"; \ fi -manifest : - @BASE_VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"; \ - if [ "${NDEBUG}x" != "x" ] ; then \ - DBG=''; \ - DBG_FLAG="android:debuggable=\"false\""; \ - else \ - DBG=""; \ - DBG_FLAG="android:debuggable=\"true\""; \ - fi; \ - cat ${ROOT}/AndroidManifest.xml.template | \ - sed "s/###ANDROID_VERSION###/${ANDROID_VERSION_CODE}/g" | \ - sed "s/###BASE_VERSION###/$$BASE_VERSION/g" | \ - sed -e "s@###DEBUG_BUILD###@$$DBG@g" | \ - sed -e "s@###DEBUG_FLAG###@$$DBG_FLAG@g" >${ROOT}/AndroidManifest.xml - -clean_manifest : - rm -rf ${ROOT}/AndroidManifest.xml - clean : clean_apk clean_assets + diff --git a/build/android/build.gradle b/build/android/build.gradle new file mode 100644 index 00000000..391e250a --- /dev/null +++ b/build/android/build.gradle @@ -0,0 +1,49 @@ +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:1.5.0" + } +} + +apply plugin: "com.android.application" + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.3" + + defaultConfig { + versionCode 14 + versionName "${System.env.VERSION_STR}.${versionCode}" + minSdkVersion 9 + targetSdkVersion 9 + applicationId "net.minetest.minetest" + manifestPlaceholders = [ package: "net.minetest.minetest", project: project.name ] + } + + lintOptions { + disable "OldTargetApi", "GoogleAppIndexingWarning" + } + + Properties props = new Properties() + props.load(new FileInputStream(file("local.properties"))) + + if (props.getProperty("keystore") != null) { + signingConfigs { + release { + storeFile file(props["keystore"]) + storePassword props["keystore.password"] + keyAlias props["key"] + keyPassword props["key.password"] + } + } + + buildTypes { + release { + signingConfig signingConfigs.release + } + } + } +} + diff --git a/build/android/build.xml b/build/android/build.xml deleted file mode 100644 index 50a3e95a..00000000 --- a/build/android/build.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk index 324e1666..e8534eaa 100644 --- a/build/android/jni/Android.mk +++ b/build/android/jni/Android.mk @@ -69,18 +69,18 @@ GPROF_DEF=-DGPROF endif LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \ - -DHAVE_TOUCHSCREENGUI \ - -DUSE_CURL=1 \ - -DUSE_SOUND=1 \ - -DUSE_FREETYPE=1 \ - -DUSE_LEVELDB=$(HAVE_LEVELDB) \ - $(GPROF_DEF) \ - -pipe -fstrict-aliasing + -DHAVE_TOUCHSCREENGUI \ + -DUSE_CURL=1 \ + -DUSE_SOUND=1 \ + -DUSE_FREETYPE=1 \ + -DUSE_LEVELDB=$(HAVE_LEVELDB) \ + $(GPROF_DEF) \ + -pipe -fstrict-aliasing ifndef NDEBUG LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer else -LOCAL_CFLAGS += -fexpensive-optimizations -O3 +LOCAL_CFLAGS += -O3 endif ifdef GPROF @@ -95,8 +95,8 @@ ifeq ($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS += -fno-stack-protector endif -LOCAL_C_INCLUDES := \ - jni/src jni/src/sqlite \ +LOCAL_C_INCLUDES := \ + jni/src \ jni/src/script \ jni/src/lua/src \ jni/src/json \ @@ -111,8 +111,7 @@ LOCAL_C_INCLUDES := \ deps/leveldb/include \ deps/sqlite/ -LOCAL_SRC_FILES := \ - jni/src/areastore.cpp \ +LOCAL_SRC_FILES := \ jni/src/ban.cpp \ jni/src/camera.cpp \ jni/src/cavegen.cpp \ @@ -173,11 +172,13 @@ LOCAL_SRC_FILES := \ jni/src/mapblock.cpp \ jni/src/mapblock_mesh.cpp \ jni/src/mapgen.cpp \ + jni/src/mapgen_flat.cpp \ jni/src/mapgen_fractal.cpp \ jni/src/mapgen_singlenode.cpp \ jni/src/mapgen_v5.cpp \ jni/src/mapgen_v6.cpp \ jni/src/mapgen_v7.cpp \ + jni/src/mapgen_valleys.cpp \ jni/src/mapnode.cpp \ jni/src/mapsector.cpp \ jni/src/mesh.cpp \ @@ -219,6 +220,7 @@ LOCAL_SRC_FILES := \ jni/src/version.cpp \ jni/src/voxel.cpp \ jni/src/voxelalgorithms.cpp \ + jni/src/util/areastore.cpp \ jni/src/util/auth.cpp \ jni/src/util/base64.cpp \ jni/src/util/directiontables.cpp \ @@ -259,7 +261,7 @@ LOCAL_SRC_FILES := \ # intentionally kept out (we already build openssl itself): jni/src/util/sha256.c # Network -LOCAL_SRC_FILES += \ +LOCAL_SRC_FILES += \ jni/src/network/connection.cpp \ jni/src/network/networkpacket.cpp \ jni/src/network/clientopcodes.cpp \ @@ -268,7 +270,7 @@ LOCAL_SRC_FILES += \ jni/src/network/serverpackethandler.cpp \ # lua api -LOCAL_SRC_FILES += \ +LOCAL_SRC_FILES += \ jni/src/script/common/c_content.cpp \ jni/src/script/common/c_converter.cpp \ jni/src/script/common/c_internal.cpp \ @@ -301,17 +303,17 @@ LOCAL_SRC_FILES += \ jni/src/script/lua_api/l_rollback.cpp \ jni/src/script/lua_api/l_server.cpp \ jni/src/script/lua_api/l_settings.cpp \ + jni/src/script/lua_api/l_http.cpp \ jni/src/script/lua_api/l_util.cpp \ jni/src/script/lua_api/l_vmanip.cpp \ jni/src/script/scripting_game.cpp \ jni/src/script/scripting_mainmenu.cpp #freetype2 support -LOCAL_SRC_FILES += \ - jni/src/cguittfont/xCGUITTFont.cpp +LOCAL_SRC_FILES += jni/src/cguittfont/xCGUITTFont.cpp -# lua -LOCAL_SRC_FILES += \ +# Lua +LOCAL_SRC_FILES += \ jni/src/lua/src/lapi.c \ jni/src/lua/src/lauxlib.c \ jni/src/lua/src/lbaselib.c \ @@ -348,6 +350,7 @@ LOCAL_SRC_FILES += deps/sqlite/sqlite3.c # Threading LOCAL_SRC_FILES += \ + jni/src/threading/event.cpp \ jni/src/threading/mutex.cpp \ jni/src/threading/semaphore.cpp \ jni/src/threading/thread.cpp @@ -370,3 +373,4 @@ ifdef GPROF $(call import-module,android-ndk-profiler) endif $(call import-module,android/native_app_glue) + diff --git a/build/android/jni/Application.mk b/build/android/jni/Application.mk index b7ffc56a..53467059 100644 --- a/build/android/jni/Application.mk +++ b/build/android/jni/Application.mk @@ -1,4 +1,4 @@ -# NDK_TOOLCHAIN_VERSION := clang3.3 +# NDK_TOOLCHAIN_VERSION := clang3.8 APP_PLATFORM := android-9 APP_MODULES := minetest @@ -6,3 +6,4 @@ APP_STL := gnustl_static APP_CPPFLAGS += -fexceptions APP_GNUSTL_FORCE_CPP_FEATURES := rtti + diff --git a/build/android/irrlicht-back_button.patch b/build/android/patches/irrlicht-back_button.patch similarity index 52% rename from build/android/irrlicht-back_button.patch rename to build/android/patches/irrlicht-back_button.patch index 227749ba..e17b8134 100644 --- a/build/android/irrlicht-back_button.patch +++ b/build/android/patches/irrlicht-back_button.patch @@ -1,14 +1,15 @@ ---- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 20:56:21.289559503 +0200 -+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig 2014-06-03 20:57:39.281556749 +0200 -@@ -423,6 +423,7 @@ +--- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig 2015-08-29 15:43:09.000000000 +0300 ++++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2016-05-13 21:36:22.880388505 +0300 +@@ -486,7 +486,7 @@ + event.KeyInput.Char = 0; } - - device->postEventFromUser(event); -+ status = 1; + +- device->postEventFromUser(event); ++ status = device->postEventFromUser(event); } break; default: -@@ -479,7 +480,7 @@ +@@ -543,7 +543,7 @@ KeyMap[1] = KEY_LBUTTON; // AKEYCODE_SOFT_LEFT KeyMap[2] = KEY_RBUTTON; // AKEYCODE_SOFT_RIGHT KeyMap[3] = KEY_HOME; // AKEYCODE_HOME diff --git a/build/android/irrlicht-texturehack.patch b/build/android/patches/irrlicht-texturehack.patch similarity index 100% rename from build/android/irrlicht-texturehack.patch rename to build/android/patches/irrlicht-texturehack.patch diff --git a/build/android/irrlicht-touchcount.patch b/build/android/patches/irrlicht-touchcount.patch similarity index 100% rename from build/android/irrlicht-touchcount.patch rename to build/android/patches/irrlicht-touchcount.patch diff --git a/build/android/libiconv_android.patch b/build/android/patches/libiconv_android.patch similarity index 100% rename from build/android/libiconv_android.patch rename to build/android/patches/libiconv_android.patch diff --git a/build/android/libiconv_stdio.patch b/build/android/patches/libiconv_stdio.patch similarity index 100% rename from build/android/libiconv_stdio.patch rename to build/android/patches/libiconv_stdio.patch diff --git a/build/android/libvorbis-libogg-fpu.patch b/build/android/patches/libvorbis-libogg-fpu.patch similarity index 100% rename from build/android/libvorbis-libogg-fpu.patch rename to build/android/patches/libvorbis-libogg-fpu.patch diff --git a/build/android/openssl_arch.patch b/build/android/patches/openssl_arch.patch similarity index 56% rename from build/android/openssl_arch.patch rename to build/android/patches/openssl_arch.patch index d9ebbd59..d15e2b13 100644 --- a/build/android/openssl_arch.patch +++ b/build/android/patches/openssl_arch.patch @@ -1,11 +1,13 @@ ---- openssl-1.0.1j/Configure.orig 2014-10-15 14:53:39.000000000 +0200 -+++ openssl-1.0.1j/Configure 2015-01-03 22:41:43.505749921 +0100 -@@ -407,6 +407,8 @@ +--- openssl-1.0.2e.orig/Configure 2015-12-03 15:04:23.000000000 +0100 ++++ openssl-1.0.2e/Configure 2015-12-14 21:01:40.351265968 +0100 +@@ -464,8 +464,10 @@ + # Android: linux-* but without pointers to headers and libs. "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", - "android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +"android-arm","gcc:-march=armv4 -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+"android-mips32","gcc:-march=mips32 -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"android-mips32","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", #### *BSD [do see comment about ${BSDthreads} above!] - "BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/build/android/project.properties b/build/android/project.properties deleted file mode 100644 index cc2a7c5c..00000000 --- a/build/android/project.properties +++ /dev/null @@ -1 +0,0 @@ -target=android-10 diff --git a/build/android/settings.gradle b/build/android/settings.gradle new file mode 100644 index 00000000..a6e60c43 --- /dev/null +++ b/build/android/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = "Minetest" + diff --git a/build/android/src/debug/AndroidManifest.xml b/build/android/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..a3815b9f --- /dev/null +++ b/build/android/src/debug/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/build/android/src/main/AndroidManifest.xml b/build/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..df218fb3 --- /dev/null +++ b/build/android/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/build/android/src/net/minetest/minetest/MinetestAssetCopy.java b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java similarity index 88% rename from build/android/src/net/minetest/minetest/MinetestAssetCopy.java rename to build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java index 5776e77b..eb92acb6 100644 --- a/build/android/src/net/minetest/minetest/MinetestAssetCopy.java +++ b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java @@ -254,54 +254,14 @@ public class MinetestAssetCopy extends Activity boolean shortened = false; String todisplay = m_tocopy.get(progress[0]); m_ProgressBar.setProgress(progress[0]); - - // make sure our text doesn't exceed our layout width - Rect bounds = new Rect(); - Paint textPaint = m_Filename.getPaint(); - textPaint.getTextBounds(todisplay, 0, todisplay.length(), bounds); - - while (bounds.width() > getResources().getDisplayMetrics().widthPixels * 0.7) { - if (todisplay.length() < 2) { - break; - } - todisplay = todisplay.substring(1); - textPaint.getTextBounds(todisplay, 0, todisplay.length(), bounds); - shortened = true; - } - - if (! shortened) { - m_Filename.setText(todisplay); - } - else { - m_Filename.setText(".." + todisplay); - } + m_Filename.setText(todisplay); } else { boolean shortened = false; String todisplay = m_Foldername; String full_text = "scanning " + todisplay + " ..."; - // make sure our text doesn't exceed our layout width - Rect bounds = new Rect(); - Paint textPaint = m_Filename.getPaint(); - textPaint.getTextBounds(full_text, 0, full_text.length(), bounds); - - while (bounds.width() > getResources().getDisplayMetrics().widthPixels * 0.7) { - if (todisplay.length() < 2) { - break; - } - todisplay = todisplay.substring(1); - full_text = "scanning " + todisplay + " ..."; - textPaint.getTextBounds(full_text, 0, full_text.length(), bounds); - shortened = true; - } - - if (! shortened) { - m_Filename.setText(full_text); - } - else { - m_Filename.setText("scanning .." + todisplay + " ..."); - } + m_Filename.setText(full_text); } } diff --git a/build/android/src/net/minetest/minetest/MinetestTextEntry.java b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java similarity index 100% rename from build/android/src/net/minetest/minetest/MinetestTextEntry.java rename to build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java diff --git a/build/android/src/net/minetest/minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java similarity index 98% rename from build/android/src/net/minetest/minetest/MtNativeActivity.java rename to build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java index fc95a837..3173a71f 100644 --- a/build/android/src/net/minetest/minetest/MtNativeActivity.java +++ b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java @@ -19,6 +19,10 @@ public class MtNativeActivity extends NativeActivity { public void onDestroy() { super.onDestroy(); } + + @Override + public void onBackPressed() { + } public void copyAssets() { diff --git a/build/android/res/drawable-hdpi/irr_icon.png b/build/android/src/main/res/drawable-hdpi/irr_icon.png similarity index 100% rename from build/android/res/drawable-hdpi/irr_icon.png rename to build/android/src/main/res/drawable-hdpi/irr_icon.png diff --git a/build/android/res/drawable-ldpi/irr_icon.png b/build/android/src/main/res/drawable-ldpi/irr_icon.png similarity index 100% rename from build/android/res/drawable-ldpi/irr_icon.png rename to build/android/src/main/res/drawable-ldpi/irr_icon.png diff --git a/build/android/res/drawable-mdpi/irr_icon.png b/build/android/src/main/res/drawable-mdpi/irr_icon.png similarity index 100% rename from build/android/res/drawable-mdpi/irr_icon.png rename to build/android/src/main/res/drawable-mdpi/irr_icon.png diff --git a/build/android/res/drawable-xhdpi/irr_icon.png b/build/android/src/main/res/drawable-xhdpi/irr_icon.png similarity index 100% rename from build/android/res/drawable-xhdpi/irr_icon.png rename to build/android/src/main/res/drawable-xhdpi/irr_icon.png diff --git a/build/android/res/layout/assetcopy.xml b/build/android/src/main/res/layout/assetcopy.xml similarity index 81% rename from build/android/res/layout/assetcopy.xml rename to build/android/src/main/res/layout/assetcopy.xml index ade4b0c9..1fcfffd6 100644 --- a/build/android/res/layout/assetcopy.xml +++ b/build/android/src/main/res/layout/assetcopy.xml @@ -13,10 +13,12 @@ diff --git a/build/android/src/main/res/values/strings.xml b/build/android/src/main/res/values/strings.xml new file mode 100644 index 00000000..b407a77c --- /dev/null +++ b/build/android/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + + Preparing media... + + diff --git a/build/android/res/values/styles.xml b/build/android/src/main/res/values/styles.xml similarity index 100% rename from build/android/res/values/styles.xml rename to build/android/src/main/res/values/styles.xml diff --git a/builtin/common/filterlist.lua b/builtin/common/filterlist.lua index 21068113..2a62362e 100644 --- a/builtin/common/filterlist.lua +++ b/builtin/common/filterlist.lua @@ -189,7 +189,7 @@ function filterlist.process(self) for k,v in pairs(self.m_raw_list) do if self.m_filtercriteria == nil or self.m_filter_fct(v,self.m_filtercriteria) then - table.insert(self.m_processed_list,v) + self.m_processed_list[#self.m_processed_list + 1] = v end end diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 08a23043..e4653d41 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -2,7 +2,6 @@ -------------------------------------------------------------------------------- -- Localize functions to avoid table lookups (better performance). -local table_insert = table.insert local string_sub, string_find = string.sub, string.find -------------------------------------------------------------------------------- @@ -94,13 +93,13 @@ function dump2(o, name, dumped) -- the form _G["table: 0xFFFFFFF"] keyStr = string.format("_G[%q]", tostring(k)) -- Dump key table - table_insert(t, dump2(k, keyStr, dumped)) + t[#t + 1] = dump2(k, keyStr, dumped) end else keyStr = basic_dump(k) end local vname = string.format("%s[%s]", name, keyStr) - table_insert(t, dump2(v, vname, dumped)) + t[#t + 1] = dump2(v, vname, dumped) end return string.format("%s = {}\n%s", name, table.concat(t)) end @@ -135,7 +134,7 @@ function dump(o, indent, nested, level) local t = {} local dumped_indexes = {} for i, v in ipairs(o) do - table_insert(t, dump(v, indent, nested, level + 1)) + t[#t + 1] = dump(v, indent, nested, level + 1) dumped_indexes[i] = true end for k, v in pairs(o) do @@ -144,7 +143,7 @@ function dump(o, indent, nested, level) k = "["..dump(k, indent, nested, level + 1).."]" end v = dump(v, indent, nested, level + 1) - table_insert(t, k.." = "..v) + t[#t + 1] = k.." = "..v end end nested[o] = nil @@ -177,7 +176,7 @@ function string.split(str, delim, include_empty, max_splits, sep_is_pattern) local s = string_sub(str, pos, np - 1) if include_empty or (s ~= "") then max_splits = max_splits - 1 - table_insert(items, s) + items[#items + 1] = s end pos = npe + 1 until (max_splits == 0) or (pos > (len + 1)) @@ -186,8 +185,8 @@ end -------------------------------------------------------------------------------- function table.indexof(list, val) - for i = 1, #list do - if list[i] == val then + for i, v in ipairs(list) do + if v == val then return i end end @@ -324,7 +323,7 @@ function core.splittext(text,charlimit) local last_line = "" while start ~= nil do if string.len(last_line) + (stop-start) > charlimit then - table_insert(retval, last_line) + retval[#retval + 1] = last_line last_line = "" end @@ -335,7 +334,7 @@ function core.splittext(text,charlimit) last_line = last_line .. string_sub(text, current_idx, stop - 1) if gotnewline then - table_insert(retval, last_line) + retval[#retval + 1] = last_line last_line = "" gotnewline = false end @@ -353,11 +352,11 @@ function core.splittext(text,charlimit) --add last part of text if string.len(last_line) + (string.len(text) - current_idx) > charlimit then - table_insert(retval, last_line) - table_insert(retval, string_sub(text, current_idx)) + retval[#retval + 1] = last_line + retval[#retval + 1] = string_sub(text, current_idx) else last_line = last_line .. " " .. string_sub(text, current_idx) - table_insert(retval, last_line) + retval[#retval + 1] = last_line end return retval @@ -430,14 +429,14 @@ if INIT == "game" then if iswall then core.set_node(pos, {name = wield_name, - param2 = dirs1[fdir+1]}) + param2 = dirs1[fdir + 1]}) elseif isceiling then if orient_flags.force_facedir then core.set_node(pos, {name = wield_name, param2 = 20}) else core.set_node(pos, {name = wield_name, - param2 = dirs2[fdir+1]}) + param2 = dirs2[fdir + 1]}) end else -- place right side up if orient_flags.force_facedir then diff --git a/builtin/common/serialize.lua b/builtin/common/serialize.lua index 90b8b2ad..b2165648 100644 --- a/builtin/common/serialize.lua +++ b/builtin/common/serialize.lua @@ -104,7 +104,7 @@ function core.serialize(x) local i = local_index local_index = local_index + 1 var = "_["..i.."]" - table.insert(local_defs, var.." = "..val) + local_defs[#local_defs + 1] = var.." = "..val dumped[x] = var return var end @@ -135,16 +135,15 @@ function core.serialize(x) local np = nest_points[x] for i, v in ipairs(x) do if not np or not np[i] then - table.insert(vals, dump_or_ref_val(v)) + vals[#vals + 1] = dump_or_ref_val(v) end idx_dumped[i] = true end for k, v in pairs(x) do if (not np or not np[k]) and not idx_dumped[k] then - table.insert(vals, - "["..dump_or_ref_val(k).."] = " - ..dump_or_ref_val(v)) + vals[#vals + 1] = "["..dump_or_ref_val(k).."] = " + ..dump_or_ref_val(v) end end return "{"..table.concat(vals, ", ").."}" @@ -156,9 +155,9 @@ function core.serialize(x) local function dump_nest_points() for parent, vals in pairs(nest_points) do for k, v in pairs(vals) do - table.insert(local_defs, dump_or_ref_val(parent) + local_defs[#local_defs + 1] = dump_or_ref_val(parent) .."["..dump_or_ref_val(k).."] = " - ..dump_or_ref_val(v)) + ..dump_or_ref_val(v) end end end diff --git a/builtin/fstk/buttonbar.lua b/builtin/fstk/buttonbar.lua index 1ad17562..46558832 100644 --- a/builtin/fstk/buttonbar.lua +++ b/builtin/fstk/buttonbar.lua @@ -145,7 +145,12 @@ local buttonbar_metatable = { if image == nil then image = "" end if tooltip == nil then tooltip = "" end - table.insert(self.buttons,{ name=name, caption=caption, image=image, tooltip=tooltip}) + self.buttons[#self.buttons + 1] = { + name = name, + caption = caption, + image = image, + tooltip = tooltip + } if self.orientation == "horizontal" then if ( (self.btn_size * #self.buttons) + (self.btn_size * 0.05 *2) > self.size.x ) then diff --git a/builtin/fstk/tabview.lua b/builtin/fstk/tabview.lua index c65f6dd7..72551afd 100644 --- a/builtin/fstk/tabview.lua +++ b/builtin/fstk/tabview.lua @@ -46,7 +46,7 @@ local function add_tab(self,tab) tabdata = {}, } - table.insert(self.tablist,newtab) + self.tablist[#self.tablist + 1] = newtab if self.last_tab_index == #self.tablist then self.current_tab = tab.name diff --git a/builtin/game/auth.lua b/builtin/game/auth.lua index 423eb313..deb811b1 100644 --- a/builtin/game/auth.lua +++ b/builtin/game/auth.lua @@ -20,7 +20,7 @@ function core.privs_to_string(privs, delim) local list = {} for priv, bool in pairs(privs) do if bool then - table.insert(list, priv) + list[#list + 1] = priv end end return table.concat(list, delim) diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua index 6a35c034..3350140e 100644 --- a/builtin/game/chatcommands.lua +++ b/builtin/game/chatcommands.lua @@ -84,6 +84,18 @@ core.register_chatcommand("me", { end, }) +core.register_chatcommand("admin", { + description = "Show the name of the server owner", + func = function(name) + local admin = minetest.setting_get("name") + if admin then + return true, "The administrator of this server is "..admin.."." + else + return false, "There's no administrator named in the config file." + end + end, +}) + core.register_chatcommand("help", { privs = {}, params = "[all/privs/]", @@ -104,7 +116,7 @@ core.register_chatcommand("help", { local cmds = {} for cmd, def in pairs(core.chatcommands) do if core.check_player_privs(name, def.privs) then - table.insert(cmds, cmd) + cmds[#cmds + 1] = cmd end end table.sort(cmds) @@ -115,7 +127,7 @@ core.register_chatcommand("help", { local cmds = {} for cmd, def in pairs(core.chatcommands) do if core.check_player_privs(name, def.privs) then - table.insert(cmds, format_help_line(cmd, def)) + cmds[#cmds + 1] = format_help_line(cmd, def) end end table.sort(cmds) @@ -123,7 +135,7 @@ core.register_chatcommand("help", { elseif param == "privs" then local privs = {} for priv, def in pairs(core.registered_privileges) do - table.insert(privs, priv .. ": " .. def.description) + privs[#privs + 1] = priv .. ": " .. def.description end table.sort(privs) return true, "Available privileges:\n"..table.concat(privs, "\n") @@ -169,8 +181,10 @@ core.register_chatcommand("grant", { end local privs = core.get_player_privs(grantname) local privs_unknown = "" + local basic_privs = + core.string_to_privs(core.setting_get("basic_privs") or "interact,shout") for priv, _ in pairs(grantprivs) do - if priv ~= "interact" and priv ~= "shout" and + if not basic_privs[priv] and not core.check_player_privs(name, {privs=true}) then return false, "Your privileges are insufficient." end @@ -211,8 +225,10 @@ core.register_chatcommand("revoke", { end local revoke_privs = core.string_to_privs(revoke_priv_str) local privs = core.get_player_privs(revoke_name) + local basic_privs = + core.string_to_privs(core.setting_get("basic_privs") or "interact,shout") for priv, _ in pairs(revoke_privs) do - if priv ~= "interact" and priv ~= "shout" and + if not basic_privs[priv] and not core.check_player_privs(name, {privs=true}) then return false, "Your privileges are insufficient." end @@ -336,10 +352,16 @@ core.register_chatcommand("teleport", { p.x = tonumber(p.x) p.y = tonumber(p.y) p.z = tonumber(p.z) - teleportee = core.get_player_by_name(name) - if teleportee and p.x and p.y and p.z then - teleportee:setpos(p) - return true, "Teleporting to "..core.pos_to_string(p) + if p.x and p.y and p.z then + local lm = tonumber(minetest.setting_get("map_generation_limit") or 31000) + if p.x < -lm or p.x > lm or p.y < -lm or p.y > lm or p.z < -lm or p.z > lm then + return false, "Cannot teleport out of map bounds!" + end + teleportee = core.get_player_by_name(name) + if teleportee then + teleportee:setpos(p) + return true, "Teleporting to "..core.pos_to_string(p) + end end local teleportee = nil @@ -773,6 +795,13 @@ core.register_chatcommand("time", { end, }) +core.register_chatcommand("days", { + description = "Display day count", + func = function(name, param) + return true, "Current day is " .. core.get_day_count() + end +}) + core.register_chatcommand("shutdown", { description = "shutdown server", privs = {server=true}, @@ -836,14 +865,25 @@ core.register_chatcommand("kick", { }) core.register_chatcommand("clearobjects", { + params = "[full|quick]", description = "clear all objects in world", privs = {server=true}, func = function(name, param) - core.log("action", name .. " clears all objects.") + local options = {} + if param == "" or param == "full" then + options.mode = "full" + elseif param == "quick" then + options.mode = "quick" + else + return false, "Invalid usage, see /help clearobjects." + end + + core.log("action", name .. " clears all objects (" + .. options.mode .. " mode).") core.chat_send_all("Clearing all objects. This may take long." .. " You may experience a timeout. (by " .. name .. ")") - core.clear_objects() + core.clear_objects(options) core.log("action", "Object clearing done.") core.chat_send_all("*** Cleared all objects.") end, diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index 5b5e806f..57bb98cf 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -6,42 +6,49 @@ core.register_entity(":__builtin:falling_node", { initial_properties = { - physical = true, - collide_with_objects = false, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, visual = "wielditem", + visual_size = {x = 0.667, y = 0.667}, textures = {}, - visual_size = {x=0.667, y=0.667}, + physical = true, + is_visible = false, + collide_with_objects = false, + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, }, node = {}, set_node = function(self, node) self.node = node - local prop = { + self.object:set_properties({ is_visible = true, textures = {node.name}, - } - self.object:set_properties(prop) + }) end, get_staticdata = function(self) - return self.node.name + return core.serialize(self.node) end, on_activate = function(self, staticdata) - self.object:set_armor_groups({immortal=1}) - if staticdata then - self:set_node({name=staticdata}) + self.object:set_armor_groups({immortal = 1}) + + local node = core.deserialize(staticdata) + if node then + self:set_node(node) + elseif staticdata ~= "" then + self:set_node({name = staticdata}) end end, on_step = function(self, dtime) - -- Set gravity - self.object:setacceleration({x=0, y=-10, z=0}) + -- Set gravity + local acceleration = self.object:getacceleration() + if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then + self.object:setacceleration({x = 0, y = -10, z = 0}) + end -- Turn to actual sand when collides to ground or just move local pos = self.object:getpos() - local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point + local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z} -- Position of bottom center point local bcn = core.get_node(bcp) local bcd = core.registered_nodes[bcn.name] -- Note: walkable is in the node definition, not in item groups @@ -52,7 +59,7 @@ core.register_entity(":__builtin:falling_node", { if bcd and bcd.leveled and bcn.name == self.node.name then local addlevel = self.node.level - if addlevel == nil or addlevel <= 0 then + if not addlevel or addlevel <= 0 then addlevel = bcd.leveled end if core.add_node_level(bcp, addlevel) == 0 then @@ -65,7 +72,7 @@ core.register_entity(":__builtin:falling_node", { core.remove_node(bcp) return end - local np = {x=bcp.x, y=bcp.y+1, z=bcp.z} + local np = {x = bcp.x, y = bcp.y + 1, z = bcp.z} -- Check what's here local n2 = core.get_node(np) -- If it's not air or liquid, remove node and replace it with @@ -76,25 +83,25 @@ core.register_entity(":__builtin:falling_node", { if core.registered_nodes[n2.name].buildable_to == false then -- Add dropped items local drops = core.get_node_drops(n2.name, "") - local _, dropped_item for _, dropped_item in ipairs(drops) do core.add_item(np, dropped_item) end end -- Run script hook - local _, callback for _, callback in ipairs(core.registered_on_dignodes) do - callback(np, n2, nil) + callback(np, n2) end end -- Create node and remove entity - core.add_node(np, self.node) + if core.registered_nodes[self.node.name] then + core.add_node(np, self.node) + end self.object:remove() nodeupdate(np) return end local vel = self.object:getvelocity() - if vector.equals(vel, {x=0,y=0,z=0}) then + if vector.equals(vel, {x = 0, y = 0, z = 0}) then local npos = self.object:getpos() self.object:setpos(vector.round(npos)) end @@ -109,7 +116,7 @@ end function drop_attached_node(p) local nn = core.get_node(p).name core.remove_node(p) - for _,item in ipairs(core.get_node_drops(nn, "")) do + for _, item in ipairs(core.get_node_drops(nn, "")) do local pos = { x = p.x + math.random()/2 - 0.25, y = p.y + math.random()/2 - 0.25, @@ -121,25 +128,13 @@ end function check_attached_node(p, n) local def = core.registered_nodes[n.name] - local d = {x=0, y=0, z=0} + local d = {x = 0, y = 0, z = 0} if def.paramtype2 == "wallmounted" then - if n.param2 == 0 then - d.y = 1 - elseif n.param2 == 1 then - d.y = -1 - elseif n.param2 == 2 then - d.x = 1 - elseif n.param2 == 3 then - d.x = -1 - elseif n.param2 == 4 then - d.z = 1 - elseif n.param2 == 5 then - d.z = -1 - end + d = core.wallmounted_to_dir(n.param2) else d.y = -1 end - local p2 = {x=p.x+d.x, y=p.y+d.y, z=p.z+d.z} + local p2 = vector.add(p, d) local nn = core.get_node(p2).name local def2 = core.registered_nodes[nn] if def2 and not def2.walkable then @@ -152,10 +147,10 @@ end -- Some common functions -- -function nodeupdate_single(p, delay) +function nodeupdate_single(p) local n = core.get_node(p) if core.get_item_group(n.name, "falling_node") ~= 0 then - local p_bottom = {x=p.x, y=p.y-1, z=p.z} + local p_bottom = {x = p.x, y = p.y - 1, z = p.z} local n_bottom = core.get_node(p_bottom) -- Note: walkable is in the node definition, not in item groups if core.registered_nodes[n_bottom.name] and @@ -165,37 +160,88 @@ function nodeupdate_single(p, delay) core.get_node_level(p_bottom) < core.get_node_max_level(p_bottom))) and (not core.registered_nodes[n_bottom.name].walkable or core.registered_nodes[n_bottom.name].buildable_to) then - if delay then - core.after(0.1, nodeupdate_single, {x=p.x, y=p.y, z=p.z}, false) - else - n.level = core.get_node_level(p) - core.remove_node(p) - spawn_falling_node(p, n) - nodeupdate(p) - end + n.level = core.get_node_level(p) + core.remove_node(p) + spawn_falling_node(p, n) + return true end end if core.get_item_group(n.name, "attached_node") ~= 0 then if not check_attached_node(p, n) then drop_attached_node(p) - nodeupdate(p) + return true end end + + return false end -function nodeupdate(p, delay) - -- Round p to prevent falling entities to get stuck - p.x = math.floor(p.x+0.5) - p.y = math.floor(p.y+0.5) - p.z = math.floor(p.z+0.5) +-- This table is specifically ordered. +-- We don't walk diagonals, only our direct neighbors, and self. +-- Down first as likely case, but always before self. The same with sides. +-- Up must come last, so that things above self will also fall all at once. +local nodeupdate_neighbors = { + {x = -1, y = -1, z = 0}, + {x = 1, y = -1, z = 0}, + {x = 0, y = -1, z = -1}, + {x = 0, y = -1, z = 1}, + {x = 0, y = -1, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, + {x = 0, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, +} - for x = -1,1 do - for y = -1,1 do - for z = -1,1 do - nodeupdate_single({x=p.x+x, y=p.y+y, z=p.z+z}, delay or not (x==0 and y==0 and z==0)) - end - end +function nodeupdate(p) + -- Round p to prevent falling entities to get stuck. + p = vector.round(p) + + -- We make a stack, and manually maintain size for performance. + -- Stored in the stack, we will maintain tables with pos, and + -- last neighbor visited. This way, when we get back to each + -- node, we know which directions we have already walked, and + -- which direction is the next to walk. + local s = {} + local n = 0 + -- The neighbor order we will visit from our table. + local v = 1 + + while true do + -- Push current pos onto the stack. + n = n + 1 + s[n] = {p = p, v = v} + -- Select next node from neighbor list. + p = vector.add(p, nodeupdate_neighbors[v]) + -- Now we check out the node. If it is in need of an update, + -- it will let us know in the return value (true = updated). + if not nodeupdate_single(p) then + -- If we don't need to "recurse" (walk) to it then pop + -- our previous pos off the stack and continue from there, + -- with the v value we were at when we last were at that + -- node + repeat + local pop = s[n] + p = pop.p + v = pop.v + s[n] = nil + n = n - 1 + -- If there's nothing left on the stack, and no + -- more sides to walk to, we're done and can exit + if n == 0 and v == 11 then + return + end + until v < 11 + -- The next round walk the next neighbor in list. + v = v + 1 + else + -- If we did need to walk the neighbor, then + -- start walking it from the walk order start (1), + -- and not the order we just pushed up the stack. + v = 1 + end end end diff --git a/builtin/game/features.lua b/builtin/game/features.lua index a5f17e54..2aad458d 100644 --- a/builtin/game/features.lua +++ b/builtin/game/features.lua @@ -8,6 +8,7 @@ core.features = { use_texture_alpha = true, no_legacy_abms = true, texture_names_parens = true, + area_store_custom_ids = true, } function core.has_feature(arg) diff --git a/builtin/game/item.lua b/builtin/game/item.lua index df5bb070..36c2c1a6 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -27,19 +27,11 @@ function core.get_pointed_thing_position(pointed_thing, above) if above then -- The position where a node would be placed return pointed_thing.above - else - -- The position where a node would be dug - return pointed_thing.under end + -- The position where a node would be dug + return pointed_thing.under elseif pointed_thing.type == "object" then - obj = pointed_thing.ref - if obj ~= nil then - return obj:getpos() - else - return nil - end - else - return nil + return pointed_thing.ref and pointed_thing.ref:getpos() end end @@ -96,25 +88,26 @@ function core.dir_to_facedir(dir, is6d) end end +-- Table of possible dirs +local facedir_to_dir = { + {x= 0, y=0, z= 1}, + {x= 1, y=0, z= 0}, + {x= 0, y=0, z=-1}, + {x=-1, y=0, z= 0}, + {x= 0, y=-1, z= 0}, + {x= 0, y=1, z= 0}, +} +-- Mapping from facedir value to index in facedir_to_dir. +local facedir_to_dir_map = { + [0]=1, 2, 3, 4, + 5, 2, 6, 4, + 6, 2, 5, 4, + 1, 5, 3, 6, + 1, 6, 3, 5, + 1, 4, 3, 2, +} function core.facedir_to_dir(facedir) - --a table of possible dirs - return ({{x=0, y=0, z=1}, - {x=1, y=0, z=0}, - {x=0, y=0, z=-1}, - {x=-1, y=0, z=0}, - {x=0, y=-1, z=0}, - {x=0, y=1, z=0}}) - - --indexed into by a table of correlating facedirs - [({[0]=1, 2, 3, 4, - 5, 2, 6, 4, - 6, 2, 5, 4, - 1, 5, 3, 6, - 1, 6, 3, 5, - 1, 4, 3, 2}) - - --indexed into by the facedir in question - [facedir]] + return facedir_to_dir[facedir_to_dir_map[facedir]] end function core.dir_to_wallmounted(dir) @@ -139,17 +132,17 @@ function core.dir_to_wallmounted(dir) end end +-- table of dirs in wallmounted order +local wallmounted_to_dir = { + [0] = {x = 0, y = 1, z = 0}, + {x = 0, y = -1, z = 0}, + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, +} function core.wallmounted_to_dir(wallmounted) - -- table of dirs in wallmounted order - return ({[0] = {x = 0, y = 1, z = 0}, - {x = 0, y = -1, z = 0}, - {x = 1, y = 0, z = 0}, - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = 1}, - {x = 0, y = 0, z = -1}}) - - --indexed into by the wallmounted in question - [wallmounted] + return wallmounted_to_dir[wallmounted] end function core.get_node_drops(nodename, toolname) @@ -240,7 +233,8 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2) place_to = {x = under.x, y = under.y, z = under.z} end - if core.is_protected(place_to, placer:get_player_name()) then + if core.is_protected(place_to, placer:get_player_name()) and + not minetest.check_player_privs(placer, "protection_bypass") then core.log("action", placer:get_player_name() .. " tried to place " .. def.name .. " at protected position " @@ -347,8 +341,12 @@ function core.item_place(itemstack, placer, pointed_thing, param2) return itemstack end +function core.item_secondary_use(itemstack, placer) + return itemstack +end + function core.item_drop(itemstack, dropper, pos) - if dropper.is_player then + if dropper and dropper:is_player() then local v = dropper:get_look_dir() local p = {x=pos.x, y=pos.y+1.2, z=pos.z} local cs = itemstack:get_count() @@ -362,6 +360,7 @@ function core.item_drop(itemstack, dropper, pos) v.y = v.y*2 + 2 v.z = v.z*2 obj:setvelocity(v) + obj:get_luaentity().dropped_by = dropper:get_player_name() return itemstack end @@ -446,7 +445,8 @@ function core.node_dig(pos, node, digger) return end - if core.is_protected(pos, digger:get_player_name()) then + if core.is_protected(pos, digger:get_player_name()) and + not minetest.check_player_privs(digger, "protection_bypass") then core.log("action", digger:get_player_name() .. " tried to dig " .. node.name .. " at protected position " @@ -577,6 +577,7 @@ core.nodedef_default = { diggable = true, climbable = false, buildable_to = false, + floodable = false, liquidtype = "none", liquid_alternative_flowing = "", liquid_alternative_source = "", @@ -604,6 +605,7 @@ core.craftitemdef_default = { -- Interaction callbacks on_place = redef_wrapper(core, 'item_place'), -- core.item_place on_drop = redef_wrapper(core, 'item_drop'), -- core.item_drop + on_secondary_use = redef_wrapper(core, 'item_secondary_use'), on_use = nil, } @@ -621,6 +623,7 @@ core.tooldef_default = { -- Interaction callbacks on_place = redef_wrapper(core, 'item_place'), -- core.item_place + on_secondary_use = redef_wrapper(core, 'item_secondary_use'), on_drop = redef_wrapper(core, 'item_drop'), -- core.item_drop on_use = nil, } @@ -639,6 +642,7 @@ core.noneitemdef_default = { -- This is used for the hand and unknown items -- Interaction callbacks on_place = redef_wrapper(core, 'item_place'), + on_secondary_use = redef_wrapper(core, 'item_secondary_use'), on_drop = nil, on_use = nil, } diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index a8d7a186..a66bf33d 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -31,6 +31,7 @@ core.register_entity(":__builtin:item", { spritediv = {x = 1, y = 1}, initial_sprite_basepos = {x = 0, y = 0}, is_visible = false, + infotext = "", }, itemstring = '', @@ -50,6 +51,7 @@ core.register_entity(":__builtin:item", { local c = s local itemtable = stack:to_table() local itemname = nil + local description = "" if itemtable then itemname = stack:to_table().name end @@ -58,6 +60,7 @@ core.register_entity(":__builtin:item", { if core.registered_items[itemname] then item_texture = core.registered_items[itemname].inventory_image item_type = core.registered_items[itemname].type + description = core.registered_items[itemname].description end local prop = { is_visible = true, @@ -66,6 +69,7 @@ core.register_entity(":__builtin:item", { visual_size = {x = s, y = s}, collisionbox = {-c, -c, -c, c, c, c}, automatic_rotate = math.pi * 0.5, + infotext = description, } self.object:set_properties(prop) end, @@ -74,7 +78,8 @@ core.register_entity(":__builtin:item", { return core.serialize({ itemstring = self.itemstring, always_collect = self.always_collect, - age = self.age + age = self.age, + dropped_by = self.dropped_by }) end, @@ -89,6 +94,7 @@ core.register_entity(":__builtin:item", { else self.age = dtime_s end + self.dropped_by = data.dropped_by end else self.itemstring = staticdata diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua index efd0f8dc..de41cfc9 100644 --- a/builtin/game/misc.lua +++ b/builtin/game/misc.lua @@ -4,73 +4,47 @@ -- Misc. API functions -- -local timers = {} -local mintime -local function update_timers(delay) - mintime = false - local sub = 0 - for index = 1, #timers do - index = index - sub - local timer = timers[index] - timer.time = timer.time - delay - if timer.time <= 0 then - core.set_last_run_mod(timer.mod_origin) - timer.func(unpack(timer.args or {})) - table.remove(timers, index) - sub = sub + 1 - elseif mintime then - mintime = math.min(mintime, timer.time) - else - mintime = timer.time +local jobs = {} +local time = 0.0 +local last = core.get_us_time() / 1000000 + +core.register_globalstep(function(dtime) + local new = core.get_us_time() / 1000000 + if new > last then + time = time + (new - last) + else + -- Overflow, we may lose a little bit of time here but + -- only 1 tick max, potentially running timers slightly + -- too early. + time = time + new + end + last = new + + if #jobs < 1 then + return + end + + -- Iterate backwards so that we miss any new timers added by + -- a timer callback, and so that we don't skip the next timer + -- in the list if we remove one. + for i = #jobs, 1, -1 do + local job = jobs[i] + if time >= job.expire then + core.set_last_run_mod(job.mod_origin) + job.func(unpack(job.arg)) + table.remove(jobs, i) end end -end - -local timers_to_add -local function add_timers() - for _, timer in ipairs(timers_to_add) do - table.insert(timers, timer) - end - timers_to_add = false -end - -local delay = 0 -core.register_globalstep(function(dtime) - if not mintime then - -- abort if no timers are running - return - end - if timers_to_add then - add_timers() - end - delay = delay + dtime - if delay < mintime then - return - end - update_timers(delay) - delay = 0 end) -function core.after(time, func, ...) +function core.after(after, func, ...) assert(tonumber(time) and type(func) == "function", "Invalid core.after invocation") - if not mintime then - mintime = time - timers_to_add = {{ - time = time+delay, - func = func, - args = {...}, - mod_origin = core.get_last_run_mod(), - }} - return - end - mintime = math.min(mintime, time) - timers_to_add = timers_to_add or {} - timers_to_add[#timers_to_add+1] = { - time = time+delay, - func = func, - args = {...}, - mod_origin = core.get_last_run_mod(), + jobs[#jobs + 1] = { + func = func, + expire = time + after, + arg = {...}, + mod_origin = core.get_last_run_mod() } end @@ -89,14 +63,14 @@ function core.check_player_privs(player_or_name, ...) -- We were provided with a table like { privA = true, privB = true }. for priv, value in pairs(requested_privs[1]) do if value and not player_privs[priv] then - table.insert(missing_privileges, priv) + missing_privileges[#missing_privileges + 1] = priv end end else -- Only a list, we can process it directly. for key, priv in pairs(requested_privs) do if not player_privs[priv] then - table.insert(missing_privileges, priv) + missing_privileges[#missing_privileges + 1] = priv end end end @@ -122,7 +96,7 @@ function core.get_connected_players() local temp_table = {} for index, value in pairs(player_list) do if value:is_player_connected() then - table.insert(temp_table, value) + temp_table[#temp_table + 1] = value end end return temp_table @@ -204,3 +178,22 @@ function core.raillike_group(name) end return id end + +-- HTTP callback interface +function core.http_add_fetch(httpenv) + httpenv.fetch = function(req, callback) + local handle = httpenv.fetch_async(req) + + local function update_http_status() + local res = httpenv.fetch_async_get(handle) + if res.completed then + callback(res) + else + core.after(0, update_http_status) + end + end + core.after(0, update_http_status) + end + + return httpenv +end diff --git a/builtin/game/privileges.lua b/builtin/game/privileges.lua index 7e6387c7..bd5ead62 100644 --- a/builtin/game/privileges.lua +++ b/builtin/game/privileges.lua @@ -32,6 +32,7 @@ core.register_privilege("settime", "Can use /time") core.register_privilege("privs", "Can modify privileges") core.register_privilege("basic_privs", "Can modify 'shout' and 'interact' privileges") core.register_privilege("server", "Can do server maintenance stuff") +core.register_privilege("protection_bypass", "Can bypass node protection in the world") core.register_privilege("shout", "Can speak in chat") core.register_privilege("ban", "Can ban and unban players") core.register_privilege("kick", "Can kick players") diff --git a/builtin/game/register.lua b/builtin/game/register.lua index 840ade12..f330491a 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -11,10 +11,11 @@ local register_alias_raw = core.register_alias_raw core.register_alias_raw = nil -- --- Item / entity / ABM registration functions +-- Item / entity / ABM / LBM registration functions -- core.registered_abms = {} +core.registered_lbms = {} core.registered_entities = {} core.registered_items = {} core.registered_nodes = {} @@ -51,27 +52,38 @@ local forbidden_item_names = { local function check_modname_prefix(name) if name:sub(1,1) == ":" then - -- Escape the modname prefix enforcement mechanism + -- If the name starts with a colon, we can skip the modname prefix + -- mechanism. return name:sub(2) else - -- Modname prefix enforcement + -- Enforce that the name starts with the correct mod name. local expected_prefix = core.get_current_modname() .. ":" if name:sub(1, #expected_prefix) ~= expected_prefix then error("Name " .. name .. " does not follow naming conventions: " .. - "\"modname:\" or \":\" prefix required") + "\"" .. expected_prefix .. "\" or \":\" prefix required") end + + -- Enforce that the name only contains letters, numbers and underscores. local subname = name:sub(#expected_prefix+1) - if subname:find("[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]") then + if subname:find("[^%w_]") then error("Name " .. name .. " does not follow naming conventions: " .. "contains unallowed characters") end + return name end end function core.register_abm(spec) -- Add to core.registered_abms - core.registered_abms[#core.registered_abms+1] = spec + core.registered_abms[#core.registered_abms + 1] = spec + spec.mod_origin = core.get_current_modname() or "??" +end + +function core.register_lbm(spec) + -- Add to core.registered_lbms + check_modname_prefix(spec.name) + core.registered_lbms[#core.registered_lbms + 1] = spec spec.mod_origin = core.get_current_modname() or "??" end @@ -268,6 +280,7 @@ core.register_item(":unknown", { description = "Unknown Item", inventory_image = "unknown_item.png", on_place = core.item_place, + on_secondary_use = core.item_secondary_use, on_drop = core.item_drop, groups = {not_in_creative_inventory=1}, diggable = true, @@ -284,6 +297,7 @@ core.register_node(":air", { pointable = false, diggable = false, buildable_to = true, + floodable = true, air_equivalent = true, drop = "", groups = {not_in_creative_inventory=1}, @@ -385,7 +399,7 @@ end local function make_registration() local t = {} local registerfunc = function(func) - table.insert(t, func) + t[#t + 1] = func core.callback_origins[func] = { mod = core.get_current_modname() or "??", name = debug.getinfo(1, "n").name or "??" @@ -461,9 +475,9 @@ end function core.register_on_player_hpchange(func, modifier) if modifier then - table.insert(core.registered_on_player_hpchanges.modifiers, func) + core.registered_on_player_hpchanges.modifiers[#core.registered_on_player_hpchanges.modifiers + 1] = func else - table.insert(core.registered_on_player_hpchanges.loggers, func) + core.registered_on_player_hpchanges.loggers[#core.registered_on_player_hpchanges.loggers + 1] = func end core.callback_origins[func] = { mod = core.get_current_modname() or "??", diff --git a/builtin/game/static_spawn.lua b/builtin/game/static_spawn.lua index 492ab6ca..10033422 100644 --- a/builtin/game/static_spawn.lua +++ b/builtin/game/static_spawn.lua @@ -3,31 +3,23 @@ local function warn_invalid_static_spawnpoint() if core.setting_get("static_spawnpoint") and not core.setting_get_pos("static_spawnpoint") then - core.log('error', "The static_spawnpoint setting is invalid: \"".. + core.log("error", "The static_spawnpoint setting is invalid: \"".. core.setting_get("static_spawnpoint").."\"") end end warn_invalid_static_spawnpoint() -local function put_player_in_spawn(obj) - warn_invalid_static_spawnpoint() +local function put_player_in_spawn(player_obj) local static_spawnpoint = core.setting_get_pos("static_spawnpoint") if not static_spawnpoint then return false end - core.log('action', "Moving "..obj:get_player_name().. - " to static spawnpoint at ".. - core.pos_to_string(static_spawnpoint)) - obj:setpos(static_spawnpoint) + core.log("action", "Moving " .. player_obj:get_player_name() .. + " to static spawnpoint at " .. core.pos_to_string(static_spawnpoint)) + player_obj:setpos(static_spawnpoint) return true end -core.register_on_newplayer(function(obj) - put_player_in_spawn(obj) -end) - -core.register_on_respawnplayer(function(obj) - return put_player_in_spawn(obj) -end) - +core.register_on_newplayer(put_player_in_spawn) +core.register_on_respawnplayer(put_player_in_spawn) diff --git a/builtin/init.lua b/builtin/init.lua index b3004468..4400a19d 100644 --- a/builtin/init.lua +++ b/builtin/init.lua @@ -12,7 +12,11 @@ if core.print then -- Override native print and use -- terminal if that's turned on function print(...) - core_print(table.concat({...}, "\t")) + local n, t = select("#", ...), {...} + for i = 1, n do + t[i] = tostring(t[i]) + end + core_print(table.concat(t, "\t")) end core.print = nil -- don't pollute our namespace end @@ -21,26 +25,26 @@ os.setlocale("C", "numeric") minetest = core -- Load other files -local scriptdir = core.get_builtin_path()..DIR_DELIM -local gamepath = scriptdir.."game"..DIR_DELIM -local commonpath = scriptdir.."common"..DIR_DELIM -local asyncpath = scriptdir.."async"..DIR_DELIM +local scriptdir = core.get_builtin_path() .. DIR_DELIM +local gamepath = scriptdir .. "game" .. DIR_DELIM +local commonpath = scriptdir .. "common" .. DIR_DELIM +local asyncpath = scriptdir .. "async" .. DIR_DELIM -dofile(commonpath.."strict.lua") -dofile(commonpath.."serialize.lua") -dofile(commonpath.."misc_helpers.lua") +dofile(commonpath .. "strict.lua") +dofile(commonpath .. "serialize.lua") +dofile(commonpath .. "misc_helpers.lua") if INIT == "game" then - dofile(gamepath.."init.lua") + dofile(gamepath .. "init.lua") elseif INIT == "mainmenu" then local mainmenuscript = core.setting_get("main_menu_script") if mainmenuscript ~= nil and mainmenuscript ~= "" then dofile(mainmenuscript) else - dofile(core.get_mainmenu_path()..DIR_DELIM.."init.lua") + dofile(core.get_mainmenu_path() .. DIR_DELIM .. "init.lua") end elseif INIT == "async" then - dofile(asyncpath.."init.lua") + dofile(asyncpath .. "init.lua") else error(("Unrecognized builtin initialization type %s!"):format(tostring(INIT))) end diff --git a/builtin/mainmenu/common.lua b/builtin/mainmenu/common.lua index f4020aaa..1fd89ff7 100644 --- a/builtin/mainmenu/common.lua +++ b/builtin/mainmenu/common.lua @@ -22,40 +22,37 @@ menudata = {} -------------------------------------------------------------------------------- -- Local cached values -------------------------------------------------------------------------------- -local min_supp_proto = core.get_min_supp_proto() -local max_supp_proto = core.get_max_supp_proto() +local min_supp_proto, max_supp_proto +function common_update_cached_supp_proto() + min_supp_proto = core.get_min_supp_proto() + max_supp_proto = core.get_max_supp_proto() +end +common_update_cached_supp_proto() -------------------------------------------------------------------------------- -- Menu helper functions -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- local function render_client_count(n) - if n > 99 then - return '99+' - elseif n >= 0 then - return tostring(n) - else - return '?' - end + if n > 99 then return '99+' + elseif n >= 0 then return tostring(n) + else return '?' end end local function configure_selected_world_params(idx) - local worldconfig = modmgr.get_worldconfig( - menudata.worldlist:get_list()[idx].path) - - if worldconfig.creative_mode ~= nil then + local worldconfig = modmgr.get_worldconfig(menudata.worldlist:get_list()[idx].path) + if worldconfig.creative_mode then core.setting_set("creative_mode", worldconfig.creative_mode) end - if worldconfig.enable_damage ~= nil then + if worldconfig.enable_damage then core.setting_set("enable_damage", worldconfig.enable_damage) end end -------------------------------------------------------------------------------- function image_column(tooltip, flagname) - return "image," .. - "tooltip=" .. core.formspec_escape(tooltip) .. "," .. + return "image,tooltip=" .. core.formspec_escape(tooltip) .. "," .. "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," .. "1=" .. core.formspec_escape(defaulttexturedir .. "server_flags_" .. flagname .. ".png") end @@ -64,76 +61,60 @@ end function order_favorite_list(list) local res = {} --orders the favorite list after support - for i=1,#list,1 do + for i = 1, #list do local fav = list[i] if is_server_protocol_compat(fav.proto_min, fav.proto_max) then - table.insert(res, fav) + res[#res + 1] = fav end end - for i=1,#list,1 do + for i = 1, #list do local fav = list[i] if not is_server_protocol_compat(fav.proto_min, fav.proto_max) then - table.insert(res, fav) + res[#res + 1] = fav end end return res end -------------------------------------------------------------------------------- -function render_favorite(spec,render_details) +function render_favorite(spec, is_favorite) local text = "" - - if spec.name ~= nil then + if spec.name then text = text .. core.formspec_escape(spec.name:trim()) - --- if spec.description ~= nil and --- core.formspec_escape(spec.description):trim() ~= "" then --- text = text .. " (" .. core.formspec_escape(spec.description) .. ")" --- end - else - if spec.address ~= nil then - text = text .. spec.address:trim() - - if spec.port ~= nil then - text = text .. ":" .. spec.port - end + elseif spec.address then + text = text .. spec.address:trim() + if spec.port then + text = text .. ":" .. spec.port end end - if not render_details then - return text + local details = "" + local grey_out = not is_server_protocol_compat(spec.proto_min, spec.proto_max) + + if is_favorite then + details = "1," + else + details = "0," end - local details = "" - local grey_out = not is_server_protocol_compat(spec.proto_max, spec.proto_min) - - if spec.clients ~= nil and spec.clients_max ~= nil then + if spec.clients and spec.clients_max then local clients_color = '' local clients_percent = 100 * spec.clients / spec.clients_max -- Choose a color depending on how many clients are connected -- (relatively to clients_max) - if spec.clients == 0 then - clients_color = '' -- 0 players: default/white - elseif spec.clients == spec.clients_max then - clients_color = '#dd5b5b' -- full server: red (darker) - elseif clients_percent <= 60 then - clients_color = '#a1e587' -- 0-60%: green - elseif clients_percent <= 90 then - clients_color = '#ffdc97' -- 60-90%: yellow - else - clients_color = '#ffba97' -- 90-100%: orange + if grey_out then clients_color = '#aaaaaa' + elseif spec.clients == 0 then clients_color = '' -- 0 players: default/white + elseif clients_percent <= 60 then clients_color = '#a1e587' -- 0-60%: green + elseif clients_percent <= 90 then clients_color = '#ffdc97' -- 60-90%: yellow + elseif clients_percent == 100 then clients_color = '#dd5b5b' -- full server: red (darker) + else clients_color = '#ffba97' -- 90-100%: orange end - if grey_out then - clients_color = '#aaaaaa' - end + details = details .. clients_color .. ',' .. + render_client_count(spec.clients) .. ',/,' .. + render_client_count(spec.clients_max) .. ',' - details = details .. - clients_color .. ',' .. - render_client_count(spec.clients) .. ',' .. - '/,' .. - render_client_count(spec.clients_max) .. ',' elseif grey_out then details = details .. '#aaaaaa,?,/,?,' else @@ -184,56 +165,36 @@ end -------------------------------------------------------------------------------- function menu_render_worldlist() local retval = "" - local current_worldlist = menudata.worldlist:get_list() - for i,v in ipairs(current_worldlist) do - if retval ~= "" then - retval = retval .."," - end - + for i, v in ipairs(current_worldlist) do + if retval ~= "" then retval = retval .. "," end retval = retval .. core.formspec_escape(v.name) .. - " \\[" .. core.formspec_escape(v.gameid) .. "\\]" + " \\[" .. core.formspec_escape(v.gameid) .. "\\]" end return retval end -------------------------------------------------------------------------------- -function menu_handle_key_up_down(fields,textlist,settingname) - if fields["key_up"] then - local oldidx = core.get_textlist_index(textlist) - - if oldidx ~= nil and oldidx > 1 then - local newidx = oldidx -1 - core.setting_set(settingname, - menudata.worldlist:get_raw_index(newidx)) - - configure_selected_world_params(newidx) +function menu_handle_key_up_down(fields, textlist, settingname) + local oldidx, newidx = core.get_textlist_index(textlist), 1 + if fields.key_up or fields.key_down then + if fields.key_up and oldidx and oldidx > 1 then + newidx = oldidx - 1 + elseif fields.key_down and oldidx and + oldidx < menudata.worldlist:size() then + newidx = oldidx + 1 end + core.setting_set(settingname, menudata.worldlist:get_raw_index(newidx)) + configure_selected_world_params(newidx) return true end - - if fields["key_down"] then - local oldidx = core.get_textlist_index(textlist) - - if oldidx ~= nil and oldidx < menudata.worldlist:size() then - local newidx = oldidx + 1 - core.setting_set(settingname, - menudata.worldlist:get_raw_index(newidx)) - - configure_selected_world_params(newidx) - end - - return true - end - return false end -------------------------------------------------------------------------------- function asyncOnlineFavourites() - if not menudata.public_known then menudata.public_known = {{ name = fgettext("Loading..."), @@ -241,43 +202,45 @@ function asyncOnlineFavourites() }} end menudata.favorites = menudata.public_known + menudata.favorites_is_public = true + + if not menudata.public_downloading then + menudata.public_downloading = true + else + return + end + core.handle_async( function(param) return core.get_favorites("online") end, nil, function(result) - if core.setting_getbool("public_serverlist") then - local favs = order_favorite_list(result) - if favs[1] then - menudata.public_known = favs - menudata.favorites = menudata.public_known - end - core.event_handler("Refresh") + menudata.public_downloading = nil + local favs = order_favorite_list(result) + if favs[1] then + menudata.public_known = favs + menudata.favorites = menudata.public_known + menudata.favorites_is_public = true end + core.event_handler("Refresh") end ) end -------------------------------------------------------------------------------- -function text2textlist(xpos,ypos,width,height,tl_name,textlen,text,transparency) - local textlines = core.splittext(text,textlen) +function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transparency) + local textlines = core.splittext(text, textlen) + local retval = "textlist[" .. xpos .. "," .. ypos .. ";" .. width .. + "," .. height .. ";" .. tl_name .. ";" - local retval = "textlist[" .. xpos .. "," .. ypos .. ";" - .. width .. "," .. height .. ";" - .. tl_name .. ";" - - for i=1, #textlines, 1 do - textlines[i] = textlines[i]:gsub("\r","") + for i = 1, #textlines do + textlines[i] = textlines[i]:gsub("\r", "") retval = retval .. core.formspec_escape(textlines[i]) .. "," end retval = retval .. ";0;" - - if transparency then - retval = retval .. "true" - end - + if transparency then retval = retval .. "true" end retval = retval .. "]" return retval @@ -285,19 +248,21 @@ end -------------------------------------------------------------------------------- function is_server_protocol_compat(server_proto_min, server_proto_max) - return not ((min_supp_proto > (server_proto_max or 24)) or (max_supp_proto < (server_proto_min or 13))) + return min_supp_proto <= (server_proto_max or 24) and max_supp_proto >= (server_proto_min or 13) end -------------------------------------------------------------------------------- function is_server_protocol_compat_or_error(server_proto_min, server_proto_max) if not is_server_protocol_compat(server_proto_min, server_proto_max) then - local server_prot_ver_info - local client_prot_ver_info - if server_proto_min ~= server_proto_max then + local server_prot_ver_info, client_prot_ver_info + local s_p_min = server_proto_min or 13 + local s_p_max = server_proto_max or 24 + + if s_p_min ~= s_p_max then server_prot_ver_info = fgettext_ne("Server supports protocol versions between $1 and $2. ", - server_proto_min or 13, server_proto_max or 24) + s_p_min, s_p_max) else server_prot_ver_info = fgettext_ne("Server enforces protocol version $1. ", - server_proto_min or 13) + s_p_min) end if min_supp_proto ~= max_supp_proto then client_prot_ver_info= fgettext_ne("We support protocol versions between version $1 and $2.", @@ -320,7 +285,7 @@ function menu_worldmt(selected, setting, value) local filename = world.path .. DIR_DELIM .. "world.mt" local world_conf = Settings(filename) - if value ~= nil then + if value then if not world_conf:write() then core.log("error", "Failed to write world config file") end @@ -338,7 +303,7 @@ function menu_worldmt_legacy(selected) local modes_names = {"creative_mode", "enable_damage", "server_announce"} for _, mode_name in pairs(modes_names) do local mode_val = menu_worldmt(selected, mode_name) - if mode_val ~= nil then + if mode_val then core.setting_set(mode_name, mode_val) else menu_worldmt(selected, mode_name, core.setting_get(mode_name)) diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua index 4d13faea..eb0319ba 100644 --- a/builtin/mainmenu/dlg_config_world.lua +++ b/builtin/mainmenu/dlg_config_world.lua @@ -25,20 +25,20 @@ local function get_formspec(data) local mod = data.list:get_list()[data.selected_mod] local retval = - "size[11,6.5,true]" .. - "label[0.5,-0.25;" .. fgettext("World:") .. "]" .. - "label[1.75,-0.25;" .. data.worldspec.name .. "]" + "size[11.5,7.5,true]" .. + "label[0.5,0;" .. fgettext("World:") .. "]" .. + "label[1.75,0;" .. data.worldspec.name .. "]" if data.hide_gamemods then - retval = retval .. "checkbox[0,5.75;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";true]" + retval = retval .. "checkbox[1,6;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";true]" else - retval = retval .. "checkbox[0,5.75;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";false]" + retval = retval .. "checkbox[1,6;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";false]" end if data.hide_modpackcontents then - retval = retval .. "checkbox[2,5.75;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";true]" + retval = retval .. "checkbox[6,6;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";true]" else - retval = retval .. "checkbox[2,5.75;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";false]" + retval = retval .. "checkbox[6,6;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";false]" end if mod == nil then @@ -46,13 +46,13 @@ local function get_formspec(data) end retval = retval .. - "label[0,0.45;" .. fgettext("Mod:") .. "]" .. - "label[0.75,0.45;" .. mod.name .. "]" .. - "label[0,1;" .. fgettext("Depends:") .. "]" .. - "textlist[0,1.5;5,4.25;world_config_depends;" .. + "label[0,0.7;" .. fgettext("Mod:") .. "]" .. + "label[0.75,0.7;" .. mod.name .. "]" .. + "label[0,1.25;" .. fgettext("Depends:") .. "]" .. + "textlist[0,1.75;5,4.25;world_config_depends;" .. modmgr.get_dependencies(mod.path) .. ";0]" .. - "button[9.25,6.35;2,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" .. - "button[7.4,6.35;2,0.5;btn_config_world_cancel;" .. fgettext("Cancel") .. "]" + "button[3.25,7;2.5,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" .. + "button[5.75,7;2.5,0.5;btn_config_world_cancel;" .. fgettext("Cancel") .. "]" if mod ~= nil and mod.name ~= "" and mod.typ ~= "game_mod" then if mod.is_modpack then @@ -68,22 +68,22 @@ local function get_formspec(data) end if all_enabled == false then - retval = retval .. "button[5.5,-0.125;2,0.5;btn_mp_enable;" .. fgettext("Enable MP") .. "]" + retval = retval .. "button[5.5,0.125;2.5,0.5;btn_mp_enable;" .. fgettext("Enable MP") .. "]" else - retval = retval .. "button[5.5,-0.125;2,0.5;btn_mp_disable;" .. fgettext("Disable MP") .. "]" + retval = retval .. "button[5.5,0.125;2.5,0.5;btn_mp_disable;" .. fgettext("Disable MP") .. "]" end else if mod.enabled then - retval = retval .. "checkbox[5.5,-0.375;cb_mod_enable;" .. fgettext("enabled") .. ";true]" + retval = retval .. "checkbox[5.5,-0.125;cb_mod_enable;" .. fgettext("enabled") .. ";true]" else - retval = retval .. "checkbox[5.5,-0.375;cb_mod_enable;" .. fgettext("enabled") .. ";false]" + retval = retval .. "checkbox[5.5,-0.125;cb_mod_enable;" .. fgettext("enabled") .. ";false]" end end end retval = retval .. - "button[8.5,-0.125;2.5,0.5;btn_all_mods;" .. fgettext("Enable all") .. "]" .. - "textlist[5.5,0.5;5.5,5.75;world_config_modlist;" + "button[8.75,0.125;2.5,0.5;btn_all_mods;" .. fgettext("Enable all") .. "]" .. + "textlist[5.5,0.75;5.75,5.25;world_config_modlist;" retval = retval .. modmgr.render_modlist(data.list) retval = retval .. ";" .. data.selected_mod .."]" diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua index b42d119e..477b8bcb 100644 --- a/builtin/mainmenu/dlg_create_world.lua +++ b/builtin/mainmenu/dlg_create_world.lua @@ -46,7 +46,7 @@ local function create_world_formspec(dialogdata) current_seed = core.formspec_escape(current_seed) local retval = - "size[12,6,true]" .. + "size[11.5,6.5,true]" .. "label[2,0;" .. fgettext("World name") .. "]".. "field[4.5,0.4;6,0.5;te_world_name;;]" .. @@ -60,8 +60,8 @@ local function create_world_formspec(dialogdata) "textlist[4.2,3;5.8,2.3;games;" .. gamemgr.gamelist() .. ";" .. gameidx .. ";true]" .. - "button[5,5.5;2.6,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. - "button[7.5,5.5;2.8,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" + "button[3.25,6;2.5,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. + "button[5.75,6;2.5,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" if #gamemgr.games == 0 then retval = retval .. "box[2,4;8,1;#ff8800]label[2.25,4;" .. diff --git a/builtin/mainmenu/dlg_delete_mod.lua b/builtin/mainmenu/dlg_delete_mod.lua index 6e00b804..2efd7041 100644 --- a/builtin/mainmenu/dlg_delete_mod.lua +++ b/builtin/mainmenu/dlg_delete_mod.lua @@ -22,10 +22,11 @@ local function delete_mod_formspec(dialogdata) dialogdata.mod = modmgr.global_mods:get_list()[dialogdata.selected] local retval = - "size[12.4,5,true]" .. - "field[1.75,1;10,3;;" .. fgettext("Are you sure you want to delete \"$1\"?", dialogdata.mod.name) .. ";]".. - "button[4,4.2;1,0.5;dlg_delete_mod_confirm;" .. fgettext("Yes") .. "]" .. - "button[6.5,4.2;3,0.5;dlg_delete_mod_cancel;" .. fgettext("No of course not!") .. "]" + "size[11.5,4.5,true]" .. + "label[2,2;" .. + fgettext("Are you sure you want to delete \"$1\"?", dialogdata.mod.name) .. "]".. + "button[3.25,3.5;2.5,0.5;dlg_delete_mod_confirm;" .. fgettext("Delete") .. "]" .. + "button[5.75,3.5;2.5,0.5;dlg_delete_mod_cancel;" .. fgettext("Cancel") .. "]" return retval end diff --git a/builtin/mainmenu/dlg_delete_world.lua b/builtin/mainmenu/dlg_delete_world.lua index aa710ef3..1e5af1fe 100644 --- a/builtin/mainmenu/dlg_delete_world.lua +++ b/builtin/mainmenu/dlg_delete_world.lua @@ -19,11 +19,11 @@ local function delete_world_formspec(dialogdata) local retval = - "size[12,6,true]" .. + "size[11.5,4.5,true]" .. "label[2,2;" .. - fgettext("Delete World \"$1\"?", dialogdata.delete_name) .. "]".. - "button[3.5,4.2;2.6,0.5;world_delete_confirm;" .. fgettext("Yes").. "]" .. - "button[6,4.2;2.8,0.5;world_delete_cancel;" .. fgettext("No") .. "]" + fgettext("Delete World \"$1\"?", dialogdata.delete_name) .. "]" .. + "button[3.25,3.5;2.5,0.5;world_delete_confirm;" .. fgettext("Delete") .. "]" .. + "button[5.75,3.5;2.5,0.5;world_delete_cancel;" .. fgettext("Cancel") .. "]" return retval end diff --git a/builtin/mainmenu/dlg_rename_modpack.lua b/builtin/mainmenu/dlg_rename_modpack.lua index 9e252408..959c65d9 100644 --- a/builtin/mainmenu/dlg_rename_modpack.lua +++ b/builtin/mainmenu/dlg_rename_modpack.lua @@ -22,14 +22,12 @@ local function rename_modpack_formspec(dialogdata) dialogdata.mod = modmgr.global_mods:get_list()[dialogdata.selected] local retval = - "size[12.4,5,true]" .. - "label[1.75,1;".. fgettext("Rename Modpack:") .. "]".. - "field[4.5,1.4;6,0.5;te_modpack_name;;" .. - dialogdata.mod.name .. - "]" .. - "button[5,4.2;2.6,0.5;dlg_rename_modpack_confirm;".. + "size[11.5,4.5,true]" .. + "field[2.5,2;7,0.5;te_modpack_name;".. fgettext("Rename Modpack:") .. ";" .. + dialogdata.mod.name .. "]" .. + "button[3.25,3.5;2.5,0.5;dlg_rename_modpack_confirm;".. fgettext("Accept") .. "]" .. - "button[7.5,4.2;2.8,0.5;dlg_rename_modpack_cancel;".. + "button[5.75,3.5;2.5,0.5;dlg_rename_modpack_cancel;".. fgettext("Cancel") .. "]" return retval diff --git a/builtin/mainmenu/dlg_settings_advanced.lua b/builtin/mainmenu/dlg_settings_advanced.lua new file mode 100644 index 00000000..f5e80c25 --- /dev/null +++ b/builtin/mainmenu/dlg_settings_advanced.lua @@ -0,0 +1,760 @@ +--Minetest +--Copyright (C) 2015 PilzAdam +-- +--This program is free software; you can redistribute it and/or modify +--it under the terms of the GNU Lesser General Public License as published by +--the Free Software Foundation; either version 2.1 of the License, or +--(at your option) any later version. +-- +--This program is distributed in the hope that it will be useful, +--but WITHOUT ANY WARRANTY; without even the implied warranty of +--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +--GNU Lesser General Public License for more details. +-- +--You should have received a copy of the GNU Lesser General Public License along +--with this program; if not, write to the Free Software Foundation, Inc., +--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +local FILENAME = "settingtypes.txt" + +local CHAR_CLASSES = { + SPACE = "[%s]", + VARIABLE = "[%w_%-%.]", + INTEGER = "[+-]?[%d]", + FLOAT = "[+-]?[%d%.]", + FLAGS = "[%w_%-%.,]", +} + +-- returns error message, or nil +local function parse_setting_line(settings, line, read_all, base_level, allow_secure) + -- comment + local comment = line:match("^#" .. CHAR_CLASSES.SPACE .. "*(.*)$") + if comment then + if settings.current_comment == "" then + settings.current_comment = comment + else + settings.current_comment = settings.current_comment .. "\n" .. comment + end + return + end + + -- clear current_comment so only comments directly above a setting are bound to it + -- but keep a local reference to it for variables in the current line + local current_comment = settings.current_comment + settings.current_comment = "" + + -- empty lines + if line:match("^" .. CHAR_CLASSES.SPACE .. "*$") then + return + end + + -- category + local stars, category = line:match("^%[([%*]*)([^%]]+)%]$") + if category then + table.insert(settings, { + name = category, + level = stars:len() + base_level, + type = "category", + }) + return + end + + -- settings + local first_part, name, readable_name, setting_type = line:match("^" + -- this first capture group matches the whole first part, + -- so we can later strip it from the rest of the line + .. "(" + .. "([" .. CHAR_CLASSES.VARIABLE .. "+)" -- variable name + .. CHAR_CLASSES.SPACE .. "*" + .. "%(([^%)]*)%)" -- readable name + .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.VARIABLE .. "+)" -- type + .. CHAR_CLASSES.SPACE .. "*" + .. ")") + + if not first_part then + return "Invalid line" + end + + if name:match("secure%.[.]*") and not allow_secure then + return "Tried to add \"secure.\" setting" + end + + if readable_name == "" then + readable_name = nil + end + local remaining_line = line:sub(first_part:len() + 1) + + if setting_type == "int" then + local default, min, max = remaining_line:match("^" + -- first int is required, the last 2 are optional + .. "(" .. CHAR_CLASSES.INTEGER .. "+)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.INTEGER .. "*)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.INTEGER .. "*)" + .. "$") + + if not default or not tonumber(default) then + return "Invalid integer setting" + end + + min = tonumber(min) + max = tonumber(max) + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "int", + default = default, + min = min, + max = max, + comment = current_comment, + }) + return + end + + if setting_type == "string" or setting_type == "noise_params" + or setting_type == "key" or setting_type == "v3f" then + local default = remaining_line:match("^(.*)$") + + if not default then + return "Invalid string setting" + end + if setting_type == "key" and not read_all then + -- ignore key type if read_all is false + return + end + + table.insert(settings, { + name = name, + readable_name = readable_name, + type = setting_type, + default = default, + comment = current_comment, + }) + return + end + + if setting_type == "bool" then + if remaining_line ~= "false" and remaining_line ~= "true" then + return "Invalid boolean setting" + end + + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "bool", + default = remaining_line, + comment = current_comment, + }) + return + end + + if setting_type == "float" then + local default, min, max = remaining_line:match("^" + -- first float is required, the last 2 are optional + .. "(" .. CHAR_CLASSES.FLOAT .. "+)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.FLOAT .. "*)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.FLOAT .. "*)" + .."$") + + if not default or not tonumber(default) then + return "Invalid float setting" + end + + min = tonumber(min) + max = tonumber(max) + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "float", + default = default, + min = min, + max = max, + comment = current_comment, + }) + return + end + + if setting_type == "enum" then + local default, values = remaining_line:match("^" + -- first value (default) may be empty (i.e. is optional) + .. "(" .. CHAR_CLASSES.VARIABLE .. "*)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.FLAGS .. "+)" + .. "$") + + if not default or values == "" then + return "Invalid enum setting" + end + + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "enum", + default = default, + values = values:split(",", true), + comment = current_comment, + }) + return + end + + if setting_type == "path" then + local default = remaining_line:match("^(.*)$") + + if not default then + return "Invalid path setting" + end + + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "path", + default = default, + comment = current_comment, + }) + return + end + + if setting_type == "flags" then + local default, possible = remaining_line:match("^" + -- first value (default) may be empty (i.e. is optional) + -- this is implemented by making the last value optional, and + -- swapping them around if it turns out empty. + .. "(" .. CHAR_CLASSES.FLAGS .. "+)" .. CHAR_CLASSES.SPACE .. "*" + .. "(" .. CHAR_CLASSES.FLAGS .. "*)" + .. "$") + + if not default or not possible then + return "Invalid flags setting" + end + + if possible == "" then + possible = default + default = "" + end + + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "flags", + default = default, + possible = possible, + comment = current_comment, + }) + return + end + + return "Invalid setting type \"" .. setting_type .. "\"" +end + +local function parse_single_file(file, filepath, read_all, result, base_level, allow_secure) + -- store this helper variable in the table so it's easier to pass to parse_setting_line() + result.current_comment = "" + + local line = file:read("*line") + while line do + local error_msg = parse_setting_line(result, line, read_all, base_level, allow_secure) + if error_msg then + core.log("error", error_msg .. " in " .. filepath .. " \"" .. line .. "\"") + end + line = file:read("*line") + end + + result.current_comment = nil +end + +-- read_all: whether to ignore certain setting types for GUI or not +-- parse_mods: whether to parse settingtypes.txt in mods and games +local function parse_config_file(read_all, parse_mods) + local builtin_path = core.get_builtin_path() .. DIR_DELIM .. FILENAME + local file = io.open(builtin_path, "r") + local settings = {} + if not file then + core.log("error", "Can't load " .. FILENAME) + return settings + end + + parse_single_file(file, builtin_path, read_all, settings, 0, true) + + file:close() + + if parse_mods then + -- Parse games + local games_category_initialized = false + local index = 1 + local game = gamemgr.get_game(index) + while game do + local path = game.path .. DIR_DELIM .. FILENAME + local file = io.open(path, "r") + if file then + if not games_category_initialized then + local translation = fgettext_ne("Games"), -- not used, but needed for xgettext + table.insert(settings, { + name = "Games", + level = 0, + type = "category", + }) + games_category_initialized = true + end + + table.insert(settings, { + name = game.name, + level = 1, + type = "category", + }) + + parse_single_file(file, path, read_all, settings, 2, false) + + file:close() + end + + index = index + 1 + game = gamemgr.get_game(index) + end + + -- Parse mods + local mods_category_initialized = false + local mods = {} + get_mods(core.get_modpath(), mods) + for _, mod in ipairs(mods) do + local path = mod.path .. DIR_DELIM .. FILENAME + local file = io.open(path, "r") + if file then + if not mods_category_initialized then + local translation = fgettext_ne("Mods"), -- not used, but needed for xgettext + table.insert(settings, { + name = "Mods", + level = 0, + type = "category", + }) + mods_category_initialized = true + end + + table.insert(settings, { + name = mod.name, + level = 1, + type = "category", + }) + + parse_single_file(file, path, read_all, settings, 2, false) + + file:close() + end + end + end + + return settings +end + +local settings = parse_config_file(false, true) +local selected_setting = 1 + +local function get_current_value(setting) + local value = core.setting_get(setting.name) + if value == nil then + value = setting.default + end + return value +end + +local function create_change_setting_formspec(dialogdata) + local setting = settings[selected_setting] + local formspec = "size[10,5.2,true]" .. + "button[5,4.5;2,1;btn_done;" .. fgettext("Save") .. "]" .. + "button[3,4.5;2,1;btn_cancel;" .. fgettext("Cancel") .. "]" .. + "tablecolumns[color;text]" .. + "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. + "table[0,0;10,3;info;" + + if setting.readable_name then + formspec = formspec .. "#FFFF00," .. fgettext(setting.readable_name) + .. " (" .. core.formspec_escape(setting.name) .. ")," + else + formspec = formspec .. "#FFFF00," .. core.formspec_escape(setting.name) .. "," + end + + formspec = formspec .. ",," + + local comment_text = "" + + if setting.comment == "" then + comment_text = fgettext_ne("(No description of setting given)") + else + comment_text = fgettext_ne(setting.comment) + end + for _, comment_line in ipairs(comment_text:split("\n", true)) do + formspec = formspec .. "," .. core.formspec_escape(comment_line) .. "," + end + + if setting.type == "flags" then + formspec = formspec .. ",," + .. "," .. fgettext("Please enter a comma seperated list of flags.") .. "," + .. "," .. fgettext("Possible values are: ") + .. core.formspec_escape(setting.possible:gsub(",", ", ")) .. "," + elseif setting.type == "noise_params" then + formspec = formspec .. ",," + .. "," .. fgettext("Format: , , (, , ), , , ") .. "," + .. "," .. fgettext("Optionally the lacunarity can be appended with a leading comma.") .. "," + elseif setting.type == "v3f" then + formspec = formspec .. ",," + .. "," .. fgettext_ne("Format is 3 numbers separated by commas and inside brackets.") .. "," + end + + formspec = formspec:sub(1, -2) -- remove trailing comma + + formspec = formspec .. ";1]" + + if setting.type == "bool" then + local selected_index + if core.is_yes(get_current_value(setting)) then + selected_index = 2 + else + selected_index = 1 + end + formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" + .. fgettext("Disabled") .. "," .. fgettext("Enabled") .. ";" + .. selected_index .. "]" + + elseif setting.type == "enum" then + local selected_index = 0 + formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" + for index, value in ipairs(setting.values) do + -- translating value is not possible, since it's the value + -- that we set the setting to + formspec = formspec .. core.formspec_escape(value) .. "," + if get_current_value(setting) == value then + selected_index = index + end + end + if #setting.values > 0 then + formspec = formspec:sub(1, -2) -- remove trailing comma + end + formspec = formspec .. ";" .. selected_index .. "]" + + elseif setting.type == "path" then + local current_value = dialogdata.selected_path + if not current_value then + current_value = get_current_value(setting) + end + formspec = formspec .. "field[0.5,4;7.5,1;te_setting_value;;" + .. core.formspec_escape(current_value) .. "]" + .. "button[8,3.75;2,1;btn_browser_path;" .. fgettext("Browse") .. "]" + + else + -- TODO: fancy input for float, int, flags, noise_params, v3f + local width = 10 + local text = get_current_value(setting) + if dialogdata.error_message then + formspec = formspec .. "tablecolumns[color;text]" .. + "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. + "table[5,3.9;5,0.6;error_message;#FF0000," + .. core.formspec_escape(dialogdata.error_message) .. ";0]" + width = 5 + if dialogdata.entered_text then + text = dialogdata.entered_text + end + end + formspec = formspec .. "field[0.5,4;" .. width .. ",1;te_setting_value;;" + .. core.formspec_escape(text) .. "]" + end + return formspec +end + +local function handle_change_setting_buttons(this, fields) + if fields["btn_done"] or fields["key_enter"] then + local setting = settings[selected_setting] + if setting.type == "bool" then + local new_value = fields["dd_setting_value"] + -- Note: new_value is the actual (translated) value shown in the dropdown + core.setting_setbool(setting.name, new_value == fgettext("Enabled")) + + elseif setting.type == "enum" then + local new_value = fields["dd_setting_value"] + core.setting_set(setting.name, new_value) + + elseif setting.type == "int" then + local new_value = tonumber(fields["te_setting_value"]) + if not new_value or math.floor(new_value) ~= new_value then + this.data.error_message = fgettext_ne("Please enter a valid integer.") + this.data.entered_text = fields["te_setting_value"] + core.update_formspec(this:get_formspec()) + return true + end + if setting.min and new_value < setting.min then + this.data.error_message = fgettext_ne("The value must be greater than $1.", setting.min) + this.data.entered_text = fields["te_setting_value"] + core.update_formspec(this:get_formspec()) + return true + end + if setting.max and new_value > setting.max then + this.data.error_message = fgettext_ne("The value must be lower than $1.", setting.max) + this.data.entered_text = fields["te_setting_value"] + core.update_formspec(this:get_formspec()) + return true + end + core.setting_set(setting.name, new_value) + + elseif setting.type == "float" then + local new_value = tonumber(fields["te_setting_value"]) + if not new_value then + this.data.error_message = fgettext_ne("Please enter a valid number.") + this.data.entered_text = fields["te_setting_value"] + core.update_formspec(this:get_formspec()) + return true + end + core.setting_set(setting.name, new_value) + + elseif setting.type == "flags" then + local new_value = fields["te_setting_value"] + for _,value in ipairs(new_value:split(",", true)) do + value = value:trim() + local possible = "," .. setting.possible .. "," + if not possible:find("," .. value .. ",", 0, true) then + this.data.error_message = fgettext_ne("\"$1\" is not a valid flag.", value) + this.data.entered_text = fields["te_setting_value"] + core.update_formspec(this:get_formspec()) + return true + end + end + core.setting_set(setting.name, new_value) + + else + local new_value = fields["te_setting_value"] + core.setting_set(setting.name, new_value) + end + core.setting_save() + this:delete() + return true + end + + if fields["btn_cancel"] then + this:delete() + return true + end + + if fields["btn_browser_path"] then + core.show_file_open_dialog("dlg_browse_path", fgettext_ne("Select path")) + end + + if fields["dlg_browse_path_accepted"] then + this.data.selected_path = fields["dlg_browse_path_accepted"] + core.update_formspec(this:get_formspec()) + end + + return false +end + +local function create_settings_formspec(tabview, name, tabdata) + local formspec = "size[12,6.5;true]" .. + "tablecolumns[color;tree;text;text]" .. + "tableoptions[background=#00000000;border=false]" .. + "table[0,0;12,5.5;list_settings;" + + local current_level = 0 + for _, entry in ipairs(settings) do + local name + if not core.setting_getbool("main_menu_technical_settings") and entry.readable_name then + name = fgettext_ne(entry.readable_name) + else + name = entry.name + end + + if entry.type == "category" then + current_level = entry.level + formspec = formspec .. "#FFFF00," .. current_level .. "," .. fgettext(name) .. ",," + + elseif entry.type == "bool" then + local value = get_current_value(entry) + if core.is_yes(value) then + value = fgettext("Enabled") + else + value = fgettext("Disabled") + end + formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," + .. value .. "," + + elseif entry.type == "key" then + -- ignore key settings, since we have a special dialog for them + + else + formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," + .. core.formspec_escape(get_current_value(entry)) .. "," + end + end + + if #settings > 0 then + formspec = formspec:sub(1, -2) -- remove trailing comma + end + formspec = formspec .. ";" .. selected_setting .. "]" .. + "button[0,6;4,1;btn_back;".. fgettext("< Back to Settings page") .. "]" .. + "button[10,6;2,1;btn_edit;" .. fgettext("Edit") .. "]" .. + "button[7,6;3,1;btn_restore;" .. fgettext("Restore Default") .. "]" .. + "checkbox[0,5.3;cb_tech_settings;" .. fgettext("Show technical names") .. ";" + .. dump(core.setting_getbool("main_menu_technical_settings")) .. "]" + + return formspec +end + +local function handle_settings_buttons(this, fields, tabname, tabdata) + local list_enter = false + if fields["list_settings"] then + selected_setting = core.get_table_index("list_settings") + if core.explode_table_event(fields["list_settings"]).type == "DCL" then + -- Directly toggle booleans + local setting = settings[selected_setting] + if setting.type == "bool" then + local current_value = get_current_value(setting) + core.setting_setbool(setting.name, not core.is_yes(current_value)) + core.setting_save() + return true + else + list_enter = true + end + else + return true + end + end + + if fields["btn_edit"] or list_enter then + local setting = settings[selected_setting] + if setting.type ~= "category" then + local edit_dialog = dialog_create("change_setting", create_change_setting_formspec, + handle_change_setting_buttons) + edit_dialog:set_parent(this) + this:hide() + edit_dialog:show() + end + return true + end + + if fields["btn_restore"] then + local setting = settings[selected_setting] + if setting.type ~= "category" then + core.setting_set(setting.name, setting.default) + core.setting_save() + core.update_formspec(this:get_formspec()) + end + return true + end + + if fields["btn_back"] then + this:delete() + return true + end + + if fields["cb_tech_settings"] then + core.setting_set("main_menu_technical_settings", fields["cb_tech_settings"]) + core.setting_save() + core.update_formspec(this:get_formspec()) + return true + end + + return false +end + +function create_adv_settings_dlg() + local dlg = dialog_create("settings_advanced", + create_settings_formspec, + handle_settings_buttons, + nil) + + return dlg +end + +local function create_minetest_conf_example() + local result = "# This file contains a list of all available settings and their default value for minetest.conf\n" .. + "\n" .. + "# By default, all the settings are commented and not functional.\n" .. + "# Uncomment settings by removing the preceding #.\n" .. + "\n" .. + "# minetest.conf is read by default from:\n" .. + "# ../minetest.conf\n" .. + "# ../../minetest.conf\n" .. + "# Any other path can be chosen by passing the path as a parameter\n" .. + "# to the program, eg. \"minetest.exe --config ../minetest.conf.example\".\n" .. + "\n" .. + "# Further documentation:\n" .. + "# http://wiki.minetest.net/\n" .. + "\n" + + local settings = parse_config_file(true, false) + for _, entry in ipairs(settings) do + if entry.type == "category" then + if entry.level == 0 then + result = result .. "#\n# " .. entry.name .. "\n#\n\n" + else + for i = 1, entry.level do + result = result .. "#" + end + result = result .. "# " .. entry.name .. "\n\n" + end + else + if entry.comment ~= "" then + for _, comment_line in ipairs(entry.comment:split("\n", true)) do + result = result .."# " .. comment_line .. "\n" + end + end + result = result .. "# type: " .. entry.type + if entry.min then + result = result .. " min: " .. entry.min + end + if entry.max then + result = result .. " max: " .. entry.max + end + if entry.values then + result = result .. " values: " .. table.concat(entry.values, ", ") + end + if entry.possible then + result = result .. " possible values: " .. entry.possible:gsub(",", ", ") + end + result = result .. "\n" + local append = "" + if entry.default ~= "" then + append = " " .. entry.default + end + result = result .. "# " .. entry.name .. " =" .. append .. "\n\n" + end + end + return result +end + +local function create_translation_file() + local result = "// This file is automatically generated\n" .. + "// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files\n" .. + "// To update it, refer to the bottom of builtin/mainmenu/tab_settings.lua\n\n" .. + "fake_function() {\n" + + local settings = parse_config_file(true, false) + for _, entry in ipairs(settings) do + if entry.type == "category" then + local name_escaped = entry.name:gsub("\"", "\\\"") + result = result .. "\tgettext(\"" .. name_escaped .. "\");\n" + else + if entry.readable_name then + local readable_name_escaped = entry.readable_name:gsub("\"", "\\\"") + result = result .. "\tgettext(\"" .. readable_name_escaped .. "\");\n" + end + if entry.comment ~= "" then + local comment_escaped = entry.comment:gsub("\n", "\\n") + comment_escaped = comment_escaped:gsub("\"", "\\\"") + result = result .. "\tgettext(\"" .. comment_escaped .. "\");\n" + end + end + end + result = result .. "}\n" + return result +end + +if false then + local file = io.open("minetest.conf.example", "w") + if file then + file:write(create_minetest_conf_example()) + file:close() + end +end + +if false then + local file = io.open("src/settings_translation_file.cpp", "w") + if file then + file:write(create_translation_file()) + file:close() + end +end diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua index 176796be..7f0c1e38 100644 --- a/builtin/mainmenu/init.lua +++ b/builtin/mainmenu/init.lua @@ -37,22 +37,29 @@ dofile(menupath .. DIR_DELIM .. "common.lua") dofile(menupath .. DIR_DELIM .. "gamemgr.lua") dofile(menupath .. DIR_DELIM .. "modmgr.lua") dofile(menupath .. DIR_DELIM .. "store.lua") +dofile(menupath .. DIR_DELIM .. "textures.lua") + dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua") -dofile(menupath .. DIR_DELIM .. "tab_credits.lua") -dofile(menupath .. DIR_DELIM .. "tab_mods.lua") -dofile(menupath .. DIR_DELIM .. "tab_settings.lua") +dofile(menupath .. DIR_DELIM .. "dlg_settings_advanced.lua") if PLATFORM ~= "Android" then dofile(menupath .. DIR_DELIM .. "dlg_create_world.lua") dofile(menupath .. DIR_DELIM .. "dlg_delete_mod.lua") dofile(menupath .. DIR_DELIM .. "dlg_delete_world.lua") dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua") - dofile(menupath .. DIR_DELIM .. "tab_multiplayer.lua") - dofile(menupath .. DIR_DELIM .. "tab_server.lua") - dofile(menupath .. DIR_DELIM .. "tab_singleplayer.lua") - dofile(menupath .. DIR_DELIM .. "tab_texturepacks.lua") - dofile(menupath .. DIR_DELIM .. "textures.lua") +end + +local tabs = {} + +tabs.settings = dofile(menupath .. DIR_DELIM .. "tab_settings.lua") +tabs.mods = dofile(menupath .. DIR_DELIM .. "tab_mods.lua") +tabs.credits = dofile(menupath .. DIR_DELIM .. "tab_credits.lua") +if PLATFORM == "Android" then + tabs.simple_main = dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua") else - dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua") + tabs.singleplayer = dofile(menupath .. DIR_DELIM .. "tab_singleplayer.lua") + tabs.multiplayer = dofile(menupath .. DIR_DELIM .. "tab_multiplayer.lua") + tabs.server = dofile(menupath .. DIR_DELIM .. "tab_server.lua") + tabs.texturepacks = dofile(menupath .. DIR_DELIM .. "tab_texturepacks.lua") end -------------------------------------------------------------------------------- @@ -68,8 +75,34 @@ local function init_globals() -- Init gamedata gamedata.worldindex = 0 + if PLATFORM == "Android" then + local world_list = core.get_worlds() + local world_index - if PLATFORM ~= "Android" then + local found_singleplayerworld = false + for i, world in ipairs(world_list) do + if world.name == "singleplayerworld" then + found_singleplayerworld = true + world_index = i + break + end + end + + if not found_singleplayerworld then + core.create_world("singleplayerworld", 1) + + world_list = core.get_worlds() + + for i, world in ipairs(world_list) do + if world.name == "singleplayerworld" then + world_index = i + break + end + end + end + + gamedata.worldindex = world_index + else menudata.worldlist = filterlist.create( core.get_worlds, compare_worlds, @@ -88,61 +121,34 @@ local function init_globals() if not core.setting_get("menu_last_game") then local default_game = core.setting_get("default_game") or "minetest" - core.setting_set("menu_last_game", default_game ) + core.setting_set("menu_last_game", default_game) end mm_texture.init() - else - local world_list = core.get_worlds() - - local found_singleplayerworld = false - - for i,world in pairs(world_list) do - if world.name == "singleplayerworld" then - found_singleplayerworld = true - gamedata.worldindex = i - break - end - end - - if not found_singleplayerworld then - core.create_world("singleplayerworld", 1) - - local world_list = core.get_worlds() - - for i,world in pairs(world_list) do - if world.name == "singleplayerworld" then - gamedata.worldindex = i - break - end - end - end end -- Create main tabview - local tv_main = tabview_create("maintab",{x=12,y=5.2},{x=0,y=0}) - if PLATFORM ~= "Android" then - tv_main:set_autosave_tab(true) - end - if PLATFORM ~= "Android" then - tv_main:add(tab_singleplayer) - tv_main:add(tab_multiplayer) - tv_main:add(tab_server) + local tv_main = tabview_create("maintab", {x = 12, y = 5.2}, {x = 0, y = 0}) + + if PLATFORM == "Android" then + tv_main:add(tabs.simple_main) + tv_main:add(tabs.settings) else - tv_main:add(tab_simple_main) + tv_main:set_autosave_tab(true) + tv_main:add(tabs.singleplayer) + tv_main:add(tabs.multiplayer) + tv_main:add(tabs.server) + tv_main:add(tabs.settings) + tv_main:add(tabs.texturepacks) end - tv_main:add(tab_settings) - if PLATFORM ~= "Android" then - tv_main:add(tab_texturepacks) - end - tv_main:add(tab_mods) - tv_main:add(tab_credits) + + tv_main:add(tabs.mods) + tv_main:add(tabs.credits) tv_main:set_global_event_handler(main_event_handler) - tv_main:set_fixed_size(false) - if not (PLATFORM == "Android") then + if PLATFORM ~= "Android" then tv_main:set_tab(core.setting_get("maintab_LAST")) end ui.set_default("maintab") @@ -150,9 +156,9 @@ local function init_globals() -- Create modstore ui if PLATFORM == "Android" then - modstore.init({x=12, y=6}, 3, 2) + modstore.init({x = 12, y = 6}, 3, 2) else - modstore.init({x=12, y=8}, 4, 3) + modstore.init({x = 12, y = 8}, 4, 3) end ui.update() diff --git a/builtin/mainmenu/init_simple.lua b/builtin/mainmenu/init_simple.lua index c3891d21..298bd834 100644 --- a/builtin/mainmenu/init_simple.lua +++ b/builtin/mainmenu/init_simple.lua @@ -1,4 +1,4 @@ -- helper file to be able to debug the simple menu on PC -- without messing around with actual menu code! -PLATFORM="Android" +PLATFORM = "Android" dofile("builtin/mainmenu/init.lua") diff --git a/builtin/mainmenu/modmgr.lua b/builtin/mainmenu/modmgr.lua index 89292ed5..f996df7b 100644 --- a/builtin/mainmenu/modmgr.lua +++ b/builtin/mainmenu/modmgr.lua @@ -19,29 +19,29 @@ function get_mods(path,retval,modpack) local mods = core.get_dir_list(path, true) - for i=1, #mods, 1 do - if mods[i]:sub(1,1) ~= "." then + for _, name in ipairs(mods) do + if name:sub(1, 1) ~= "." then + local prefix = path .. DIR_DELIM .. name .. DIR_DELIM local toadd = {} - local modpackfile = nil + retval[#retval + 1] = toadd - toadd.name = mods[i] - toadd.path = path .. DIR_DELIM .. mods[i] .. DIR_DELIM - if modpack ~= nil and - modpack ~= "" then - toadd.modpack = modpack - else - local filename = path .. DIR_DELIM .. mods[i] .. DIR_DELIM .. "modpack.txt" - local error = nil - modpackfile,error = io.open(filename,"r") + local mod_conf = Settings(prefix .. "mod.conf"):to_table() + if mod_conf.name then + name = mod_conf.name end - if modpackfile ~= nil then - modpackfile:close() - toadd.is_modpack = true - table.insert(retval,toadd) - get_mods(path .. DIR_DELIM .. mods[i],retval,mods[i]) + toadd.name = name + toadd.path = prefix + + if modpack ~= nil and modpack ~= "" then + toadd.modpack = modpack else - table.insert(retval,toadd) + local modpackfile = io.open(prefix .. "modpack.txt") + if modpackfile then + modpackfile:close() + toadd.is_modpack = true + get_mods(prefix, retval, name) + end end end end @@ -412,7 +412,7 @@ function modmgr.preparemodlist(data) for i=1,#global_mods,1 do global_mods[i].typ = "global_mod" - table.insert(retval,global_mods[i]) + retval[#retval + 1] = global_mods[i] end --read game mods @@ -421,7 +421,7 @@ function modmgr.preparemodlist(data) for i=1,#game_mods,1 do game_mods[i].typ = "game_mod" - table.insert(retval,game_mods[i]) + retval[#retval + 1] = game_mods[i] end if data.worldpath == nil then diff --git a/builtin/mainmenu/tab_credits.lua b/builtin/mainmenu/tab_credits.lua index 6b135b2c..4d2ffd7f 100644 --- a/builtin/mainmenu/tab_credits.lua +++ b/builtin/mainmenu/tab_credits.lua @@ -17,64 +17,84 @@ -------------------------------------------------------------------------------- -tab_credits = { +local core_developers = { + "Perttu Ahola (celeron55) ", + "Ryan Kwolek (kwolekr) ", + "PilzAdam ", + "sfan5 ", + "kahrl ", + "sapier", + "ShadowNinja ", + "Nathanaël Courant (Nore/Ekdohibs) ", + "Loic Blot (nerzhul/nrz) ", + "Matt Gregory (paramat)", + "est31 ", + "Craig Robbins (Zeno)", +} + +local active_contributors = { + "Auke Kok (sofar) ", + "Duane Robertson ", + "SmallJoker ", + "Andrew Ward (rubenwardy) ", + "Jeija ", + "Gregory Currie (gregorycu)", + "Sokomine ", + "TeTpaAka", + "Jean-Patrick G (kilbith) ", + "Diego Martínez (kaeza) ", +} + +local previous_core_developers = { + "BlockMen", + "Maciej Kasatkin (RealBadAngel) ", + "Lisa Milne (darkrose) ", + "proller", + "Ilya Zhuravlev (xyz) ", +} + +local previous_contributors = { + "Vanessa Ezekowitz (VanessaE) ", + "Jurgen Doser (doserj) ", + "MirceaKitsune ", + "dannydark ", + "0gb.us <0gb.us@0gb.us>", + "Guiseppe Bilotta (Oblomov) ", + "Jonathan Neuschafer ", + "Nils Dagsson Moskopp (erlehmann) ", + "Břetislav Štec (t0suj4/TBC_x)", + "Aaron Suen ", + "Constantin Wenger (SpeedProg) ", + "matttpt ", + "JacobF ", + "TriBlade9 ", + "Zefram ", +} + +return { name = "credits", caption = fgettext("Credits"), - cbf_formspec = function (tabview, name, tabdata) - local logofile = defaulttexturedir .. "logo.png" - return "label[0.5,3.2;Minetest " .. core.get_version() .. "]" .. - "label[0.5,3.5;http://minetest.net]" .. - "image[0.5,1;" .. core.formspec_escape(logofile) .. "]" .. - "tablecolumns[color;text]" .. - "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. - "table[3.5,-0.25;8.5,5.8;list_credits;" .. - "#FFFF00," .. fgettext("Core Developers") .."," .. - ",Perttu Ahola (celeron55) ,".. - ",Ryan Kwolek (kwolekr) ,".. - ",PilzAdam ," .. - ",sfan5 ,".. - ",kahrl ,".. - ",sapier,".. - ",ShadowNinja ,".. - ",Nathanael Courant (Nore/Ekdohibs) ,".. - ",BlockMen,".. - ",Craig Robbins (Zeno),".. - ",Loic Blot (nerzhul/nrz) ,".. - ",Mat Gregory (paramat),".. - ",est31 ," .. - ",,".. - "#FFFF00," .. fgettext("Active Contributors") .. "," .. - ",SmallJoker ," .. - ",Andrew Ward (rubenwardy) ," .. - ",Aaron Suen ," .. - ",Sokomine ," .. - ",Břetislav Štec (t0suj4/TBC_x)," .. - ",TeTpaAka," .. - ",Jean-Patrick G (kilbith) ," .. - ",Diego Martinez (kaeza) ," .. - ",," .. - "#FFFF00," .. fgettext("Previous Core Developers") .."," .. - ",Maciej Kasatkin (RealBadAngel) ,".. - ",Lisa Milne (darkrose) ," .. - ",proller," .. - ",Ilya Zhuravlev (xyz) ," .. - ",," .. - "#FFFF00," .. fgettext("Previous Contributors") .. "," .. - ",Vanessa Ezekowitz (VanessaE) ,".. - ",Jurgen Doser (doserj) ,".. - ",Gregory Currie (gregorycu)," .. - ",Jeija ,".. - ",MirceaKitsune ,".. - ",dannydark ,".. - ",0gb.us <0gb.us@0gb.us>,".. - ",Guiseppe Bilotta (Oblomov) ,".. - ",Jonathan Neuschafer ,".. - ",Nils Dagsson Moskopp (erlehmann) ,".. - ",Constantin Wenger (SpeedProg) ,".. - ",matttpt ,".. - ",JacobF ,".. - ",TriBlade9 ,".. - ",Zefram ,".. - ";1]" - end - } + cbf_formspec = function(tabview, name, tabdata) + local logofile = defaulttexturedir .. "logo.png" + return "image[0.5,1;" .. core.formspec_escape(logofile) .. "]" .. + "label[0.5,3.2;Minetest " .. core.get_version() .. "]" .. + "label[0.5,3.5;http://minetest.net]" .. + "tablecolumns[color;text]" .. + "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. + "table[3.5,-0.25;8.5,5.8;list_credits;" .. + "#FFFF00," .. "Dedication of the current release" .. ",," .. + "The 0.4.14 release is dedicated to the memory of" .. ",," .. + "Minetest developer Maciej Kasatkin (RealBadAngel)" .. ",," .. + "who died on March 24 2016." .. ",," .. + "Our thoughts are with his family and friends." .. ",,," .. + "#FFFF00," .. fgettext("Core Developers") .. ",," .. + table.concat(core_developers, ",,") .. ",,," .. + "#FFFF00," .. fgettext("Active Contributors") .. ",," .. + table.concat(active_contributors, ",,") .. ",,," .. + "#FFFF00," .. fgettext("Previous Core Developers") ..",," .. + table.concat(previous_core_developers, ",,") .. ",,," .. + "#FFFF00," .. fgettext("Previous Contributors") .. ",," .. + table.concat(previous_contributors, ",,") .. "," .. + ";1]" + end +} diff --git a/builtin/mainmenu/tab_mods.lua b/builtin/mainmenu/tab_mods.lua index 2ddc9b07..5b59aa11 100644 --- a/builtin/mainmenu/tab_mods.lua +++ b/builtin/mainmenu/tab_mods.lua @@ -28,7 +28,7 @@ local function get_formspec(tabview, name, tabdata) local retval = "label[0.05,-0.25;".. fgettext("Installed Mods:") .. "]" .. - "textlist[0,0.25;5.1,4.35;modlist;" .. + "textlist[0,0.25;5.1,5;modlist;" .. modmgr.render_modlist(modmgr.global_mods) .. ";" .. tabdata.selected_mod .. "]" @@ -78,7 +78,7 @@ local function get_formspec(tabview, name, tabdata) descriptionfile:close() else descriptionlines = {} - table.insert(descriptionlines,fgettext("No mod description available")) + descriptionlines[#descriptionlines + 1] = fgettext("No mod description available") end retval = retval .. @@ -163,7 +163,7 @@ local function handle_buttons(tabview, fields, tabname, tabdata) end -------------------------------------------------------------------------------- -tab_mods = { +return { name = "mods", caption = fgettext("Mods"), cbf_formspec = get_formspec, diff --git a/builtin/mainmenu/tab_multiplayer.lua b/builtin/mainmenu/tab_multiplayer.lua index 57025971..00150f26 100644 --- a/builtin/mainmenu/tab_multiplayer.lua +++ b/builtin/mainmenu/tab_multiplayer.lua @@ -17,68 +17,71 @@ -------------------------------------------------------------------------------- local function get_formspec(tabview, name, tabdata) - local render_details = core.is_yes(core.setting_getbool("public_serverlist")) - + -- Update the cached supported proto info, + -- it may have changed after a change by the settings menu. + common_update_cached_supp_proto() + local fav_selected = menudata.favorites[tabdata.fav_selected] + local retval = - "label[7.75,-0.15;" .. fgettext("Address / Port :") .. "]" .. - "label[7.75,1.05;" .. fgettext("Name / Password :") .. "]" .. - "field[8,0.75;3.4,0.5;te_address;;" .. - core.formspec_escape(core.setting_get("address")) .. "]" .. - "field[11.25,0.75;1.3,0.5;te_port;;" .. - core.formspec_escape(core.setting_get("remote_port")) .. "]" .. - "checkbox[0,4.85;cb_public_serverlist;" .. fgettext("Public Serverlist") .. ";" .. - dump(core.setting_getbool("public_serverlist")) .. "]" - - if not core.setting_getbool("public_serverlist") then - retval = retval .. - "button[8,4.9;2,0.5;btn_delete_favorite;" .. fgettext("Delete") .. "]" - end - - retval = retval .. - "button[10,4.9;2,0.5;btn_mp_connect;" .. fgettext("Connect") .. "]" .. + "label[7.75,-0.15;" .. fgettext("Address / Port") .. "]" .. + "label[7.75,1.05;" .. fgettext("Name / Password") .. "]" .. + "field[8,0.75;3.3,0.5;te_address;;" .. + core.formspec_escape(core.setting_get("address")) .. "]" .. + "field[11.15,0.75;1.4,0.5;te_port;;" .. + core.formspec_escape(core.setting_get("remote_port")) .. "]" .. + "button[10.1,4.9;2,0.5;btn_mp_connect;" .. fgettext("Connect") .. "]" .. "field[8,1.95;2.95,0.5;te_name;;" .. - core.formspec_escape(core.setting_get("name")) .. "]" .. + core.formspec_escape(core.setting_get("name")) .. "]" .. "pwdfield[10.78,1.95;1.77,0.5;te_pwd;]" .. - "box[7.73,2.35;4.3,2.28;#999999]" .. - "textarea[8.1,2.4;4.26,2.6;;" - - if tabdata.fav_selected ~= nil and - menudata.favorites[tabdata.fav_selected] ~= nil and - menudata.favorites[tabdata.fav_selected].description ~= nil then - retval = retval .. - core.formspec_escape(menudata.favorites[tabdata.fav_selected].description,true) - end + "box[7.73,2.35;4.3,2.28;#999999]" - retval = retval .. - ";]" - - --favourites - if render_details then - retval = retval .. "tablecolumns[" .. - "color,span=3;" .. - "text,align=right;" .. -- clients - "text,align=center,padding=0.25;" .. -- "/" - "text,align=right,padding=0.25;" .. -- clients_max - image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. - image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. - image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" .. - "color,span=1;" .. - "text,padding=1]" -- name - else - retval = retval .. "tablecolumns[text]" - end - retval = retval .. - "table[-0.15,-0.1;7.75,5;favourites;" - - if #menudata.favorites > 0 then - retval = retval .. render_favorite(menudata.favorites[1],render_details) - - for i=2,#menudata.favorites,1 do - retval = retval .. "," .. render_favorite(menudata.favorites[i],render_details) + if tabdata.fav_selected and fav_selected then + if gamedata.fav then + retval = retval .. "button[7.85,4.9;2.3,0.5;btn_delete_favorite;" .. + fgettext("Del. Favorite") .. "]" + end + if fav_selected.description then + retval = retval .. "textarea[8.1,2.4;4.26,2.6;;" .. + core.formspec_escape((gamedata.serverdescription or ""), true) .. ";]" end end - if tabdata.fav_selected ~= nil then + --favourites + retval = retval .. "tablecolumns[" .. + image_column(fgettext("Favorite"), "favorite") .. ";" .. + "color,span=3;" .. + "text,align=right;" .. -- clients + "text,align=center,padding=0.25;" .. -- "/" + "text,align=right,padding=0.25;" .. -- clients_max + image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. + image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. + image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" .. + "color,span=1;" .. + "text,padding=1]" .. + "table[-0.15,-0.1;7.75,5.5;favourites;" + + if #menudata.favorites > 0 then + local favs = core.get_favorites("local") + if #favs > 0 then + for i = 1, #favs do + for j = 1, #menudata.favorites do + if menudata.favorites[j].address == favs[i].address and + menudata.favorites[j].port == favs[i].port then + table.insert(menudata.favorites, i, table.remove(menudata.favorites, j)) + end + end + if favs[i].address ~= menudata.favorites[i].address then + table.insert(menudata.favorites, i, favs[i]) + end + end + end + retval = retval .. render_favorite(menudata.favorites[1], (#favs > 0)) + for i = 2, #menudata.favorites do + retval = retval .. "," .. render_favorite(menudata.favorites[i], (i <= #favs)) + end + end + + if tabdata.fav_selected then retval = retval .. ";" .. tabdata.fav_selected .. "]" else retval = retval .. ";0]" @@ -89,36 +92,38 @@ end -------------------------------------------------------------------------------- local function main_button_handler(tabview, fields, name, tabdata) - if fields["te_name"] ~= nil then - gamedata.playername = fields["te_name"] - core.setting_set("name", fields["te_name"]) + if fields.te_name then + gamedata.playername = fields.te_name + core.setting_set("name", fields.te_name) end - if fields["favourites"] ~= nil then - local event = core.explode_table_event(fields["favourites"]) + if fields.favourites then + local event = core.explode_table_event(fields.favourites) + local fav = menudata.favorites[event.row] + if event.type == "DCL" then if event.row <= #menudata.favorites then - if not is_server_protocol_compat_or_error(menudata.favorites[event.row].proto_min, - menudata.favorites[event.row].proto_max) then + if menudata.favorites_is_public and + not is_server_protocol_compat_or_error( + fav.proto_min, fav.proto_max) then return true end - gamedata.address = menudata.favorites[event.row].address - gamedata.port = menudata.favorites[event.row].port - gamedata.playername = fields["te_name"] - if fields["te_pwd"] ~= nil then - gamedata.password = fields["te_pwd"] - end + + gamedata.address = fav.address + gamedata.port = fav.port + gamedata.playername = fields.te_name gamedata.selected_world = 0 - if menudata.favorites ~= nil then - gamedata.servername = menudata.favorites[event.row].name - gamedata.serverdescription = menudata.favorites[event.row].description + if fields.te_pwd then + gamedata.password = fields.te_pwd end - if gamedata.address ~= nil and - gamedata.port ~= nil then - core.setting_set("address",gamedata.address) - core.setting_set("remote_port",gamedata.port) + gamedata.servername = fav.name + gamedata.serverdescription = fav.description + + if gamedata.address and gamedata.port then + core.setting_set("address", gamedata.address) + core.setting_set("remote_port", gamedata.port) core.start() end end @@ -127,101 +132,92 @@ local function main_button_handler(tabview, fields, name, tabdata) if event.type == "CHG" then if event.row <= #menudata.favorites then - local address = menudata.favorites[event.row].address - local port = menudata.favorites[event.row].port + gamedata.fav = false + local favs = core.get_favorites("local") + local address = fav.address + local port = fav.port + gamedata.serverdescription = fav.description - if address ~= nil and - port ~= nil then - core.setting_set("address",address) - core.setting_set("remote_port",port) + for i = 1, #favs do + if fav.address == favs[i].address and + fav.port == favs[i].port then + gamedata.fav = true + end end + if address and port then + core.setting_set("address", address) + core.setting_set("remote_port", port) + end tabdata.fav_selected = event.row end - return true end end - if fields["key_up"] ~= nil or - fields["key_down"] ~= nil then - + if fields.key_up or fields.key_down then local fav_idx = core.get_table_index("favourites") + local fav = menudata.favorites[fav_idx] - if fav_idx ~= nil then - if fields["key_up"] ~= nil and fav_idx > 1 then - fav_idx = fav_idx -1 - else if fields["key_down"] and fav_idx < #menudata.favorites then - fav_idx = fav_idx +1 - end end + if fav_idx then + if fields.key_up and fav_idx > 1 then + fav_idx = fav_idx - 1 + elseif fields.key_down and fav_idx < #menudata.favorites then + fav_idx = fav_idx + 1 + end else fav_idx = 1 end - - if menudata.favorites == nil or - menudata.favorites[fav_idx] == nil then + + if not menudata.favorites or not fav then tabdata.fav_selected = 0 return true end - - local address = menudata.favorites[fav_idx].address - local port = menudata.favorites[fav_idx].port - if address ~= nil and - port ~= nil then - core.setting_set("address",address) - core.setting_set("remote_port",port) + local address = fav.address + local port = fav.port + + if address and port then + core.setting_set("address", address) + core.setting_set("remote_port", port) end tabdata.fav_selected = fav_idx return true end - if fields["cb_public_serverlist"] ~= nil then - core.setting_set("public_serverlist", fields["cb_public_serverlist"]) - - if core.setting_getbool("public_serverlist") then - asyncOnlineFavourites() - else - menudata.favorites = core.get_favorites("local") - end - tabdata.fav_selected = nil - return true - end - - if fields["btn_delete_favorite"] ~= nil then + if fields.btn_delete_favorite then local current_favourite = core.get_table_index("favourites") - if current_favourite == nil then return end + if not current_favourite then return end + core.delete_favorite(current_favourite) - menudata.favorites = order_favorite_list(core.get_favorites()) + asyncOnlineFavourites() tabdata.fav_selected = nil - core.setting_set("address","") - core.setting_set("remote_port","30000") - + core.setting_set("address", "") + core.setting_set("remote_port", "30000") return true end - if (fields["btn_mp_connect"] ~= nil or - fields["key_enter"] ~= nil) and fields["te_address"] ~= nil and - fields["te_port"] ~= nil then - - gamedata.playername = fields["te_name"] - gamedata.password = fields["te_pwd"] - gamedata.address = fields["te_address"] - gamedata.port = fields["te_port"] - + if (fields.btn_mp_connect or fields.key_enter) and fields.te_address and fields.te_port then + gamedata.playername = fields.te_name + gamedata.password = fields.te_pwd + gamedata.address = fields.te_address + gamedata.port = fields.te_port + gamedata.selected_world = 0 local fav_idx = core.get_table_index("favourites") + local fav = menudata.favorites[fav_idx] - if fav_idx ~= nil and fav_idx <= #menudata.favorites and - menudata.favorites[fav_idx].address == fields["te_address"] and - menudata.favorites[fav_idx].port == fields["te_port"] then + if fav_idx and fav_idx <= #menudata.favorites and + fav.address == fields.te_address and + fav.port == fields.te_port then - gamedata.servername = menudata.favorites[fav_idx].name - gamedata.serverdescription = menudata.favorites[fav_idx].description + gamedata.servername = fav.name + gamedata.serverdescription = fav.description - if not is_server_protocol_compat_or_error(menudata.favorites[fav_idx].proto_min, - menudata.favorites[fav_idx].proto_max)then + if menudata.favorites_is_public and + not is_server_protocol_compat_or_error( + fav.proto_min, fav.proto_max) then return true end else @@ -229,10 +225,8 @@ local function main_button_handler(tabview, fields, name, tabdata) gamedata.serverdescription = "" end - gamedata.selected_world = 0 - - core.setting_set("address", fields["te_address"]) - core.setting_set("remote_port",fields["te_port"]) + core.setting_set("address", fields.te_address) + core.setting_set("remote_port", fields.te_port) core.start() return true @@ -240,22 +234,16 @@ local function main_button_handler(tabview, fields, name, tabdata) return false end -local function on_change(type,old_tab,new_tab) - if type == "LEAVE" then - return - end - if core.setting_getbool("public_serverlist") then - asyncOnlineFavourites() - else - menudata.favorites = core.get_favorites("local") - end +local function on_change(type, old_tab, new_tab) + if type == "LEAVE" then return end + asyncOnlineFavourites() end -------------------------------------------------------------------------------- -tab_multiplayer = { +return { name = "multiplayer", caption = fgettext("Client"), cbf_formspec = get_formspec, cbf_button_handler = main_button_handler, on_change = on_change - } +} diff --git a/builtin/mainmenu/tab_server.lua b/builtin/mainmenu/tab_server.lua index d08eecc2..6b96825a 100644 --- a/builtin/mainmenu/tab_server.lua +++ b/builtin/mainmenu/tab_server.lua @@ -186,10 +186,10 @@ local function main_button_handler(this, fields, name, tabdata) end -------------------------------------------------------------------------------- -tab_server = { +return { name = "server", caption = fgettext("Server"), cbf_formspec = get_formspec, cbf_button_handler = main_button_handler, on_change = nil - } +} diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua index 6d71904c..af8df0cc 100644 --- a/builtin/mainmenu/tab_settings.lua +++ b/builtin/mainmenu/tab_settings.lua @@ -1,5 +1,5 @@ --Minetest ---Copyright (C) 2015 PilzAdam +--Copyright (C) 2013 sapier -- --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 @@ -15,724 +15,388 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -local FILENAME = "settingtypes.txt" +-------------------------------------------------------------------------------- -local CHAR_CLASSES = { - SPACE = "[%s]", - VARIABLE = "[%w_%-%.]", - INTEGER = "[-]?[%d]", - FLOAT = "[-]?[%d%.]", - FLAGS = "[%w_%-%.,]", +local labels = { + leaves = { + fgettext("Opaque Leaves"), + fgettext("Simple Leaves"), + fgettext("Fancy Leaves") + }, + node_highlighting = { + fgettext("Node Outlining"), + fgettext("Node Highlighting") + }, + filters = { + fgettext("No Filter"), + fgettext("Bilinear Filter"), + fgettext("Trilinear Filter") + }, + mipmap = { + fgettext("No Mipmap"), + fgettext("Mipmap"), + fgettext("Mipmap + Aniso. Filter") + }, + antialiasing = { + fgettext("None"), + fgettext("2x"), + fgettext("4x"), + fgettext("8x") + } } --- returns error message, or nil -local function parse_setting_line(settings, line, read_all, base_level, allow_secure) - -- comment - local comment = line:match("^#" .. CHAR_CLASSES.SPACE .. "*(.*)$") - if comment then - if settings.current_comment == "" then - settings.current_comment = comment - else - settings.current_comment = settings.current_comment .. "\n" .. comment +local dd_options = { + leaves = { + table.concat(labels.leaves, ","), + {"opaque", "simple", "fancy"} + }, + node_highlighting = { + table.concat(labels.node_highlighting, ","), + {"box", "halo"} + }, + filters = { + table.concat(labels.filters, ","), + {"", "bilinear_filter", "trilinear_filter"} + }, + mipmap = { + table.concat(labels.mipmap, ","), + {"", "mip_map", "anisotropic_filter"} + }, + antialiasing = { + table.concat(labels.antialiasing, ","), + {"0", "2", "4", "8"} + } +} + +local getSettingIndex = { + Leaves = function() + local style = core.setting_get("leaves_style") + for idx, name in pairs(dd_options.leaves[2]) do + if style == name then return idx end end - return - end - - -- clear current_comment so only comments directly above a setting are bound to it - -- but keep a local reference to it for variables in the current line - local current_comment = settings.current_comment - settings.current_comment = "" - - -- empty lines - if line:match("^" .. CHAR_CLASSES.SPACE .. "*$") then - return - end - - -- category - local stars, category = line:match("^%[([%*]*)([^%]]+)%]$") - if category then - table.insert(settings, { - name = category, - level = stars:len() + base_level, - type = "category", - }) - return - end - - -- settings - local first_part, name, readable_name, setting_type = line:match("^" - -- this first capture group matches the whole first part, - -- so we can later strip it from the rest of the line - .. "(" - .. "([" .. CHAR_CLASSES.VARIABLE .. "+)" -- variable name - .. CHAR_CLASSES.SPACE - .. "%(([^%)]*)%)" -- readable name - .. CHAR_CLASSES.SPACE - .. "(" .. CHAR_CLASSES.VARIABLE .. "+)" -- type - .. CHAR_CLASSES.SPACE .. "?" - .. ")") - - if not first_part then - return "Invalid line" - end - - if name:match("secure%.[.]*") and not allow_secure then - return "Tried to add \"secure.\" setting" - end - - if readable_name == "" then - readable_name = nil - end - local remaining_line = line:sub(first_part:len() + 1) - - if setting_type == "int" then - local default, min, max = remaining_line:match("^" - -- first int is required, the last 2 are optional - .. "(" .. CHAR_CLASSES.INTEGER .. "+)" .. CHAR_CLASSES.SPACE .. "?" - .. "(" .. CHAR_CLASSES.INTEGER .. "*)" .. CHAR_CLASSES.SPACE .. "?" - .. "(" .. CHAR_CLASSES.INTEGER .. "*)" - .. "$") - - if not default or not tonumber(default) then - return "Invalid integer setting" + return 1 + end, + NodeHighlighting = function() + local style = core.setting_get("node_highlighting") + for idx, name in pairs(dd_options.node_highlighting[2]) do + if style == name then return idx end end - - min = tonumber(min) - max = tonumber(max) - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "int", - default = default, - min = min, - max = max, - comment = current_comment, - }) - return - end - - if setting_type == "string" or setting_type == "noise_params" - or setting_type == "key" then - local default = remaining_line:match("^(.*)$") - - if not default then - return "Invalid string setting" + return 1 + end, + Filter = function() + if core.setting_get(dd_options.filters[2][3]) == "true" then + return 3 + elseif core.setting_get(dd_options.filters[2][3]) == "false" and + core.setting_get(dd_options.filters[2][2]) == "true" then + return 2 end - if setting_type == "key" and not read_all then - -- ignore key type if read_all is false - return + return 1 + end, + Mipmap = function() + if core.setting_get(dd_options.mipmap[2][3]) == "true" then + return 3 + elseif core.setting_get(dd_options.mipmap[2][3]) == "false" and + core.setting_get(dd_options.mipmap[2][2]) == "true" then + return 2 end - - table.insert(settings, { - name = name, - readable_name = readable_name, - type = setting_type, - default = default, - comment = current_comment, - }) - return - end - - if setting_type == "bool" then - if remaining_line ~= "false" and remaining_line ~= "true" then - return "Invalid boolean setting" - end - - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "bool", - default = remaining_line, - comment = current_comment, - }) - return - end - - if setting_type == "float" then - local default, min, max = remaining_line:match("^" - -- first float is required, the last 2 are optional - .. "(" .. CHAR_CLASSES.FLOAT .. "+)" .. CHAR_CLASSES.SPACE .. "?" - .. "(" .. CHAR_CLASSES.FLOAT .. "*)" .. CHAR_CLASSES.SPACE .. "?" - .. "(" .. CHAR_CLASSES.FLOAT .. "*)" - .."$") - - if not default or not tonumber(default) then - return "Invalid float setting" - end - - min = tonumber(min) - max = tonumber(max) - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "float", - default = default, - min = min, - max = max, - comment = current_comment, - }) - return - end - - if setting_type == "enum" then - local default, values = remaining_line:match("^(.+)" .. CHAR_CLASSES.SPACE .. "(.+)$") - - if not default or values == "" then - return "Invalid enum setting" - end - - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "enum", - default = default, - values = values:split(",", true), - comment = current_comment, - }) - return - end - - if setting_type == "path" then - local default = remaining_line:match("^(.*)$") - - if not default then - return "Invalid path setting" - end - - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "path", - default = default, - comment = current_comment, - }) - return - end - - if setting_type == "flags" then - local default, possible = remaining_line:match("^" - .. "(" .. CHAR_CLASSES.FLAGS .. "+)" .. CHAR_CLASSES.SPACE .. "" - .. "(" .. CHAR_CLASSES.FLAGS .. "+)" - .. "$") - - if not default or not possible then - return "Invalid flags setting" - end - - table.insert(settings, { - name = name, - readable_name = readable_name, - type = "flags", - default = default, - possible = possible, - comment = current_comment, - }) - return - end - - return "Invalid setting type \"" .. setting_type .. "\"" -end - -local function parse_single_file(file, filepath, read_all, result, base_level, allow_secure) - -- store this helper variable in the table so it's easier to pass to parse_setting_line() - result.current_comment = "" - - local line = file:read("*line") - while line do - local error_msg = parse_setting_line(result, line, read_all, base_level, allow_secure) - if error_msg then - core.log("error", error_msg .. " in " .. filepath .. " \"" .. line .. "\"") - end - line = file:read("*line") - end - - result.current_comment = nil -end - --- read_all: whether to ignore certain setting types for GUI or not --- parse_mods: whether to parse settingtypes.txt in mods and games -local function parse_config_file(read_all, parse_mods) - local builtin_path = core.get_builtin_path() .. DIR_DELIM .. FILENAME - local file = io.open(builtin_path, "r") - local settings = {} - if not file then - core.log("error", "Can't load " .. FILENAME) - return settings - end - - parse_single_file(file, builtin_path, read_all, settings, 0, true) - - file:close() - - if parse_mods then - -- Parse games - local games_category_initialized = false - local index = 1 - local game = gamemgr.get_game(index) - while game do - local path = game.path .. DIR_DELIM .. FILENAME - local file = io.open(path, "r") - if file then - if not games_category_initialized then - local translation = fgettext_ne("Games"), -- not used, but needed for xgettext - table.insert(settings, { - name = "Games", - level = 0, - type = "category", - }) - games_category_initialized = true - end - - table.insert(settings, { - name = game.name, - level = 1, - type = "category", - }) - - parse_single_file(file, path, read_all, settings, 2, false) - - file:close() + return 1 + end, + Antialiasing = function() + local antialiasing_setting = core.setting_get("fsaa") + for i = 1, #dd_options.antialiasing[2] do + if antialiasing_setting == dd_options.antialiasing[2][i] then + return i end + end + return 1 + end +} - index = index + 1 - game = gamemgr.get_game(index) +local function antialiasing_fname_to_name(fname) + for i = 1, #labels.antialiasing do + if fname == labels.antialiasing[i] then + return dd_options.antialiasing[2][i] + end + end + return 0 +end + +local function dlg_confirm_reset_formspec(data) + return "size[8,3]" .. + "label[1,1;" .. fgettext("Are you sure to reset your singleplayer world?") .. "]" .. + "button[1,2;2.6,0.5;dlg_reset_singleplayer_confirm;" .. fgettext("Yes") .. "]" .. + "button[4,2;2.8,0.5;dlg_reset_singleplayer_cancel;" .. fgettext("No") .. "]" +end + +local function dlg_confirm_reset_btnhandler(this, fields, dialogdata) + + if fields["dlg_reset_singleplayer_confirm"] ~= nil then + local worldlist = core.get_worlds() + local found_singleplayerworld = false + + for i = 1, #worldlist do + if worldlist[i].name == "singleplayerworld" then + found_singleplayerworld = true + gamedata.worldindex = i + end end - -- Parse mods - local mods_category_initialized = false - local mods = {} - get_mods(core.get_modpath(), mods) - for _, mod in ipairs(mods) do - local path = mod.path .. DIR_DELIM .. FILENAME - local file = io.open(path, "r") - if file then - if not mods_category_initialized then - local translation = fgettext_ne("Mods"), -- not used, but needed for xgettext - table.insert(settings, { - name = "Mods", - level = 0, - type = "category", - }) - mods_category_initialized = true - end + if found_singleplayerworld then + core.delete_world(gamedata.worldindex) + end - table.insert(settings, { - name = mod.name, - level = 1, - type = "category", - }) + core.create_world("singleplayerworld", 1) + worldlist = core.get_worlds() + found_singleplayerworld = false - parse_single_file(file, path, read_all, settings, 2, false) - - file:close() + for i = 1, #worldlist do + if worldlist[i].name == "singleplayerworld" then + found_singleplayerworld = true + gamedata.worldindex = i end end end - return settings + this.parent:show() + this:hide() + this:delete() + return true end -local settings = parse_config_file(false, true) -local selected_setting = 1 +local function showconfirm_reset(tabview) + local new_dlg = dialog_create("reset_spworld", + dlg_confirm_reset_formspec, + dlg_confirm_reset_btnhandler, + nil) + new_dlg:set_parent(tabview) + tabview:hide() + new_dlg:show() +end -local function get_current_value(setting) - local value = core.setting_get(setting.name) - if value == nil then - value = setting.default +local function formspec(tabview, name, tabdata) + local tab_string = + "box[0,0;3.5,4.5;#999999]" .. + "checkbox[0.25,0;cb_smooth_lighting;" .. fgettext("Smooth Lighting") .. ";" + .. dump(core.setting_getbool("smooth_lighting")) .. "]" .. + "checkbox[0.25,0.5;cb_particles;" .. fgettext("Particles") .. ";" + .. dump(core.setting_getbool("enable_particles")) .. "]" .. + "checkbox[0.25,1;cb_3d_clouds;" .. fgettext("3D Clouds") .. ";" + .. dump(core.setting_getbool("enable_3d_clouds")) .. "]" .. + "checkbox[0.25,1.5;cb_opaque_water;" .. fgettext("Opaque Water") .. ";" + .. dump(core.setting_getbool("opaque_water")) .. "]" .. + "checkbox[0.25,2.0;cb_connected_glass;" .. fgettext("Connected Glass") .. ";" + .. dump(core.setting_getbool("connected_glass")) .. "]" .. + "dropdown[0.25,2.8;3.3;dd_node_highlighting;" .. dd_options.node_highlighting[1] .. ";" + .. getSettingIndex.NodeHighlighting() .. "]" .. + "dropdown[0.25,3.6;3.3;dd_leaves_style;" .. dd_options.leaves[1] .. ";" + .. getSettingIndex.Leaves() .. "]" .. + "box[3.75,0;3.75,3.45;#999999]" .. + "label[3.85,0.1;" .. fgettext("Texturing:") .. "]" .. + "dropdown[3.85,0.55;3.85;dd_filters;" .. dd_options.filters[1] .. ";" + .. getSettingIndex.Filter() .. "]" .. + "dropdown[3.85,1.35;3.85;dd_mipmap;" .. dd_options.mipmap[1] .. ";" + .. getSettingIndex.Mipmap() .. "]" .. + "label[3.85,2.15;" .. fgettext("Antialiasing:") .. "]" .. + "dropdown[3.85,2.6;3.85;dd_antialiasing;" .. dd_options.antialiasing[1] .. ";" + .. getSettingIndex.Antialiasing() .. "]" .. + "box[7.75,0;4,4.4;#999999]" .. + "checkbox[8,0;cb_shaders;" .. fgettext("Shaders") .. ";" + .. dump(core.setting_getbool("enable_shaders")) .. "]" + + if PLATFORM == "Android" then + tab_string = tab_string .. + "button[8,4.75;3.75,0.5;btn_reset_singleplayer;" + .. fgettext("Reset singleplayer world") .. "]" + else + tab_string = tab_string .. + "button[8,4.75;3.75,0.5;btn_change_keys;" + .. fgettext("Change keys") .. "]" end - return value -end -local function create_change_setting_formspec(dialogdata) - local setting = settings[selected_setting] - local formspec = "size[10,5.2,true]" .. - "button[5,4.5;2,1;btn_done;" .. fgettext("Save") .. "]" .. - "button[3,4.5;2,1;btn_cancel;" .. fgettext("Cancel") .. "]" .. + tab_string = tab_string .. + "button[0,4.75;3.75,0.5;btn_advanced_settings;" + .. fgettext("Advanced Settings") .. "]" + + + if core.setting_get("touchscreen_threshold") ~= nil then + tab_string = tab_string .. + "label[4.3,4.1;" .. fgettext("Touchthreshold (px)") .. "]" .. + "dropdown[3.85,4.55;3.85;dd_touchthreshold;0,10,20,30,40,50;" .. + ((tonumber(core.setting_get("touchscreen_threshold")) / 10) + 1) .. "]" + end + + if core.setting_getbool("enable_shaders") then + tab_string = tab_string .. + "checkbox[8,0.5;cb_bumpmapping;" .. fgettext("Bump Mapping") .. ";" + .. dump(core.setting_getbool("enable_bumpmapping")) .. "]" .. + "checkbox[8,1;cb_tonemapping;" .. fgettext("Tone Mapping") .. ";" + .. dump(core.setting_getbool("tone_mapping")) .. "]" .. + "checkbox[8,1.5;cb_generate_normalmaps;" .. fgettext("Normal Mapping") .. ";" + .. dump(core.setting_getbool("generate_normalmaps")) .. "]" .. + "checkbox[8,2;cb_parallax;" .. fgettext("Parallax Occlusion") .. ";" + .. dump(core.setting_getbool("enable_parallax_occlusion")) .. "]" .. + "checkbox[8,2.5;cb_waving_water;" .. fgettext("Waving Water") .. ";" + .. dump(core.setting_getbool("enable_waving_water")) .. "]" .. + "checkbox[8,3;cb_waving_leaves;" .. fgettext("Waving Leaves") .. ";" + .. dump(core.setting_getbool("enable_waving_leaves")) .. "]" .. + "checkbox[8,3.5;cb_waving_plants;" .. fgettext("Waving Plants") .. ";" + .. dump(core.setting_getbool("enable_waving_plants")) .. "]" + else + tab_string = tab_string .. "tablecolumns[color;text]" .. "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. - "table[0,0;10,3;info;" - - if setting.readable_name then - formspec = formspec .. "#FFFF00," .. fgettext(setting.readable_name) - .. " (" .. core.formspec_escape(setting.name) .. ")," - else - formspec = formspec .. "#FFFF00," .. core.formspec_escape(setting.name) .. "," + "table[8.33,0.7;3.5,4;shaders;" .. + "#888888," .. fgettext("Bump Mapping") .. "," .. + "#888888," .. fgettext("Tone Mapping") .. "," .. + "#888888," .. fgettext("Normal Mapping") .. "," .. + "#888888," .. fgettext("Parallax Occlusion") .. "," .. + "#888888," .. fgettext("Waving Water") .. "," .. + "#888888," .. fgettext("Waving Leaves") .. "," .. + "#888888," .. fgettext("Waving Plants") .. "," .. + ";1]" end - formspec = formspec .. ",," - - local comment_text = "" - - if setting.comment == "" then - comment_text = fgettext_ne("(No description of setting given)") - else - comment_text = fgettext_ne(setting.comment) - end - for _, comment_line in ipairs(comment_text:split("\n", true)) do - formspec = formspec .. "," .. core.formspec_escape(comment_line) .. "," - end - - if setting.type == "flags" then - formspec = formspec .. ",," - .. "," .. fgettext("Please enter a comma seperated list of flags.") .. "," - .. "," .. fgettext("Possible values are: ") - .. core.formspec_escape(setting.possible:gsub(",", ", ")) .. "," - elseif setting.type == "noise_params" then - formspec = formspec .. ",," - .. "," .. fgettext("Format: , , (, , ), , , ") .. "," - .. "," .. fgettext("Optionally the lacunarity can be appended with a leading comma.") .. "," - end - - formspec = formspec:sub(1, -2) -- remove trailing comma - - formspec = formspec .. ";1]" - - if setting.type == "bool" then - local selected_index - if core.is_yes(get_current_value(setting)) then - selected_index = 2 - else - selected_index = 1 - end - formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" - .. fgettext("Disabled") .. "," .. fgettext("Enabled") .. ";" - .. selected_index .. "]" - - elseif setting.type == "enum" then - local selected_index = 0 - formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" - for index, value in ipairs(setting.values) do - -- translating value is not possible, since it's the value - -- that we set the setting to - formspec = formspec .. core.formspec_escape(value) .. "," - if get_current_value(setting) == value then - selected_index = index - end - end - if #setting.values > 0 then - formspec = formspec:sub(1, -2) -- remove trailing comma - end - formspec = formspec .. ";" .. selected_index .. "]" - - elseif setting.type == "path" then - local current_value = dialogdata.selected_path - if not current_value then - current_value = get_current_value(setting) - end - formspec = formspec .. "field[0.5,4;7.5,1;te_setting_value;;" - .. core.formspec_escape(current_value) .. "]" - .. "button[8,3.75;2,1;btn_browser_path;" .. fgettext("Browse") .. "]" - - else - -- TODO: fancy input for float, int, flags, noise_params - local width = 10 - local text = get_current_value(setting) - if dialogdata.error_message then - formspec = formspec .. "tablecolumns[color;text]" .. - "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. - "table[5,4;5,1;error_message;#FF0000," - .. core.formspec_escape(dialogdata.error_message) .. ";0]" - width = 5 - if dialogdata.entered_text then - text = dialogdata.entered_text - end - end - formspec = formspec .. "field[0.5,4;" .. width .. ",1;te_setting_value;;" - .. core.formspec_escape(text) .. "]" - end - return formspec -end - -local function handle_change_setting_buttons(this, fields) - if fields["btn_done"] or fields["key_enter"] then - local setting = settings[selected_setting] - if setting.type == "bool" then - local new_value = fields["dd_setting_value"] - -- Note: new_value is the actual (translated) value shown in the dropdown - core.setting_setbool(setting.name, new_value == fgettext("Enabled")) - - elseif setting.type == "enum" then - local new_value = fields["dd_setting_value"] - core.setting_set(setting.name, new_value) - - elseif setting.type == "int" then - local new_value = tonumber(fields["te_setting_value"]) - if not new_value or math.floor(new_value) ~= new_value then - this.data.error_message = fgettext_ne("Please enter a valid integer.") - this.data.entered_text = fields["te_setting_value"] - core.update_formspec(this:get_formspec()) - return true - end - if setting.min and new_value < setting.min then - this.data.error_message = fgettext_ne("The value must be greater than $1.", setting.min) - this.data.entered_text = fields["te_setting_value"] - core.update_formspec(this:get_formspec()) - return true - end - if setting.max and new_value > setting.max then - this.data.error_message = fgettext_ne("The value must be lower than $1.", setting.max) - this.data.entered_text = fields["te_setting_value"] - core.update_formspec(this:get_formspec()) - return true - end - core.setting_set(setting.name, new_value) - - elseif setting.type == "float" then - local new_value = tonumber(fields["te_setting_value"]) - if not new_value then - this.data.error_message = fgettext_ne("Please enter a valid number.") - this.data.entered_text = fields["te_setting_value"] - core.update_formspec(this:get_formspec()) - return true - end - core.setting_set(setting.name, new_value) - - elseif setting.type == "flags" then - local new_value = fields["te_setting_value"] - for _,value in ipairs(new_value:split(",", true)) do - value = value:trim() - if not value:match(CHAR_CLASSES.FLAGS .. "+") - or not setting.possible:match("[,]?" .. value .. "[,]?") then - this.data.error_message = fgettext_ne("\"$1\" is not a valid flag.", value) - this.data.entered_text = fields["te_setting_value"] - core.update_formspec(this:get_formspec()) - return true - end - end - core.setting_set(setting.name, new_value) - - else - local new_value = fields["te_setting_value"] - core.setting_set(setting.name, new_value) - end - core.setting_save() - this:delete() - return true - end - - if fields["btn_cancel"] then - this:delete() - return true - end - - if fields["btn_browser_path"] then - core.show_file_open_dialog("dlg_browse_path", fgettext_ne("Select path")) - end - - if fields["dlg_browse_path_accepted"] then - this.data.selected_path = fields["dlg_browse_path_accepted"] - core.update_formspec(this:get_formspec()) - end - - return false -end - -local function create_settings_formspec(tabview, name, tabdata) - local formspec = "tablecolumns[color;tree;text;text]" .. - "tableoptions[background=#00000000;border=false]" .. - "table[0,0;12,4.5;list_settings;" - - local current_level = 0 - for _, entry in ipairs(settings) do - local name - if not core.setting_getbool("main_menu_technical_settings") and entry.readable_name then - name = fgettext_ne(entry.readable_name) - else - name = entry.name - end - - if entry.type == "category" then - current_level = entry.level - formspec = formspec .. "#FFFF00," .. current_level .. "," .. fgettext(name) .. ",," - - elseif entry.type == "bool" then - local value = get_current_value(entry) - if core.is_yes(value) then - value = fgettext("Enabled") - else - value = fgettext("Disabled") - end - formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," - .. value .. "," - - elseif entry.type == "key" then - -- ignore key settings, since we have a special dialog for them - - else - formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," - .. core.formspec_escape(get_current_value(entry)) .. "," - end - end - - if #settings > 0 then - formspec = formspec:sub(1, -2) -- remove trailing comma - end - formspec = formspec .. ";" .. selected_setting .. "]" .. - "button[4,4.5;3,1;btn_change_keys;".. fgettext("Change keys") .. "]" .. - "button[10,4.5;2,1;btn_edit;" .. fgettext("Edit") .. "]" .. - "button[7,4.5;3,1;btn_restore;" .. fgettext("Restore Default") .. "]" .. - "checkbox[0,4.5;cb_tech_settings;" .. fgettext("Show technical names") .. ";" - .. dump(core.setting_getbool("main_menu_technical_settings")) .. "]" - - return formspec + return tab_string end +-------------------------------------------------------------------------------- local function handle_settings_buttons(this, fields, tabname, tabdata) - local list_enter = false - if fields["list_settings"] then - selected_setting = core.get_table_index("list_settings") - if core.explode_table_event(fields["list_settings"]).type == "DCL" then - -- Directly toggle booleans - local setting = settings[selected_setting] - if setting.type == "bool" then - local current_value = get_current_value(setting) - core.setting_setbool(setting.name, not core.is_yes(current_value)) - core.setting_save() - return true - else - list_enter = true - end + + if fields["btn_advanced_settings"] ~= nil then + local adv_settings_dlg = create_adv_settings_dlg() + adv_settings_dlg:set_parent(this) + this:hide() + adv_settings_dlg:show() + --mm_texture.update("singleplayer", current_game()) + return true + end + if fields["cb_smooth_lighting"] then + core.setting_set("smooth_lighting", fields["cb_smooth_lighting"]) + return true + end + if fields["cb_particles"] then + core.setting_set("enable_particles", fields["cb_particles"]) + return true + end + if fields["cb_3d_clouds"] then + core.setting_set("enable_3d_clouds", fields["cb_3d_clouds"]) + return true + end + if fields["cb_opaque_water"] then + core.setting_set("opaque_water", fields["cb_opaque_water"]) + return true + end + if fields["cb_connected_glass"] then + core.setting_set("connected_glass", fields["cb_connected_glass"]) + return true + end + if fields["cb_shaders"] then + if (core.setting_get("video_driver") == "direct3d8" or + core.setting_get("video_driver") == "direct3d9") then + core.setting_set("enable_shaders", "false") + gamedata.errormessage = fgettext("To enable shaders the OpenGL driver needs to be used.") else - return true - end - end - - if fields["btn_edit"] or list_enter then - local setting = settings[selected_setting] - if setting.type ~= "category" then - local edit_dialog = dialog_create("change_setting", create_change_setting_formspec, - handle_change_setting_buttons) - edit_dialog:set_parent(this) - this:hide() - edit_dialog:show() + core.setting_set("enable_shaders", fields["cb_shaders"]) end return true end - - if fields["btn_restore"] then - local setting = settings[selected_setting] - if setting.type ~= "category" then - core.setting_set(setting.name, setting.default) - core.setting_save() - core.update_formspec(this:get_formspec()) - end + if fields["cb_bumpmapping"] then + core.setting_set("enable_bumpmapping", fields["cb_bumpmapping"]) + return true + end + if fields["cb_tonemapping"] then + core.setting_set("tone_mapping", fields["cb_tonemapping"]) + return true + end + if fields["cb_generate_normalmaps"] then + core.setting_set("generate_normalmaps", fields["cb_generate_normalmaps"]) + return true + end + if fields["cb_parallax"] then + core.setting_set("enable_parallax_occlusion", fields["cb_parallax"]) + return true + end + if fields["cb_waving_water"] then + core.setting_set("enable_waving_water", fields["cb_waving_water"]) + return true + end + if fields["cb_waving_leaves"] then + core.setting_set("enable_waving_leaves", fields["cb_waving_leaves"]) + end + if fields["cb_waving_plants"] then + core.setting_set("enable_waving_plants", fields["cb_waving_plants"]) return true end - if fields["btn_change_keys"] then core.show_keys_menu() return true end - - if fields["cb_tech_settings"] then - core.setting_set("main_menu_technical_settings", fields["cb_tech_settings"]) - core.setting_save() - core.update_formspec(this:get_formspec()) + if fields["cb_touchscreen_target"] then + core.setting_set("touchtarget", fields["cb_touchscreen_target"]) + return true + end + if fields["btn_reset_singleplayer"] then + showconfirm_reset(this) return true end - return false + --Note dropdowns have to be handled LAST! + local ddhandled = false + + for i = 1, #labels.leaves do + if fields["dd_leaves_style"] == labels.leaves[i] then + core.setting_set("leaves_style", dd_options.leaves[2][i]) + ddhandled = true + end + end + for i = 1, #labels.node_highlighting do + if fields["dd_node_highlighting"] == labels.node_highlighting[i] then + core.setting_set("node_highlighting", dd_options.node_highlighting[2][i]) + ddhandled = true + end + end + if fields["dd_filters"] == labels.filters[1] then + core.setting_set("bilinear_filter", "false") + core.setting_set("trilinear_filter", "false") + ddhandled = true + elseif fields["dd_filters"] == labels.filters[2] then + core.setting_set("bilinear_filter", "true") + core.setting_set("trilinear_filter", "false") + ddhandled = true + elseif fields["dd_filters"] == labels.filters[3] then + core.setting_set("bilinear_filter", "false") + core.setting_set("trilinear_filter", "true") + ddhandled = true + end + if fields["dd_mipmap"] == labels.mipmap[1] then + core.setting_set("mip_map", "false") + core.setting_set("anisotropic_filter", "false") + ddhandled = true + elseif fields["dd_mipmap"] == labels.mipmap[2] then + core.setting_set("mip_map", "true") + core.setting_set("anisotropic_filter", "false") + ddhandled = true + elseif fields["dd_mipmap"] == labels.mipmap[3] then + core.setting_set("mip_map", "true") + core.setting_set("anisotropic_filter", "true") + ddhandled = true + end + if fields["dd_antialiasing"] then + core.setting_set("fsaa", + antialiasing_fname_to_name(fields["dd_antialiasing"])) + ddhandled = true + end + if fields["dd_touchthreshold"] then + core.setting_set("touchscreen_threshold", fields["dd_touchthreshold"]) + ddhandled = true + end + + return ddhandled end -tab_settings = { +return { name = "settings", caption = fgettext("Settings"), - cbf_formspec = create_settings_formspec, - cbf_button_handler = handle_settings_buttons, + cbf_formspec = formspec, + cbf_button_handler = handle_settings_buttons } - -local function create_minetest_conf_example() - local result = "# This file contains a list of all available settings and their default value for minetest.conf\n" .. - "\n" .. - "# By default, all the settings are commented and not functional.\n" .. - "# Uncomment settings by removing the preceding #.\n" .. - "\n" .. - "# minetest.conf is read by default from:\n" .. - "# ../minetest.conf\n" .. - "# ../../minetest.conf\n" .. - "# Any other path can be chosen by passing the path as a parameter\n" .. - "# to the program, eg. \"minetest.exe --config ../minetest.conf.example\".\n" .. - "\n" .. - "# Further documentation:\n" .. - "# http://wiki.minetest.net/\n" .. - "\n" - - local settings = parse_config_file(true, false) - for _, entry in ipairs(settings) do - if entry.type == "category" then - if entry.level == 0 then - result = result .. "#\n# " .. entry.name .. "\n#\n\n" - else - for i = 1, entry.level do - result = result .. "#" - end - result = result .. "# " .. entry.name .. "\n\n" - end - else - if entry.comment ~= "" then - for _, comment_line in ipairs(entry.comment:split("\n", true)) do - result = result .."# " .. comment_line .. "\n" - end - end - result = result .. "# type: " .. entry.type - if entry.min then - result = result .. " min: " .. entry.min - end - if entry.max then - result = result .. " max: " .. entry.max - end - if entry.values then - result = result .. " values: " .. table.concat(entry.values, ", ") - end - if entry.possible then - result = result .. " possible values: " .. entry.possible:gsub(",", ", ") - end - result = result .. "\n" - result = result .. "# " .. entry.name .. " = ".. entry.default .. "\n\n" - end - end - return result -end - -local function create_translation_file() - local result = "// This file is automatically generated\n" .. - "// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files\n" .. - "// To update it, refer to the bottom of builtin/mainmenu/tab_settings.lua\n\n" .. - "fake_function() {\n" - - local settings = parse_config_file(true, false) - for _, entry in ipairs(settings) do - if entry.type == "category" then - local name_escaped = entry.name:gsub("\"", "\\\"") - result = result .. "\tgettext(\"" .. name_escaped .. "\");\n" - else - if entry.readable_name then - local readable_name_escaped = entry.readable_name:gsub("\"", "\\\"") - result = result .. "\tgettext(\"" .. readable_name_escaped .. "\");\n" - end - if entry.comment ~= "" then - local comment_escaped = entry.comment:gsub("\n", "\\n") - comment_escaped = comment_escaped:gsub("\"", "\\\"") - result = result .. "\tgettext(\"" .. comment_escaped .. "\");\n" - end - end - end - result = result .. "}\n" - return result -end - -if false then - local file = io.open("minetest.conf.example", "w") - if file then - file:write(create_minetest_conf_example()) - file:close() - end -end - -if false then - local file = io.open("src/settings_translation_file.cpp", "w") - if file then - file:write(create_translation_file()) - file:close() - end -end diff --git a/builtin/mainmenu/tab_simple_main.lua b/builtin/mainmenu/tab_simple_main.lua index 434113b5..3818f321 100644 --- a/builtin/mainmenu/tab_simple_main.lua +++ b/builtin/mainmenu/tab_simple_main.lua @@ -17,66 +17,80 @@ -------------------------------------------------------------------------------- local function get_formspec(tabview, name, tabdata) - local retval = "" + -- Update the cached supported proto info, + -- it may have changed after a change by the settings menu. + common_update_cached_supp_proto() + local fav_selected = menudata.favorites[tabdata.fav_selected] - local render_details = dump(core.setting_getbool("public_serverlist")) + local retval = + "label[9.5,0;".. fgettext("Name / Password") .. "]" .. + "field[0.25,3.35;5.5,0.5;te_address;;" .. + core.formspec_escape(core.setting_get("address")) .."]" .. + "field[5.75,3.35;2.25,0.5;te_port;;" .. + core.formspec_escape(core.setting_get("remote_port")) .."]" .. + "button[10,2.6;2,1.5;btn_mp_connect;".. fgettext("Connect") .. "]" .. + "field[9.8,1;2.6,0.5;te_name;;" .. + core.formspec_escape(core.setting_get("name")) .."]" .. + "pwdfield[9.8,2;2.6,0.5;te_pwd;]" - retval = retval .. - "label[8,0.5;".. fgettext("Name/Password") .. "]" .. - "field[0.25,3.25;5.5,0.5;te_address;;" .. - core.formspec_escape(core.setting_get("address")) .."]" .. - "field[5.75,3.25;2.25,0.5;te_port;;" .. - core.formspec_escape(core.setting_get("remote_port")) .."]" .. - "checkbox[8,-0.25;cb_public_serverlist;".. fgettext("Public Serverlist") .. ";" .. - render_details .. "]" - retval = retval .. - "button[8,2.5;4,1.5;btn_mp_connect;".. fgettext("Connect") .. "]" .. - "field[8.75,1.5;3.5,0.5;te_name;;" .. - core.formspec_escape(core.setting_get("name")) .."]" .. - "pwdfield[8.75,2.3;3.5,0.5;te_pwd;]" - - if render_details then - retval = retval .. "tablecolumns[" .. - "color,span=3;" .. - "text,align=right;" .. -- clients - "text,align=center,padding=0.25;" .. -- "/" - "text,align=right,padding=0.25;" .. -- clients_max - image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. - image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. - image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" .. - "color,span=1;" .. - "text,padding=1]" -- name - else - retval = retval .. "tablecolumns[text]" - end - retval = retval .. - "table[-0.05,0;7.55,2.75;favourites;" - - if #menudata.favorites > 0 then - retval = retval .. render_favorite(menudata.favorites[1],render_details) - - for i=2,#menudata.favorites,1 do - retval = retval .. "," .. render_favorite(menudata.favorites[i],render_details) + if tabdata.fav_selected and fav_selected then + if gamedata.fav then + retval = retval .. "button[7.7,2.6;2.3,1.5;btn_delete_favorite;" .. + fgettext("Del. Favorite") .. "]" end end - if tabdata.fav_selected ~= nil then + retval = retval .. "tablecolumns[" .. + image_column(fgettext("Favorite"), "favorite") .. ";" .. + "color,span=3;" .. + "text,align=right;" .. -- clients + "text,align=center,padding=0.25;" .. -- "/" + "text,align=right,padding=0.25;" .. -- clients_max + image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. + image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. + image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" .. + "color,span=1;" .. + "text,padding=1]" .. -- name + "table[-0.05,0;9.2,2.75;favourites;" + + if #menudata.favorites > 0 then + local favs = core.get_favorites("local") + if #favs > 0 then + for i = 1, #favs do + for j = 1, #menudata.favorites do + if menudata.favorites[j].address == favs[i].address and + menudata.favorites[j].port == favs[i].port then + table.insert(menudata.favorites, i, + table.remove(menudata.favorites, j)) + end + end + if favs[i].address ~= menudata.favorites[i].address then + table.insert(menudata.favorites, i, favs[i]) + end + end + end + retval = retval .. render_favorite(menudata.favorites[1], (#favs > 0)) + for i = 2, #menudata.favorites do + retval = retval .. "," .. render_favorite(menudata.favorites[i], (i <= #favs)) + end + end + + if tabdata.fav_selected then retval = retval .. ";" .. tabdata.fav_selected .. "]" else retval = retval .. ";0]" end -- separator - retval = retval .. - "box[-0.28,3.75;12.4,0.1;#FFFFFF]" + retval = retval .. "box[-0.28,3.75;12.4,0.1;#FFFFFF]" -- checkboxes retval = retval .. "checkbox[8.0,3.9;cb_creative;".. fgettext("Creative Mode") .. ";" .. - dump(core.setting_getbool("creative_mode")) .. "]".. + dump(core.setting_getbool("creative_mode")) .. "]".. "checkbox[8.0,4.4;cb_damage;".. fgettext("Enable Damage") .. ";" .. - dump(core.setting_getbool("enable_damage")) .. "]" + dump(core.setting_getbool("enable_damage")) .. "]" -- buttons retval = retval .. "button[0,3.7;8,1.5;btn_start_singleplayer;" .. fgettext("Start Singleplayer") .. "]" .. @@ -87,94 +101,100 @@ end -------------------------------------------------------------------------------- local function main_button_handler(tabview, fields, name, tabdata) - - if fields["btn_start_singleplayer"] then + if fields.btn_start_singleplayer then gamedata.selected_world = gamedata.worldindex gamedata.singleplayer = true core.start() return true end - if fields["favourites"] ~= nil then - local event = core.explode_table_event(fields["favourites"]) - + if fields.favourites then + local event = core.explode_table_event(fields.favourites) if event.type == "CHG" then if event.row <= #menudata.favorites then - local address = menudata.favorites[event.row].address - local port = menudata.favorites[event.row].port + gamedata.fav = false + local favs = core.get_favorites("local") + local fav = menudata.favorites[event.row] + local address = fav.address + local port = fav.port + gamedata.serverdescription = fav.description - if address ~= nil and - port ~= nil then - core.setting_set("address",address) - core.setting_set("remote_port",port) + for i = 1, #favs do + if fav.address == favs[i].address and + fav.port == favs[i].port then + gamedata.fav = true + end end + if address and port then + core.setting_set("address", address) + core.setting_set("remote_port", port) + end tabdata.fav_selected = event.row end + return true end + end + + if fields.btn_delete_favorite then + local current_favourite = core.get_table_index("favourites") + if not current_favourite then return end + + core.delete_favorite(current_favourite) + asyncOnlineFavourites() + tabdata.fav_selected = nil + + core.setting_set("address", "") + core.setting_set("remote_port", "30000") return true end - if fields["cb_public_serverlist"] ~= nil then - core.setting_set("public_serverlist", fields["cb_public_serverlist"]) - - if core.setting_getbool("public_serverlist") then - asyncOnlineFavourites() - else - menudata.favorites = core.get_favorites("local") - end + if fields.cb_creative then + core.setting_set("creative_mode", fields.cb_creative) return true end - if fields["cb_creative"] then - core.setting_set("creative_mode", fields["cb_creative"]) + if fields.cb_damage then + core.setting_set("enable_damage", fields.cb_damage) return true end - if fields["cb_damage"] then - core.setting_set("enable_damage", fields["cb_damage"]) - return true - end - - if fields["btn_mp_connect"] ~= nil or - fields["key_enter"] ~= nil then - - gamedata.playername = fields["te_name"] - gamedata.password = fields["te_pwd"] - gamedata.address = fields["te_address"] - gamedata.port = fields["te_port"] - + if fields.btn_mp_connect or fields.key_enter then + gamedata.playername = fields.te_name + gamedata.password = fields.te_pwd + gamedata.address = fields.te_address + gamedata.port = fields.te_port local fav_idx = core.get_textlist_index("favourites") - if fav_idx ~= nil and fav_idx <= #menudata.favorites and - menudata.favorites[fav_idx].address == fields["te_address"] and - menudata.favorites[fav_idx].port == fields["te_port"] then + if fav_idx and fav_idx <= #menudata.favorites and + menudata.favorites[fav_idx].address == fields.te_address and + menudata.favorites[fav_idx].port == fields.te_port then + local fav = menudata.favorites[fav_idx] + gamedata.servername = fav.name + gamedata.serverdescription = fav.description - gamedata.servername = menudata.favorites[fav_idx].name - gamedata.serverdescription = menudata.favorites[fav_idx].description - - if not is_server_protocol_compat_or_error(menudata.favorites[fav_idx].proto_min, - menudata.favorites[fav_idx].proto_max) then + if menudata.favorites_is_public and + not is_server_protocol_compat_or_error( + fav.proto_min, fav.proto_max) then return true end else - gamedata.servername = "" - gamedata.serverdescription = "" + gamedata.servername = "" + gamedata.serverdescription = "" end gamedata.selected_world = 0 - core.setting_set("address",fields["te_address"]) - core.setting_set("remote_port",fields["te_port"]) + core.setting_set("address", fields.te_address) + core.setting_set("remote_port", fields.te_port) core.start() return true end - if fields["btn_config_sp_world"] ~= nil then + if fields.btn_config_sp_world then local configdialog = create_configure_world_dlg(1) - - if (configdialog ~= nil) then + if configdialog then configdialog:set_parent(tabview) tabview:hide() configdialog:show() @@ -185,21 +205,15 @@ end -------------------------------------------------------------------------------- local function on_activate(type,old_tab,new_tab) - if type == "LEAVE" then - return - end - if core.setting_getbool("public_serverlist") then - asyncOnlineFavourites() - else - menudata.favorites = core.get_favorites("local") - end + if type == "LEAVE" then return end + asyncOnlineFavourites() end -------------------------------------------------------------------------------- -tab_simple_main = { +return { name = "main", caption = fgettext("Main"), cbf_formspec = get_formspec, cbf_button_handler = main_button_handler, on_change = on_activate - } +} diff --git a/builtin/mainmenu/tab_singleplayer.lua b/builtin/mainmenu/tab_singleplayer.lua index a40918af..05060cbc 100644 --- a/builtin/mainmenu/tab_singleplayer.lua +++ b/builtin/mainmenu/tab_singleplayer.lua @@ -241,10 +241,10 @@ local function on_change(type, old_tab, new_tab) end -------------------------------------------------------------------------------- -tab_singleplayer = { +return { name = "singleplayer", caption = fgettext("Singleplayer"), cbf_formspec = get_formspec, cbf_button_handler = main_button_handler, on_change = on_change - } +} diff --git a/builtin/mainmenu/tab_texturepacks.lua b/builtin/mainmenu/tab_texturepacks.lua index 5514d31f..a102fd61 100644 --- a/builtin/mainmenu/tab_texturepacks.lua +++ b/builtin/mainmenu/tab_texturepacks.lua @@ -17,12 +17,17 @@ -------------------------------------------------------------------------------- local function filter_texture_pack_list(list) - local retval = {fgettext("None")} + local retval = {} + for _, item in ipairs(list) do if item ~= "base" then - table.insert(retval, item) + retval[#retval + 1] = item end end + + table.sort(retval) + table.insert(retval, 1, fgettext("None")) + return retval end @@ -31,9 +36,9 @@ local function render_texture_pack_list(list) local retval = "" for i, v in ipairs(list) do - if v:sub(1,1) ~= "." then + if v:sub(1, 1) ~= "." then if retval ~= "" then - retval = retval .."," + retval = retval .. "," end retval = retval .. core.formspec_escape(v) @@ -46,14 +51,14 @@ end -------------------------------------------------------------------------------- local function get_formspec(tabview, name, tabdata) - local retval = "label[4,-0.25;".. fgettext("Select texture pack:") .. "]".. + local retval = "label[4,-0.25;" .. fgettext("Select texture pack:") .. "]" .. "textlist[4,0.25;7.5,5.0;TPs;" local current_texture_path = core.setting_get("texture_path") local list = filter_texture_pack_list(core.get_dir_list(core.get_texturepath(), true)) local index = tonumber(core.setting_get("mainmenu_last_selected_TP")) - if index == nil then index = 1 end + if not index then index = 1 end if current_texture_path == "" then retval = retval .. @@ -62,15 +67,16 @@ local function get_formspec(tabview, name, tabdata) return retval end - local infofile = current_texture_path ..DIR_DELIM.."description.txt" + local infofile = current_texture_path .. DIR_DELIM .. "description.txt" -- This adds backwards compatibility for old texture pack description files named -- "info.txt", and should be removed once all such texture packs have been updated if not file_exists(infofile) then - infofile = current_texture_path ..DIR_DELIM.."info.txt" + infofile = current_texture_path .. DIR_DELIM .. "info.txt" if file_exists(infofile) then - core.log("info.txt is depreciated. description.txt should be used instead."); + core.log("info.txt is depreciated. description.txt should be used instead.") end end + local infotext = "" local f = io.open(infofile, "r") if not f then @@ -80,8 +86,8 @@ local function get_formspec(tabview, name, tabdata) f:close() end - local screenfile = current_texture_path..DIR_DELIM.."screenshot.png" - local no_screenshot = nil + local screenfile = current_texture_path .. DIR_DELIM .. "screenshot.png" + local no_screenshot if not file_exists(screenfile) then screenfile = nil no_screenshot = defaulttexturedir .. "no_screenshot.png" @@ -90,24 +96,24 @@ local function get_formspec(tabview, name, tabdata) return retval .. render_texture_pack_list(list) .. ";" .. index .. "]" .. - "image[0.25,0.25;4.0,3.7;"..core.formspec_escape(screenfile or no_screenshot).."]".. - "textarea[0.6,3.25;3.7,1.5;;"..core.formspec_escape(infotext or "")..";]" + "image[0.25,0.25;4.0,3.7;" .. core.formspec_escape(screenfile or no_screenshot) .. "]" .. + "textarea[0.6,3.5;3.7,1.5;;" .. core.formspec_escape(infotext or "") .. ";]" end -------------------------------------------------------------------------------- local function main_button_handler(tabview, fields, name, tabdata) - if fields["TPs"] ~= nil then + if fields["TPs"] then local event = core.explode_textlist_event(fields["TPs"]) if event.type == "CHG" or event.type == "DCL" then local index = core.get_textlist_index("TPs") - core.setting_set("mainmenu_last_selected_TP", - index) + core.setting_set("mainmenu_last_selected_TP", index) local list = filter_texture_pack_list(core.get_dir_list(core.get_texturepath(), true)) local current_index = core.get_textlist_index("TPs") - if current_index ~= nil and #list >= current_index then - local new_path = core.get_texturepath()..DIR_DELIM..list[current_index] - if list[current_index] == fgettext("None") then new_path = "" end - + if current_index and #list >= current_index then + local new_path = core.get_texturepath() .. DIR_DELIM .. list[current_index] + if list[current_index] == fgettext("None") then + new_path = "" + end core.setting_set("texture_path", new_path) end end @@ -117,10 +123,10 @@ local function main_button_handler(tabview, fields, name, tabdata) end -------------------------------------------------------------------------------- -tab_texturepacks = { +return { name = "texturepacks", caption = fgettext("Texturepacks"), cbf_formspec = get_formspec, cbf_button_handler = main_button_handler, on_change = nil - } +} diff --git a/builtin/mainmenu/textures.lua b/builtin/mainmenu/textures.lua index 075f38ee..dadbb093 100644 --- a/builtin/mainmenu/textures.lua +++ b/builtin/mainmenu/textures.lua @@ -179,7 +179,7 @@ function mm_texture.set_dirt_bg() end end - --use base pack - local minimalpath = defaulttexturedir .. "dirt_bg.png" + -- Use universal fallback texture in textures/base/pack + local minimalpath = defaulttexturedir .. "menu_bg.png" core.set_background("background", minimalpath, true, 128) end diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 607fbe60..93fb8e95 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -209,11 +209,11 @@ keymap_toggle_profiler (Profiler toggle key) key KEY_F6 # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_camera_mode (Toggle camera mode key) key KEY_F7 -# Key for increasing the viewing range. Modifies the minimum viewing range. +# Key for increasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_increase_viewing_range_min (View range increase key) key + -# Key for decreasing the viewing range. Modifies the minimum viewing range. +# Key for decreasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_decrease_viewing_range_min (View range decrease key) key - @@ -232,9 +232,18 @@ address (Server address) string # Note that the port field in the main menu overrides this setting. remote_port (Remote port) int 30000 1 65535 +# Whether to support older servers before protocol version 25. +# Enable if you want to connect to 0.4.12 servers and before. +# Servers starting with 0.4.13 will work, 0.4.12-dev servers may work. +# Disabling this option will protect your password better. +send_pre_v25_init (Support older servers) bool true + # Save the map received by the client on disk. enable_local_map_saving (Saving map received from server) bool false +# Show entity selection boxes +show_entity_selectionbox (Show entity selection boxes) bool true + # Enable usage of remote media server (if provided by server). # Remote servers offer a significantly faster way to download media (e.g. textures) # when connecting to the server. @@ -252,14 +261,12 @@ serverlist_file (Serverlist file) string favoriteservers.txt [***Basic] +# Enable VBO +enable_vbo (VBO) bool true + # Whether to fog out the end of the visible area. enable_fog (Fog) bool true -# Enable a bit lower water surface, so it doesn't "fill" the node completely. -# Note that this is not quite optimized and that smooth lighting on the -# water surface doesn't work with this. -new_style_water (New style water) bool false - # Leaves style: # - Fancy: all faces visible # - Simple: only outer faces, if defined special_tiles are used @@ -279,6 +286,9 @@ enable_clouds (Clouds) bool true # Use 3D cloud look instead of flat. enable_3d_clouds (3D clouds) bool true +# Method used to highlight selected object. +node_highlighting (Node highlighting) enum box box,halo + [***Filtering] # Use mip mapping to scale textures. May slightly increase performance. @@ -308,11 +318,6 @@ texture_clean_transparent (Clean transparent textures) bool false # enabled. texture_min_size (Minimum texture size for filters) int 64 -# Pre-generate all item visuals used in the inventory. -# This increases startup time, but runs smoother in-game. -# The generated textures can easily exceed your VRAM, causing artifacts in the inventory. -preload_item_visuals (Preload inventory textures) bool false - # Experimental option, might cause visible spaces between blocks # when set to higher number than 0. fsaa (FSAA) enum 0 0,1,2,4,8,16 @@ -323,6 +328,11 @@ fsaa (FSAA) enum 0 0,1,2,4,8,16 # Thy only work with the OpenGL video backend. enable_shaders (Shaders) bool true +[****Tone Mapping] + +# Enables filmic tone mapping +tone_mapping (Filmic tone mapping) bool false + [****Bumpmapping] # Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack @@ -385,10 +395,6 @@ enable_waving_plants (Waving plants) bool false [***Advanced] -# Minimum wanted FPS. -# The amount of rendered stuff is dynamically set according to this. and viewing range min and max. -wanted_fps (Wanted FPS) int 30 - # If FPS would go higher than this, limit it by sleeping # to not waste CPU power for no benefit. fps_max (Maximum FPS) int 60 @@ -396,18 +402,14 @@ fps_max (Maximum FPS) int 60 # Maximum FPS when game is paused. pause_fps_max (FPS in pause menu) int 20 -# The allowed adjustment range for the automatic rendering range adjustment. -# Set this to be equal to viewing range minimum to disable the auto-adjustment algorithm. -viewing_range_nodes_max (Viewing range maximum) int 160 +# View distance in nodes. +# Min = 20 +viewing_range (Viewing range) int 100 -# The allowed adjustment range for the automatic rendering range adjustment. -# Set this to be equal to viewing range minimum to disable the auto-adjustment algorithm. -viewing_range_nodes_min (Viewing range minimum) int 35 - -# Vertical initial window size. +# Width component of the initial window size. screenW (Screen width) int 800 -# Horizontal initial window size. +# Height component of the initial window size. screenH (Screen height) int 600 # Fullscreen mode. @@ -454,7 +456,8 @@ fall_bobbing_amount (Fall bobbing) float 0.0 # - interlaced: odd/even line based polarisation screen support. # - topbottom: split screen top/bottom. # - sidebyside: split screen side by side. -3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside +# - pageflip: quadbuffer based 3d. +3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,pageflip # In-game chat console background color (R,G,B). console_color (Console color) string (0,0,0) @@ -481,9 +484,6 @@ desynchronize_mapblock_texture_animation (Desynchronize block animation) bool tr # Useful if there's something to be displayed right or left of hotbar. hud_hotbar_max_width (Maximum hotbar width) float 1.0 -# Enable selection highlighting for nodes (disables selectionbox). -enable_node_highlighting (Node highlighting) bool false - # Enables caching of facedir rotated meshes. enable_mesh_cache (Mesh cache) bool false @@ -507,6 +507,9 @@ directional_colored_fog (Colored fog) bool true # set to the nearest valid value. ambient_occlusion_gamma (Ambient occlusion gamma) float 2.2 0.25 4.0 +# Enables animation of inventory items. +inventory_items_animations (Inventory items animations) bool false + [**Menus] # Use a cloud animation for the main menu background. @@ -560,6 +563,14 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255 # Path to save screenshots at. screenshot_path (Screenshot folder) path +# Format of screenshots. +screenshot_format (Screenshot format) enum png png,jpg,bmp,pcx,ppm,tga + +# Screenshot quality. Only used for JPEG format. +# 1 means worst quality; 100 means best quality. +# Use 0 for default quality. +screenshot_quality (Screenshot quality) int 0 0 100 + [**Advanced] # Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens. @@ -680,6 +691,9 @@ default_password (Default password) string # See /privs in game for a full list on your server and mod configuration. default_privs (Default privileges) string interact, shout +# Privileges that players with basic_privs can grant +basic_privs (Basic Privileges) string interact, shout + # Whether players are shown to clients without any range limit. # Deprecated, use the setting player_transfer_distance instead. unlimited_player_transfer_distance (Unlimited player transfer distance) bool true @@ -693,12 +707,6 @@ enable_pvp (Player versus Player) bool true # If this is set, players will always (re)spawn at the given position. static_spawnpoint (Static spawnpoint) string -# Maximum distance above water level for player spawn. -# Larger values result in spawn points closer to (x = 0, z = 0). -# Smaller values may result in a suitable spawn point not being found, -# resulting in a spawn at (0, 0, 0) possibly buried underground. -vertical_spawn_range (Vertical spawn range) int 16 - # If enabled, new players cannot join with an empty password. disallow_empty_password (Disallow empty passwords) bool false @@ -793,6 +801,15 @@ sqlite_synchronous (Synchronous SQLite) enum 2 0,1,2 # Length of a server tick and the interval at which objects are generally updated over network. dedicated_server_step (Dedicated server step) float 0.1 +# Time in between active block management cycles +active_block_mgmt_interval (Active Block Management interval) float 2.0 + +# Length of time between ABM execution cycles +abm_interval (Active Block Modifier interval) float 1.0 + +# Length of time between NodeTimer execution cycles +nodetimer_interval (NodeTimer interval) float 1.0 + # If enabled, invalid world data won't cause the server to shut down. # Only enable this if you know what you are doing. ignore_world_load_errors (Ignore world errors) bool false @@ -812,7 +829,7 @@ liquid_update (Liquid update tick) float 1.0 # Name of map generator to be used when creating a new world. # Creating a world in the main menu will override this. -mg_name (Mapgen name) enum v6 v5,v6,v7,fractal,singlenode +mg_name (Mapgen name) enum v6 v5,v6,v7,flat,valleys,fractal,singlenode # Water surface level of the world. water_level (Water level) int 1 @@ -829,10 +846,11 @@ max_block_generate_distance (Max block generate distance) int 6 map_generation_limit (Map generation limit) int 31000 0 31000 # Global map generation attributes. +# In Mapgen v6 the 'decorations' flag controls all decorations except trees +# and junglegrass, in all other mapgens this flag controls all decorations. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -# 'trees' and 'flat' flags only have effect in mgv6. -mg_flags (Mapgen flags) flags trees,caves,dungeons,light trees,caves,dungeons,light,flat,notrees,nocaves,nodungeons,nolight,noflat +# Flags starting with 'no' are used to explicitly disable them. +mg_flags (Mapgen flags) flags caves,dungeons,light,decorations caves,dungeons,light,decorations,nocaves,nodungeons,nolight,nodecorations [**Advanced] @@ -866,6 +884,9 @@ mg_biome_np_humidity_blend (Mapgen biome humidity blend noise parameters) noise_ [***Mapgen v5] +# Controls width of tunnels, a smaller value creates wider tunnels. +mgv5_cave_width (Mapgen v5 cave width) float 0.125 + mgv5_np_filler_depth (Mapgen v5 filler depth noise parameters) noise_params 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 mgv5_np_factor (Mapgen v5 factor noise parameters) noise_params 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0 mgv5_np_height (Mapgen v5 height noise parameters) noise_params 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0 @@ -886,10 +907,10 @@ mgv5_np_cave2 (Mapgen v5 cave2 noise parameters) noise_params 0, 12, (50, 50, 50 [***Mapgen v6] # Map generation attributes specific to Mapgen v6. -# When snowbiomes are enabled jungles are enabled and the jungles flag is ignored. +# When snowbiomes are enabled jungles are automatically enabled, the 'jungles' flag is ignored. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -mgv6_spflags (Mapgen v6 flags) flags jungles,biomeblend,mudflow,snowbiomes jungles,biomeblend,mudflow,snowbiomes,nojungles,nobiomeblend,nomudflow,nosnowbiomes +# Flags starting with 'no' are used to explicitly disable them. +mgv6_spflags (Mapgen v6 flags) flags jungles,biomeblend,mudflow,snowbiomes,trees jungles,biomeblend,mudflow,snowbiomes,flat,trees,nojungles,nobiomeblend,nomudflow,nosnowbiomes,noflat,notrees # Controls size of deserts and beaches in Mapgen v6. # When snowbiomes are enabled 'mgv6_freq_desert' is ignored. @@ -911,15 +932,18 @@ mgv6_np_apple_trees (Mapgen v6 apple trees noise parameters) noise_params 0, 1, [***Mapgen v7] # Map generation attributes specific to Mapgen v7. -# 'ridges' are the rivers. +# The 'ridges' flag controls the rivers. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. +# Flags starting with 'no' are used to explicitly disable them. mgv7_spflags (Mapgen v7 flags) flags mountains,ridges mountains,ridges,nomountains,noridges +# Controls width of tunnels, a smaller value creates wider tunnels. +mgv7_cave_width (Mapgen v7 cave width) float 0.3 + mgv7_np_terrain_base (Mapgen v7 terrain base noise parameters) noise_params 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 mgv7_np_terrain_alt (Mapgen v7 terrain altitude noise parameters) noise_params 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 mgv7_np_terrain_persist (Mapgen v7 terrain persistation noise parameters) noise_params 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 -mgv7_np_height_select (Mapgen v7 height select noise parameters) noise_params -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 +mgv7_np_height_select (Mapgen v7 height select noise parameters) noise_params -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0 mgv7_np_filler_depth (Mapgen v7 filler depth noise parameters) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 mgv7_np_mount_height (Mapgen v7 mount height noise parameters) noise_params 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 mgv7_np_ridge_uwater (Mapgen v7 ridge water noise parameters) noise_params 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 @@ -928,65 +952,107 @@ mgv7_np_ridge (Mapgen v7 ridge noise parameters) noise_params 0, 1, (100, 100, 1 mgv7_np_cave1 (Mapgen v7 cave1 noise parameters) noise_params 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 mgv7_np_cave2 (Mapgen v7 cave2 noise parameters) noise_params 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 +[***Mapgen flat] + +# Map generation attributes specific to Mapgen flat. +# Occasional lakes and hills can be added to the flat world. +# Flags that are not specified in the flag string are not modified from the default. +# Flags starting with 'no' are used to explicitly disable them. +mgflat_spflags (Mapgen flat flags) flags lakes,hills,,nolakes,nohills + +# Y of flat ground. +mgflat_ground_level (Mapgen flat ground level) int 8 + +# Y of upper limit of large pseudorandom caves. +mgflat_large_cave_depth (Mapgen flat large cave depth) int -33 + +# Controls width of tunnels, a smaller value creates wider tunnels. +mgflat_cave_width (Mapgen flat cave width) float 0.3 + +# Terrain noise threshold for lakes. +# Controls proportion of world area covered by lakes. +# Adjust towards 0.0 for a larger proportion. +mgflat_lake_threshold (Mapgen flat lake threshold) float -0.45 + +# Controls steepness/depth of lake depressions. +mgflat_lake_steepness (Mapgen flat lake steepness) float 48.0 + +# Terrain noise threshold for hills. +# Controls proportion of world area covered by hills. +# Adjust towards 0.0 for a larger proportion. +mgflat_hill_threshold (Mapgen flat hill threshold) float 0.45 + +# Controls steepness/height of hills. +mgflat_hill_steepness (Mapgen flat hill steepness) float 64.0 + +# Determines terrain shape. +# The 3 numbers in brackets control the scale of the +# terrain, the 3 numbers should be identical. +mgflat_np_terrain (Mapgen flat terrain noise parameters) noise_params 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0 + +mgflat_np_filler_depth (Mapgen flat filler depth noise parameters) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 +mgflat_np_cave1 (Mapgen flat cave1 noise parameters) noise_params 0, 12, (128, 128, 128), 52534, 4, 0.5, 2.0 +mgflat_np_cave2 (Mapgen flat cave2 noise parameters) noise_params 0, 12, (128, 128, 128), 10325, 4, 0.5, 2.0 + [***Mapgen fractal] -# Map generation attributes specific to Mapgen fractal. -# 'julia' selects a julia set to be generated instead of a mandelbrot set. -# Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -mgfractal_spflags (Mapgen fractal flags) flags nojulia julia,nojulia +# Controls width of tunnels, a smaller value creates wider tunnels. +mgfractal_cave_width (Mapgen fractal cave width) float 0.3 -# Mandelbrot set: Iterations of the recursive function. -# Controls scale of finest detail. -mgfractal_m_iterations (Mapgen fractal mandelbrot iterations) int 9 +# Choice of 18 fractals from 9 formulas. +# 1 = 4D "Roundy" mandelbrot set. +# 2 = 4D "Roundy" julia set. +# 3 = 4D "Squarry" mandelbrot set. +# 4 = 4D "Squarry" julia set. +# 5 = 4D "Mandy Cousin" mandelbrot set. +# 6 = 4D "Mandy Cousin" julia set. +# 7 = 4D "Variation" mandelbrot set. +# 8 = 4D "Variation" julia set. +# 9 = 3D "Mandelbrot/Mandelbar" mandelbrot set. +# 10 = 3D "Mandelbrot/Mandelbar" julia set. +# 11 = 3D "Christmas Tree" mandelbrot set. +# 12 = 3D "Christmas Tree" julia set. +# 13 = 3D "Mandelbulb" mandelbrot set. +# 14 = 3D "Mandelbulb" julia set. +# 15 = 3D "Cosine Mandelbulb" mandelbrot set. +# 16 = 3D "Cosine Mandelbulb" julia set. +# 17 = 4D "Mandelbulb" mandelbrot set. +# 18 = 4D "Mandelbulb" julia set. +mgfractal_fractal (Mapgen fractal fractal) int 1 1 18 -# Mandelbrot set: Approximate (X,Y,Z) scales in nodes. -# Format is 3 numbers separated by commas and inside brackets. -mgfractal_m_scale (Mapgen fractal mandelbrot scale) string (1024.0, 256.0, 1024.0) -# Type 'string' is currently used for a v3f. +# Iterations of the recursive function. +# Controls the amount of fine detail. +mgfractal_iterations (Mapgen fractal iterations) int 11 -# Mandelbrot set: (X,Y,Z) offsets from world centre. -# Format is 3 numbers separated by commas and inside brackets. -# Range roughly -2 to 2, multiply by m_scale for offsets in nodes. -mgfractal_m_offset (Mapgen fractal mandelbrot offset) string (1.75, 0.0, 0.0) -# Type 'string' is currently used for a v3f. +# Approximate (X,Y,Z) scale of fractal in nodes. +mgfractal_scale (Mapgen fractal scale) v3f (4096.0, 1024.0, 4096.0) -# Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape. +# (X,Y,Z) offset of fractal from world centre in units of 'scale'. +# Used to move a suitable spawn area of low land close to (0, 0). +# The default is suitable for mandelbrot sets, it needs to be edited for julia sets. +# Range roughly -2 to 2. Multiply by 'scale' for offset in nodes. +mgfractal_offset (Mapgen fractal offset) v3f (1.79, 0.0, 0.0) + +# W co-ordinate of the generated 3D slice of a 4D fractal. +# Determines which 3D slice of the 4D shape is generated. +# Has no effect on 3D fractals. # Range roughly -2 to 2. -mgfractal_m_slice_w (Mapgen fractal mandelbrot slice w) float 0.0 +mgfractal_slice_w (Mapgen fractal slice w) float 0.0 -# Julia set: Iterations of the recursive function. -# Controls scale of finest detail. -mgfractal_j_iterations (Mapgen fractal julia iterations) int 9 - -# Julia set: Approximate (X,Y,Z) scales in nodes. -# Format is 3 numbers separated by commas and inside brackets. -mgfractal_j_scale (Mapgen fractal julia scale) string (2048.0, 512.0, 2048.0) -# Type 'string' is currently used for a v3f. - -# Julia set: (X,Y,Z) offsets from world centre. -# Format is 3 numbers separated by commas and inside brackets. -# Range roughly -2 to 2, multiply by j_scale for offsets in nodes. -mgfractal_j_offset (Mapgen fractal julia offset) string (0.0, 1.0, 0.0) -# Type 'string' is currently used for a v3f. - -# Julia set: W co-ordinate of the generated 3D slice of the 4D shape. -# Range roughly -2 to 2. -mgfractal_j_slice_w (Mapgen fractal julia slice w) float 0.0 - -# Julia set: X value determining the 4D shape. +# Julia set only: X component of hypercomplex constant determining julia shape. # Range roughly -2 to 2. mgfractal_julia_x (Mapgen fractal julia x) float 0.33 -# Julia set: Y value determining the 4D shape. +# Julia set only: Y component of hypercomplex constant determining julia shape. # Range roughly -2 to 2. mgfractal_julia_y (Mapgen fractal julia y) float 0.33 -# Julia set: Z value determining the 4D shape. +# Julia set only: Z component of hypercomplex constant determining julia shape. # Range roughly -2 to 2. mgfractal_julia_z (Mapgen fractal julia z) float 0.33 -# Julia set: W value determining the 4D shape. +# Julia set only: W component of hypercomplex constant determining julia shape. +# Has no effect on 3D fractals. # Range roughly -2 to 2. mgfractal_julia_w (Mapgen fractal julia w) float 0.33 @@ -995,6 +1061,79 @@ mgfractal_np_filler_depth (Mapgen fractal filler depth noise parameters) noise_p mgfractal_np_cave1 (Mapgen fractal cave1 noise parameters) noise_params 0, 12, (128, 128, 128), 52534, 4, 0.5, 2.0 mgfractal_np_cave2 (Mapgen fractal cave2 noise parameters) noise_params 0, 12, (128, 128, 128), 10325, 4, 0.5, 2.0 +# Mapgen Valleys parameters +[***Mapgen Valleys] + +# General parameters +[****General] + +# Map generation attributes specific to Mapgen Valleys. +# 'altitude_chill' makes higher elevations colder, which may cause biome issues. +# 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool, +# it may interfere with delicately adjusted biomes. +# Flags that are not specified in the flag string are not modified from the default. +# Flags starting with 'no' are used to explicitly disable them. +mg_valleys_spflags (Valleys C Flags) flags altitude_chill,humid_rivers altitude_chill,noaltitude_chill,humid_rivers,nohumid_rivers + +# The altitude at which temperature drops by 20C +mgvalleys_altitude_chill (Altitude Chill) int 90 + +# Depth below which you'll find large caves. +mgvalleys_large_cave_depth (Large cave depth) int -33 + +# Creates unpredictable lava features in caves. +# These can make mining difficult. Zero disables them. (0-10) +mgvalleys_lava_features (Lava Features) int 0 + +# Depth below which you'll find massive caves. +mgvalleys_massive_cave_depth (Massive cave depth) int -256 + +# How deep to make rivers +mgvalleys_river_depth (River Depth) int 4 + +# How wide to make rivers +mgvalleys_river_size (River Size) int 5 + +# Creates unpredictable water features in caves. +# These can make mining difficult. Zero disables them. (0-10) +mgvalleys_water_features (Water Features) int 0 + +# Controls width of tunnels, a smaller value creates wider tunnels. +mgvalleys_cave_width (Cave width) float 0.3 + +# Noise parameters +[****Noises] + +# Caves and tunnels form at the intersection of the two noises +mgvalleys_np_cave1 (Cave noise #1) noise_params 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 + +# Caves and tunnels form at the intersection of the two noises +mgvalleys_np_cave2 (Cave noise #2) noise_params 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 + +# The depth of dirt or other filler +mgvalleys_np_filler_depth (Filler Depth) noise_params 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0 + +# Massive caves form here. +mgvalleys_np_massive_caves (Massive cave noise) noise_params 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0 + +# River noise -- rivers occur close to zero +mgvalleys_np_rivers (River Noise) noise_params 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0 + +# Base terrain height +mgvalleys_np_terrain_height (Terrain Height) noise_params -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0 + +# Raises terrain to make valleys around the rivers +mgvalleys_np_valley_depth (Valley Depth) noise_params 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0 + +# Slope and fill work together to modify the heights +mgvalleys_np_inter_valley_fill (Valley Fill) noise_params 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0 + +# Amplifies the valleys +mgvalleys_np_valley_profile (Valley Profile) noise_params 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0 + +# Slope and fill work together to modify the heights +mgvalleys_np_inter_valley_slope (Valley Slope) noise_params 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0 + [*Security] # Prevent mods from doing insecure things like running shell commands. @@ -1004,6 +1143,10 @@ secure.enable_security (Enable mod security) bool false # functions even when mod security is on (via request_insecure_environment()). secure.trusted_mods (Trusted mods) string +# Comma-seperated list of mods that are allowed to access HTTP APIs, which +# allow them to upload and download data to/from the internet. +secure.http_mods (HTTP Mods) string + [Client and Server] # Name of the player. diff --git a/client/shaders/default_shader/opengl_fragment.glsl b/client/shaders/default_shader/opengl_fragment.glsl new file mode 100644 index 00000000..925ab6e1 --- /dev/null +++ b/client/shaders/default_shader/opengl_fragment.glsl @@ -0,0 +1,4 @@ +void main(void) +{ + gl_FragColor = gl_Color; +} diff --git a/client/shaders/default_shader/opengl_vertex.glsl b/client/shaders/default_shader/opengl_vertex.glsl new file mode 100644 index 00000000..d0b16c8b --- /dev/null +++ b/client/shaders/default_shader/opengl_vertex.glsl @@ -0,0 +1,9 @@ +uniform mat4 mWorldViewProj; + +void main(void) +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = mWorldViewProj * gl_Vertex; + + gl_FrontColor = gl_BackColor = gl_Color; +} diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl index 424d3217..6862842a 100644 --- a/client/shaders/nodes_shader/opengl_fragment.glsl +++ b/client/shaders/nodes_shader/opengl_fragment.glsl @@ -20,6 +20,38 @@ bool normalTexturePresent = false; const float e = 2.718281828459; const float BS = 10.0; +#ifdef ENABLE_TONE_MAPPING + +/* Hable's UC2 Tone mapping parameters + A = 0.22; + B = 0.30; + C = 0.10; + D = 0.20; + E = 0.01; + F = 0.30; + W = 11.2; + equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F +*/ + +vec3 uncharted2Tonemap(vec3 x) +{ + return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03334; +} + +vec4 applyToneMapping(vec4 color) +{ + color = vec4(pow(color.rgb, vec3(2.2)), color.a); + const float gamma = 1.6; + const float exposureBias = 5.5; + color.rgb = uncharted2Tonemap(exposureBias * color.rgb); + // Precalculated white_scale from + //vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); + vec3 whiteScale = vec3(1.036015346); + color.rgb *= whiteScale; + return vec4(pow(color.rgb, vec3(1.0 / gamma)), color.a); +} +#endif + void get_texture_flags() { vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0)); @@ -47,15 +79,29 @@ vec4 get_normal_map(vec2 uv) float find_intersection(vec2 dp, vec2 ds) { - const float depth_step = 1.0 / 24.0; float depth = 1.0; - for (int i = 0 ; i < 24 ; i++) { + float best_depth = 0.0; + float size = 0.0625; + for (int i = 0; i < 15; i++) { + depth -= size; float h = texture2D(normalTexture, dp + ds * depth).a; - if (h >= depth) + if (depth <= h) { + best_depth = depth; break; - depth -= depth_step; + } } - return depth; + depth = best_depth; + for (int i = 0; i < 4; i++) { + size *= 0.5; + float h = texture2D(normalTexture,dp + ds * depth).a; + if (depth <= h) { + best_depth = depth; + depth += size; + } else { + depth -= size; + } + } + return best_depth; } float find_intersectionRGB(vec2 dp, vec2 ds) @@ -146,22 +192,26 @@ void main(void) color = base.rgb; #endif -#if MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE + vec4 col = vec4(color.rgb * gl_Color.rgb, 1.0); + +#if MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT float alpha = gl_Color.a; - vec4 col = vec4(color.rgb, alpha); - col *= gl_Color; if (fogDistance != 0.0) { float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); alpha = mix(alpha, 0.0, d); } - gl_FragColor = vec4(col.rgb, alpha); + col = vec4(col.rgb, alpha); #else - vec4 col = vec4(color.rgb, base.a); - col *= gl_Color; if (fogDistance != 0.0) { float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); col = mix(col, skyBgColor, d); } - gl_FragColor = vec4(col.rgb, base.a); + col = vec4(col.rgb, base.a); +#endif + +#ifdef ENABLE_TONE_MAPPING + gl_FragColor = applyToneMapping(col); +#else + gl_FragColor = col; #endif } diff --git a/client/shaders/nodes_shader/opengl_vertex.glsl b/client/shaders/nodes_shader/opengl_vertex.glsl index 91536ba1..28c5f197 100644 --- a/client/shaders/nodes_shader/opengl_vertex.glsl +++ b/client/shaders/nodes_shader/opengl_vertex.glsl @@ -1,52 +1,51 @@ -uniform mat4 mWorldViewProj; -uniform mat4 mInvWorld; -uniform mat4 mTransWorld; -uniform mat4 mWorld; - -uniform float dayNightRatio; -uniform vec3 eyePosition; -uniform float animationTimer; - -varying vec3 vPosition; -varying vec3 worldPosition; - -varying vec3 eyeVec; -varying vec3 lightVec; -varying vec3 tsEyeVec; -varying vec3 tsLightVec; +uniform mat4 mWorldViewProj; +uniform mat4 mInvWorld; +uniform mat4 mTransWorld; +uniform mat4 mWorld; + +uniform float dayNightRatio; +uniform vec3 eyePosition; +uniform float animationTimer; + +varying vec3 vPosition; +varying vec3 worldPosition; + +varying vec3 eyeVec; +varying vec3 lightVec; +varying vec3 tsEyeVec; +varying vec3 tsLightVec; varying float area_enable_parallax; -varying float disp; - -const float e = 2.718281828459; -const float BS = 10.0; - + +const float e = 2.718281828459; +const float BS = 10.0; + float smoothCurve(float x) { return x * x * (3.0 - 2.0 * x); -} +} float triangleWave(float x) { return abs(fract(x + 0.5) * 2.0 - 1.0); -} +} float smoothTriangleWave(float x) { return smoothCurve(triangleWave(x)) * 2.0 - 1.0; -} - +} -void main(void) -{ - gl_TexCoord[0] = gl_MultiTexCoord0; - //TODO: make offset depending on view angle and parallax uv displacement - //thats for textures that doesnt align vertically, like dirt with grass + +void main(void) +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + //TODO: make offset depending on view angle and parallax uv displacement + //thats for textures that doesnt align vertically, like dirt with grass //gl_TexCoord[0].y += 0.008; - - //Allow parallax/relief mapping only for certain kind of nodes + + //Allow parallax/relief mapping only for certain kind of nodes //Variable is also used to control area of the effect #if (DRAW_TYPE == NDT_NORMAL || DRAW_TYPE == NDT_LIQUID || DRAW_TYPE == NDT_FLOWINGLIQUID) area_enable_parallax = 1.0; @@ -55,57 +54,62 @@ void main(void) #endif +float disp_x; +float disp_z; #if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES) || (MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS) vec4 pos2 = mWorld * gl_Vertex; float tOffset = (pos2.x + pos2.y) * 0.001 + pos2.z * 0.002; - disp = (smoothTriangleWave(animationTimer * 31.0 + tOffset) + + disp_x = (smoothTriangleWave(animationTimer * 23.0 + tOffset) + + smoothTriangleWave(animationTimer * 11.0 + tOffset)) * 0.4; + disp_z = (smoothTriangleWave(animationTimer * 31.0 + tOffset) + smoothTriangleWave(animationTimer * 29.0 + tOffset) + - smoothTriangleWave(animationTimer * 13.0 + tOffset)) - 0.9; + smoothTriangleWave(animationTimer * 13.0 + tOffset)) * 0.5; #endif #if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER - vec4 pos = gl_Vertex; - pos.y -= 2.0; - float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH); - pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT; - gl_Position = mWorldViewProj * pos; -#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES - vec4 pos = gl_Vertex; - pos.x += disp * 0.1; - pos.y += disp * 0.1; - pos.z += disp; - gl_Position = mWorldViewProj * pos; -#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS - vec4 pos = gl_Vertex; - if (gl_TexCoord[0].y < 0.05) { - pos.z += disp; - } - gl_Position = mWorldViewProj * pos; -#else - gl_Position = mWorldViewProj * gl_Vertex; -#endif - + vec4 pos = gl_Vertex; + pos.y -= 2.0; + float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH); + pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT; + gl_Position = mWorldViewProj * pos; +#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES + vec4 pos = gl_Vertex; + pos.x += disp_x; + pos.y += disp_z * 0.1; + pos.z += disp_z; + gl_Position = mWorldViewProj * pos; +#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS + vec4 pos = gl_Vertex; + if (gl_TexCoord[0].y < 0.05) { + pos.x += disp_x; + pos.z += disp_z; + } + gl_Position = mWorldViewProj * pos; +#else + gl_Position = mWorldViewProj * gl_Vertex; +#endif - vPosition = gl_Position.xyz; - worldPosition = (mWorld * gl_Vertex).xyz; + + vPosition = gl_Position.xyz; + worldPosition = (mWorld * gl_Vertex).xyz; // Don't generate heightmaps when too far from the eye - float dist = distance (vec3(0.0, 0.0 ,0.0), vPosition); + float dist = distance (vec3(0.0, 0.0, 0.0), vPosition); if (dist > 150.0) { area_enable_parallax = 0.0; } - vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); - - vec3 normal, tangent, binormal; - normal = normalize(gl_NormalMatrix * gl_Normal); + vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); + + vec3 normal, tangent, binormal; + normal = normalize(gl_NormalMatrix * gl_Normal); tangent = normalize(gl_NormalMatrix * gl_MultiTexCoord1.xyz); binormal = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz); vec3 v; - - lightVec = sunPosition - worldPosition; + + lightVec = sunPosition - worldPosition; v.x = dot(lightVec, tangent); v.y = dot(lightVec, binormal); v.z = dot(lightVec, normal); @@ -116,32 +120,32 @@ void main(void) v.y = dot(eyeVec, binormal); v.z = dot(eyeVec, normal); tsEyeVec = normalize (v); - - vec4 color; - float day = gl_Color.r; - float night = gl_Color.g; - float light_source = gl_Color.b; - - float rg = mix(night, day, dayNightRatio); - rg += light_source * 2.5; // Make light sources brighter - float b = rg; - - // Moonlight is blue - b += (day - night) / 13.0; - rg -= (day - night) / 23.0; - - // Emphase blue a bit in darker places - // See C++ implementation in mapblock_mesh.cpp finalColorBlend() - b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025); - - // Artificial light is yellow-ish - // See C++ implementation in mapblock_mesh.cpp finalColorBlend() - rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); - - color.r = rg; - color.g = rg; - color.b = b; - - color.a = gl_Color.a; - gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0); -} + + vec4 color; + float day = gl_Color.r; + float night = gl_Color.g; + float light_source = gl_Color.b; + + float rg = mix(night, day, dayNightRatio); + rg += light_source * 2.5; // Make light sources brighter + float b = rg; + + // Moonlight is blue + b += (day - night) / 13.0; + rg -= (day - night) / 23.0; + + // Emphase blue a bit in darker places + // See C++ implementation in mapblock_mesh.cpp finalColorBlend() + b += max(0.0, (1.0 - abs(b - 0.13) / 0.17) * 0.025); + + // Artificial light is yellow-ish + // See C++ implementation in mapblock_mesh.cpp finalColorBlend() + rg += max(0.0, (1.0 - abs(rg - 0.85) / 0.15) * 0.065); + + color.r = rg; + color.g = rg; + color.b = b; + + color.a = gl_Color.a; + gl_FrontColor = gl_BackColor = clamp(color, 0.0, 1.0); +} diff --git a/client/shaders/selection_shader/opengl_fragment.glsl b/client/shaders/selection_shader/opengl_fragment.glsl new file mode 100644 index 00000000..c679d0e1 --- /dev/null +++ b/client/shaders/selection_shader/opengl_fragment.glsl @@ -0,0 +1,9 @@ +uniform sampler2D baseTexture; + +void main(void) +{ + vec2 uv = gl_TexCoord[0].st; + vec4 color = texture2D(baseTexture, uv); + color.rgb *= gl_Color.rgb; + gl_FragColor = color; +} diff --git a/client/shaders/selection_shader/opengl_vertex.glsl b/client/shaders/selection_shader/opengl_vertex.glsl new file mode 100644 index 00000000..d0b16c8b --- /dev/null +++ b/client/shaders/selection_shader/opengl_vertex.glsl @@ -0,0 +1,9 @@ +uniform mat4 mWorldViewProj; + +void main(void) +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = mWorldViewProj * gl_Vertex; + + gl_FrontColor = gl_BackColor = gl_Color; +} diff --git a/client/shaders/water_surface_shader/opengl_fragment.glsl b/client/shaders/water_surface_shader/opengl_fragment.glsl index 75751e24..1fa66954 100644 --- a/client/shaders/water_surface_shader/opengl_fragment.glsl +++ b/client/shaders/water_surface_shader/opengl_fragment.glsl @@ -22,6 +22,38 @@ bool texSeamless = false; const float e = 2.718281828459; const float BS = 10.0; +#ifdef ENABLE_TONE_MAPPING + +/* Hable's UC2 Tone mapping parameters + A = 0.22; + B = 0.30; + C = 0.10; + D = 0.20; + E = 0.01; + F = 0.30; + W = 11.2; + equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F +*/ + +vec3 uncharted2Tonemap(vec3 x) +{ + return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03334; +} + +vec4 applyToneMapping(vec4 color) +{ + color = vec4(pow(color.rgb, vec3(2.2)), color.a); + const float gamma = 1.6; + const float exposureBias = 5.5; + color.rgb = uncharted2Tonemap(exposureBias * color.rgb); + // Precalculated white_scale from + //vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); + vec3 whiteScale = vec3(1.036015346); + color.rgb *= whiteScale; + return vec4(pow(color.rgb, vec3(1.0 / gamma)), color.a); +} +#endif + void get_texture_flags() { vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0)); @@ -116,22 +148,26 @@ vec4 base = texture2D(baseTexture, uv).rgba; color = base.rgb; #endif + vec4 col = vec4(color.rgb * gl_Color.rgb, 1.0); + #if MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE float alpha = gl_Color.a; - vec4 col = vec4(color.rgb, alpha); - col *= gl_Color; - if(fogDistance != 0.0){ + if (fogDistance != 0.0) { float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); alpha = mix(alpha, 0.0, d); } - gl_FragColor = vec4(col.rgb, alpha); + col = vec4(col.rgb, alpha); #else - vec4 col = vec4(color.rgb, base.a); - col *= gl_Color; - if(fogDistance != 0.0){ + if (fogDistance != 0.0) { float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); col = mix(col, skyBgColor, d); } - gl_FragColor = vec4(col.rgb, base.a); + col = vec4(col.rgb, base.a); +#endif + +#ifdef ENABLE_TONE_MAPPING + gl_FragColor = applyToneMapping(col); +#else + gl_FragColor = col; #endif } diff --git a/client/shaders/water_surface_shader/opengl_vertex.glsl b/client/shaders/water_surface_shader/opengl_vertex.glsl index 7ae517d8..9b461f4c 100644 --- a/client/shaders/water_surface_shader/opengl_vertex.glsl +++ b/client/shaders/water_surface_shader/opengl_vertex.glsl @@ -1,144 +1,144 @@ -uniform mat4 mWorldViewProj; -uniform mat4 mInvWorld; -uniform mat4 mTransWorld; -uniform mat4 mWorld; - -uniform float dayNightRatio; -uniform vec3 eyePosition; -uniform float animationTimer; - -varying vec3 vPosition; -varying vec3 worldPosition; - -varying vec3 eyeVec; -varying vec3 lightVec; -varying vec3 tsEyeVec; -varying vec3 tsLightVec; - -const float e = 2.718281828459; -const float BS = 10.0; - +uniform mat4 mWorldViewProj; +uniform mat4 mInvWorld; +uniform mat4 mTransWorld; +uniform mat4 mWorld; + +uniform float dayNightRatio; +uniform vec3 eyePosition; +uniform float animationTimer; + +varying vec3 vPosition; +varying vec3 worldPosition; + +varying vec3 eyeVec; +varying vec3 lightVec; +varying vec3 tsEyeVec; +varying vec3 tsLightVec; + +const float e = 2.718281828459; +const float BS = 10.0; + float smoothCurve(float x) { return x * x * (3.0 - 2.0 * x); -} +} float triangleWave(float x) { return abs(fract( x + 0.5 ) * 2.0 - 1.0); -} +} float smoothTriangleWave(float x) { return smoothCurve(triangleWave( x )) * 2.0 - 1.0; -} - -void main(void) -{ - gl_TexCoord[0] = gl_MultiTexCoord0; +} -#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER - vec4 pos = gl_Vertex; - pos.y -= 2.0; - - float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH); - - pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT; - gl_Position = mWorldViewProj * pos; -#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES - vec4 pos = gl_Vertex; - vec4 pos2 = mWorld * gl_Vertex; - /* - * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition) - * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication) - * And bufferize calcul to a float - */ - float pos2XpZ = pos2.x + pos2.z; - pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * 0.01) * 2.0 - 1.0) * 0.4; - pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.2; - pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.4; - gl_Position = mWorldViewProj * pos; -#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS - vec4 pos = gl_Vertex; - vec4 pos2 = mWorld * gl_Vertex; - if (gl_TexCoord[0].y < 0.05) { - /* - * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition) - * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication) - * And bufferize calcul to a float - */ - float pos2XpZ = pos2.x + pos2.z; - pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2XpZ * 0.1) * 2.0 - 1.0) * 0.8; - pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2XpZ * -0.5) * 2.0 - 1.0) * 0.4; - } - gl_Position = mWorldViewProj * pos; -#else - gl_Position = mWorldViewProj * gl_Vertex; -#endif - - vPosition = gl_Position.xyz; - worldPosition = (mWorld * gl_Vertex).xyz; - vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); - - vec3 normal, tangent, binormal; - normal = normalize(gl_NormalMatrix * gl_Normal); - if (gl_Normal.x > 0.5) { - // 1.0, 0.0, 0.0 - tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, -1.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); - } else if (gl_Normal.x < -0.5) { - // -1.0, 0.0, 0.0 - tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); - } else if (gl_Normal.y > 0.5) { - // 0.0, 1.0, 0.0 - tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); - } else if (gl_Normal.y < -0.5) { - // 0.0, -1.0, 0.0 - tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); - } else if (gl_Normal.z > 0.5) { - // 0.0, 0.0, 1.0 - tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); - } else if (gl_Normal.z < -0.5) { - // 0.0, 0.0, -1.0 - tangent = normalize(gl_NormalMatrix * vec3(-1.0, 0.0, 0.0)); - binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); - } - mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, - tangent.y, binormal.y, normal.y, - tangent.z, binormal.z, normal.z); - - lightVec = sunPosition - worldPosition; - tsLightVec = lightVec * tbnMatrix; - eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz; - tsEyeVec = eyeVec * tbnMatrix; - - vec4 color; - float day = gl_Color.r; - float night = gl_Color.g; - float light_source = gl_Color.b; - - float rg = mix(night, day, dayNightRatio); - rg += light_source * 2.5; // Make light sources brighter - float b = rg; - - // Moonlight is blue - b += (day - night) / 13.0; - rg -= (day - night) / 23.0; - - // Emphase blue a bit in darker places - // See C++ implementation in mapblock_mesh.cpp finalColorBlend() - b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025); - - // Artificial light is yellow-ish - // See C++ implementation in mapblock_mesh.cpp finalColorBlend() - rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); - - color.r = rg; - color.g = rg; - color.b = b; - - color.a = gl_Color.a; - gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0); -} +void main(void) +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + +#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER + vec4 pos = gl_Vertex; + pos.y -= 2.0; + + float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH); + + pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT; + gl_Position = mWorldViewProj * pos; +#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES + vec4 pos = gl_Vertex; + vec4 pos2 = mWorld * gl_Vertex; + /* + * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition) + * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication) + * And bufferize calcul to a float + */ + float pos2XpZ = pos2.x + pos2.z; + pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * 0.01) * 2.0 - 1.0) * 0.4; + pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.2; + pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.4; + gl_Position = mWorldViewProj * pos; +#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS + vec4 pos = gl_Vertex; + vec4 pos2 = mWorld * gl_Vertex; + if (gl_TexCoord[0].y < 0.05) { + /* + * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition) + * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication) + * And bufferize calcul to a float + */ + float pos2XpZ = pos2.x + pos2.z; + pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2XpZ * 0.1) * 2.0 - 1.0) * 0.8; + pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2XpZ * -0.5) * 2.0 - 1.0) * 0.4; + } + gl_Position = mWorldViewProj * pos; +#else + gl_Position = mWorldViewProj * gl_Vertex; +#endif + + vPosition = gl_Position.xyz; + worldPosition = (mWorld * gl_Vertex).xyz; + vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); + + vec3 normal, tangent, binormal; + normal = normalize(gl_NormalMatrix * gl_Normal); + if (gl_Normal.x > 0.5) { + // 1.0, 0.0, 0.0 + tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, -1.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); + } else if (gl_Normal.x < -0.5) { + // -1.0, 0.0, 0.0 + tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); + } else if (gl_Normal.y > 0.5) { + // 0.0, 1.0, 0.0 + tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); + } else if (gl_Normal.y < -0.5) { + // 0.0, -1.0, 0.0 + tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0)); + } else if (gl_Normal.z > 0.5) { + // 0.0, 0.0, 1.0 + tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); + } else if (gl_Normal.z < -0.5) { + // 0.0, 0.0, -1.0 + tangent = normalize(gl_NormalMatrix * vec3(-1.0, 0.0, 0.0)); + binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0)); + } + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + + lightVec = sunPosition - worldPosition; + tsLightVec = lightVec * tbnMatrix; + eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz; + tsEyeVec = eyeVec * tbnMatrix; + + vec4 color; + float day = gl_Color.r; + float night = gl_Color.g; + float light_source = gl_Color.b; + + float rg = mix(night, day, dayNightRatio); + rg += light_source * 2.5; // Make light sources brighter + float b = rg; + + // Moonlight is blue + b += (day - night) / 13.0; + rg -= (day - night) / 23.0; + + // Emphase blue a bit in darker places + // See C++ implementation in mapblock_mesh.cpp finalColorBlend() + b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025); + + // Artificial light is yellow-ish + // See C++ implementation in mapblock_mesh.cpp finalColorBlend() + rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); + + color.r = rg; + color.g = rg; + color.b = b; + + color.a = gl_Color.a; + gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0); +} diff --git a/client/shaders/wielded_shader/opengl_vertex.glsl b/client/shaders/wielded_shader/opengl_vertex.glsl index a2ab9fa5..c33b0a7d 100644 --- a/client/shaders/wielded_shader/opengl_vertex.glsl +++ b/client/shaders/wielded_shader/opengl_vertex.glsl @@ -1,35 +1,35 @@ -uniform mat4 mWorldViewProj; -uniform mat4 mInvWorld; -uniform mat4 mTransWorld; -uniform mat4 mWorld; - -uniform float dayNightRatio; -uniform vec3 eyePosition; -uniform float animationTimer; - -varying vec3 vPosition; -varying vec3 worldPosition; - -varying vec3 eyeVec; -varying vec3 lightVec; -varying vec3 tsEyeVec; -varying vec3 tsLightVec; - -const float e = 2.718281828459; -const float BS = 10.0; - -void main(void) -{ - gl_TexCoord[0] = gl_MultiTexCoord0; - gl_Position = mWorldViewProj * gl_Vertex; - - vPosition = gl_Position.xyz; - worldPosition = (mWorld * gl_Vertex).xyz; +uniform mat4 mWorldViewProj; +uniform mat4 mInvWorld; +uniform mat4 mTransWorld; +uniform mat4 mWorld; - vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); - - lightVec = sunPosition - worldPosition; +uniform float dayNightRatio; +uniform vec3 eyePosition; +uniform float animationTimer; + +varying vec3 vPosition; +varying vec3 worldPosition; + +varying vec3 eyeVec; +varying vec3 lightVec; +varying vec3 tsEyeVec; +varying vec3 tsLightVec; + +const float e = 2.718281828459; +const float BS = 10.0; + +void main(void) +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = mWorldViewProj * gl_Vertex; + + vPosition = gl_Position.xyz; + worldPosition = (mWorld * gl_Vertex).xyz; + + vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); + + lightVec = sunPosition - worldPosition; eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz; - - gl_FrontColor = gl_BackColor = gl_Color; -} + + gl_FrontColor = gl_BackColor = gl_Color; +} diff --git a/cmake/Modules/FindLua.cmake b/cmake/Modules/FindLua.cmake deleted file mode 100644 index 479dfcf4..00000000 --- a/cmake/Modules/FindLua.cmake +++ /dev/null @@ -1,25 +0,0 @@ - -option(ENABLE_LUAJIT "Enable LuaJIT support" TRUE) -mark_as_advanced(LUA_LIBRARY LUA_INCLUDE_DIR) -set(USE_LUAJIT FALSE) - -if(ENABLE_LUAJIT) - find_library(LUA_LIBRARY luajit - NAMES luajit-5.1) - find_path(LUA_INCLUDE_DIR luajit.h - NAMES luajit.h - PATH_SUFFIXES luajit-2.0) - if(LUA_LIBRARY AND LUA_INCLUDE_DIR) - set(USE_LUAJIT TRUE) - endif() -else() - message (STATUS "LuaJIT detection disabled! (ENABLE_LUAJIT=0)") -endif() - -if(NOT USE_LUAJIT) - message(STATUS "LuaJIT not found, using bundled Lua.") - set(LUA_LIBRARY "lua") - set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src") - add_subdirectory(lua) -endif() - diff --git a/cmake/Modules/FindLuaJIT.cmake b/cmake/Modules/FindLuaJIT.cmake new file mode 100644 index 00000000..e4335d83 --- /dev/null +++ b/cmake/Modules/FindLuaJIT.cmake @@ -0,0 +1,50 @@ +# Locate LuaJIT library +# This module defines +# LUAJIT_FOUND, if false, do not try to link to Lua +# LUA_INCLUDE_DIR, where to find lua.h +# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8) +# +# This module is similar to FindLua51.cmake except that it finds LuaJit instead. + +FIND_PATH(LUA_INCLUDE_DIR luajit.h + HINTS + $ENV{LUA_DIR} + PATH_SUFFIXES include/luajit-2.0 include/luajit-5_1-2.0 include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt +) + +FIND_LIBRARY(LUA_LIBRARY + NAMES luajit-5.1 + HINTS + $ENV{LUA_DIR} + PATH_SUFFIXES lib64 lib + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt +) + +IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/luajit.h") + FILE(STRINGS "${LUA_INCLUDE_DIR}/luajit.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT .+\"") + + STRING(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}") + UNSET(lua_version_str) +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if +# all listed variables are TRUE +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit + REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR + VERSION_VAR LUA_VERSION_STRING) + +MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY) diff --git a/cmake/Modules/FindNcursesw.cmake b/cmake/Modules/FindNcursesw.cmake index dcb7cdda..e572c704 100644 --- a/cmake/Modules/FindNcursesw.cmake +++ b/cmake/Modules/FindNcursesw.cmake @@ -115,7 +115,7 @@ if(CURSES_USE_NCURSESW) get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH) find_path(CURSES_INCLUDE_PATH - NAMES ncursesw/ncurses.h ncursesw/curses.h + NAMES ncursesw/ncurses.h ncursesw/curses.h ncurses.h curses.h HINTS "${_cursesParentDir}/include" ) @@ -147,6 +147,21 @@ if(CURSES_USE_NCURSESW) set(CURSES_HAVE_NCURSESW_CURSES_H "CURSES_HAVE_NCURSESW_CURSES_H-NOTFOUND") endif() endif() + if(NOT DEFINED CURSES_HAVE_NCURSES_H) + if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses.h") + set(CURSES_HAVE_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses.h") + else() + set(CURSES_HAVE_NCURSES_H "CURSES_HAVE_NCURSES_H-NOTFOUND") + endif() + endif() + if(NOT DEFINED CURSES_HAVE_CURSES_H) + if(EXISTS "${CURSES_INCLUDE_PATH}/curses.h") + set(CURSES_HAVE_CURSES_H "${CURSES_INCLUDE_PATH}/curses.h") + else() + set(CURSES_HAVE_CURSES_H "CURSES_HAVE_CURSES_H-NOTFOUND") + endif() + endif() + find_library(CURSES_FORM_LIBRARY form HINTS "${_cursesLibDir}" DOC "Path to libform.so or .lib or .a") diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index d35fbf65..3618b852 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -1,34 +1,53 @@ -DOXYFILE_ENCODING = UTF-8 - -PROJECT_NAME = "Minetest" +# Project properties +PROJECT_NAME = @PROJECT_NAME_CAPITALIZED@ PROJECT_NUMBER = @VERSION_STRING@ +PROJECT_LOGO = @CMAKE_CURRENT_SOURCE_DIR@/misc/minetest.svg -STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@/src +# Parsing JAVADOC_AUTOBRIEF = YES EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES SORT_MEMBERS_CTORS_1ST = YES WARN_IF_UNDOCUMENTED = NO +BUILTIN_STL_SUPPORT = YES +PREDEFINED = "USE_SPATIAL=1" \ + "USE_LEVELDB=1" \ + "USE_REDIS=1" \ + "USE_SOUND=1" \ + "USE_CURL=1" \ + "USE_FREETYPE=1" \ + "USE_GETTEXT=1" -INPUT = @CMAKE_CURRENT_SOURCE_DIR@/src/ \ +# Input +RECURSIVE = NO +STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@/src +INPUT = @CMAKE_CURRENT_SOURCE_DIR@/doc/main_page.dox \ + @CMAKE_CURRENT_SOURCE_DIR@/src/ \ @CMAKE_CURRENT_SOURCE_DIR@/src/client \ @CMAKE_CURRENT_SOURCE_DIR@/src/network \ @CMAKE_CURRENT_SOURCE_DIR@/src/util \ @CMAKE_CURRENT_SOURCE_DIR@/src/script \ @CMAKE_CURRENT_SOURCE_DIR@/src/script/common \ @CMAKE_CURRENT_SOURCE_DIR@/src/script/cpp_api \ - @CMAKE_CURRENT_SOURCE_DIR@/src/script/lua_api -RECURSIVE = NO - -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -GENERATE_LATEX = NO -PAPER_TYPE = a4wide + @CMAKE_CURRENT_SOURCE_DIR@/src/script/lua_api \ + @CMAKE_CURRENT_SOURCE_DIR@/src/threading +# Dot graphs HAVE_DOT = @DOXYGEN_DOT_FOUND@ CALL_GRAPH = YES CALLER_GRAPH = YES MAX_DOT_GRAPH_DEPTH = 3 DOT_MULTI_TARGETS = YES +DOT_IMAGE_FORMAT = svg + +# Output +GENERATE_LATEX = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +SEARCHENGINE = YES +DISABLE_INDEX = YES +GENERATE_TREEVIEW = YES +HTML_DYNAMIC_SECTIONS = YES +HTML_TIMESTAMP = YES diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 63e4971e..593e0c43 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Modding API Reference 0.4.13 +Minetest Lua Modding API Reference 0.4.14 ========================================= * More information at * Developer Wiki: @@ -243,6 +243,7 @@ Example: default_dirt.png^default_grass_side.png `default_grass_side.png` is overlayed over `default_dirt.png`. +The texture with the lower resolution will be automatically upscaled to the higher resolution texture. ### Texture grouping Textures can be grouped together by enclosing them in `(` and `)`. @@ -264,20 +265,27 @@ Example: default_cobble.png^[crack:10:1 -#### `[combine:x:,=:,=` +#### `[combine:x:,=:,=:...` * `` = width * `` = height -* ``/`` = x positions -* ``/`` = y positions -* ``/`` = textures to combine +* `` = x position +* `` = y position +* `` = texture to combine -Create a texture of size `` times `` and blit `` to (``,``) -and blit `` to (``,``). +Creates a texture of size `` times `` and blits the listed files to their +specified coordinates. Example: [combine:16x32:0,0=default_cobble.png:0,16=default_wood.png +#### `[resize:x` +Resizes the texture to the given dimensions. + +Example: + + default_sandstone.png^[resize:16x16 + #### `[brighten` Brightens the texture. @@ -357,8 +365,13 @@ The mask is applied using binary AND. #### `[colorize::` Colorize the textures with the given color. `` is specified as a `ColorString`. -`` is an int ranging from 0 to 255, and specifies how much of the -color to apply. If ommitted, the alpha will be used. +`` is an int ranging from 0 to 255 or the word "`alpha`". If +it is an int, then it specifies how far to interpolate between the +colors where 0 is only the texture color and 255 is only ``. If +omitted, the alpha of `` will be used as the ratio. If it is +the word "`alpha`", then each texture pixel will contain the RGB of +`` and the alpha of `` multiplied by the alpha of the +texture pixel. Sounds ------ @@ -541,9 +554,9 @@ node definition: ^ The rotation of the node is stored in param2. Furnaces and chests are rotated this way. Can be made by using minetest.dir_to_facedir(). Values range 0 - 23 - facedir modulo 4 = axisdir + facedir / 4 = axis direction: 0 = y+ 1 = z+ 2 = z- 3 = x+ 4 = x- 5 = y- - facedir's two less significant bits are rotation around the axis + facedir modulo 4 = rotation around that axis paramtype2 == "leveled" paramtype2 == "degrotate" ^ The rotation of this node is stored in param2. Plants are rotated this way. @@ -617,6 +630,18 @@ A nodebox is defined as any of: wall_bottom = box, wall_side = box } + { + -- A node that has optional boxes depending on neighbouring nodes' + -- presence and type. See also `connects_to`. + type = "connected", + fixed = box OR {box1, box2, ...} + connect_top = box OR {box1, box2, ...} + connect_bottom = box OR {box1, box2, ...} + connect_front = box OR {box1, box2, ...} + connect_left = box OR {box1, box2, ...} + connect_back = box OR {box1, box2, ...} + connect_right = box OR {box1, box2, ...} + } A `box` is defined as: @@ -763,7 +788,7 @@ Creates veins of ore varying in density by according to the intersection of two instances of 3d perlin noise with diffferent seeds, both described by `noise_params`. `random_factor` varies the influence random chance has on placement of an ore inside the vein, which is `1` by default. Note that -modifying this parameter may require adjusting `noise_threshhold`. +modifying this parameter may require adjusting `noise_threshold`. The parameters `clust_scarcity`, `clust_num_ores`, and `clust_size` are ignored by this ore type. This ore type is difficult to control since it is sensitive to small changes. The following is a decent set of parameters to work from: @@ -777,7 +802,7 @@ to small changes. The following is a decent set of parameters to work from: persist = 0.5, flags = "eased", }, - noise_threshhold = 1.6 + noise_threshold = 1.6 WARNING: Use this ore type *very* sparingly since it is ~200x more computationally expensive than any other ore. @@ -928,6 +953,7 @@ Displays a horizontal bar made up of half-images. * `number`: Number of items in the inventory to be displayed. * `item`: Position of item that is selected. * `direction` +* `offset`: offset in pixels from position. ### `waypoint` Displays distance to selected world position. @@ -1305,10 +1331,12 @@ mentioned in "Nodes". However, it is possible to insert extra data into a node. It is called "node metadata"; See "`NodeMetaRef`". Metadata contains two things: + * A key-value store * An inventory Some of the values in the key-value store are handled specially: + * `formspec`: Defines a right-click inventory menu. See "Formspec". * `infotext`: Text shown on the screen when the node is pointed at @@ -1614,7 +1642,7 @@ examples. * types: `text`, `image`, `color`, `indent`, `tree` * `text`: show cell contents as text * `image`: cell contents are an image index, use column options to define images - * `colo`: cell contents are a ColorString and define color of following cell + * `color`: cell contents are a ColorString and define color of following cell * `indent`: cell contents are a number and define indentation of following cell * `tree`: same as indent, but user can open and close subtrees (treeview-like) * column options: @@ -1674,16 +1702,15 @@ or string form, a ColorString (defined above): `colorspec = "green"` Spatial Vectors --------------- - -* `vector.new([x[, y, z]])`: returns a vector. - * `x` is a table or the `x` position. - +--------------- +* `vector.new(a[, b, c])`: returns a vector: + * A copy of `a` if `a` is a vector. + * `{x = a, y = b, z = c}`, if all `a, b, c` are defined * `vector.direction(p1, p2)`: returns a vector * `vector.distance(p1, p2)`: returns a number * `vector.length(v)`: returns a number * `vector.normalize(v)`: returns a vector -* `vector.round(v)`: returns a vector +* `vector.round(v)`: returns a vector, each dimension rounded to floor * `vector.apply(v, func)`: returns a vector * `vector.equals(v1, v2)`: returns a boolean @@ -1695,7 +1722,7 @@ For the following functions `x` can be either a vector or a number: * `vector.divide(v, x)`: returns a scaled vector or Schur quotient Helper functions ------------------ +---------------- * `dump2(obj, name="_", dumped={})` * Return object serialized as a string, handles reference loops * `dump(obj, dumped={})` @@ -1713,8 +1740,9 @@ Helper functions * e.g. `string:split("a,b", ",") == {"a","b"}` * `string:trim()` * e.g. `string.trim("\n \t\tfoo bar\t ") == "foo bar"` -* `minetest.pos_to_string({x=X,y=Y,z=Z})`: returns `"(X,Y,Z)"` +* `minetest.pos_to_string({x=X,y=Y,z=Z}, decimal_places))`: returns `"(X,Y,Z)"` * Convert position to a printable string + Optional: 'decimal_places' will round the x, y and z of the pos to the given decimal place. * `minetest.string_to_pos(string)`: returns a position * Same but in reverse. Returns `nil` if the string can't be parsed to a position. * `minetest.string_to_area("(X1, Y1, Z1) (X2, Y2, Z2)")`: returns two positions @@ -1724,7 +1752,7 @@ Helper functions * `minetest.is_yes(arg)` * returns whether `arg` can be interpreted as yes * `minetest.get_us_time()` - * returns time with microsecond precision + * returns time with microsecond precision. May not return wall time. * `table.copy(table)`: returns a table * returns a deep copy of `table` @@ -1790,6 +1818,7 @@ Call these functions only at load time! * `minetest.register_entity(name, prototype table)` * `minetest.register_abm(abm definition)` +* `minetest.register_lbm(lbm definition)` * `minetest.register_node(name, node definition)` * `minetest.register_tool(name, item definition)` * `minetest.register_craftitem(name, item definition)` @@ -1850,6 +1879,7 @@ Call these functions only at load time! * `modifier`: when true, the function should return the actual hp_change. Note: modifiers only get a temporary hp_change that can be modified by later modifiers. modifiers can return true as a second argument to stop the execution of further functions. + Non-modifiers receive the final hp change calculated by the modifiers. * `minetest.register_on_respawnplayer(func(ObjectRef))` * Called when player is to be respawned * Called _before_ repositioning of player occurs @@ -1901,6 +1931,7 @@ Call these functions only at load time! * `minetest.register_privilege(name, definition)` * `definition`: `"description text"` * `definition`: `{ description = "description text", give_to_singleplayer = boolean, -- default: true }` + * To allow players with basic_privs to grant, see basic_privs minetest.conf setting. * `minetest.register_authentication_handler(handler)` * See `minetest.builtin_auth_handler` in `builtin.lua` for reference @@ -1921,7 +1952,11 @@ Call these functions only at load time! * Should be called by the authentication handler if privileges changes. * To report everybody, set `name=nil`. * `minetest.get_password_hash(name, raw_password)` - * Convert a name-password pair to a password hash that Minetest can use + * Convert a name-password pair to a password hash that Minetest can use. + * The returned value alone is not a good basis for password checks based + * on comparing the password hash in the database with the password hash + * from the function, with an externally provided password, as the hash + * in the db might use the new SRP verifier format. * `minetest.string_to_privs(str)`: returns `{priv1=true,...}` * `minetest.privs_to_string(privs)`: returns `"priv1,priv2,..."` * Convert between two privilege representations @@ -1952,9 +1987,11 @@ and `minetest.auth_reload` call the authetification handler. * `minetest.remove_node(pos)` * Equivalent to `set_node(pos, "air")` * `minetest.get_node(pos)` - * Returns `{name="ignore", ...}` for unloaded area + * Returns the node at the given position as table in the format + `{name="node_name", param1=0, param2=0}`, returns `{name="ignore", param1=0, param2=0}` + for unloaded areas. * `minetest.get_node_or_nil(pos)` - * Returns `nil` for unloaded area + * Same as `get_node` but returns `nil` for unloaded areas. * `minetest.get_node_light(pos, timeofday)` * Gets the light value at the given position. Note that the light value "inside" the node at the given position is returned, so you usually want @@ -1988,6 +2025,8 @@ and `minetest.auth_reload` call the authetification handler. * `val` is between `0` and `1`; `0` for midnight, `0.5` for midday * `minetest.get_timeofday()` * `minetest.get_gametime()`: returns the time, in seconds, since the world was created +* `minetest.get_day_count()`: returns number days elapsed since world was created, + * accounting for time changes. * `minetest.find_node_near(pos, radius, nodenames)`: returns pos or `nil` * `radius`: using a maximum metric * `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"` @@ -2037,8 +2076,12 @@ and `minetest.auth_reload` call the authetification handler. * `minetest.generate_decorations(vm, pos1, pos2)` * Generate all registered decorations within the VoxelManip `vm` and in the area from `pos1` to `pos2`. * `pos1` and `pos2` are optional and default to mapchunk minp and maxp. -* `minetest.clear_objects()` - * clear all objects in the environments +* `minetest.clear_objects([options])` + * Clear all objects in the environment + * Takes an optional table as an argument with the field `mode`. + * mode = `"full"`: Load and go through every mapblock, clearing objects (default). + * mode = `"quick"`: Clear objects immediately in loaded mapblocks; + clear objects in unloaded mapblocks only when the mapblocks are next activated. * `minetest.emerge_area(pos1, pos2, [callback], [param])` * Queue all blocks in the area from `pos1` to `pos2`, inclusive, to be asynchronously * fetched from memory, loaded from disk, or if inexistent, generates them. @@ -2071,7 +2114,9 @@ and `minetest.auth_reload` call the authetification handler. * `max_drop`: maximum height difference to consider droppable * `algorithm`: One of `"A*_noprefetch"` (default), `"A*"`, `"Dijkstra"` * `minetest.spawn_tree (pos, {treedef})` - * spawns L-System tree at given `pos` with definition in `treedef` table + * spawns L-system tree at given `pos` with definition in `treedef` table + * Warning: L-system generation currently creates lighting bugs in the form of mapblock-sized shadows. + Often these bugs appear as subtle shadows in water. * `minetest.transforming_liquid_add(pos)` * add node to liquid update queue * `minetest.get_node_max_level(pos)` @@ -2140,6 +2185,8 @@ and `minetest.auth_reload` call the authetification handler. * Convert a facedir back into a vector aimed directly out the "back" of a node * `minetest.dir_to_wallmounted(dir)` * Convert a vector to a wallmounted value, used for `paramtype2="wallmounted"` +* `minetest.wallmounted_to_dir(wallmounted)` + * Convert a wallmounted value back into a vector aimed directly out the "back" of a node * `minetest.get_node_drops(nodename, toolname)` * Returns list of item names. * **Note**: This will be removed or modified in a future version. @@ -2233,7 +2280,7 @@ These functions return the leftover itemstack. ### Timing * `minetest.after(time, func, ...)` - * Call the function `func` after `time` seconds + * Call the function `func` after `time` seconds, may be fractional * Optional: Variable number of arguments that are passed to `func` ### Server @@ -2315,6 +2362,26 @@ These functions return the leftover itemstack. * If `lua_num_indent_spaces` is a nonzero number and `format` is "lua", the Lua code generated * will use that number of spaces as indentation instead of a tab character. +### HTTP Requests: +* `minetest.request_http_api()`: + * returns `HTTPApiTable` containing http functions if the calling mod has been granted + access by being listed in the `secure.http_mods` or `secure.trusted_mods` setting, + otherwise returns `nil`. + * The returned table contains the functions `fetch`, `fetch_async` and `fetch_async_get` + described below. + * Only works at init time and must be called from the mod's main scope (not from a function). + * Function only exists if minetest server was built with cURL support. + * **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED TABLE, STORE IT IN + A LOCAL VARIABLE!** +* `HTTPApiTable.fetch(HTTPRequest req, callback)` + * Performs given request asynchronously and calls callback upon completion + * callback: `function(HTTPRequestResult res)` + * Use this HTTP function if you are unsure, the others are for advanced use. +* `HTTPApiTable.fetch_async(HTTPRequest req)`: returns handle + * Performs given request asynchronously and returns handle for `minetest.http_fetch_async_get` +* `HTTPApiTable.fetch_async_get(handle)`: returns HTTPRequestResult + * Return response data for given asynchronous HTTP request + ### Misc. * `minetest.get_connected_players()`: returns list of `ObjectRefs` * `minetest.hash_node_position({x=,y=,z=})`: returns an 48-bit integer @@ -2422,7 +2489,7 @@ These functions return the leftover itemstack. * `minetest.request_insecure_environment()`: returns an environment containing insecure functions if the calling mod has been listed as trusted in the `secure.trusted_mods` setting or security is disabled, otherwise returns `nil`. - * Only works at init time. + * Only works at init time and must be called from the mod's main scope (not from a function). * **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED ENVIRONMENT, STORE IT IN A LOCAL VARIABLE!** @@ -2453,6 +2520,8 @@ These functions return the leftover itemstack. * Map of Lua entities, indexed by active object id * `minetest.registered_ores` * List of registered ore definitions. +* `minetest.registered_biomes` + * List of registered biome definitions. * `minetest.registered_decorations` * List of registered decoration definitions. @@ -2538,6 +2607,19 @@ This is basically a reference to a C++ `ServerActiveObject` * `set_properties(object property table)` * `get_properties()`: returns object property table * `is_player()`: returns true for players, false otherwise +* `get_nametag_attributes()` + * returns a table with the attributes of the nametag of an object + * { + color = {a=0..255, r=0..255, g=0..255, b=0..255}, + text = "", + } +* `set_nametag_attributes(attributes)` + * sets the attributes of the nametag of an object + * `attributes`: + { + color = ColorSpec, + text = "My Nametag", + } ##### LuaEntitySAO-only (no-op for other objects) * `setvelocity({x=num, y=num, z=num})` @@ -2617,8 +2699,6 @@ This is basically a reference to a C++ `ServerActiveObject` * `"regular"`: Uses 0 textures, `bgcolor` ignored * `"skybox"`: Uses 6 textures, `bgcolor` used * `"plain"`: Uses 0 textures, `bgcolor` used - * **Note**: currently does not work directly in `on_joinplayer`; use - `minetest.after(0)` in there. * `get_sky()`: returns bgcolor, type and a table with the textures * `override_day_night_ratio(ratio or nil)` * `0`...`1`: Overrides day-night ratio, controlling sunlight to a specific amount @@ -2638,17 +2718,6 @@ This is basically a reference to a C++ `ServerActiveObject` * in first person view * in third person view (max. values `{x=-10/10,y=-10,15,z=-5/5}`) * `get_eye_offset()`: returns offset_first and offset_third -* `get_nametag_attributes()` - * returns a table with the attributes of the nametag of the player - * { - color = {a=0..255, r=0..255, g=0..255, b=0..255}, - } -* `set_nametag_attributes(attributes)` - * sets the attributes of the nametag of the player - * `attributes`: - { - color = ColorSpec, - } ### `InvRef` An `InvRef` is a reference to an inventory. @@ -2689,8 +2758,7 @@ If you chose the parameter-less constructor, a fast implementation will be autom * `get_area(id, include_borders, include_data)`: returns the area with the id `id`. (optional) Boolean values `include_borders` and `include_data` control what's copied. * `get_areas_for_pos(pos, include_borders, include_data)`: returns all areas that contain the position `pos`. (optional) Boolean values `include_borders` and `include_data` control what's copied. * `get_areas_in_area(edge1, edge2, accept_overlap, include_borders, include_data)`: returns all areas that contain all nodes inside the area specified by `edge1` and `edge2` (inclusive). If `accept_overlap` is true, also areas are returned that have nodes in common with the specified area. (optional) Boolean values `include_borders` and `include_data` control what's copied. -* `insert_area(edge1, edge2, data)`: inserts an area into the store. Returns the id if successful, nil otherwise. The (inclusive) positions `edge1` and `edge2` describe the area, `data` -is a string stored with the area. +* `insert_area(edge1, edge2, data, [id])`: inserts an area into the store. Returns the new area's ID, or nil if the insertion failed. The (inclusive) positions `edge1` and `edge2` describe the area. `data` is a string stored with the area. If passed, `id` will be used as the internal area ID, it must be a unique number between 0 and 2^32-2. If you use the `id` parameter you must always use it, or insertions are likely to fail due to conflicts. * `reserve(count)`: reserves resources for at most `count` many contained areas. Only needed for efficiency, and only some implementations profit. * `remove_area(id)`: removes the area with the given id from the store, returns success. * `set_cache_params(params)`: sets params for the included prefiltering cache. Calling invalidates the cache, so that its elements have to be newly generated. @@ -2700,6 +2768,10 @@ is a string stored with the area. block_radius = number, -- the radius (in nodes) of the areas the cache generates prefiltered lists for, minimum 16, default 64 limit = number, -- the cache's size, minimum 20, default 1000 } +* `to_string()`: Experimental. Returns area store serialized as a (binary) string. +* `to_file(filename)`: Experimental. Like `to_string()`, but writes the data to a file. +* `from_string(str)`: Experimental. Deserializes string and loads it into the AreaStore. Returns success and, optionally, an error message. +* `from_file(filename)`: Experimental. Like `from_string()`, but reads the data from a file. ### `ItemStack` An `ItemStack` is a stack of items. @@ -2765,6 +2837,15 @@ It can be created via `PcgRandom(seed)` or `PcgRandom(seed, sequence)`. * This is only a rough approximation of a normal distribution with mean=(max-min)/2 and variance=1 * Increasing num_trials improves accuracy of the approximation +### `SecureRandom` +Interface for the operating system's crypto-secure PRNG. + +It can be created via `SecureRandom()`. The constructor returns nil if a secure random device cannot be +be found on the system. + +#### Methods +* `next_bytes([count])`: return next `count` (default 1, capped at 2048) many random bytes, as a string. + ### `PerlinNoise` A perlin noise generator. It can be created via `PerlinNoise(seed, octaves, persistence, scale)` @@ -2925,6 +3006,7 @@ core.CONTENT_IGNORE (ID for "ignore" nodes) Inside of `on_generated()` callbacks, it is possible to retrieve the same VoxelManip object used by the core's Map Generator (commonly abbreviated Mapgen). Most of the rules previously described still apply but with a few differences: + * The Mapgen VoxelManip object is retrieved using: `minetest.get_mapgen_object("voxelmanip")` * This VoxelManip object already has the region of map just generated loaded into it; it's not necessary to call `VoxelManip:read_from_map()` before using a Mapgen VoxelManip. @@ -2983,7 +3065,7 @@ will place the schematic inside of the VoxelManip. * `update_map()`: Update map after writing chunk back to map. * To be used only by `VoxelManip` objects created by the mod itself; not a `VoxelManip` that was retrieved from `minetest.get_mapgen_object` -* `set_lighting(light, p1, p2)`: Set the lighting within the `VoxelManip` to a uniform value +* `set_lighting(light, [p1, p2])`: Set the lighting within the `VoxelManip` to a uniform value * `light` is a table, `{day=<0...15>, night=<0...15>}` * To be used only by a `VoxelManip` object from `minetest.get_mapgen_object` * (`p1`, `p2`) is the area in which lighting is set; @@ -2997,10 +3079,12 @@ will place the schematic inside of the VoxelManip. * expects lighting data in the same format that `get_light_data()` returns * `get_param2_data()`: Gets the raw `param2` data read into the `VoxelManip` object * `set_param2_data(param2_data)`: Sets the `param2` contents of each node in the `VoxelManip` -* `calc_lighting(p1, p2)`: Calculate lighting within the `VoxelManip` +* `calc_lighting([p1, p2], [propagate_shadow])`: Calculate lighting within the `VoxelManip` * To be used only by a `VoxelManip` object from `minetest.get_mapgen_object` * (`p1`, `p2`) is the area in which lighting is set; defaults to the whole area - if left out + if left out or nil + * `propagate_shadow` is an optional boolean deciding whether shadows in a generated + mapchunk above are propagated down into the mapchunk; defaults to `true` if left out * `update_liquids()`: Update liquid flow * `was_modified()`: Returns `true` or `false` if the data in the voxel manipulator had been modified since the last read from map, due to a call to @@ -3121,6 +3205,9 @@ Registered entities L-system trees -------------- +**Warning** +L-system generation currently creates lighting bugs in the form of mapblock-sized shadows. +Often these bugs appear as subtle shadows in water. ### Tree definition @@ -3213,7 +3300,12 @@ Definition tables stepheight = 0, automatic_face_movement_dir = 0.0, -- ^ automatically set yaw to movement direction; offset in degrees; false to disable + automatic_face_movement_max_rotation_per_sec = -1, + -- ^ limit automatic rotation to this value in degrees per second. values < 0 no limit backface_culling = true, -- false to disable backface_culling for model + nametag = "", -- by default empty, for players their name is shown if empty + nametag_color = , -- sets color of nametag as ColorSpec + infotext = "", -- by default empty, text to be shown when pointed at object } ### Entity definition (`register_entity`) @@ -3251,6 +3343,21 @@ Definition tables action = func(pos, node, active_object_count, active_object_count_wider), } +### LBM (LoadingBlockModifier) definition (`register_lbm`) + + { + name = "modname:replace_legacy_door", + nodenames = {"default:lava_source"}, + -- ^ List of node names to trigger the LBM on. + -- Also non-registered nodes will work. + -- Groups (as of group:groupname) will work as well. + run_at_every_load = false, + -- ^ Whether to run the LBM's action every time a block gets loaded, + -- and not just for blocks that were saved last time before LBMs were + -- introduced to the world. + action = func(pos, node), + } + ### Item definition (`register_node`, `register_craftitem`, `register_tool`) { @@ -3294,6 +3401,11 @@ Definition tables --[[ ^ Shall place item and return the leftover itemstack ^ default: minetest.item_place ]] + on_secondary_use = func(itemstack, user, pointed_thing), + --[[ + ^ Same as on_place but called when pointing at nothing. + ^ pointed_thing : always { type = "nothing" } + ]] on_drop = func(itemstack, dropper, pos), --[[ ^ Shall drop item and return the leftover itemstack @@ -3325,7 +3437,7 @@ Definition tables * `{name="image.png", animation={Tile Animation definition}}` * `{name="image.png", backface_culling=bool, tileable_vertical=bool, tileable_horizontal=bool}` - * backface culling only supported in special tiles. + * backface culling enabled by default for most nodes * tileable flags are info for shaders, how they should treat texture when displacement mapping is used Directions are from the point of view of the tile texture, @@ -3367,6 +3479,7 @@ Definition tables diggable = true, -- If false, can never be dug climbable = false, -- If true, can be climbed on (ladder) buildable_to = false, -- If true, placed nodes can replace this node + floodable = false, -- If true, liquids flow into and replace this node liquidtype = "none", -- "none"/"source"/"flowing" liquid_alternative_flowing = "", -- Flowing version of source liquid liquid_alternative_source = "", -- Source version of flowing liquid @@ -3380,6 +3493,12 @@ Definition tables light_source = 0, -- Amount of light emitted by node damage_per_second = 0, -- If player is inside node, this damage is caused node_box = {type="regular"}, -- See "Node boxes" + connects_to = nodenames, --[[ + * Used for nodebox nodes with the type == "connected" + * Specifies to what neighboring nodes connections will be drawn + * e.g. `{"group:fence", "default:wood"}` or `"default:stone"` ]] + connect_sides = { "top", "bottom", "front", "left", "back", "right" }, --[[ + ^ Tells connected nodebox nodes to connect only to these sides of this node. ]] mesh = "model", selection_box = {type="regular"}, -- See "Node boxes" --[[ ^ If drawtype "nodebox" is used and selection_box is nil, then node_box is used. ]] @@ -3554,7 +3673,7 @@ Definition tables y_max = 64, flags = "", -- ^ Attributes for this ore generation - noise_threshhold = 0.5, + noise_threshold = 0.5, -- ^ If noise is above this threshold, ore is placed. Not needed for a uniform distribution noise_params = {offset=0, scale=1, spread={x=100, y=100, z=100}, seed=23, octaves=3, persist=0.70} -- ^ NoiseParams structure describing the perlin noise used for ore distribution. @@ -3569,6 +3688,51 @@ Definition tables -- ^ Can be a list of (or a single) biome names, IDs, or definitions. } +### Biome definition (`register_biome`) + + { + name = "tundra", + node_dust = "default:snow", + -- ^ Node dropped onto upper surface after all else is generated. + node_top = "default:dirt_with_snow", + depth_top = 1, + -- ^ Node forming surface layer of biome and thickness of this layer. + node_filler = "default:permafrost", + depth_filler = 3, + -- ^ Node forming lower layer of biome and thickness of this layer. + node_stone = "default:bluestone", + -- ^ Node that replaces all stone nodes between roughly y_min and y_max. + node_water_top = "default:ice", + depth_water_top = 10, + -- ^ Node forming a surface layer in seawater with the defined thickness. + node_water = "", + -- ^ Node that replaces all seawater nodes not in the defined surface layer. + node_river_water = "default:ice", + -- ^ Node that replaces river water in mapgens that use default:river_water. + y_min = 1, + y_max = 31000, + -- ^ Lower and upper limits for biome. + -- ^ Because biome is not recalculated for every node in a node column + -- ^ some biome materials can exceed their limits, especially stone. + -- ^ For each node column in a mapchunk, biome is only recalculated at column + -- ^ top and at each of these surfaces: + -- ^ Ground below air, water below air, ground below water. + -- ^ The selected biome then stays in effect for all nodes below until + -- ^ column base or the next biome recalculation. + heat_point = 0, + humidity_point = 50, + -- ^ Characteristic average temperature and humidity for the biome. + -- ^ These values create 'biome points' on a voronoi diagram that has heat + -- ^ and humidity as axes. The resulting voronoi cells determine which + -- ^ heat/humidity points belong to which biome, and therefore determine + -- ^ the area and location of each biome in the world. + -- ^ The biome points need to be carefully and evenly spaced on the voronoi + -- ^ diagram to result in roughly equal size biomes. + -- ^ Heat and humidity have average values of 50, vary mostly between + -- ^ 0 and 100 but also often exceed these values. + -- ^ Heat is not in degrees celcius, both values are abstract. + } + ### Decoration definition (`register_decoration`) { @@ -3593,11 +3757,12 @@ Definition tables -- ^ Minimum and maximum `y` positions these decorations can be generated at. -- ^ This parameter refers to the `y` position of the decoration base, so -- the actual maximum height would be `height_max + size.Y`. - flags = "liquid_surface", + flags = "liquid_surface, force_placement", -- ^ Flags for all decoration types. -- ^ "liquid_surface": Instead of placement on the highest solid surface -- ^ in a mapchunk column, placement is on the highest liquid surface. -- ^ Placement is disabled if solid nodes are found above the liquid surface. + -- ^ "force_placement": Nodes other than "air" and "ignore" are replaced by the decoration. ----- Simple-type parameters decoration = "default:grass", @@ -3641,7 +3806,7 @@ Definition tables }, -- ^ See 'Schematic specifier' for details. replacements = {["oldname"] = "convert_to", ...}, - flags = "place_center_x, place_center_y, place_center_z, force_placement", + flags = "place_center_x, place_center_y, place_center_z", -- ^ Flags for schematic decorations. See 'Schematic attributes'. rotation = "90" -- rotate schematic 90 degrees on placement -- ^ Rotation can be "0", "90", "180", "270", or "random". @@ -3752,3 +3917,37 @@ Definition tables playername = "singleplayer" -- ^ Playername is optional, if specified spawns particle only on the player's client } + +### `HTTPRequest` definition (`http_fetch`, `http_fetch_async`) + + { + url = "http://example.org", + timeout = 10, + -- ^ Timeout for connection in seconds. Default is 3 seconds. + post_data = "Raw POST request data string" OR { field1 = "data1", field2 = "data2" }, + -- ^ Optional, if specified a POST request with post_data is performed. + -- ^ Accepts both a string and a table. If a table is specified, encodes table + -- ^ as x-www-form-urlencoded key-value pairs. + -- ^ If post_data ist not specified, a GET request is performed instead. + user_agent = "ExampleUserAgent", + -- ^ Optional, if specified replaces the default minetest user agent with given string + extra_headers = { "Accept-Language: en-us", "Accept-Charset: utf-8" }, + -- ^ Optional, if specified adds additional headers to the HTTP request. You must make sure + -- ^ that the header strings follow HTTP specification ("Key: Value"). + multipart = boolean + -- ^ Optional, if true performs a multipart HTTP request. Default is false. + } + +### `HTTPRequestResult` definition (`http_fetch` callback, `http_fetch_async_get`) + + { + completed = true, + -- ^ If true, the request has finished (either succeeded, failed or timed out) + succeeded = true, + -- ^ If true, the request was succesful + timeout = false, + -- ^ If true, the request timed out + code = 200, + -- ^ HTTP status code + data = "response" + } diff --git a/doc/main_page.dox b/doc/main_page.dox new file mode 100644 index 00000000..8211d9ca --- /dev/null +++ b/doc/main_page.dox @@ -0,0 +1,8 @@ +/** @mainpage The Minetest engine internal documentation + +Welcome to the Minetest engine Doxygen documentation site!\n +This page documents the internal structure of the Minetest engine's C++ code.\n +Use the tree view at the left to navigate. + +*/ + diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index c995b4c5..ac8713a3 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Mainmenu API Reference 0.4.13 +Minetest Lua Mainmenu API Reference 0.4.14 ======================================== Introduction diff --git a/doc/world_format.txt b/doc/world_format.txt index a6255053..a4fb3d8f 100644 --- a/doc/world_format.txt +++ b/doc/world_format.txt @@ -316,7 +316,7 @@ if map format version >= 23: u8[key_len] key u32 val_len u8[val_len] value - serialized inventory + serialized inventory - Node timers if map format version == 23: diff --git a/games/minimal/mods/default/mapgen.lua b/games/minimal/mods/default/mapgen.lua index 2082d598..65b67dae 100644 --- a/games/minimal/mods/default/mapgen.lua +++ b/games/minimal/mods/default/mapgen.lua @@ -36,7 +36,7 @@ minetest.register_ore({ clust_size = 7, y_min = -15, y_max = 0, - noise_threshhold = 0, + noise_threshold = 0, noise_params = { offset=0.35, scale=0.2, diff --git a/minetest.conf.example b/minetest.conf.example index 99ac2425..a5ca16e5 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -197,7 +197,7 @@ # Key for toggling the camrea update. Only used for development # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key -# keymap_toggle_update_camera = +# keymap_toggle_update_camera = # Key for toggling the display of debug info. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 @@ -214,12 +214,12 @@ # type: key # keymap_camera_mode = KEY_F7 -# Key for increasing the viewing range. Modifies the minimum viewing range. +# Key for increasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_increase_viewing_range_min = + -# Key for decreasing the viewing range. Modifies the minimum viewing range. +# Key for decreasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_decrease_viewing_range_min = - @@ -235,17 +235,28 @@ # Leave this blank to start a local server. # Note that the address field in the main menu overrides this setting. # type: string -# address = +# address = # Port to connect to (UDP). # Note that the port field in the main menu overrides this setting. # type: int min: 1 max: 65535 # remote_port = 30000 +# Whether to support older servers before protocol version 25. +# Enable if you want to connect to 0.4.12 servers and before. +# Servers starting with 0.4.13 will work, 0.4.12-dev servers may work. +# Disabling this option will protect your password better. +# type: bool +# send_pre_v25_init = true + # Save the map received by the client on disk. # type: bool # enable_local_map_saving = false +# Show entity selection boxes +# type: bool +# show_entity_selectionbox = true + # Enable usage of remote media server (if provided by server). # Remote servers offer a significantly faster way to download media (e.g. textures) # when connecting to the server. @@ -266,16 +277,14 @@ #### Basic +# Enable VBO +# type: bool +# enable_vbo = true + # Whether to fog out the end of the visible area. # type: bool # enable_fog = true -# Enable a bit lower water surface, so it doesn't "fill" the node completely. -# Note that this is not quite optimized and that smooth lighting on the -# water surface doesn't work with this. -# type: bool -# new_style_water = false - # Leaves style: # - Fancy: all faces visible # - Simple: only outer faces, if defined special_tiles are used @@ -300,6 +309,10 @@ # type: bool # enable_3d_clouds = true +# Method used to highlight selected object. +# type: enum values: box, halo +# node_highlighting = box + #### Filtering # Use mip mapping to scale textures. May slightly increase performance. @@ -335,12 +348,6 @@ # type: int # texture_min_size = 64 -# Pre-generate all item visuals used in the inventory. -# This increases startup time, but runs smoother in-game. -# The generated textures can easily exceed your VRAM, causing artifacts in the inventory. -# type: bool -# preload_item_visuals = false - # Experimental option, might cause visible spaces between blocks # when set to higher number than 0. # type: enum values: 0, 1, 2, 4, 8, 16 @@ -353,6 +360,12 @@ # type: bool # enable_shaders = true +##### Tone Mapping + +# Enables filmic tone mapping +# type: bool +# tone_mapping = false + ##### Bumpmapping # Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack @@ -431,11 +444,6 @@ #### Advanced -# Minimum wanted FPS. -# The amount of rendered stuff is dynamically set according to this. and viewing range min and max. -# type: int -# wanted_fps = 30 - # If FPS would go higher than this, limit it by sleeping # to not waste CPU power for no benefit. # type: int @@ -445,21 +453,16 @@ # type: int # pause_fps_max = 20 -# The allowed adjustment range for the automatic rendering range adjustment. -# Set this to be equal to viewing range minimum to disable the auto-adjustment algorithm. +# View distance in nodes. +# Min = 20 # type: int -# viewing_range_nodes_max = 160 +# viewing_range = 100 -# The allowed adjustment range for the automatic rendering range adjustment. -# Set this to be equal to viewing range minimum to disable the auto-adjustment algorithm. -# type: int -# viewing_range_nodes_min = 35 - -# Vertical initial window size. +# Width component of the initial window size. # type: int # screenW = 800 -# Horizontal initial window size. +# Height component of the initial window size. # type: int # screenH = 600 @@ -486,7 +489,7 @@ # Path to texture directory. All textures are first searched from here. # type: path -# texture_path = +# texture_path = # The rendering back-end for Irrlicht. # type: enum values: null, software, burningsvideo, direct3d8, direct3d9, opengl @@ -518,7 +521,8 @@ # - interlaced: odd/even line based polarisation screen support. # - topbottom: split screen top/bottom. # - sidebyside: split screen side by side. -# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside +# - pageflip: quadbuffer based 3d. +# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside, pageflip # 3d_mode = none # In-game chat console background color (R,G,B). @@ -554,10 +558,6 @@ # type: float # hud_hotbar_max_width = 1.0 -# Enable selection highlighting for nodes (disables selectionbox). -# type: bool -# enable_node_highlighting = false - # Enables caching of facedir rotated meshes. # type: bool # enable_mesh_cache = false @@ -587,6 +587,10 @@ # type: float min: 0.25 max: 4 # ambient_occlusion_gamma = 2.2 +# Enables animation of inventory items. +# type: bool +# inventory_items_animations = false + ### Menus # Use a cloud animation for the main menu background. @@ -658,7 +662,17 @@ # Path to save screenshots at. # type: path -# screenshot_path = +# screenshot_path = + +# Format of screenshots. +# type: enum values: png, jpg, bmp, pcx, ppm, tga +# screenshot_format = png + +# Screenshot quality. Only used for JPEG format. +# 1 means worst quality; 100 means best quality. +# Use 0 for default quality. +# type: int min: 0 max: 100 +# screenshot_quality = 0 ### Advanced @@ -727,7 +741,7 @@ # The network interface that the server listens on. # type: string -# bind_address = +# bind_address = # Enable to disallow old clients from connecting. # Older clients are compatible in the sense that they will not crash when connecting @@ -740,7 +754,7 @@ # (obviously, remote_media should end with a slash). # Files that are not present will be fetched the usual way. # type: string -# remote_media = +# remote_media = # Enable/disable running an IPv6 server. An IPv6 server may be restricted # to IPv6 clients, depending on system configuration. @@ -778,7 +792,7 @@ # Message of the day displayed to players connecting. # type: string -# motd = +# motd = # Maximum number of players that can connect simultaneously. # type: int @@ -787,7 +801,7 @@ # World directory (everything in the world is stored here). # Not needed if starting from the main menu. # type: path -# map-dir = +# map-dir = # Time in seconds for item entity (dropped items) to live. # Setting it to -1 disables the feature. @@ -801,17 +815,21 @@ # A chosen map seed for a new map, leave empty for random. # Will be overridden when creating a new world in the main menu. # type: string -# fixed_map_seed = +# fixed_map_seed = # New users need to input this password. # type: string -# default_password = +# default_password = # The privileges that new users automatically get. # See /privs in game for a full list on your server and mod configuration. # type: string # default_privs = interact, shout +# Privileges that players with basic_privs can grant +# type: string +# basic_privs = interact, shout + # Whether players are shown to clients without any range limit. # Deprecated, use the setting player_transfer_distance instead. # type: bool @@ -827,14 +845,7 @@ # If this is set, players will always (re)spawn at the given position. # type: string -# static_spawnpoint = - -# Maximum distance above water level for player spawn. -# Larger values result in spawn points closer to (x = 0, z = 0). -# Smaller values may result in a suitable spawn point not being found, -# resulting in a spawn at (0, 0, 0) possibly buried underground. -# type: int -# vertical_spawn_range = 16 +# static_spawnpoint = # If enabled, new players cannot join with an empty password. # type: bool @@ -977,6 +988,18 @@ # type: float # dedicated_server_step = 0.1 +# Time in between active block management cycles +# type: float +# active_block_mgmt_interval = 2.0 + +# Length of time between ABM execution cycles +# type: float +# abm_interval = 1.0 + +# Length of time between NodeTimer execution cycles +# type: float +# nodetimer_interval = 1.0 + # If enabled, invalid world data won't cause the server to shut down. # Only enable this if you know what you are doing. # type: bool @@ -1000,7 +1023,7 @@ # Name of map generator to be used when creating a new world. # Creating a world in the main menu will override this. -# type: enum values: v5, v6, v7, fractal, singlenode +# type: enum values: v5, v6, v7, flat, valleys, fractal, singlenode # mg_name = v6 # Water surface level of the world. @@ -1021,11 +1044,12 @@ # map_generation_limit = 31000 # Global map generation attributes. +# In Mapgen v6 the 'decorations' flag controls all decorations except trees +# and junglegrass, in all other mapgens this flag controls all decorations. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -# 'trees' and 'flat' flags only have effect in mgv6. -# type: flags possible values: trees, caves, dungeons, light, flat, notrees, nocaves, nodungeons, nolight, noflat -# mg_flags = trees,caves,dungeons,light +# Flags starting with 'no' are used to explicitly disable them. +# type: flags possible values: caves, dungeons, light, decorations, nocaves, nodungeons, nolight, nodecorations +# mg_flags = caves,dungeons,light,decorations ### Advanced @@ -1072,6 +1096,10 @@ #### Mapgen v5 +# Controls width of tunnels, a smaller value creates wider tunnels. +# type: float +# mgv5_cave_width = 0.125 + # type: noise_params # mgv5_np_filler_depth = 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 @@ -1090,13 +1118,13 @@ #### Mapgen v6 # Map generation attributes specific to Mapgen v6. -# When snowbiomes are enabled jungles are enabled and the jungles flag is ignored. +# When snowbiomes are enabled jungles are automatically enabled, the 'jungles' flag is ignored. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -# type: flags possible values: jungles, biomeblend, mudflow, snowbiomes, nojungles, nobiomeblend, nomudflow, nosnowbiomes -# mgv6_spflags = jungles,biomeblend,mudflow,snowbiomes +# Flags starting with 'no' are used to explicitly disable them. +# type: flags possible values: jungles, biomeblend, mudflow, snowbiomes, flat, trees, nojungles, nobiomeblend, nomudflow, nosnowbiomes, noflat, notrees +# mgv6_spflags = jungles,biomeblend,mudflow,snowbiomes,trees -# Controls size of deserts and beaches in Mapgen V6. +# Controls size of deserts and beaches in Mapgen v6. # When snowbiomes are enabled 'mgv6_freq_desert' is ignored. # type: float # mgv6_freq_desert = 0.45 @@ -1140,12 +1168,16 @@ #### Mapgen v7 # Map generation attributes specific to Mapgen v7. -# 'ridges' are the rivers. +# The 'ridges' flag controls the rivers. # Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. +# Flags starting with 'no' are used to explicitly disable them. # type: flags possible values: mountains, ridges, nomountains, noridges # mgv7_spflags = mountains,ridges +# Controls width of tunnels, a smaller value creates wider tunnels. +# type: float +# mgv7_cave_width = 0.3 + # type: noise_params # mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 @@ -1156,7 +1188,7 @@ # mgv7_np_terrain_persist = 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 # type: noise_params -# mgv7_np_height_select = -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 +# mgv7_np_height_select = -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0 # type: noise_params # mgv7_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 @@ -1179,59 +1211,132 @@ # type: noise_params # mgv7_np_cave2 = 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 +#### Mapgen flat + +# Map generation attributes specific to Mapgen flat. +# Occasional lakes and hills can be added to the flat world. +# Flags that are not specified in the flag string are not modified from the default. +# Flags starting with 'no' are used to explicitly disable them. +# type: flags possible values: lakes, hills, , nolakes, nohills +# mgflat_spflags = + +# Y of flat ground. +# type: int +# mgflat_ground_level = 8 + +# Y of upper limit of large pseudorandom caves. +# type: int +# mgflat_large_cave_depth = -33 + +# Controls width of tunnels, a smaller value creates wider tunnels. +# type: float +# mgflat_cave_width = 0.3 + +# Terrain noise threshold for lakes. +# Controls proportion of world area covered by lakes. +# Adjust towards 0.0 for a larger proportion. +# type: float +# mgflat_lake_threshold = -0.45 + +# Controls steepness/depth of lake depressions. +# type: float +# mgflat_lake_steepness = 48.0 + +# Terrain noise threshold for hills. +# Controls proportion of world area covered by hills. +# Adjust towards 0.0 for a larger proportion. +# type: float +# mgflat_hill_threshold = 0.45 + +# Controls steepness/height of hills. +# type: float +# mgflat_hill_steepness = 64.0 + +# Determines terrain shape. +# The 3 numbers in brackets control the scale of the +# terrain, the 3 numbers should be identical. +# type: noise_params +# mgflat_np_terrain = 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0 + +# type: noise_params +# mgflat_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 + +# type: noise_params +# mgflat_np_cave1 = 0, 12, (128, 128, 128), 52534, 4, 0.5, 2.0 + +# type: noise_params +# mgflat_np_cave2 = 0, 12, (128, 128, 128), 10325, 4, 0.5, 2.0 + #### Mapgen fractal -# Map generation attributes specific to Mapgen fractal. -# 'julia' selects a julia set to be generated instead of a mandelbrot set. -# Flags that are not specified in the flag string are not modified from the default. -# Flags starting with "no" are used to explicitly disable them. -# type: flags possible values: julia, nojulia -# mgfractal_spflags = nojulia +# Controls width of tunnels, a smaller value creates wider tunnels. +# type: float +# mgfractal_cave_width = 0.3 -# Mandelbrot set: Iterations of the recursive function. -# Controls scale of finest detail. +# Choice of 18 fractals from 9 formulas. +# 1 = 4D "Roundy" mandelbrot set. +# 2 = 4D "Roundy" julia set. +# 3 = 4D "Squarry" mandelbrot set. +# 4 = 4D "Squarry" julia set. +# 5 = 4D "Mandy Cousin" mandelbrot set. +# 6 = 4D "Mandy Cousin" julia set. +# 7 = 4D "Variation" mandelbrot set. +# 8 = 4D "Variation" julia set. +# 9 = 3D "Mandelbrot/Mandelbar" mandelbrot set. +# 10 = 3D "Mandelbrot/Mandelbar" julia set. +# 11 = 3D "Christmas Tree" mandelbrot set. +# 12 = 3D "Christmas Tree" julia set. +# 13 = 3D "Mandelbulb" mandelbrot set. +# 14 = 3D "Mandelbulb" julia set. +# 15 = 3D "Cosine Mandelbulb" mandelbrot set. +# 16 = 3D "Cosine Mandelbulb" julia set. +# 17 = 4D "Mandelbulb" mandelbrot set. +# 18 = 4D "Mandelbulb" julia set. +# type: int min: 1 max: 18 +# mgfractal_fractal = 1 + +# Iterations of the recursive function. +# Controls the amount of fine detail. # type: int -# mgfractal_m_iterations = 9 +# mgfractal_iterations = 11 -# Mandelbrot set: Approximate (X,Y,Z) scales in nodes. +# Approximate (X,Y,Z) scale of fractal in nodes. # type: v3f -# mgfractal_m_scale = (1024.0, 256.0, 1024.0) +# mgfractal_scale = (4096.0, 1024.0, 4096.0) -# Mandelbrot set: (X,Y,Z) offsets from world centre. -# Range roughly -2 to 2, multiply by m_scale for offsets in nodes. +# (X,Y,Z) offset of fractal from world centre in units of 'scale'. +# Used to move a suitable spawn area of low land close to (0, 0). +# The default is suitable for mandelbrot sets, it needs to be edited for julia sets. +# Range roughly -2 to 2. Multiply by 'scale' for offset in nodes. # type: v3f -# mgfractal_m_offset = (1.75, 0.0, 0.0) +# mgfractal_offset = (1.79, 0.0, 0.0) -# Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape. +# W co-ordinate of the generated 3D slice of a 4D fractal. +# Determines which 3D slice of the 4D shape is generated. +# Has no effect on 3D fractals. # Range roughly -2 to 2. # type: float -# mgfractal_m_slice_w = 0.0 +# mgfractal_slice_w = 0.0 -# Julia set: Iterations of the recursive function. -# Controls scale of finest detail. -# type: int -# mgfractal_j_iterations = 9 - -# Julia set: Approximate (X,Y,Z) scales in nodes. -# type: v3f -# mgfractal_j_scale = (2048.0, 512.0, 2048.0) - -# Julia set: (X,Y,Z) offsets from world centre. -# Range roughly -2 to 2, multiply by j_scale for offsets in nodes. -# type: v3f -# mgfractal_j_offset = (0.0, 1.0, 0.0) - -# Julia set: W co-ordinate of the generated 3D slice of the 4D shape. -# Range roughly -2 to 2. -# type: float -# mgfractal_j_slice_w = 0.0 - -# Julia set: The following 4 values determine the 4D shape. +# Julia set only: X component of hypercomplex constant determining julia shape. # Range roughly -2 to 2. # type: float # mgfractal_julia_x = 0.33 + +# Julia set only: Y component of hypercomplex constant determining julia shape. +# Range roughly -2 to 2. +# type: float # mgfractal_julia_y = 0.33 + +# Julia set only: Z component of hypercomplex constant determining julia shape. +# Range roughly -2 to 2. +# type: float # mgfractal_julia_z = 0.33 + +# Julia set only: W component of hypercomplex constant determining julia shape. +# Has no effect on 3D fractals. +# Range roughly -2 to 2. +# type: float # mgfractal_julia_w = 0.33 # type: noise_params @@ -1246,6 +1351,95 @@ # type: noise_params # mgfractal_np_cave2 = 0, 12, (128, 128, 128), 10325, 4, 0.5, 2.0 +#### Mapgen Valleys + +##### General + +# Map generation attributes specific to Mapgen Valleys. +# 'altitude_chill' makes higher elevations colder, which may cause biome issues. +# 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool, +# it may interfere with delicately adjusted biomes. +# Flags that are not specified in the flag string are not modified from the default. +# Flags starting with 'no' are used to explicitly disable them. +# type: flags possible values: altitude_chill, noaltitude_chill, humid_rivers, nohumid_rivers +# mg_valleys_spflags = altitude_chill,humid_rivers + +# The altitude at which temperature drops by 20C +# type: int +# mgvalleys_altitude_chill = 90 + +# Depth below which you'll find large caves. +# type: int +# mgvalleys_large_cave_depth = -33 + +# Creates unpredictable lava features in caves. +# These can make mining difficult. Zero disables them. (0-10) +# type: int +# mgvalleys_lava_features = 0 + +# Depth below which you'll find massive caves. +# type: int +# mgvalleys_massive_cave_depth = -256 + +# How deep to make rivers +# type: int +# mgvalleys_river_depth = 4 + +# How wide to make rivers +# type: int +# mgvalleys_river_size = 5 + +# Creates unpredictable water features in caves. +# These can make mining difficult. Zero disables them. (0-10) +# type: int +# mgvalleys_water_features = 0 + +# Controls width of tunnels, a smaller value creates wider tunnels. +# type: float +# mgvalleys_cave_width = 0.3 + +##### Noises + +# Caves and tunnels form at the intersection of the two noises +# type: noise_params +# mgvalleys_np_cave1 = 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 + +# Caves and tunnels form at the intersection of the two noises +# type: noise_params +# mgvalleys_np_cave2 = 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 + +# The depth of dirt or other filler +# type: noise_params +# mgvalleys_np_filler_depth = 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0 + +# Massive caves form here. +# type: noise_params +# mgvalleys_np_massive_caves = 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0 + +# River noise -- rivers occur close to zero +# type: noise_params +# mgvalleys_np_rivers = 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0 + +# Base terrain height +# type: noise_params +# mgvalleys_np_terrain_height = -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0 + +# Raises terrain to make valleys around the rivers +# type: noise_params +# mgvalleys_np_valley_depth = 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0 + +# Slope and fill work together to modify the heights +# type: noise_params +# mgvalleys_np_inter_valley_fill = 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0 + +# Amplifies the valleys +# type: noise_params +# mgvalleys_np_valley_profile = 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0 + +# Slope and fill work together to modify the heights +# type: noise_params +# mgvalleys_np_inter_valley_slope = 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0 + ## Security # Prevent mods from doing insecure things like running shell commands. @@ -1255,7 +1449,12 @@ # Comma-separated list of trusted mods that are allowed to access insecure # functions even when mod security is on (via request_insecure_environment()). # type: string -# secure.trusted_mods = +# secure.trusted_mods = + +# Comma-seperated list of mods that are allowed to access HTTP APIs, which +# allow them to upload and download data to/from the internet. +# type: string +# secure.http_mods = # # Client and Server @@ -1265,12 +1464,12 @@ # When running a server, clients connecting with this name are admins. # When starting from the main menu, this is overridden. # type: string -# name = +# name = # Set the language. Leave empty to use the system language. # A restart is required after changing this. # type: enum values: , be, cs, da, de, eo, es, et, fr, hu, id, it, ja, jbo, ko, ky, lt, nb, nl, pl, pt, pt_BR, ro, ru, tr, uk, zh_CN, zh_TW -# language = +# language = # Level of logging to be written to debug.txt: # - (no logging) @@ -1312,7 +1511,7 @@ # Replaces the default main menu with a custom one. # type: string -# main_menu_script = +# main_menu_script = # type: int # main_menu_game_mgr = 0 diff --git a/misc/minetest.appdata.xml b/misc/minetest.appdata.xml index 6ef8b7f6..19d04280 100644 --- a/misc/minetest.appdata.xml +++ b/misc/minetest.appdata.xml @@ -28,8 +28,9 @@ - http://minetest.net/_media/screen2.png - http://minetest.net/_media/screenshot_4032289578.png + http://www.minetest.net/media/gallery/1.jpg + http://www.minetest.net/media/gallery/3.jpg + http://www.minetest.net/media/gallery/5.jpg http://minetest.net sfan5@live.de diff --git a/po/be/minetest.po b/po/be/minetest.po index ac84c027..c8a707a8 100644 --- a/po/be/minetest.po +++ b/po/be/minetest.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: 2013-11-23 17:37+0100\n" "Last-Translator: Selat \n" "Language-Team: Belarusian\n" @@ -68,8 +68,10 @@ msgid "We support protocol versions between version $1 and $2." msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "" @@ -107,8 +109,8 @@ msgstr "" msgid "Mod:" msgstr "" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "" @@ -168,6 +170,12 @@ msgstr "" msgid "Are you sure you want to delete \"$1\"?" msgstr "" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "" @@ -176,22 +184,10 @@ msgstr "" msgid "Modmgr: invalid modpath \"$1\"" msgstr "" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "" @@ -200,6 +196,92 @@ msgstr "" msgid "Rename Modpack:" msgstr "" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -290,10 +372,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -315,7 +393,7 @@ msgid "Uninstall selected modpack" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +msgid "Address / Port" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -334,17 +412,16 @@ msgstr "" msgid "Damage enabled" msgstr "" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua @@ -369,7 +446,7 @@ msgstr "" msgid "Enable Damage" msgstr "" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "" @@ -406,15 +483,39 @@ msgid "Start Game" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +msgid "3D Clouds" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -422,69 +523,115 @@ msgid "Change keys" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Disabled" +msgid "Connected Glass" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +msgid "Fancy Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Enabled" +msgid "Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +msgid "Mipmap + Aniso. Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Games" +msgid "No" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." +msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." +msgid "No Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." +msgid "Node Highlighting" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " +msgid "Normal Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" +msgid "Opaque Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Select path" +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "Simple Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" msgstr "" #: builtin/mainmenu/tab_simple_main.lua @@ -511,10 +658,6 @@ msgstr "" msgid "No information available" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -539,10 +682,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "" - #: src/client.cpp msgid "Loading textures..." msgstr "" @@ -672,10 +811,6 @@ msgstr "" msgid "Node definitions..." msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "" - #: src/game.cpp msgid "Resolving address..." msgstr "" @@ -696,12 +831,16 @@ msgstr "" msgid "You died." msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" +msgid "Proceed" msgstr "" #: src/guiKeyChangeMenu.cpp @@ -1112,6 +1251,15 @@ msgstr "" msgid "Zoom" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1134,7 +1282,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1159,6 +1308,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1190,6 +1347,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1198,6 +1359,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1213,6 +1378,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1225,10 +1394,18 @@ msgstr "" msgid "Backward key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "" @@ -1261,6 +1438,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Chat key" msgstr "" @@ -1269,6 +1462,29 @@ msgstr "" msgid "Chat toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1323,6 +1539,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp msgid "Command key" msgstr "" @@ -1372,14 +1594,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1466,6 +1712,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1488,6 +1742,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disable anticheat" msgstr "" @@ -1517,7 +1778,7 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " +msgid "Enable VBO" msgstr "" #: src/settings_translation_file.cpp @@ -1532,10 +1793,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1566,6 +1823,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1578,6 +1839,10 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "Enables minimap." msgstr "" @@ -1647,7 +1912,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1664,6 +1929,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1720,6 +1993,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp msgid "Forward key" msgstr "" @@ -1772,6 +2049,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1779,9 +2060,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1792,6 +2077,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1804,6 +2093,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1817,7 +2110,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1842,6 +2135,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1861,18 +2158,22 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "If disabled " +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -msgid "If enabled, " +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." msgstr "" #: src/settings_translation_file.cpp @@ -1930,6 +2231,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp msgid "Inventory key" msgstr "" @@ -1946,6 +2251,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Jump key" msgstr "" @@ -1956,7 +2296,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -1970,7 +2310,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2167,6 +2507,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2189,6 +2537,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2273,21 +2629,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2306,6 +2692,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2326,6 +2716,118 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2338,6 +2840,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2422,6 +2928,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2470,6 +2980,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2589,6 +3111,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2605,13 +3131,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp msgid "Mipmapping" msgstr "" @@ -2688,10 +3207,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2708,10 +3223,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2752,10 +3275,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2799,7 +3318,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2820,22 +3339,14 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" @@ -2855,6 +3366,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2883,6 +3398,22 @@ msgstr "" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -2924,6 +3455,21 @@ msgstr "" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3000,10 +3546,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3019,6 +3561,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3029,13 +3575,17 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3079,19 +3629,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3133,6 +3706,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3231,7 +3808,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3246,6 +3843,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3255,23 +3858,27 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3380,6 +3987,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3390,6 +4009,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" diff --git a/po/ca/minetest.po b/po/ca/minetest.po new file mode 100644 index 00000000..c81cfa76 --- /dev/null +++ b/po/ca/minetest.po @@ -0,0 +1,4214 @@ +# Catalan translations for minetest package. +# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# Automatically generated, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-04-20 13:21+0000\n" +"Last-Translator: Joan Ciprià Moreno Teodoro \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.6-dev\n" + +#: builtin/fstk/ui.lua +msgid "An error occured in a Lua script, such as a mod:" +msgstr "S'ha produït un error en un script Lua, com per exemple un mod :" + +#: builtin/fstk/ui.lua +msgid "An error occured:" +msgstr "Ha ocorregut un error:" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "Menú principal" + +#: builtin/fstk/ui.lua builtin/mainmenu/store.lua +msgid "Ok" +msgstr "D'acord" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "Torneu a connectar" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "El servidor ha sol·licitat una reconnexió:" + +#: builtin/mainmenu/common.lua src/game.cpp +msgid "Loading..." +msgstr "Carregant ..." + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "Desajust de la versió del protocol. " + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "El servidor fa complir la versió $1 del protocol. " + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" +"El servidor es compatible amb les versions de protocol entre $ 1 i $ 2 . " + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" +"Intenta tornar a habilitar la llista de servidors públics i comprovi la seva " +"connexió a Internet ." + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "Nosaltres sols suportem la versió $1 del protocol." + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "Nosaltres suportem versions del protocol entre la versió $1 i la $2." + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp +msgid "Cancel" +msgstr "Cancel·lar" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua +msgid "Depends:" +msgstr "Dependències:" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable MP" +msgstr "Desactivar MP" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable MP" +msgstr "Activar MP" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "Activar tot" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"chararacters [a-z0-9_] are allowed." +msgstr "" +"Error al habilitar el mod \"$1\" perquè conté caràcters no permesos. Només " +"estan permesos els caràcters [a-z0-9_]." + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Hide Game" +msgstr "Ocultar Joc" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Hide mp content" +msgstr "Ocultar contingut MP" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "Mod:" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "Guardar" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "Món:" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "Activat" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "Ja existeix un món anomenat \"$1\"" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "Crear" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a subgame, such as minetest_game, from minetest.net" +msgstr "" +"Descarrega un subjoc, com per exemple minetest_game, des de minetest.net" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "Descarrega'n alguns des de minetest.net" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "Joc" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "Generador de mapes" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No worldname given or no game selected" +msgstr "No s'ha donat un nom al món o no s'ha seleccionat ningun" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "Llavor" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The minimal development test is meant for developers." +msgstr "" +"Advertència: El joc \"Minimal development test\" esta dissenyat per a " +"desenvolupadors." + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "Nom del món" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no subgames installed." +msgstr "No tens subjocs instal·lats." + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "Realment desitja esborrar \"$1\"?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Esborrar" + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Modmgr: failed to delete \"$1\"" +msgstr "Modmgr: Error al esborrar \"$1\"" + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Modmgr: invalid modpath \"$1\"" +msgstr "Modmgr: Ruta del mod \"$1\" invàlida" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "Eliminar el món \"$1\"?" + +#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp +msgid "Accept" +msgstr "Acceptar" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "Reanomenar el paquet de mods:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" no és un indicador vàlid." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Cap descripció d'ajustament donada)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Torna a la pàgina de configuració" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Navegar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Desactivat" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Editar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Activat" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" +"El format és 3 números separats per comes i aquests dins de parèntesis." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Format: (, , ), " +", , " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Jocs" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Si us plau, introduïu una llista d'indicadors separada per comes." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Si us plau, introduïu un enter vàlid." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Si us plau, introduïu un nombre vàlid." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Els possibles valors són: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Restablir per defecte" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Seleccioneu la ruta" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Mostrar els noms tècnics" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "El valor ha de ser major que $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "El valor ha de ser menor que $1." + +#: builtin/mainmenu/modmgr.lua +msgid "" +"\n" +"Install Mod: unsupported filetype \"$1\" or broken archive" +msgstr "" +"\n" +"Instal·lar mod: Format de arxiu \"$1\" no suportat o arxiu corrupte" + +#: builtin/mainmenu/modmgr.lua +msgid "Failed to install $1 to $2" +msgstr "Error al instal·lar $1 en $2" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: file: \"$1\"" +msgstr "Instal·lar mod: Arxiu: \"$1\"" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: unable to find real modname for: $1" +msgstr "Instal·lar mod: Impossible trobar el nom real del mod per a: $1" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: unable to find suitable foldername for modpack $1" +msgstr "" +"Instal·lar mod: Impossible de trobar el nom de la carpeta adequat per al " +"paquet de mods $1" + +#: builtin/mainmenu/store.lua +msgid "Close store" +msgstr "Tancar repositori" + +#: builtin/mainmenu/store.lua +msgid "Downloading $1, please wait..." +msgstr "Descarregant $1, si us plau esperi ..." + +#: builtin/mainmenu/store.lua +msgid "Install" +msgstr "Instal·lar" + +#: builtin/mainmenu/store.lua +msgid "Page $1 of $2" +msgstr "Pàgina $1 de $2" + +#: builtin/mainmenu/store.lua +msgid "Rating" +msgstr "Classificació" + +#: builtin/mainmenu/store.lua +msgid "Search" +msgstr "Buscar" + +#: builtin/mainmenu/store.lua +msgid "Shortname:" +msgstr "Nom curt:" + +#: builtin/mainmenu/store.lua +msgid "Successfully installed:" +msgstr "Instal·lat amb èxit:" + +#: builtin/mainmenu/store.lua +msgid "Unsorted" +msgstr "Sense ordenar" + +#: builtin/mainmenu/store.lua +msgid "re-Install" +msgstr "Reinstal·lar" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "Col·laboradors Actius" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "Desenvolupadors del nucli" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "Crèdits" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "Antics Col·laboradors" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "Antics Desenvolupadors del nucli" + +#: builtin/mainmenu/tab_mods.lua +msgid "Installed Mods:" +msgstr "Mods Instal·lats:" + +#: builtin/mainmenu/tab_mods.lua +msgid "Mod information:" +msgstr "Informació del mod:" + +#: builtin/mainmenu/tab_mods.lua +msgid "No mod description available" +msgstr "Cap descripció del mod disponible" + +#: builtin/mainmenu/tab_mods.lua +msgid "Rename" +msgstr "Reanomenar" + +#: builtin/mainmenu/tab_mods.lua +msgid "Select Mod File:" +msgstr "Selecciona el fitxer del mod:" + +#: builtin/mainmenu/tab_mods.lua +msgid "Uninstall selected mod" +msgstr "Desinstal·lar el mod seleccionat" + +#: builtin/mainmenu/tab_mods.lua +msgid "Uninstall selected modpack" +msgstr "Desinstal·lar el paquet de mods seleccionat" + +#: builtin/mainmenu/tab_multiplayer.lua +#, fuzzy +msgid "Address / Port" +msgstr "Adreça / Port:" + +#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp +msgid "Client" +msgstr "Client" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "Connectar" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "Mode creatiu" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "Dany activat" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nom / Contrasenya:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "PvP activat" + +#: builtin/mainmenu/tab_server.lua +msgid "Bind Address" +msgstr "Adreça BIND" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "Configure" +msgstr "Configurar" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Creative Mode" +msgstr "Mode Creatiu" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Enable Damage" +msgstr "Permetre Danys" + +#: builtin/mainmenu/tab_server.lua +msgid "Name/Password" +msgstr "Nom/Contrasenya" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "New" +msgstr "Nou" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "No world created or selected!" +msgstr "No s'ha creat ningun món o no s'ha seleccionat!" + +#: builtin/mainmenu/tab_server.lua +msgid "Port" +msgstr "Port" + +#: builtin/mainmenu/tab_server.lua +msgid "Public" +msgstr "Públic" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "Select World:" +msgstr "Seleccionar un món:" + +#: builtin/mainmenu/tab_server.lua +msgid "Server" +msgstr "Servidor" + +#: builtin/mainmenu/tab_server.lua +msgid "Server Port" +msgstr "Port del Servidor" + +#: builtin/mainmenu/tab_server.lua +msgid "Start Game" +msgstr "Començar Joc" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "2x" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "Núvols 3D" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Configuració" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Suavitzat (Antialiasing):" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Esteu segur que voleu reiniciar el seu món d'un sol jugador?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtre Bilineal" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Mapat de relleu" + +#: builtin/mainmenu/tab_settings.lua +msgid "Change keys" +msgstr "Configurar controls" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Connected Glass" +msgstr "Connectar" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "Fulles Boniques" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmap" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Aniso. Filtre" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "No" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Sense Filtre" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Sense MipMap" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Node ressaltat" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Node ressaltat" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Ningun" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Fulles opaques" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Aigua opaca" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Oclusió de paral·laxi" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Activar tot" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "Configuració" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Ombres" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "Fulles senzilles" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "Il·luminació suau" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturització:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Per habilitar les ombres el controlador OpenGL ha ser utilitzat." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Llindar tàctil (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtratge Trilineal" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Moviment de les Fulles" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Moviment de Plantes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Onatge" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Sí" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "Configurar mods" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "Principal" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "Començar Un Jugador" + +#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp +msgid "Play" +msgstr "Jugar" + +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Singleplayer" +msgstr "Un jugador" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "No information available" +msgstr "Sense informació disponible" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "Select texture pack:" +msgstr "Selecciona un paquet de textures:" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "Texturepacks" +msgstr "Textures" + +#: src/client.cpp +msgid "Connection timed out." +msgstr "Temps d'espera de la connexió esgotat." + +#: src/client.cpp +msgid "Done!" +msgstr "Completat!" + +#: src/client.cpp +msgid "Initializing nodes" +msgstr "Inicialitzant nodes" + +#: src/client.cpp +msgid "Initializing nodes..." +msgstr "Inicialitzant nodes ..." + +#: src/client.cpp +msgid "Loading textures..." +msgstr "Carregant textures ..." + +#: src/client.cpp +msgid "Rebuilding shaders..." +msgstr "Reconstruint ombreig ..." + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "Error de connexió (¿temps esgotat?)" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "No es pot trobar o carregar el joc \"" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "El Joc especificat no és vàlid." + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "Menú principal" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "Cap món seleccionat i cap adreça facilitada. Res a fer." + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "Nom del jugador massa llarg." + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "La ruta del món especificat no existeix: " + +#: src/fontengine.cpp +msgid "needs_fallback_font" +msgstr "no" + +#: src/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" +"\n" +"Comprovi debug.txt per a detalls." + +#: src/game.cpp +msgid "Change Keys" +msgstr "Configurar Controls" + +#: src/game.cpp +msgid "Change Password" +msgstr "Canviar contrasenya" + +#: src/game.cpp +msgid "Connecting to server..." +msgstr "Connectant al servidor ..." + +#: src/game.cpp +msgid "Continue" +msgstr "Continuar" + +#: src/game.cpp +msgid "Creating client..." +msgstr "Creant client ..." + +#: src/game.cpp +msgid "Creating server..." +msgstr "Creant servidor ..." + +#: src/game.cpp +msgid "" +"Default Controls:\n" +"- WASD: move\n" +"- Space: jump/climb\n" +"- Shift: sneak/go down\n" +"- Q: drop item\n" +"- I: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- T: chat\n" +msgstr "" +"Controls predeterminats:\n" +"- WASD: moure\n" +"- Espai: botar / pujar\n" +"- Maj .: puntetes / baixar\n" +"- Q: deixar anar objecte\n" +"- I: inventari\n" +"- Ratolí: girar / mirar\n" +"- Ratolí esq .: excavar / colpejar\n" +"- Ratolí dre .: col·locar / utilitzar\n" +"- Roda ratolí: triar objecte\n" +"- T: xat\n" + +#: src/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" +"Controls predeterminats:\n" +"Amb el menú ocult:\n" +"- Toc simple: botó activar\n" +"- Toc doble: posar / utilitzar\n" +"- Lliscar dit: mirar al voltant\n" +"Amb el menú / inventari visible:\n" +"- Toc doble (fora):\n" +" -> tancar\n" +"- Toc a la pila d'objectes:\n" +" -> moure la pila\n" +"- Toc i arrossegar, toc amb 2 dits:\n" +" -> col·locar només un objecte\n" + +#: src/game.cpp +msgid "Exit to Menu" +msgstr "Eixir al menú" + +#: src/game.cpp +msgid "Exit to OS" +msgstr "Eixir al S.O" + +#: src/game.cpp +msgid "Item definitions..." +msgstr "Definicions d'objectes ..." + +#: src/game.cpp +msgid "KiB/s" +msgstr "KiB/s" + +#: src/game.cpp +msgid "Media..." +msgstr "Media ..." + +#: src/game.cpp +msgid "MiB/s" +msgstr "MiB/s" + +#: src/game.cpp +msgid "Node definitions..." +msgstr "Definicions dels nodes ..." + +#: src/game.cpp +msgid "Resolving address..." +msgstr "Resolent adreça ..." + +#: src/game.cpp +msgid "Respawn" +msgstr "Reaparèixer" + +#: src/game.cpp +msgid "Shutting down..." +msgstr "Tancant ..." + +#: src/game.cpp +msgid "Sound Volume" +msgstr "Volum del so" + +#: src/game.cpp +msgid "You died." +msgstr "Has mort." + +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "Acceptar" + +#: src/guiFormSpecMenu.cpp +msgid "Enter " +msgstr "Introdueix " + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "Continuar" + +#: src/guiKeyChangeMenu.cpp +msgid "\"Use\" = climb down" +msgstr "\"Utilitzar\" = Descendir" + +#: src/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "Arrere" + +#: src/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "Xat" + +#: src/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "Comandament" + +#: src/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "Consola" + +#: src/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "Dos tocs \"botar\" per volar" + +#: src/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "Amollar" + +#: src/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "Avant" + +#: src/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "Inventari" + +#: src/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "Botar" + +#: src/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "La tecla s'està utilitzant" + +#: src/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" +"Combinacions de tecles. (Si aquest menú espatlla, esborrar coses de minetest." +"conf)" + +#: src/guiKeyChangeMenu.cpp src/keycode.cpp +msgid "Left" +msgstr "Esquerra" + +#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Print stacks" +msgstr "Imprimir piles" + +#: src/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "Seleccionar distancia" + +#: src/guiKeyChangeMenu.cpp src/keycode.cpp +msgid "Right" +msgstr "Dreta" + +#: src/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "Discreció" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle Cinematic" +msgstr "Activar Cinematogràfic" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "Activar ràpid" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "Activar volar" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "Activar noclip" + +#: src/guiKeyChangeMenu.cpp +msgid "Use" +msgstr "Utilitzar" + +#: src/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "Premsa una tecla" + +#: src/guiPasswordChange.cpp +msgid "Change" +msgstr "Canviar" + +#: src/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "Confirma contrasenya" + +#: src/guiPasswordChange.cpp +msgid "New Password" +msgstr "Nova contrasenya" + +#: src/guiPasswordChange.cpp +msgid "Old Password" +msgstr "Contrasenya vella" + +#: src/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "Les contrasenyes no coincideixen!" + +#: src/guiVolumeChange.cpp +msgid "Exit" +msgstr "Tancar" + +#: src/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "Volum de so: " + +#: src/keycode.cpp +msgid "Apps" +msgstr "Aplicacions" + +#: src/keycode.cpp +msgid "Attn" +msgstr "Atentament" + +#: src/keycode.cpp +msgid "Back" +msgstr "Enrere" + +#: src/keycode.cpp +msgid "Capital" +msgstr "Bloq Maj" + +#: src/keycode.cpp +msgid "Clear" +msgstr "Netejar" + +#: src/keycode.cpp +msgid "Comma" +msgstr "Coma" + +#: src/keycode.cpp +msgid "Control" +msgstr "Control" + +#: src/keycode.cpp +msgid "Convert" +msgstr "Convertir" + +#: src/keycode.cpp +#, fuzzy +msgid "CrSel" +msgstr "CrSel" + +#: src/keycode.cpp +msgid "Down" +msgstr "Avall" + +#: src/keycode.cpp +msgid "End" +msgstr "Fi" + +#: src/keycode.cpp +msgid "Erase OEF" +msgstr "Esborrar OEF" + +#: src/keycode.cpp +msgid "Escape" +msgstr "Esc" + +#: src/keycode.cpp +msgid "ExSel" +msgstr "ExSel" + +#: src/keycode.cpp +msgid "Execute" +msgstr "Executar" + +#: src/keycode.cpp +msgid "Final" +msgstr "Fi" + +#: src/keycode.cpp +msgid "Help" +msgstr "Ajuda" + +#: src/keycode.cpp +msgid "Home" +msgstr "Inici" + +#: src/keycode.cpp +msgid "Insert" +msgstr "Introduir" + +#: src/keycode.cpp +#, fuzzy +msgid "Junja" +msgstr "Junja" + +#: src/keycode.cpp +#, fuzzy +msgid "Kana" +msgstr "Kana" + +#: src/keycode.cpp +#, fuzzy +msgid "Kanji" +msgstr "Kanji" + +#: src/keycode.cpp +msgid "Left Button" +msgstr "Botó esquerre" + +#: src/keycode.cpp +msgid "Left Control" +msgstr "Control esq" + +#: src/keycode.cpp +msgid "Left Menu" +msgstr "Menú esq" + +#: src/keycode.cpp +msgid "Left Shift" +msgstr "Shift esq" + +#: src/keycode.cpp +msgid "Left Windows" +msgstr "Windows esquerre" + +#: src/keycode.cpp +msgid "Menu" +msgstr "Menú" + +#: src/keycode.cpp +msgid "Middle Button" +msgstr "Botó del mig" + +#: src/keycode.cpp +msgid "Minus" +msgstr "Menys" + +#: src/keycode.cpp +msgid "Mode Change" +msgstr "Canvi de mode" + +#: src/keycode.cpp +msgid "Next" +msgstr "Següent" + +#: src/keycode.cpp +msgid "Nonconvert" +msgstr "No convertir" + +#: src/keycode.cpp +msgid "Num Lock" +msgstr "Bloq Num" + +#: src/keycode.cpp +msgid "Numpad *" +msgstr "Teclat Num. *" + +#: src/keycode.cpp +msgid "Numpad +" +msgstr "Teclat Num. +" + +#: src/keycode.cpp +msgid "Numpad -" +msgstr "Teclat Num. -" + +#: src/keycode.cpp +msgid "Numpad /" +msgstr "Teclat Num. /" + +#: src/keycode.cpp +msgid "Numpad 0" +msgstr "Teclat Num. 0" + +#: src/keycode.cpp +msgid "Numpad 1" +msgstr "Teclat Num. 1" + +#: src/keycode.cpp +msgid "Numpad 2" +msgstr "Teclat Num. 2" + +#: src/keycode.cpp +msgid "Numpad 3" +msgstr "Teclat Num. 3" + +#: src/keycode.cpp +msgid "Numpad 4" +msgstr "Teclat Num. 4" + +#: src/keycode.cpp +msgid "Numpad 5" +msgstr "Teclat Num. 5" + +#: src/keycode.cpp +msgid "Numpad 6" +msgstr "Teclat Num. 6" + +#: src/keycode.cpp +msgid "Numpad 7" +msgstr "Teclat Num. 7" + +#: src/keycode.cpp +msgid "Numpad 8" +msgstr "Teclat Num. 8" + +#: src/keycode.cpp +msgid "Numpad 9" +msgstr "Teclat Num. 9" + +#: src/keycode.cpp +msgid "OEM Clear" +msgstr "Netejar OEM" + +#: src/keycode.cpp +#, fuzzy +msgid "PA1" +msgstr "PA1" + +#: src/keycode.cpp +msgid "Pause" +msgstr "Pausa" + +#: src/keycode.cpp +msgid "Period" +msgstr "Període" + +#: src/keycode.cpp +msgid "Plus" +msgstr "Més" + +#: src/keycode.cpp +msgid "Print" +msgstr "Imprimir" + +#: src/keycode.cpp +msgid "Prior" +msgstr "Anterior" + +#: src/keycode.cpp +msgid "Return" +msgstr "Tornar" + +#: src/keycode.cpp +msgid "Right Button" +msgstr "Botó dret" + +#: src/keycode.cpp +msgid "Right Control" +msgstr "Control dta" + +#: src/keycode.cpp +msgid "Right Menu" +msgstr "Menú dta" + +#: src/keycode.cpp +msgid "Right Shift" +msgstr "Shift Dta" + +#: src/keycode.cpp +msgid "Right Windows" +msgstr "Windows dret" + +#: src/keycode.cpp +msgid "Scroll Lock" +msgstr "Bloq Despl" + +#: src/keycode.cpp +msgid "Select" +msgstr "Seleccionar" + +#: src/keycode.cpp +msgid "Shift" +msgstr "Shift" + +#: src/keycode.cpp +msgid "Sleep" +msgstr "Dormir" + +#: src/keycode.cpp +msgid "Snapshot" +msgstr "Captura de pantalla" + +#: src/keycode.cpp +msgid "Space" +msgstr "Espai" + +#: src/keycode.cpp +msgid "Tab" +msgstr "Tabulador" + +#: src/keycode.cpp +msgid "Up" +msgstr "Amunt" + +#: src/keycode.cpp +msgid "X Button 1" +msgstr "X Botó 1" + +#: src/keycode.cpp +msgid "X Button 2" +msgstr "X Botó 2" + +#: src/keycode.cpp +#, fuzzy +msgid "Zoom" +msgstr "Zoom" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"(X, Y, Z) compensar de fractal del món centre en unitats d \"escala\".\n" +"Solia passar un adequat respawn de terra baixa a prop de (0, 0).\n" +"L'omissió és adequat per als conjunts de mandelbrot, que necessita ser " +"editats per julia estableix.\n" +"Gamma aproximadament -2 a 2. Multiplicar per el \"escala\" per a òfset de " +"nodes." + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = oclusió de la paral.laxi amb informació d'inclinació (més ràpid).\n" +"1 = mapa de relleu (més lent, més precís)." + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "Núvols 3D" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "Mode 3D" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." +msgstr "" +"Suport 3D.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" +"Elegeix una llavor per al nou mapa, deixa buit per a una llavor a l'atzar.\n" +"Serà anul·lat si es crea un nou món al menú principal." + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" +"Un missatge que es mostrarà a tots els clients quan el servidor s'estavella." + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" +"Un missatge que es mostrarà a tots els clients quan el servidor s'apaga." + +#: src/settings_translation_file.cpp +msgid "Absolute limit of emerge queues" +msgstr "Límit absolut de cues emergents" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "Acceleració en l'aire" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Rang del bloc actiu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Rang del bloc actiu" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "Rang del bloc actiu" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "Rang d'enviament de l'objecte actiu" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" +"Adreça a connectar-se.\n" +"Deixar aquest espai en buit per començar un servidor local.\n" +"Tingueu en compte que el camp d'adreça en el menú principal invalida aquest " +"paràmetre." + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" +"Ajustar la configuració de punts per polsada (dpi) a la teva pantalla (no " +"X11/Sols Android) Ex. per a pantalles amb 4K." + +#: src/settings_translation_file.cpp +msgid "" +"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" +"This setting is for the client only and is ignored by the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "Avançat" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Fred d'altitud" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "Sempre volar y ràpid" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "Gamma d'oclusió d'ambient" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Amplifica les valls" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "Filtrat anisotròpic" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "Anunciar servidor" + +#: src/settings_translation_file.cpp +msgid "" +"Announce to this serverlist.\n" +"If you want to announce your ipv6 address, use serverlist_url = v6.servers." +"minetest.net." +msgstr "" +"Anunciar a aquesta llista de servidors.\n" +"Si vols anunciar el teu direcció ipv6, fes servir serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Aproximar (X, Y, Z) escala del fractal en els nodes." + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "Preguntar per tornar a connectar després d'una caiguda" + +#: src/settings_translation_file.cpp +msgid "Automaticaly report to the serverlist." +msgstr "Automàticament informar a la llista del servidor." + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "Tecla de retrocés" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Alçada del terreny base" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "Bàsic" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Basic Privileges" +msgstr "Privilegis per defecte" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "Filtre bilineal" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "Adreça BIND" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "Bits per píxel (profunditat de color) en el mode de pantalla completa." + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "Construir dins el jugador" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "Mapat de relleu" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "Suavitzat de la càmera" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "Suavitzat de la càmera en mode cinematogràfic" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "Tecla alternativa per a l'actualització de la càmera" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Soroll de cova #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Soroll de cova #2" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Coves i túnels es formen en la intersecció dels dos sorolls" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Tecla del xat" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "Tecla alternativa per al xat" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Selecció de 18 fractals de 9 fórmules.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "Mida del chunk" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "Mode cinematogràfic" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "Tecla mode cinematogràfic" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "Netejar textures transparents" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "Client i Servidor" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "Velocitat d'escalada" + +#: src/settings_translation_file.cpp +msgid "Cloud height" +msgstr "Alçada del núvol" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "Radi del núvol" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "Núvols" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "Els núvols són un efecte de costat del client." + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "Núvols en el menú" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "Boira de color" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" +"Llista de mods de fiar separada per comes que tenen permís per accedir a " +"funcions\n" +"insegures fins i tot quan \"mod security\" està activat (via " +"request_insecure_environment ())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Llista de mods separada per comes que tenen permís per accedir a les APIs " +"HTTP,\n" +"les quals els permeten pujar/descarregar informació de/cap a internet." + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "Tecla comandament" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "Connectar vidre" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "Connectar a servidor de mitjans externs" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "Connecta vidre si el node ho admet." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Console alpha" +msgstr "Consola Alpha" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "Color de la consola" + +#: src/settings_translation_file.cpp +msgid "Console key" +msgstr "Tecla de la consola" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "Avanç continu" + +#: src/settings_translation_file.cpp +msgid "Continuous forward movement (only used for testing)." +msgstr "Avanç continu (sols utilitzat per a testing)." + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "Controls" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " +"unchanged." +msgstr "" +"Controla la duració del cicle dia/nit.\n" +"Exemples: 72 = 20min, 360 = 4min, 1 = 24hora, 0 = dia/nit/el que sigui es " +"queda inalterat." + +#: src/settings_translation_file.cpp +msgid "" +"Controls size of deserts and beaches in Mapgen v6.\n" +"When snowbiomes are enabled 'mgv6_freq_desert' is ignored." +msgstr "" +"Controla la mida dels deserts i platges a Mapgen v6.\n" +"Quan \"snowbiomes\" estan activats 'mgv6_freq_desert' és ignorat." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controla el pendent o la profunditat de les depressions de llac." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controla la pendent i alçada dels turons." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "Missatge d'error" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Crea característiques imprevisibles de la lava en coves.\n" +"Aquestes poden fer difícil minar. Zero els inhabilita (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Crea característiques imprevisibles de l'aigua en coves.\n" +"Aquestes poden fer difícil minar. Zero els inhabilita (0-10)" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "Punt de mira Alpha" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "Color del punt de mira" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "Color del punt de mira (R, G, B)." + +#: src/settings_translation_file.cpp +msgid "Crouch speed" +msgstr "Velocitat al ajupir-se" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "DPI (punts per polsada)" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "Dany" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "Tecla alternativa per a la informació de la depuració" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "Nivell de registre de depuració" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "Pas de servidor dedicat" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "Acceleració per defecte" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "Joc per defecte" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" +"Joc per defecte en crear un nou món.\n" +"Aço será invalid quan es cree un món des del menú principal." + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "Contrasenya per defecte" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "Privilegis per defecte" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" +"Temporització per defecte per a cURL, manifestat en mil·lisegons.\n" +"Només té un efecte si és compilat amb cURL." + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Descending speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Detailed mod profile data. Useful for mod developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Detailed mod profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "Polsar dues vegades \"botar\" per volar" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "Polsar dues vegades \"botar\" per alternar el mode de vol." + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug infos." +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enable VBO" +msgstr "Activar MP" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "Habilitar l'entrada aleatòria d'usuari (només utilitzat per testing)." + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n" +"to IPv6 clients, depending on system configuration.\n" +"Ignored if bind_address is set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "Moviment ràpid" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via use key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" +"Moviment ràpid (via utilitzar clau).\n" +"Això requereix el \"privilegi\" ràpid en el servidor." + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow offset, if 0 then shadow will not be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "Tecla Avançar" + +#: src/settings_translation_file.cpp +msgid "Freetype fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Mods" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated lua api calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height on which clouds are appearing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How large area of blocks are subject to the active block stuff, stated in " +"mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How many blocks are flying in the wire simultaneously for the whole server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How many blocks are flying in the wire simultaneously per client." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "Tecla Inventari" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "Invertir ratolí" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "Invertir moviment vertical del ratolí." + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "Tecla botar" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per obrir el inventari.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per obrir el inventari.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per botar.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per moure el jugador cap arrere.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per moure avant al jugador.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per moure el jugador cap a l'esquerra.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per moure el jugador cap a la dreta.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" +"Tecla per obrir el inventari.\n" +"Veure http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" + +#: src/settings_translation_file.cpp +msgid "" +"Key for printing debug stacks. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camrea update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key use for climbing/descending" +msgstr "Utilitzar la tecla \"utilitzar\" per escalar/descendir" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "Tecla esquerra" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues on disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sink" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu game manager" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu mod manager" +msgstr "Menú principal del gestor de mods" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Generador de mapes" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome heat noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome humidity blend noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Generador de mapes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Generador de mapes" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Generador de mapes" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen heat blend noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 factor noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 height noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 apple trees noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 beach frequency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 beach noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 biome noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 cave noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 desert frequency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 height select noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 mud noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 steepness noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 terrain altitude noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 terrain base noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 trees noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 height select noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 mount height noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 mountain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 ridge noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 ridge water noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain altitude noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain base noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain persistation noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can connect simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneously blocks send per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneously bocks send total" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maxmimum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size for filters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore details URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore download URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore mods list URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "Sensibilitat del ratolí" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "Multiplicador de sensibilitat del ratolí." + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noise parameters for biome API temperature, humidity and biome blend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use. Make this field blank, or increase this " +"number\n" +"to use multiple threads. On multiprocessor systems, this will improve mapgen " +"speed greatly\n" +"at the cost of slightly buggy caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion Scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to TrueTypeFont or bitmap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to save screenshots at." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus Player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler data print interval. 0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "Entrada aleatòria" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "Tecla dreta" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "Interval de repetició del click dret" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale gui by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving water.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visul effects and may increase performance on some " +"video cards.\n" +"Thy only work with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when moving and looking around.\n" +"Useful for recording videos." +msgstr "" +"Suavitza la càmera quan estiga movent-se i mirant al seu voltant.\n" +"Útil per a la gravació de vídeos." + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" +"Suavitza la rotació de la càmera en mode cinematogràfic. 0 per deshabilitar." + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "Suavitza la rotació de la càmera. 0 per deshabilitar." + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "Tecla sigil" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The rendering back-end for Irrlicht." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right mouse button." +msgstr "" +"El temps en segons que es pren entre la repetició de clicks drets quan " +"s'està mantenint el botó dret del ratolí." + +#: src/settings_translation_file.cpp +msgid "This font will be used for certain languages." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Useable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use key" +msgstr "Utilitza la tecla" + +#: src/settings_translation_file.cpp +msgid "Use mip mapping to scale textures. May slightly increase performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Useful for mod developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "V-Sync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Water Features" +msgstr "Textures de objectes ..." + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"propery support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Where the map generator stops.\n" +"Please note:\n" +"- Limited to 31000 (setting above has no effect)\n" +"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n" +"- Those groups have an offset of -32, -32 nodes from the origin.\n" +"- Only groups which are within the map_generation_limit are generated" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether freetype fonts are used, requires freetype support to be compiled in." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selectionbox's lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#~ msgid "No!!!" +#~ msgstr "No!!!" + +#~ msgid "Generate Normalmaps" +#~ msgstr "Generar Mapes Normals" + +#~ msgid "Public Serverlist" +#~ msgstr "Llista de servidors públics" + +#~ msgid "No of course not!" +#~ msgstr "No, per descomptat que no!" diff --git a/po/cs/minetest.po b/po/cs/minetest.po index ad4653a0..a3d57a4d 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-01 18:04+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-03-04 04:45+0000\n" "Last-Translator: Jakub Vaněk \n" "Language-Team: Czech \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" @@ -28,7 +28,6 @@ msgid "An error occured:" msgstr "Nastala chyba:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Hlavní nabídka" @@ -37,13 +36,12 @@ msgid "Ok" msgstr "OK" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Připojit" +msgstr "Znovu se připojit" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Server vyžaduje znovupřipojení se:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,15 +49,15 @@ msgstr "Nahrávám..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Neshoda verze protokolu. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Server vyžaduje protokol verze $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Server podporuje verze protokolů mezi $1 a $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -69,15 +67,17 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Podporujeme pouze protokol verze $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Podporujeme verze protokolů mezi $1 a $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Zrušit" @@ -102,6 +102,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Nepodařilo se povolit mod \"$1\" protože obsahuje nepovolené znaky. Povoleny " +"jsou pouze znaky a-z, 0-9." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -115,8 +117,8 @@ msgstr "Skrýt obsahy balíčků" msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Uložit" @@ -176,6 +178,12 @@ msgstr "Nemáte nainstalované žádné podhry." msgid "Are you sure you want to delete \"$1\"?" msgstr "Skutečně chcete odstranit \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Smazat" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: Nepodařilo se odstranit \"$1\"" @@ -184,22 +192,10 @@ msgstr "Modmgr: Nepodařilo se odstranit \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: Neplatná cesta k modu \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Jistě že ne!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Ano" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Doopravdy chcete smazat svět \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Ne" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Přijmout" @@ -208,6 +204,94 @@ msgstr "Přijmout" msgid "Rename Modpack:" msgstr "Přejmenovat balíček modů:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" není platný příznak." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Nebyl zadán popis nastavení)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Procházet" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Zakázáno" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Upravit" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Povoleno" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Formát jsou tři čísla uvnitř závorek oddělená čárkami." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formát: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Hry" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mody" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "Lakunarita může být specifikována spolu s předcházející čárkou." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Prosím zadejte čárkami oddělený seznam vlajek." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Prosím zadejte platné celé číslo." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Zadejte prosím platné číslo." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Možné hodnoty jsou: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Obnovit výchozí" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Vyberte cestu" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Zobrazit technické názvy" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Hodnota musí být větší než $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Hodnota musí být nižší než $1." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -301,10 +385,6 @@ msgstr "Nainstalované mody:" msgid "Mod information:" msgstr "Informace o modu:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mody" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Popis modu není dostupný" @@ -326,7 +406,8 @@ msgid "Uninstall selected modpack" msgstr "Odinstalovat označený balíček" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "Adresa / Port :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -345,18 +426,20 @@ msgstr "Kreativní mód" msgid "Damage enabled" msgstr "Poškození povoleno" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Smazat" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Jméno / Heslo :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Del. Favorite" +msgstr "Oblíbené:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Seznam veřejných serverů" +#, fuzzy +msgid "Favorite" +msgstr "Oblíbené:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Jméno / Heslo :" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -380,7 +463,7 @@ msgstr "Kreativní mód" msgid "Enable Damage" msgstr "Povolit poškození" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Jméno/Heslo" @@ -390,7 +473,7 @@ msgstr "Nový" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "No world created or selected!" -msgstr "Nevybrali jste žádný svět!" +msgstr "Žádný svět nebyl vytvořen ani vybrán!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -417,89 +500,168 @@ msgid "Start Game" msgstr "Spustit hru" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "3D mraky" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Pokročilá nastavení" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Jste si jisti, že chcete resetovat místní svět?" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Bilineární filtrování" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bump mapování" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Změnit nastavení kláves" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Zakázat balíček" +msgid "Connected Glass" +msgstr "Propojené sklo" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Vícevrstevné listí" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmapa" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmapa + Anizo. filtr" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Ne" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Žádné filtr" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Žádné Mipmapy" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Zvýraznění bloků" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "povoleno" +msgid "Node Outlining" +msgstr "Zvýraznění bloků" -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Hry" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Žádný" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Vybrat" +msgid "Normal Mapping" +msgstr "Tone mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Neprůhledné listí" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Neprůhledná voda" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Parallax Occlusion" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Povolit částice" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Nastavení" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shadery" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Jednoduché listí" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Smooth Lighting" +msgstr "Plynulé osvětlení" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturování:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Pro povolení shaderů musíte používat OpenGL ovladač." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Tone mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Dosah dotyku (px)" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Trilinear Filter" +msgstr "Trilineární filtrování" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Vlnění listů" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Vlnění rostlin" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Vlnění vody" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ano" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -525,10 +687,6 @@ msgstr "Místní hra" msgid "No information available" msgstr "Informace nejsou dostupné" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Vyberte balíček textur:" @@ -538,9 +696,8 @@ msgid "Texturepacks" msgstr "Balíčky textur" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Chyba spojení (vypršel čas?)" +msgstr "Vypršel časový limit připojení." #: src/client.cpp msgid "Done!" @@ -554,10 +711,6 @@ msgstr "Inicializuji bloky" msgid "Initializing nodes..." msgstr "Vytvářím bloky..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Textury věcí..." - #: src/client.cpp msgid "Loading textures..." msgstr "Načítám textury..." @@ -713,10 +866,6 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "Definice bloků..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Pokračovat" - #: src/game.cpp msgid "Resolving address..." msgstr "Překládám adresu..." @@ -737,13 +886,17 @@ msgstr "Hlasitost" msgid "You died." msgstr "Zemřel jsi." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "OK" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Zadejte " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "OK" +msgid "Proceed" +msgstr "Pokračovat" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1157,19 +1310,28 @@ msgstr "Přiblížení" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = paralaxní okluze s informacemi o sklonu (rychlejší).\n" +"1 = mapování reliéfu (pomalejší, ale přesnější)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "3D mraky" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "Létací režim" +msgstr "Režim 3D zobrazení" #: src/settings_translation_file.cpp msgid "" @@ -1179,22 +1341,33 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Podpora 3D zobrazení.\n" +"V současné době podporovány:\n" +"- none: žádný 3D výstup.\n" +"- anaglyph: azurové/purpurové barevné 3D.\n" +"- interlaced: pro polarizaci lichý/sudý řádek.\n" +"- topbottom: rozdělení obrazovky na horní a dolní část.\n" +"- sidebyside: rozdělení obrazovky na levou a pravou část." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Zvolený seed pro novou mapu, nechte prázdné pro vygenerování náhodného " +"seedu.\n" +"Toto bude přepsáno při vytváření nové mapy přes hlavní menu." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Zpráva, která se zobrazí všem klientům, když server havaruje." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Zpráva, která se zobrazí všem klientům, když se server vypne." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" @@ -1202,6 +1375,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Acceleration in air" +msgstr "Zrychlení ve vzduchu" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" msgstr "" #: src/settings_translation_file.cpp @@ -1218,12 +1399,17 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Adresa, kam se připojit.\n" +"Nechte prázdné, pokud chcete spustit místní server.\n" +"Poznámka: pole adresy v hlavním menu přepisuje toto nastavení." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Upraví nastavení DPI pro vaši obrazovku (není pro X11/Android). Pro použití " +"například s 4k obrazovkami." #: src/settings_translation_file.cpp msgid "" @@ -1233,18 +1419,25 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Advanced" +msgstr "Pokročilé" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" msgstr "" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Vždy mít zapnuté létání a turbo" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Amplifies the valleys" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "Anizotropní filtrování" @@ -1260,39 +1453,49 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Ask to reconnect after crash" +msgid "Approximate (X,Y,Z) scale of fractal in nodes." msgstr "" +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "Zeptat se na znovupřipojení po havárii" + #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Automaticky hlásit seznamu serverů." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" msgstr "Vzad" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Základní výška terénu" + #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Základní" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "Výchozí práva" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" -msgstr "Bilineární filtr" +msgstr "Bilineární filtrování" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "Svázat adresu" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bitová hloubka (bity na pixel) v celoobrazovkovém režimu." #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Stavění uvnitř hráče" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1308,109 +1511,147 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Camera update toggle key" +msgstr "Klávesa pro přepínání aktualizace pohledu" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Chat key" -msgstr "Změnit nastavení kláves" +msgid "Cave width" +msgstr "Šířka obrazovky" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Klávesa chatu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Změnit nastavení kláves" +msgstr "Klávesa zobrazení chatu" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Kreativní mód" +msgstr "Plynulý pohyb kamery" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Kreativní mód" +msgstr "Klávesa plynulého pohybu kamery" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Vynulovat průhledné textury" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Klient a Server" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Rychlost šplhání" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Výška mraků" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Poloměr mraků" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D mraky" +msgstr "Mraky" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Mraky jsou pouze lokální efekt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Hlavní nabídka" +msgstr "Mraky v menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Barevná mlha" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Seznam důvěryhodných modů oddělených čárkami, které mohou používat " +"potenciálně nebezpečné\n" +"funkce ve chvílích, kdy je zapnuto zabezpečení modů (pomocí " +"request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Příkaz" +msgstr "Příkazová klávesa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" msgstr "Propojené sklo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Připojuji se k serveru..." +msgstr "Připojit se k externímu serveru" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Spojí bloky skla, pokud je to jimi podporováno." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" msgstr "Konzole" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Konzole" +msgstr "Barva konzole" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Konzole" +msgstr "Klávesa konzole" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -1421,9 +1662,8 @@ msgid "Continuous forward movement (only used for testing)." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Ovládání" #: src/settings_translation_file.cpp msgid "" @@ -1431,15 +1671,42 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Ovládání délky denního cyklu.\n" +"Příklad: 72 = 20 minut, 360 = 4 minutý, 1 = 24 hodin, 0 = zůstává pouze noc " +"nebo den." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Zpráva o havárii" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" #: src/settings_translation_file.cpp @@ -1464,20 +1731,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Povolit poškození" +msgstr "Zranění" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Klávesa pro zobrazení ladících informací" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Úroveň minimální důležitosti ladících informací" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -1485,27 +1751,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Výchozí zrychlení" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "upravit hru" +msgstr "Výchozí hra" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Výchozí hra pro nové světy.\n" +"Při vytváření nového světa přes hlavní menu bude toto nastavení přepsáno." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Nové heslo" +msgstr "Výchozí heslo" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Výchozí práva" #: src/settings_translation_file.cpp msgid "" @@ -1521,25 +1787,35 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." -msgstr "" +msgstr "Definuje maximální posun hráče v blocích (0 = bez limitu)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Prodleva před zobrazením bublinové nápovědy, uvádějte v milisekundách." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" msgstr "" #: src/settings_translation_file.cpp -msgid "Descending speed" +msgid "Depth below which you'll find large caves." msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Descending speed" +msgstr "Rychlost slézání" + #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Popis serveru, který bude zobrazen nově připojeným hráčům a který bude " +"uveden v seznamu serverů." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -1547,63 +1823,62 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "Detailní profilovací data modů. Užitečné pro vývojáře modů." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" +msgstr "Detailní profilování modů" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Povolit částice" +msgstr "Zakázat anticheat" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Zakázat prázdná hesla" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Doménové jméno serveru, které bude zobrazené v seznamu serverů." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "Dvojstisk klávesy \"skok\" zapne létání" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Dvojstisk klávesy \"skok\" zapne létání" +msgstr "Dvojstisk klávesy \"skok\" zapne létání." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Klávesa pro vyhození předmětu" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Povolit VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Online repozitář modů" +msgstr "Povolit zabezpečení módů" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Povolit zranění a úmrtí hráčů." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Povolit náhodný uživatelský vstup (pouze pro testování)." #: src/settings_translation_file.cpp msgid "" @@ -1619,6 +1894,10 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Povolte pro zakázání připojení starých klientů.\n" +"Starší klienti jsou kompatibilní v takovém smyslu, že při připojení k novým " +"serverům\n" +"nehavarují, ale nemusí podporovat všechny vlastnosti, které byste očekával/a." #: src/settings_translation_file.cpp msgid "" @@ -1627,6 +1906,9 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Povolit použití vzdáleného media serveru (je-li poskytnut serverem).\n" +"Vzdálené servery nabízejí výrazně rychlejší způsob, jak stáhnout\n" +"média (např. textury) při připojování k serveru." #: src/settings_translation_file.cpp msgid "" @@ -1635,6 +1917,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1648,9 +1934,12 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Povolit filmový tone mapping" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Povolit poškození" +msgstr "Povolit minimapu." #: src/settings_translation_file.cpp msgid "" @@ -1672,54 +1961,55 @@ msgstr "" #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS v menu pauzy" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "no" +msgstr "Záložní písmo" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Stín záložního písma" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Průhlednost stínu záložního písma" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Velikost záložního písma" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Klávesa pro přepnutí turbo režimu" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Zrychlení v turbo režimu" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Rychlost v turbo režimu" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Turbo režim pohybu" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Turbo režim pohybu (pomocí klávesy použít).\n" +"Vyžaduje na serveru přidělené právo \"fast\"." #: src/settings_translation_file.cpp msgid "Field of view" @@ -1735,6 +2025,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1744,63 +2042,64 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Žádný filtr" +msgstr "Filtrování" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Fixované seedové čislo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" -msgstr "Létací režim" +msgstr "Klávesa létání" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Létání" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Mlha" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Klávesa pro přepnutí mlhy" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Cesta k písmu" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Stín písma" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Průhlednost stínu písma" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Neprůhlednost stínu písma (od 0 do 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "Odsazení stínu písma, pokud je nastaveno na 0, stín nebude vykreslen." #: src/settings_translation_file.cpp msgid "Font size" +msgstr "Velikost písma" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" msgstr "Vpřed" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Písma Freetype" #: src/settings_translation_file.cpp msgid "" @@ -1820,57 +2119,67 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Celá obrazovka" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Bitová hloubka v celoobrazovkovém režimu" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Celoobrazovkový režim." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Měřítko GUI" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" msgstr "Měřítko GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtr měřítka GUI txr2img" #: src/settings_translation_file.cpp msgid "Gamma" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "Generovat normálové mapy" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafika" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravitace" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP mody" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Klávesa pro přepnutí HUD (Head-Up Display)" #: src/settings_translation_file.cpp msgid "" @@ -1880,20 +2189,24 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "Výpočty ve FPU s vysokou přesností" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1919,16 +2232,20 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "IPv6" +msgid "How wide to make rivers" msgstr "" +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "IPv6" + #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 server" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Podpora IPv6." #: src/settings_translation_file.cpp msgid "" @@ -1937,21 +2254,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Zakázat balíček" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "povoleno" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1989,9 +2308,8 @@ msgid "Ignore world errors" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Hra" +msgstr "Ve hře" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -2010,9 +2328,12 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "Inventář" +msgstr "Klávesa inventáře" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -2027,7 +2348,41 @@ msgid "Item entity TTL" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Jump key" msgstr "Skok" @@ -2037,7 +2392,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2051,7 +2406,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2246,6 +2601,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Language" +msgstr "Jazyk" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" msgstr "" #: src/settings_translation_file.cpp @@ -2261,9 +2624,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Levá klávesa Menu" +msgstr "Doleva" #: src/settings_translation_file.cpp msgid "" @@ -2271,6 +2633,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2333,14 +2703,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Hlavní nabídka" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Hlavní nabídka" +msgstr "Skript hlavní nabídky" #: src/settings_translation_file.cpp msgid "" @@ -2357,21 +2725,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2390,6 +2788,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Mapgen údolí" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2403,28 +2805,143 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Generátor mapy" +msgstr "Ladění generátoru mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Mapgen plochy" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Generátor mapy" +msgid "Mapgen flat cave width" +msgstr "Mapgen plochy" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen plochy" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Generátor mapy" +msgstr "Jméno generátoru mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Mapgen v5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Generátor mapy" +msgid "Mapgen v5 cave width" +msgstr "Mapgen v5" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2447,9 +2964,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Generátor mapy" +msgstr "Mapgen v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2508,9 +3024,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Generátor mapy" +msgstr "Mapgen v7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Mapgen v7" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2560,6 +3080,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2664,9 +3196,8 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Nabídka" +msgstr "Nabídky" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -2680,6 +3211,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2697,16 +3232,8 @@ msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip-Mapování" +msgstr "Mip-mapování" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2780,10 +3307,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2797,14 +3320,21 @@ msgid "Noclip key" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" -msgstr "Zvýraznění bloků" +msgstr "Zvýraznění označených bloků" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2846,38 +3376,29 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax Occlusion" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "Parallax Occlusion" +msgstr "Paralaxní okluze" #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax Occlusion" +msgstr "Škála paralaxní okluze" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Parallax Occlusion" +msgstr "Náklon paralaxní okluze" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Parallax Occlusion" +msgstr "Počet iterací paralaxní okluze" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax Occlusion" +msgstr "Režim paralaxní okluze" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "Parallax Occlusion" +msgstr "Síla paralaxní okluze" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." @@ -2893,18 +3414,17 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Fyzika" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Jméno hráče je příliš dlouhé." +msgstr "Jméno hráče" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2912,7 +3432,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Hráč proti hráči (PvP)" #: src/settings_translation_file.cpp msgid "" @@ -2921,20 +3441,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Načítám textury..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2957,42 +3468,60 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Random input" +msgid "Raises terrain to make valleys around the rivers" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Random input" +msgstr "Náhodný vstup" + +#: src/settings_translation_file.cpp msgid "Range select key" -msgstr "Změna dohledu" +msgstr "Klávesa pro označení většího počtu věcí" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Vzdálená média" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Vzdálený port" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Pravá klávesa Menu" +msgstr "Klávesa doprava" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Kulatá minimapa" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." @@ -3013,24 +3542,40 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Výška obrazovky" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Šířka obrazovky" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Snapshot" +msgstr "Snímek obrazovky" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Složka se snímky obrazovky" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Složka se snímky obrazovky" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Snímek obrazovky" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Zabezpečení" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" @@ -3049,44 +3594,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Start místní hry" +msgstr "Server / Místní hra" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "URL serveru" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Port serveru" +msgstr "Adresa serveru" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Port serveru" +msgstr "Popis serveru" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Jméno serveru" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Port serveru" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Seznam veřejných serverů" +msgstr "Adresa seznamu veřejných serverů" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Seznam veřejných serverů" +msgstr "Soubor se seznamem veřejných serverů" #: src/settings_translation_file.cpp msgid "" @@ -3112,10 +3649,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shadery" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3129,6 +3662,10 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "Zobrazit ladící informace" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp @@ -3142,13 +3679,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "Plynulé osvětlení" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3161,13 +3701,12 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Plížit se" +msgstr "Klávesa plížení" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Zvuk" #: src/settings_translation_file.cpp msgid "" @@ -3182,9 +3721,8 @@ msgid "Static spawnpoint" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Generovat normálové mapy" +msgstr "Síla vygenerovaných normálových map." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -3194,20 +3732,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Balíčky textur" +msgid "Terrain Height" +msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Cesta k texturám" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3249,6 +3809,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3284,9 +3848,8 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "Trilineární filtr" +msgstr "Trilineární filtrování" #: src/settings_translation_file.cpp msgid "" @@ -3328,9 +3891,8 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "stiskni klávesu" +msgstr "Klávesa použít" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." @@ -3341,16 +3903,35 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Bývalí klíčoví vývojáři" +msgstr "Užitečné pro vývojáře modů." #: src/settings_translation_file.cpp msgid "V-Sync" +msgstr "Vertikální synchronizace" + +#: src/settings_translation_file.cpp +msgid "VBO" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3359,12 +3940,18 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Ovladač grafiky" #: src/settings_translation_file.cpp msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3374,26 +3961,28 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Hlasitost" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "Vlnění listů" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Rychlost chůze" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "Vlastnosti vody" #: src/settings_translation_file.cpp msgid "Water level" @@ -3404,39 +3993,32 @@ msgid "Water surface level of the world." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Vlnění listů" +msgstr "Vlnění bloků" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "Vlnění listů" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "Vlnění rostlin" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Vlnění vody" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Vlnění vody" +msgstr "Výška vodních vln" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Vlnění vody" +msgstr "Délka vodních vln" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Vlnění vody" +msgstr "Rychlost vodních vln" #: src/settings_translation_file.cpp msgid "" @@ -3508,6 +4090,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3518,141 +4112,134 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "cURL limit paralelních stahování" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL timeout" -#~ msgid "Rendering:" -#~ msgstr "Renderování:" +#~ msgid "Preload inventory textures" +#~ msgstr "Přednačíst inventářové textury" -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Aby se změna ovladače projevila, restartujte Minetest" +#~ msgid "Reset singleplayer world" +#~ msgstr "Reset místního světa" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Měřítko aplikované na prvky menu: " + +#~ msgid "Touch free target" +#~ msgstr "Středový kurzor" + +#~ msgid " KB/s" +#~ msgstr " KB/s" + +#~ msgid " MB/s" +#~ msgstr " MB/s" + +#~ msgid "Downloading" +#~ msgstr "Stahuji" + +#~ msgid "Game Name" +#~ msgstr "Název hry" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Nepovedlo se zkopírovat mod \"$1\" do hry \"$2\"" + +#~ msgid "GAMES" +#~ msgstr "HRY" + +#~ msgid "Mods:" +#~ msgstr "Mody:" + +#~ msgid "new game" +#~ msgstr "nová hra" + +#~ msgid "EDIT GAME" +#~ msgstr "UPRAVIT HRU" + +#~ msgid "Remove selected mod" +#~ msgstr "Odstranit vybraný mod" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Přidat mod" + +#~ msgid "CLIENT" +#~ msgstr "KLIENT" + +#~ msgid "START SERVER" +#~ msgstr "MÍSTNÍ SERVER" + +#~ msgid "Name" +#~ msgstr "Jméno" + +#~ msgid "Password" +#~ msgstr "Heslo" + +#~ msgid "SETTINGS" +#~ msgstr "NASTAVENÍ" + +#~ msgid "Preload item visuals" +#~ msgstr "Přednačíst textury předmětů" + +#~ msgid "Finite Liquid" +#~ msgstr "Konečná voda" + +#~ msgid "SINGLE PLAYER" +#~ msgstr "HRA JEDNOHO HRÁČE" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "BALÍČKY TEXTUR" + +#~ msgid "MODS" +#~ msgstr "MODY" + +#~ msgid "Add mod:" +#~ msgstr "Přidat mod:" + +#~ msgid "Local install" +#~ msgstr "Místní instalace" #~ msgid "Left click: Move all items, Right click: Move single item" #~ msgstr "" #~ "Levý klik: Přesunout všechny předměty, Pravý klik: Přesunout jeden předmět" -#~ msgid "Local install" -#~ msgstr "Místní instalace" +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Aby se změna ovladače projevila, restartujte Minetest" -#~ msgid "Add mod:" -#~ msgstr "Přidat mod:" +#~ msgid "Rendering:" +#~ msgstr "Renderování:" -#~ msgid "MODS" -#~ msgstr "MODY" +#~ msgid "If enabled, " +#~ msgstr "Je-li povoleno, " -#~ msgid "TEXTURE PACKS" -#~ msgstr "BALÍČKY TEXTUR" +#~ msgid "If disabled " +#~ msgstr "Je-li zakázáno " -#~ msgid "SINGLE PLAYER" -#~ msgstr "HRA JEDNOHO HRÁČE" - -#~ msgid "Finite Liquid" -#~ msgstr "Konečná voda" - -#~ msgid "Preload item visuals" -#~ msgstr "Přednačíst textury předmětů" - -#~ msgid "SETTINGS" -#~ msgstr "NASTAVENÍ" - -#~ msgid "Password" -#~ msgstr "Heslo" - -#~ msgid "Name" -#~ msgstr "Jméno" - -#~ msgid "START SERVER" -#~ msgstr "MÍSTNÍ SERVER" - -#~ msgid "Favorites:" -#~ msgstr "Oblíbené:" - -#~ msgid "CLIENT" -#~ msgstr "KLIENT" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Přidat mod" - -#~ msgid "Remove selected mod" -#~ msgstr "Odstranit vybraný mod" - -#~ msgid "EDIT GAME" -#~ msgstr "UPRAVIT HRU" - -#~ msgid "new game" -#~ msgstr "nová hra" - -#~ msgid "Mods:" -#~ msgstr "Mody:" - -#~ msgid "GAMES" -#~ msgstr "HRY" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Nepovedlo se zkopírovat mod \"$1\" do hry \"$2\"" - -#~ msgid "Game Name" -#~ msgstr "Název hry" - -#~ msgid "Downloading" -#~ msgstr "Stahuji" - -#~ msgid " MB/s" -#~ msgstr " MB/s" - -#~ msgid " KB/s" -#~ msgstr " KB/s" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "Dosah dotyku (px)" - -#~ msgid "Touch free target" -#~ msgstr "Středový kurzor" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Pro povolení shaderů musíte používat OpenGL ovladač." - -#~ msgid "Texturing:" -#~ msgstr "Texturování:" - -#~ msgid "Simple Leaves" -#~ msgstr "Jednoduché listí" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Měřítko aplikované na prvky menu: " - -#~ msgid "Reset singleplayer world" -#~ msgstr "Reset místního světa" - -#~ msgid "Opaque Water" -#~ msgstr "Neprůhledná voda" - -#~ msgid "Opaque Leaves" -#~ msgstr "Neprůhledné listí" +#~ msgid "\"" +#~ msgstr "\"" #~ msgid "No!!!" #~ msgstr "Ne!!!" -#~ msgid "No Mipmap" -#~ msgstr "Žádné Mipmapy" +#~ msgid "Generate Normalmaps" +#~ msgstr "Generovat normálové mapy" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmapa + Anizo. filtr" +#~ msgid "Public Serverlist" +#~ msgstr "Seznam veřejných serverů" -#~ msgid "Mipmap" -#~ msgstr "Mipmapa" - -#~ msgid "Fancy Leaves" -#~ msgstr "Vícevrstevné listí" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Jste si jisti, že chcete resetovat místní svět?" +#~ msgid "No of course not!" +#~ msgstr "Jistě že ne!" diff --git a/po/da/minetest.po b/po/da/minetest.po index 52d2349f..6337ba14 100644 --- a/po/da/minetest.po +++ b/po/da/minetest.po @@ -7,94 +7,93 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2013-02-17 00:41+0200\n" -"Last-Translator: Rune Biskopstö Christensen \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-06 13:58+0000\n" +"Last-Translator: Thomas Wagner Nielsen \n" +"Language-Team: Danish " +"\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 1.4-dev\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Der skete en fejt i Lua scriptet, så som et mod:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Der skete en fejl:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Hovedmenu" #: builtin/fstk/ui.lua builtin/mainmenu/store.lua msgid "Ok" -msgstr "" +msgstr "Ok" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Forbind" +msgstr "Forbind igen" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Serveren har anmodet om at forbinde igen:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." -msgstr "" +msgstr "Indlæser..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Protokol versionerne matchede ikke. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Serveren kræver protokol version $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Serveren understøtter protokol versioner mellem $1 og $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Prøv at slå den offentlige serverliste fra og til, og tjek din internet " +"forbindelse." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Vi understøtter kun protokol version $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Vi understøtter protokol versioner mellem $1 og $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Anuller" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Depends:" -msgstr "afhænger af:" +msgstr "Afhænger af:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable MP" -msgstr "Deaktivér alle" +msgstr "Deaktivér MP" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable MP" -msgstr "Aktivér alle" +msgstr "Aktivér MP" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable all" msgstr "Aktivér alle" @@ -103,38 +102,37 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Kunne ikke slå mod \"$1\" til, da den indeholder ugyldige tegn. Kun tegnene " +"[a-z0-9_] er tilladte." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Hide Game" -msgstr "Spil" +msgstr "Skjul spil" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "" +msgstr "Skjul mp indhold" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Gem" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "World:" -msgstr "Vælg verden:" +msgstr "Verden:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" msgstr "aktiveret" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "A world named \"$1\" already exists" -msgstr "Kan ikke skabe verden: en verden med dette navn eksisterer allerede" +msgstr "En verden med navnet \"$1\" eksisterer allerede" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -142,11 +140,11 @@ msgstr "Skab" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Hent et subgame, så som minetest_game fra minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Hent en fra minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -154,19 +152,21 @@ msgstr "Spil" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "Mapgen" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "No worldname given or no game selected" -msgstr "" +msgstr "Intet navn på verden angivet eller intet spil valgt" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Seed" -msgstr "" +msgstr "Kim" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Advarsel: Den minimale udvikings test er kun lavet for udviklerne." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -174,36 +174,29 @@ msgstr "Verdens navn" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Du har ikke installeret nogle subgames." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "Er du sikker på du vil slette \"$1\"?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Slet" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "" +msgstr "Modmgr: Kunne ikke slette \"$1\"" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Ja" +msgstr "Modmgr: ugyldig mod-sti \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua -#, fuzzy msgid "Delete World \"$1\"?" -msgstr "Slet verden" - -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nej" +msgstr "Slet verden \"$1\"?" #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" @@ -211,79 +204,171 @@ msgstr "Accepter" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" +msgstr "Omdøb Modpack:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" er ikke en gyldig indstilling." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Der er ikke nogen beskrivelse af denne indstilling)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "< Back to Settings page" +msgstr "< Tilbage til siden Indstillinger" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Browse" +msgstr "Gennemse" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Deaktiveret" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Rediger" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "aktiveret" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Formatet er 3 tal, adskilt af kommaer, og omgivet af parenteser." + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "" +"Format: , , (, , ), , " +", " msgstr "" +"Format: , , (, , " +"), , , " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Spil" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Indtast venligst en liste af indstillinger som er adskilt med kommaer." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Indtast venligst et gyldigt heltal." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Indtast venligt et gyldigt nummer." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Mulige værdier er: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Gendan standard" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Vælg sti" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Vis tekniske navne" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Værdien skal være større end $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Værdien skal være mindre end $1." #: builtin/mainmenu/modmgr.lua msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" +"\n" +"Installer Mod: filtypen \"$1\" er enten ikke understøttet, ellers er arkivet " +"korrupt" #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "Failed to install $1 to $2" -msgstr "Mislykkedes i at initialisere verden" +msgstr "Kunne ikke installere $1 til $2" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" -msgstr "" +msgstr "Installer Mod: Fil: \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "" +msgstr "Installer Mod: kunne ikke finde det rigtige mod navn for: $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" -msgstr "" +msgstr "Installer Mod: kunne ikke finde passende mappe navn for modpack $1" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Luk marked" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Henter $1, vent venligst..." #: builtin/mainmenu/store.lua msgid "Install" -msgstr "" +msgstr "Installer" #: builtin/mainmenu/store.lua msgid "Page $1 of $2" -msgstr "" +msgstr "Side $1 af $2" #: builtin/mainmenu/store.lua msgid "Rating" -msgstr "" +msgstr "Bedømmelse" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "" +msgstr "Søg" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Verdens navn" +msgstr "Kort navn:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" -msgstr "" +msgstr "Succesfuldt installeret:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "" +msgstr "Usorteret" #: builtin/mainmenu/store.lua msgid "re-Install" -msgstr "" +msgstr "geninstaller" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "Aktive bidragere" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "Hoved udviklere" #: builtin/mainmenu/tab_credits.lua msgid "Credits" @@ -291,86 +376,78 @@ msgstr "Skabt af" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Tidligere bidragere" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "Tidligere hoved udviklere" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" -msgstr "" +msgstr "Installerede mods:" #: builtin/mainmenu/tab_mods.lua msgid "Mod information:" -msgstr "" - -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" +msgstr "Information om mod:" #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" -msgstr "" +msgstr "Der er ikke nogen beskrivelse af tilgængelig af det valgte mod" #: builtin/mainmenu/tab_mods.lua msgid "Rename" -msgstr "" +msgstr "Omdøb" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Select Mod File:" -msgstr "Vælg verden:" +msgstr "Vælg mod fil:" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" -msgstr "" +msgstr "Afinstaller det valgte mod" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "" +msgstr "Afinstaller den valgte modpack" #: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Address / Port :" +msgid "Address / Port" msgstr "Adresse/port" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" -msgstr "" +msgstr "Klient" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "Forbind" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Kreativ tilstand" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "aktiveret" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Slet" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Navn/kodeord" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "" +msgstr "Skade aktiveret" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "Vis favoritter" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Vis favoritter" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Navn/kodeord:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "aktiveret" +msgstr "Spiller mod spiller aktiveret" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" @@ -390,7 +467,7 @@ msgstr "Kreativ tilstand" msgid "Enable Damage" msgstr "Aktivér skade" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Navn/kodeord" @@ -399,17 +476,18 @@ msgid "New" msgstr "Ny" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#, fuzzy msgid "No world created or selected!" -msgstr "" - -#: builtin/mainmenu/tab_server.lua -msgid "Port" -msgstr "" +msgstr "Ingen verden skabt eller valgt!" #: builtin/mainmenu/tab_server.lua #, fuzzy +msgid "Port" +msgstr "Port" + +#: builtin/mainmenu/tab_server.lua msgid "Public" -msgstr "Vis offentlig" +msgstr "Offentlig" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Select World:" @@ -417,133 +495,208 @@ msgstr "Vælg verden:" #: builtin/mainmenu/tab_server.lua msgid "Server" -msgstr "" +msgstr "Server" #: builtin/mainmenu/tab_server.lua msgid "Server Port" -msgstr "" +msgstr "Server port" #: builtin/mainmenu/tab_server.lua -#, fuzzy msgid "Start Game" msgstr "Start spil / Forbind" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +#, fuzzy +msgid "2x" +msgstr "2x" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "3D-skyer" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Avancerede indstillinger" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "Are you sure to reset your singleplayer world?" +msgstr "Er du sikker på, at du vil nulstille din enkelt spiller-verden?" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "Bilinear Filter" +msgstr "Bi-lineær filtréring" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Mip-mapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Skift bindinger" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Deaktivér alle" +msgid "Connected Glass" +msgstr "Forbundet glas" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Opakt (uigennemsigtigt) vand" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap" +msgstr "Mip-mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Nej" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Intet filter" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Mipmap" +msgstr "Mip-mapping" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Glat belysning" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Glat belysning" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Ingen" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Normal Mapping" +msgstr "Mip-mapping" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Opaque Leaves" +msgstr "Opakt (uigennemsigtigt) vand" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Opaque Water" +msgstr "Opakt (uigennemsigtigt) vand" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "aktiveret" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Games" -msgstr "Spil" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Vælg" +msgid "Particles" +msgstr "Aktivér partikler" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Indstillinger" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shadere" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Simple Leaves" +msgstr "Enkle blade" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "Glat belysning" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Trilinear Filter" +msgstr "Tri-lineær filtréring" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "\"Smarte\" træer" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "\"Smarte\" træer" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "\"Smarte\" træer" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ja" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Konfigurér" +msgstr "Konfigurér mods" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" msgstr "Hovedmenu" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Enligspiller" +msgstr "Enlig spiller" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" -msgstr "Afspil" +msgstr "Spil" #: builtin/mainmenu/tab_singleplayer.lua msgid "Singleplayer" -msgstr "Enligspiller" +msgstr "Enlig spiller" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" -msgstr "" - -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" +msgstr "Der er ikke nogen information tilgængelig" #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" @@ -554,25 +707,20 @@ msgid "Texturepacks" msgstr "" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Forbindelses fejl (udløbelse af tidsfrist?)" +msgstr "Forbindelses fejl (tidsfristen udløb)." #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "Færdig!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Initialiserer noder" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" - -#: src/client.cpp -msgid "Item textures..." -msgstr "" +msgstr "Initialiserer noder..." #: src/client.cpp msgid "Loading textures..." @@ -600,15 +748,17 @@ msgstr "Hovedmenu" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "Ingen verden valgt og ingen adresse angivet. Ingen opgave at lave." +msgstr "" +"Ingen verden valgt og ingen adresse angivet. Der er ikke noget at gøre." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Spillerens navn er for langt." #: src/client/clientlauncher.cpp +#, fuzzy msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "Den angivne sti til verdenen findes ikke: " #: src/fontengine.cpp msgid "needs_fallback_font" @@ -623,9 +773,8 @@ msgstr "" "Tjek debug.txt for detaljer." #: src/game.cpp -#, fuzzy msgid "Change Keys" -msgstr "Skift bindinger" +msgstr "Skift tastatur-bindinger" #: src/game.cpp msgid "Change Password" @@ -633,21 +782,24 @@ msgstr "Skift kodeord" #: src/game.cpp msgid "Connecting to server..." -msgstr "" +msgstr "Forbinder til server..." #: src/game.cpp msgid "Continue" msgstr "Fortsæt" #: src/game.cpp +#, fuzzy msgid "Creating client..." -msgstr "" +msgstr "Opretter klient..." #: src/game.cpp +#, fuzzy msgid "Creating server..." -msgstr "" +msgstr "Opretter server..." #: src/game.cpp +#, fuzzy msgid "" "Default Controls:\n" "- WASD: move\n" @@ -661,8 +813,20 @@ msgid "" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" +"Standard-styring:\n" +"- WASD: Bevæge sig rundt\n" +"- Mellemrumstast: Hoppe/klatre\n" +"- Skift: Snige/gå nedad\n" +"- Q: Smide genstand\n" +"- I: Medbragt\n" +"- Mus: Vende rundt/kigge\n" +"- Mus venstre: Grave/slå\n" +"- Mus højre: Placere/bruge\n" +"- Musehjul: Vælge genstand\n" +"- T: Chat\n" #: src/game.cpp +#, fuzzy msgid "" "Default Controls:\n" "No menu visible:\n" @@ -677,6 +841,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Standard-styring:\n" +"Ingen menu synlig:\n" +"- Enkelt tryk: Aktivér knap\n" +"- Dobbelt tryk: Placér/brug\n" +"- Stryg finger: Kig rundt\n" +"Menu/Medbragt synlig:\n" +"- Dobbelt tryk (uden for):\n" +" --> Luk\n" +"- Rør ved stakken, rør ved felt:\n" +" --> Flyt stakken\n" +"- Rør ved og træk, tryk med 2. finger\n" +" --> Placér enkelt genstand på feltet\n" #: src/game.cpp msgid "Exit to Menu" @@ -691,24 +867,23 @@ msgid "Item definitions..." msgstr "" #: src/game.cpp +#, fuzzy msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/game.cpp msgid "Media..." -msgstr "" +msgstr "Medier..." #: src/game.cpp +#, fuzzy msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/game.cpp +#, fuzzy msgid "Node definitions..." -msgstr "" - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Fortsæt" +msgstr "Blokdefinitioner..." #: src/game.cpp msgid "Resolving address..." @@ -720,23 +895,27 @@ msgstr "Genopstå" #: src/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "Lukker ned..." #: src/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "Lydniveau" #: src/game.cpp msgid "You died." msgstr "Du døde." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "ok" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Proceed" +msgstr "Fortsæt" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -856,17 +1035,18 @@ msgid "Passwords do not match!" msgstr "Kodeordene er ikke ens!" #: src/guiVolumeChange.cpp +#, fuzzy msgid "Exit" -msgstr "" +msgstr "Afslut" #: src/guiVolumeChange.cpp +#, fuzzy msgid "Sound Volume: " -msgstr "" +msgstr "Lydstyrke: " #: src/keycode.cpp -#, fuzzy msgid "Apps" -msgstr "Applikationer" +msgstr "Apps" #: src/keycode.cpp msgid "Attn" @@ -1154,6 +1334,15 @@ msgstr "X knap 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1166,8 +1355,9 @@ msgid "3D clouds" msgstr "3D skyer" #: src/settings_translation_file.cpp +#, fuzzy msgid "3D mode" -msgstr "" +msgstr "3D-tilstand" #: src/settings_translation_file.cpp msgid "" @@ -1177,7 +1367,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1187,19 +1378,30 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Besked, som skal vises til alle klienter, når serveren går ned." #: src/settings_translation_file.cpp +#, fuzzy msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Besked, som skal vises til alle klienter, når serveren lukker ned." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Acceleration in air" +msgstr "Acceleration i luft" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" msgstr "" #: src/settings_translation_file.cpp @@ -1218,10 +1420,13 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Justér DPI-konfigurationen til din skærm (ikke-X11 / kun Andorid) f.eks. til " +"4k-skærme." #: src/settings_translation_file.cpp msgid "" @@ -1234,13 +1439,23 @@ msgid "Advanced" msgstr "Avanceret" #: src/settings_translation_file.cpp -msgid "Always fly and fast" +msgid "Altitude Chill" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Always fly and fast" +msgstr "Flyv altid og hurtigt" + #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Amplifies the valleys" +msgstr "Forstærker dalene" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1258,22 +1473,36 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Ask to reconnect after crash" +msgid "Approximate (X,Y,Z) scale of fractal in nodes." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Ask to reconnect after crash" +msgstr "Spørg om at forbinde igen, efter den er gået ned." + +#: src/settings_translation_file.cpp +#, fuzzy msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Rapportér automatisk til serverlisten." #: src/settings_translation_file.cpp #, fuzzy msgid "Backward key" msgstr "Baglæns" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1309,6 +1538,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1319,6 +1564,29 @@ msgstr "Skift bindinger" msgid "Chat toggle key" msgstr "Skift bindinger" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1354,9 +1622,8 @@ msgid "Cloud radius" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D skyer" +msgstr "Skyer" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." @@ -1377,6 +1644,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1432,14 +1705,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1528,6 +1825,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1550,6 +1855,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1586,8 +1898,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Aktivér MP" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1601,10 +1914,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1635,6 +1944,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1647,6 +1960,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Aktivér skade" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1717,7 +2035,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1734,6 +2052,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1791,6 +2117,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1844,6 +2174,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1851,9 +2185,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1864,6 +2202,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Mods" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1876,6 +2219,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1889,7 +2236,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1914,6 +2261,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1933,21 +2284,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Deaktivér alle" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "aktiveret" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2005,6 +2358,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2022,6 +2379,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2033,7 +2425,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2047,7 +2439,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2244,6 +2636,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2267,6 +2667,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2353,21 +2761,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2386,6 +2824,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2406,6 +2849,121 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2418,6 +2976,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2502,6 +3064,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2550,6 +3116,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2670,6 +3248,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2686,13 +3268,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2770,10 +3345,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2790,10 +3361,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2834,10 +3413,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2881,7 +3456,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2902,22 +3477,14 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" @@ -2937,6 +3504,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2967,6 +3538,22 @@ msgstr "Højre Menu" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3009,6 +3596,23 @@ msgstr "Tilstandsbillede" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Tilstandsbillede" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Tilstandsbillede" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3086,10 +3690,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shadere" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3105,6 +3705,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3115,6 +3719,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3122,7 +3730,7 @@ msgstr "Glat belysning" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3167,19 +3775,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3221,6 +3852,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3321,7 +3956,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3336,6 +3991,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3345,23 +4006,27 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3471,6 +4136,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3481,6 +4158,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3494,36 +4179,53 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Game Name" -#~ msgstr "Spil" +#~ msgid "Downloading" +#~ msgstr "Ned" -#, fuzzy -#~ msgid "Favorites:" +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed" + +#~ msgid "is required by:" +#~ msgstr "er påkrævet af:" + +#~ msgid "Configuration saved. " +#~ msgstr "Konfiguration gemt. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Advarsel: konfigurationen er ikke sammenhængende. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver" + +#~ msgid "Show Public" +#~ msgstr "Vis offentlig" + +#~ msgid "Show Favorites" #~ msgstr "Vis favoritter" -#, fuzzy -#~ msgid "Password" -#~ msgstr "Gammelt kodeord" +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Lad adresse-feltet være tomt for at starte en lokal server." -#~ msgid "Preload item visuals" -#~ msgstr "For-indlæs elementernes grafik" +#~ msgid "Create world" +#~ msgstr "Skab verden" -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " -#~ msgstr "" -#~ "Advarsel: nogle modifikationer er endnu ikke konfigureret.\n" -#~ "De vil blive aktiveret som standard når du gemmer konfigurationen. " +#~ msgid "Address required." +#~ msgstr "Adresse påkrævet." -#~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " -#~ msgstr "" -#~ "Advarsel: nogle konfigurerede modifikationer mangler.\n" -#~ "Deres indstillinger vil blive fjernet når du gemmer konfigurationen. " +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Kan ikke slette verden: ingenting valgt" -#~ msgid "Delete map" -#~ msgstr "Slet mappen" +#~ msgid "Files to be deleted" +#~ msgstr "Filer som slettes" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Kan ikke skabe verden: ingen spil fundet" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Kan ikke konfigurere verden: ingenting valgt" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Mislykkedes i at slette alle verdenens filer" #~ msgid "" #~ "Default Controls:\n" @@ -3550,63 +4252,44 @@ msgstr "" #~ "- ESC: denne menu\n" #~ "- T: snak\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Mislykkedes i at slette alle verdenens filer" +#~ msgid "Delete map" +#~ msgstr "Slet mappen" -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Kan ikke konfigurere verden: ingenting valgt" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "Advarsel: nogle konfigurerede modifikationer mangler.\n" +#~ "Deres indstillinger vil blive fjernet når du gemmer konfigurationen. " -#~ msgid "Cannot create world: No games found" -#~ msgstr "Kan ikke skabe verden: ingen spil fundet" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Advarsel: nogle modifikationer er endnu ikke konfigureret.\n" +#~ "De vil blive aktiveret som standard når du gemmer konfigurationen. " -#~ msgid "Files to be deleted" -#~ msgstr "Filer som slettes" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Kan ikke slette verden: ingenting valgt" - -#~ msgid "Address required." -#~ msgstr "Adresse påkrævet." - -#~ msgid "Create world" -#~ msgstr "Skab verden" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Lad adresse-feltet være tomt for at starte en lokal server." - -#~ msgid "Show Favorites" -#~ msgstr "Vis favoritter" - -#~ msgid "Show Public" -#~ msgstr "Vis offentlig" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Advarsel: konfigurationen er ikke sammenhængende. " - -#~ msgid "Configuration saved. " -#~ msgstr "Konfiguration gemt. " - -#~ msgid "is required by:" -#~ msgstr "er påkrævet af:" - -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed" +#~ msgid "Preload item visuals" +#~ msgstr "For-indlæs elementernes grafik" #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Ned" +#~ msgid "Password" +#~ msgstr "Gammelt kodeord" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Enligspiller" +#~ msgid "Game Name" +#~ msgstr "Spil" #, fuzzy -#~ msgid "Opaque Water" -#~ msgstr "Opakt (uigennemsigtigt) vand" +#~ msgid "If enabled, " +#~ msgstr "aktiveret" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Opakt (uigennemsigtigt) vand" +#~ msgid "If disabled " +#~ msgstr "Deaktivér alle" + +#~ msgid "Public Serverlist" +#~ msgstr "Offentlig serverliste" + +#~ msgid "No of course not!" +#~ msgstr "Nej selvfølgelig ikke!" diff --git a/po/de/minetest.po b/po/de/minetest.po index 2d157c67..b9db120e 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-10-05 02:00+0200\n" -"Last-Translator: est31 \n" -"Language-Team: German \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-06 02:25+0000\n" +"Last-Translator: Wuzzy \n" +"Language-Team: German " +"\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Es ist ein Fehler in einem Lua-Skript aufgetreten, z.b in einem Mod:" +msgstr "Es ist ein Fehler in einem Lua-Skript aufgetreten, z.B. in einer Mod:" #: builtin/fstk/ui.lua msgid "An error occured:" @@ -45,38 +45,39 @@ msgstr "Der Server hat um eine Wiederverbindung gebeten:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." -msgstr "Lädt…" +msgstr "Lädt …" #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "Serverprotokollversionsfehler " +msgstr "Protokollversionsfehler. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Server erfordert Protokollversion $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Server unterstützt Protokollversionen $1 bis $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" -"Versuche die Öffentliche Serverliste neu zu laden bzw. prüfe deine " +"Versuchen Sie, die öffentliche Serverliste neu zu laden und prüfen Sie Ihre " "Internetverbindung." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Wir unterstützen nur Protokollversion $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Wir unterstützen Protokollversionen zwischen $1 und $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Abbrechen" @@ -101,7 +102,7 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" -"Fehler beim aktivieren der Mod \"$1\": Ungültiger Name. Nur folgende Zeichen " +"Fehler beim Aktivieren der Mod „$1“: Ungültiger Name. Nur folgende Zeichen " "sind erlaubt: [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua @@ -114,10 +115,10 @@ msgstr "Modpacks verstecken" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "Modifikation:" +msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Speichern" @@ -153,7 +154,7 @@ msgstr "Spiel" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Weltgenerator" +msgstr "Kartengenerator" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -177,7 +178,13 @@ msgstr "Keine Spiele installiert." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Bist du sicher, dass du \"$1\" wirklich löschen möchtest?" +msgstr "Sind Sie sich sicher, dass Sie „$1“ löschen wollen?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Entfernen" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" @@ -187,22 +194,10 @@ msgstr "Modmgr: Fehler beim Löschen von „$1“" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: Unzulässiger Modpfad „$1“" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Nein, natürlich nicht!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Ja" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Welt „$1“ löschen?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nein" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Annehmen" @@ -211,6 +206,101 @@ msgstr "Annehmen" msgid "Rename Modpack:" msgstr "Modpack umbenennen:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "„$1“ ist kein gültiger Bitschalter." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Keine Beschreibung vorhanden)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Einstellungsseite" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Durchsuchen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Deaktiviert" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Ändern" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Aktiviert" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" +"Das Format besteht aus 3 mit Komma getrennten Zahlen, die sich\n" +"in Klammern befinden." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Format: , , (, , " +"), ,\n" +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Spiele" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Optional kann die Lacunarity, mit einem weiteren Komma abgetrennt, angehängt " +"werden." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" +"Bitte geben Sie eine mit Kommata getrennte Liste von\n" +"Flags an." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Bitte geben Sie eine gültige ganze Zahl ein." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Bitte geben Sie eine gültige Zahl ein." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Mögliche Werte sind: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Standardwert" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Pfad auswählen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Technische Namen zeigen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Der Wert muss größer als $1 sein." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Der Wert muss kleiner als $1 sein." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -305,10 +395,6 @@ msgstr "Installierte Mods:" msgid "Mod information:" msgstr "Modinformation:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mods" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Keine Modbeschreibung verfügbar" @@ -330,8 +416,8 @@ msgid "Uninstall selected modpack" msgstr "Ausgewähltes Modpack deinstallieren" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "Adresse/Port:" +msgid "Address / Port" +msgstr "Adresse / Port" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -349,18 +435,17 @@ msgstr "Kreativmodus" msgid "Damage enabled" msgstr "Schaden aktiviert" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Entfernen" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Name/Passwort:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "Favorit löschen" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Öffentliche Serverliste" +msgid "Favorite" +msgstr "Favorit" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Name / Passwort" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -384,7 +469,7 @@ msgstr "Kreativmodus" msgid "Enable Damage" msgstr "Schaden einschalten" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Name/Passwort" @@ -394,7 +479,7 @@ msgstr "Neu" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "No world created or selected!" -msgstr "Kein Weltname angegeben oder kein Spiel ausgewählt!" +msgstr "Keine Welt angegeben oder ausgewählt!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -421,89 +506,156 @@ msgid "Start Game" msgstr "Spiel starten" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D-Wolken" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Kantenglättung:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Sind Sie sicher, dass Sie die Einzelspielerwelt löschen wollen?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Bilinearer Filter" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "Bumpmapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Tasten ändern" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "MP deaktivieren" +msgid "Connected Glass" +msgstr "Verbundenes Glas" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Schöne Blätter" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "Aktiviert" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap u. Aniso. Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Spiele" +msgid "No" +msgstr "Nein" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "Kein Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "Keine Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "Blöcke hervorheben" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "Blöcke umranden" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Keines" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "Normalmapping" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "Undurchs. Blätter" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Auswählen" +msgid "Opaque Water" +msgstr "Undurchs. Wasser" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Parallax-Occlusion" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Partikel" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Einstellungen" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shader" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Einfache Blätter" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Geglättetes Licht" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturierung:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Um Shader zu benutzen, muss der OpenGL-Treiber benutzt werden." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Tone-Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Berührungsempfindlichkeit (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Trilinearer Filter" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Wehende Blätter" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Wehende Pflanzen" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Wasserwellen" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ja" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -529,17 +681,13 @@ msgstr "Einzelspieler" msgid "No information available" msgstr "Keine Informationen vorhanden" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "Keine" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" -msgstr "Texturpaket auswählen:" +msgstr "Texturenpaket auswählen:" #: builtin/mainmenu/tab_texturepacks.lua msgid "Texturepacks" -msgstr "Texturpakete" +msgstr "Texturenpakete" #: src/client.cpp msgid "Connection timed out." @@ -551,23 +699,19 @@ msgstr "Fertig!" #: src/client.cpp msgid "Initializing nodes" -msgstr "Blöcke initialisieren" +msgstr "Initialisiere Blöcke" #: src/client.cpp msgid "Initializing nodes..." -msgstr "Blöcke initialisieren ..." - -#: src/client.cpp -msgid "Item textures..." -msgstr "Inventarbilder ..." +msgstr "Initialisiere Blöcke..." #: src/client.cpp msgid "Loading textures..." -msgstr "Texturen laden ..." +msgstr "Lade Texturen..." #: src/client.cpp msgid "Rebuilding shaders..." -msgstr "Shader wiederherstellen ..." +msgstr "Shader wiederherstellen..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -575,7 +719,7 @@ msgstr "Verbindungsfehler (Zeitüberschreitung?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Kann Spiel nicht finden/laden \"" +msgstr "Kann Spiel nicht finden oder laden \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." @@ -619,7 +763,7 @@ msgstr "Passwort ändern" #: src/game.cpp msgid "Connecting to server..." -msgstr "Zum Server verbinden ..." +msgstr "Verbinde mit Server..." #: src/game.cpp msgid "Continue" @@ -631,7 +775,7 @@ msgstr "Client erstellen ..." #: src/game.cpp msgid "Creating server..." -msgstr "Server erstellen ..." +msgstr "Erstelle Server..." #: src/game.cpp msgid "" @@ -647,7 +791,7 @@ msgid "" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" -"Standard-Tastenbelegung:\n" +"Standardsteuerung:\n" "- WASD: bewegen\n" "- Leertaste: springen/klettern\n" "- Umschalt: kriechen/herunterklettern\n" @@ -697,7 +841,7 @@ msgstr "Programm beenden" #: src/game.cpp msgid "Item definitions..." -msgstr "Item-Definitionen ..." +msgstr "Item-Definitionen..." #: src/game.cpp msgid "KiB/s" @@ -705,7 +849,7 @@ msgstr "KiB/s" #: src/game.cpp msgid "Media..." -msgstr "Medien ..." +msgstr "Medien..." #: src/game.cpp msgid "MiB/s" @@ -713,15 +857,11 @@ msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." -msgstr "Node-Definitionen ..." - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Fortsetzen" +msgstr "Blockdefinitionen..." #: src/game.cpp msgid "Resolving address..." -msgstr "Adresse auflösen ..." +msgstr "Löse Adresse auf..." #: src/game.cpp msgid "Respawn" @@ -729,7 +869,7 @@ msgstr "Wiederbeleben" #: src/game.cpp msgid "Shutting down..." -msgstr "Herunterfahren ..." +msgstr "Herunterfahren..." #: src/game.cpp msgid "Sound Volume" @@ -739,13 +879,17 @@ msgstr "Tonlautstärke" msgid "You died." msgstr "Sie sind gestorben." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "OK" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Enter " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "OK" +msgid "Proceed" +msgstr "Fortsetzen" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -794,7 +938,8 @@ msgstr "Taste bereits in Benutzung" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"Steuerung (Falls dieses Menü versagt, entfernen Sie Sachen aus minetest.conf)" +"Steuerung (Falls dieses Menü fehlerhaft formatiert ist, entfernen Sie " +"Einstellungen aus minetest.conf)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" @@ -818,7 +963,7 @@ msgstr "Schleichen" #: src/guiKeyChangeMenu.cpp msgid "Toggle Cinematic" -msgstr "Kinomodus" +msgstr "Filmmodus umschalten" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -898,11 +1043,11 @@ msgstr "Strg" #: src/keycode.cpp msgid "Convert" -msgstr "Konvertierung" +msgstr "Convert" #: src/keycode.cpp msgid "CrSel" -msgstr "Cr Sel" +msgstr "CrSel" #: src/keycode.cpp msgid "Down" @@ -914,7 +1059,7 @@ msgstr "Ende" #: src/keycode.cpp msgid "Erase OEF" -msgstr "Verdecke OEF" +msgstr "Erase OEF" #: src/keycode.cpp msgid "Escape" @@ -930,7 +1075,7 @@ msgstr "Ausführen" #: src/keycode.cpp msgid "Final" -msgstr "Ziel" +msgstr "Final" #: src/keycode.cpp msgid "Help" @@ -966,7 +1111,7 @@ msgstr "Strg links" #: src/keycode.cpp msgid "Left Menu" -msgstr "Alt" +msgstr "Menü links" #: src/keycode.cpp msgid "Left Shift" @@ -998,7 +1143,7 @@ msgstr "Bild runter" #: src/keycode.cpp msgid "Nonconvert" -msgstr "Keine konventierung" +msgstr "Nonconvert" #: src/keycode.cpp msgid "Num Lock" @@ -1062,7 +1207,7 @@ msgstr "Ziffernblock 9" #: src/keycode.cpp msgid "OEM Clear" -msgstr "OEM Reinigen" +msgstr "OEM Clear" #: src/keycode.cpp msgid "PA1" @@ -1102,7 +1247,7 @@ msgstr "Strg rechts" #: src/keycode.cpp msgid "Right Menu" -msgstr "Alt Gr" +msgstr "Menü rechts" #: src/keycode.cpp msgid "Right Shift" @@ -1122,7 +1267,7 @@ msgstr "Auswählen" #: src/keycode.cpp msgid "Shift" -msgstr "L. Umsch" +msgstr "Umsch." #: src/keycode.cpp msgid "Sleep" @@ -1156,21 +1301,37 @@ msgstr "X-Knopf 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"(X,Y,Z)-Versatz des Fraktals vom Weltmittelpunkt in Einheiten von „scale“.\n" +"Benutzt, um einen passenden Einstiegsbereich aus niedriegem Gelände in die\n" +"Nähe von (0, 0) zu verschieben. Die Standardeinstellung ist brauchbar für\n" +"Mandelbrotmengen, für Juliamengen muss sie verändert werden. Die Reichweite\n" +"liegt grob zwischen -2 und 2. Mit „scale“ multiplizieren, um einen Versatz " +"in Blöcken\n" +"zu erhalten." + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = Parallax-Mapping mit Stufeninformation (schneller).\n" +"1 = Relief-Mapping (langsamer, genauer)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "3D-Wolken" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "Flugmodus" +msgstr "3D-Modus" #: src/settings_translation_file.cpp msgid "" @@ -1180,38 +1341,63 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3D-Unterstützung.\n" +"Aktuell verfügbar:\n" +"- none: Keine 3D-Ausgabe.\n" +"- anaglyph: Türkises / magenta 3D.\n" +"- interlaced: Bildschirmunterstützung für gerade / ungerade " +"zeilenbasierte Polarisation.\n" +"- topbottom: Bildschirm horizontal teilen.\n" +"- sidebyside: Bildschirm vertikal teilen.\n" +"- pageflip: Quadbuffer-basiertes 3D." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Ein festgelegter Kartengenerator-Seed für neue Welten. Leer lassen für " +"zufällige Erzeugung.\n" +"Wird überschrieben, wenn die Welt im Menü erstellt wird." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Eine Nachricht, die an alle verbundenen Clients versendet wird, wenn der " +"Server abstürzt." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Eine Nachricht, die an alle verbundene Clients gesendet wird, wenn der " +"Server herunterfährt." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Absolute Grenze der Erzeugungswarteschlangen" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Beschleunigung in der Luft" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "Active-Block-Management-Intervall" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "Active-Block-Modifier-Intervall" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Reichweite aktiver Kartenblöcke" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Reichweite aktiver Objekte" #: src/settings_translation_file.cpp msgid "" @@ -1219,39 +1405,51 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Adresse, mit der verbunden werden soll.\n" +"Leer lassen, um einen lokalen Server zu starten.\n" +"Die Adresse im Hauptmenü überschreibt diese Einstellung." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." -msgstr "" +msgstr "DPI des Bildschirms (nicht für X11/Android) z.B. für 4K-Bildschirme." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n" +"Diese Einstellung ist rein clientseitig und wird vom Server ignoriert." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Erweitert" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Höhenabkühlung" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Immer schnell fliegen" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Umgebungsverdeckungs-Gamma" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Verstärkt die Täler" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "Anisotroper Filter" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Server ankündigen" #: src/settings_translation_file.cpp msgid "" @@ -1259,173 +1457,242 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Meldet den Server in der Serverliste.\n" +"Wenn ein IPv6-Server angemeldet werden soll, muss serverlist_url auf\n" +"v6.servers.minetest.net gesetzt werden." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Julia-Menge: Approximative (X,Y,Z)-Skalierungen in Blöcken." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Zum Neuverbinden nach Absturz auffordern" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Automatisch bei der Serverliste melden." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Rückwärts" +msgstr "Rückwärtstaste" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Basisgeländehöhe" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Grundlegend" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "Grundprivilegien" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" msgstr "Bilinearer Filter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "Bind-Adresse" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bits pro Pixel (Farbtiefe) im Vollbildmodus." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Mehrspieler" +msgstr "Innerhalb des Spielers bauen" #: src/settings_translation_file.cpp msgid "Bumpmapping" -msgstr "Bumpmappen" +msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Kameraglättung" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Kameraglättung im Filmmodus" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Taste zum Umschalten der Kameraaktualisierung" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Höhlenrauschen Nr. 1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Höhlenrauschen Nr. 2" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "Höhlenbreite" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Höhlen und Tunnel bilden sich am Schnittpunkt der zwei Rauschen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat key" -msgstr "Tasten ändern" +msgstr "Chattaste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Tasten ändern" +msgstr "Taste zum Umschalten des Chatprotokolls" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Auswahl von 18 Fraktalen aus 9 Formeln.\n" +"1 = 4D-Mangelbrotmenge, Typ „rund“.\n" +"2 = 4D-Juliamenge, Typ „rund“.\n" +"3 = 4D-Mangelbrotmenge, Typ „eckig“.\n" +"4 = 4D-Juliamenge, Typ „eckig“.\n" +"5 = 4D-Mangelbrotmenge, Typ „Mandel-Cousin“.\n" +"6 = 4D-Juliamenge, Typ „Mandel-Cousin“.\n" +"7 = 4D-Mangelbrotmenge, Typ „Variante“.\n" +"8 = 4D-Juliamenge, Typ „Variante“.\n" +"9 = 3D-Mangelbrotmenge, Typ „Madelbrot/Mandelbar“.\n" +"10 = 3D-Juliamenge, Typ „Madelbrot/Mandelbar“.\n" +"11 = 3D-Mangelbrotmenge, Typ „Weihnachtsbaum“.\n" +"12 = 3D-Juliamenge, Typ „Weihnachtsbaum“.\n" +"13 = 3D-Mangelbrotmenge, Typ „Mandelbulb“.\n" +"14 = 3D-Juliamenge, Typ „Mandelbulb“.\n" +"15 = 3D-Mangelbrotmenge, Typ „Kosinus-Mandelbulb“.\n" +"16 = 3D-Juliamenge, Typ „Kosinus-Mandelbulb“.\n" +"17 = 4D-Mangelbrotmenge, Typ „Mandelbulb“.\n" +"18 = 4D-Juliamenge, Typ „Mandelbulb“." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Chunk-Größe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Kreativmodus" +msgstr "Filmmodus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Kreativmodus" +msgstr "Filmmodustaste" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Transparente Texturen säubern" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Client und Server" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Klettergeschwindigkeit" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Wolkenhöhe" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Wolkenradius" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D-Wolken" +msgstr "Wolken" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Wolken sind ein clientseitiger Effekt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Hauptmenü" +msgstr "Wolken im Menü" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Gefärbter Nebel" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Kommagetrennte Liste der Mods, denen Sie vertrauen. Vertrauten Mods ist es " +"erlaubt,\n" +"unsichere Funktionen zu verwenden, sogar dann, wenn Modsicherheit " +"eingeschaltet ist\n" +"(mit request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Kommagetrente Liste von Mods, welche auf HTTP-APIs zugreifen dürfen, was\n" +"es ihnen erlaubt, Daten aus und Daten zum Internet herunter- und hochzuladen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Befehl" +msgstr "Befehlstaste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" msgstr "Verbundenes Glas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Zum Server verbinden ..." +msgstr "Zu externen Medienserver verbinden" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Verbindet Glas, wenn der Block dies unterstützt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Konsole" +msgstr "Konsolenundurchsichtigkeit" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Konsole" +msgstr "Konsolenfarbe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Konsole" +msgstr "Konsolentaste" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Kontinuierliche Vorwärtsbewegung" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Kontinuierliches Vorwärtsbewegen (nur zum Testen verwendet)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Strg" +msgstr "Steuerung" #: src/settings_translation_file.cpp msgid "" @@ -1433,185 +1700,240 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Verändert Länge des Tag-Nacht-Zyklus.\n" +"Beispiele: 72 = 10 Minuten, 360 = 4 Minuten, 1 = 24 Stunden, 0 = Keine " +"Veränderung." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Verändert die Größe der Wüsten und Strände im\n" +"Kartengenerator v6. Falls Schneebiome aktiviert sind, wird\n" +"„mgv6_freq_desert“ ignoriert." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Steuert die Steilheit/Tiefe von Seesenken." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Steuert die Steilheit/Höhe von Hügeln." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" +"Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere Tunnel." #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Absturzmeldung" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Erstellt unvorhersehbare Lavakammern in Höhlen.\n" +"Sie können das Graben erschweren. Null deaktiviert sie. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Erstellt unvorhersehbare Wasserkammern in Höhlen.\n" +"Sie können das Graben erschweren. Null deaktiviert sie. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Fadenkreuzundurchsichtigkeit" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Fadenkreuzundurchsichtigkeit (Wert zwischen 0 und 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Fadenkreuzfarbe" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Fadenkreuzfarbe (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Schleichgeschwindigkeit" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Schaden einschalten" +msgstr "Schaden" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Taste zum Umschalten der Debug-Info" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Debugausgabelevel" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Taktung dedizierter Server" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Standardbeschleunigung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "Spiel ändern" +msgstr "Standardspiel" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Standardspiel beim Erstellen einer neuen Welt.\n" +"Diese Einstellung wird nicht genutzt, wenn die Welt im Hauptmenü erstellt " +"wird." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Neues Passwort" +msgstr "Standardpasswort" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Standardprivilegien" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Standardzeitlimit für cURL, in Millisekunden.\n" +"Hat nur eine Wirkung, wenn mit cURL kompiliert wurde." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Definiert die Sampling-Schrittgröße der Textur.\n" +"Ein höherer Wert resultiert in weichere Normal-Maps." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Setzt die maximale Distanz, in der die Spieler übertragen werden, in " +"Kartenblöcken (0 = unbegrenzt)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Verzögerung beim Zeigen von Tooltipps, in Millisekunden." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Veraltete Lua-API-Handhabung" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Tiefe, unter der man große Höhlen finden wird." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Tiefe, unter der man gigantische Höhlen finden wird." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Abstiegsgeschwindigkeit" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Die Beschreibung des Servers. Wird neuen Clients und in der Serverliste " +"angezeigt." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Blockanimationen desynchronisieren" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "Detaillierte Mod-Profildaten. Nützlich für Mod-Entwickler." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Detailliertes Mod-Profiling" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Legt die Geländeform fest.\n" +"Die 3 Zahlen in Klammern steuern die Skalierung des\n" +"Geländes, die 3 Zahlen sollten gleich sein." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Partikel aktivieren" +msgstr "Anti-Cheat deaktivieren" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Leere Passwörter verbieten" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Domainname des Servers. Wird in der Serverliste angezeigt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "2×Sprungtaste zum Fliegen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "2×Sprungtaste zum Fliegen" +msgstr "Doppelttippen der Sprungtaste schaltet Flugmodus um." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Wegwerfen-Taste" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Die Kartengenerator-Debuginformationen auf Konsole ausgeben." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "VBO aktivieren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Online-Mod-Archiv" +msgstr "Modsicherheit aktivieren" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Spielerschaden und -tod aktivieren." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Schaltet zufällige Steuerung ein (nur zum Testen verwendet)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Weiches Licht mit einfacher Ambient-Occlusion aktivieren.\n" +"Für bessere Performanz oder anderes Aussehen deaktivieren." #: src/settings_translation_file.cpp msgid "" @@ -1621,6 +1943,12 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Aktivieren, um alten Clients die Verbindung zu verwehren.\n" +"Ältere Clients sind kompatibel in der Hinsicht, dass sie beim Verbinden zu " +"neuen\n" +"Servern nicht abstürzen, aber sie könnten nicht alle neuen Funktionen, die " +"Sie\n" +"erwarten, unterstützen." #: src/settings_translation_file.cpp msgid "" @@ -1629,6 +1957,11 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Aktiviert die Benutzung eines entfernen Medienservers (falls vom Server " +"angeboten).\n" +"Entfernte Server bieten eine deutlich schnellere Methode, um Medien (z.B. " +"Texturen)\n" +"während des Verbindungsaufbaus zum Server herunterzuladen." #: src/settings_translation_file.cpp msgid "" @@ -1636,6 +1969,13 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Server als IPv6 laufen lassen. Ein IPv6-Server könnte,\n" +"abhängig von der Systemkonfiguration, auf IPv6-Clients eingeschränkt sein.\n" +"Wird ignoriert, falls bind_address gesetzt ist." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Aktiviert die Animation von Inventaritems." #: src/settings_translation_file.cpp msgid "" @@ -1644,98 +1984,125 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Aktiviert das Bump-Mapping für Texturen. Normal-Maps müssen im " +"Texturenpaket\n" +"vorhanden sein oder müssen automatisch erzeugt werden.\n" +"Shader müssen aktiviert werden, bevor diese Einstellung aktiviert werden " +"kann." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." msgstr "" +"Aktiviert das Zwischenspeichern von 3D-Modellen, die mittels facedir rotiert " +"werden." + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "Aktiviert filmisches Tone-Mapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Schaden einschalten" +msgstr "Aktiviert die Übersichtskarte." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"Aktiviert die spontane Normalmap-Erzeugung (Prägungseffekt).\n" +"Für diese Einstellung muss außerdem Bump-Mapping aktiviert sein." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Aktiviert Parralax-Occlusion-Mapping.\n" +"Hierfür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Experimentelle Einstellung, könnte sichtbare Leerräume zwischen\n" +"Blöcken verursachen, wenn auf einen Wert größer 0 gesetzt." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "Bildwiederholrate im Pausenmenü" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Kameraschütteln beim Aufprallen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "no" +msgstr "Ersatzschriftart" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Ersatzschriftschatten" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Undurchsichtigkeit des Ersatzschriftschattens" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Ersatzschriftgröße" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Schnelltaste" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Schnellmodusbeschleunigung" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Schnellmodusgeschwindigkeit" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Schnell bewegen" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Schnelle Bewegung (mittels Benutzen-Taste).\n" +"Dazu wird das „fast“-Privileg auf dem Server benötigt." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Gesichtsfeld" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Gesichtsfeld in Grad." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Datei in client/serverlist/, die Ihre Serverfavoriten aus dem " +"Mehrspielermenü beinhaltet." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "Fülltiefe" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Filmisches Tone-Mapping" #: src/settings_translation_file.cpp msgid "" @@ -1744,135 +2111,171 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"Gefilterte Texturen können RGB-Werte mit transparenten Nachbarn,\n" +"die PNG-Optimierer üblicherweise verwerfen, mischen. Manchmal\n" +"resultiert dies in einer dunklen oder hellen Kante bei transparenten\n" +"Texturen. Aktivieren Sie diesen Filter, um dies beim Laden der\n" +"Texturen aufzuräumen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Kein Filter" +msgstr "Filter" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Fester Karten-Seed" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" -msgstr "Flugmodus" +msgstr "Flugtaste" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Fliegen" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Nebel" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Taste für Nebel umschalten" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Schriftpfad" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Schriftschatten" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Schriftschatten-Undurchsichtigkeit" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." msgstr "" +"Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." msgstr "" +"Abstand des Schattens hinter der Schrift. Wenn 0, wird der Schatten nicht " +"gezeichnet." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Schriftgröße" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "Format von Bildschirmfotos." #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Vorwärts" +msgstr "Vorwärtstaste" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "FreeType-Schriften" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Maximale Entfernung, in der Kartenblöcke für Clients erzeugt werden, in\n" +"Kartenblöcken (16 Blöcke) angegeben." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Maximale Entfernung, in der Kartenblöcke zu Clients gesendet werden, in\n" +"Kartenblöcken (16 Blöcke) angegeben." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Maximale Entfernung, in der Clients über Objekte bescheid wissen, in\n" +"Kartenblöcken (16 Blöcke) angegeben." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Vollbild" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Vollbildfarbtiefe" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Vollbildmodus." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "GUI-Skalierung" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "GUI-Skalierfaktor" +msgstr "GUI-Skalierfilter" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "GUI-Skalierungsfilter txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Allgemein" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "Normalmaps generieren" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Globale Kartengenerierungsattribute.\n" +"Im Kartengenerator v6 wird das „decorations“-Flag alle Dekorationen außer\n" +"Bäume und Dschungelgras aktivieren, in allen anderen Kartengeneratoren\n" +"wird dieses Flag alle Dekorationen aktivieren.\n" +"Die von der Engine standardmäßig gesetzten Flags lauten:\n" +"„caves, light, decorations“.\n" +"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n" +"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +"werden von der Standardeinstellung unverändert gelassen.\n" +"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +"zu deaktivieren." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafik" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravitation" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP-Mods" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Taste zum Umschalten des HUD" #: src/settings_translation_file.cpp msgid "" @@ -1881,22 +2284,34 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Handhabung für veraltete Lua-API-Aufrufe:\n" +"- legacy: Versuchen, altes Verhalten zu imitieren (Standard für Release).\n" +"- log: Imitieren, und den Backtrace des veralteten Funktionsaufrufs " +"protokollieren (Standard für\n" +" Debug).\n" +"- error: Bei Verwendung eines veralteten Funktionsaufrufs abbrechen (" +"empfohlen für Mod-\n" +" Entwickler)." + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "Höhenkomponente der anfänglichen Fenstergröße." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Höhe, in der Wolken auftauchen." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "Hochpräzisions-FPU" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Homepage des Servers. Wird in der Serverliste angezeigt." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Wie tief Flüsse sein sollen" #: src/settings_translation_file.cpp msgid "" @@ -1904,76 +2319,112 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Wie groß das Gebiet ist, in dem Kartenblöcke aktiv sind.\n" +"In aktiven Blöcken werden Objekte geladen und ABMs ausgeführt.\n" +"1 Kartenblock = 16×16×16 Blöcke." #: src/settings_translation_file.cpp msgid "" "How many blocks are flying in the wire simultaneously for the whole server." msgstr "" +"Wie viele Kartenblöcke gleichzeitig für den gesamten Server auf der Leitung " +"unterwegs sind." #: src/settings_translation_file.cpp msgid "How many blocks are flying in the wire simultaneously per client." msgstr "" +"Wie viele Kartenblöcke gleichzeitig pro Client auf der Leitung unterwegs " +"sind." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Wie lange der Server warten wird, bevor nicht mehr verwendete Kartenblöcke\n" +"entladen werden. Ein höher Wert führt zu besserer Performanz, aber auch\n" +"zur Benutzung von mehr Arbeitsspeicher." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Wie breit Flüsse sein sollen" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6-Server" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6-Unterstützung." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Falls die Bildwiederholrate diesen Wert überschreitet,\n" +"wird sie durch Nichtstun begrenzt, um die CPU nicht\n" +"unnötig zu belasten." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "MP deaktivieren" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Falls deaktiviert, wird die „Benutzen“-Taste benutzt, um schnell zu " +"fliegen,\n" +"wenn sowohl der Flug- als auch der Schnellmodus aktiviert ist." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Falls es aktiviert ist, kann der Spieler im Flugmodus durch feste Blöcke " +"fliegen.\n" +"Dafür wird das „noclip“-Privileg auf dem Server benötigt." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Aktiviert" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Falls aktiviert, wird die „Benutzen“-Taste statt der „Schleichen“-Taste zum\n" +"Herunterklettern und Sinken benutzt." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Falls aktiviert, werden Aktionen für die Rollback-Funktion aufgezeichnet.\n" +"Diese Einstellung wird nur beim Starten des Servers gelesen." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." msgstr "" +"Wenn diese Einstellung aktiviert ist, werden die Anti-Cheat-Maßnahmen " +"deaktiviert." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Falls aktiviert, werden ungültige Weltdaten den Server nicht dazu\n" +"veranlassen, sich zu beenden.\n" +"Aktivieren Sie dies nur, wenn Sie wissen, was sie tun." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" +"Falls aktiviert, können neue Spieler nicht mit einem leeren Passwort\n" +"beitreten." #: src/settings_translation_file.cpp msgid "" @@ -1981,68 +2432,132 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Falls aktiviert, können Sie Blöcke an der Position (Füße u. Augenhöhe), auf " +"der Sie\n" +"stehen, platzieren. Dies ist hilfreich, wenn mit „Nodeboxen“ auf engen Raum\n" +"gearbeitet wird." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "" +"Falls dies gesetzt ist, werden Spieler immer an der gegebenen\n" +"Position im Spiel einsteigen bzw. nach dem Tod wieder einsteigen." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Weltfehler ignorieren" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" msgstr "Spiel" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" +"Undurchsichtigkeit des Hintergrundes der Chat-Konsole im Spiel\n" +"(Wert zwischen 0 und 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Hintergrundfarbe (R,G,B) der Chat-Konsole im Spiel." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Zeitintervall des Abspeicherns wichtiger Änderungen in der Welt,\n" +"in Sekunden." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "Zeitintervall, in dem die Tageszeit an Clients gesendet wird." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "Animierte Inventaritems" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "Inventar" +msgstr "Inventartaste" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Maus umkehren" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Kehrt die vertikale Mausbewegung um." #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "Springen" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" -msgstr "" +msgstr "Item-Entity-TTL" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" +"Iterationen der rekursiven Funktion.\n" +"Steuert die Skalierung mit einem sehr hohem Detailgrad." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Nur für Juliamenge: W-Komponente der hyperkomplexen Konstanten, welche die " +"Juliaform festlegt.\n" +"Hat keine Wirkung auf 3D-Fraktale.\n" +"Reichweite liegt grob zwischen -2 und 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Julia-Menge: X-Komponente der hyperkomplexen Konstanten, welche die " +"Juliaform festlegt.\n" +"Weite liegt grob zwischen -2 und 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Julia-Menge: Y-Komponente der hyperkomplexen Konstanten, welche die " +"Juliaform festlegt.\n" +"Weite liegt grob zwischen -2 und 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Julia-Menge: Z-Komponente der hyperkomplexen Konstanten, welche die " +"Juliaform festlegt.\n" +"Weite liegt grob zwischen -2 und 2." + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "Sprungtaste" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "Sprunggeschwindigkeit" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um die Sichtweite zu reduzieren.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2050,13 +2565,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Fallenlassen des ausgewählten Gegenstandes.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um die Sichtweite zu erhöhen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2064,6 +2585,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Springen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2071,6 +2595,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um sich schnell im Schnellmodus zu bewegen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2078,6 +2605,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um den Spieler rückwärts zu bewegen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2085,6 +2615,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um den Spieler vorwärts zu bewegen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2092,6 +2625,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um den Spieler nach links zu bewegen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2099,6 +2635,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um den Spieler nach rechts zu bewegen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2106,6 +2645,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um die Chat-Konsole im Spiel zu öffnen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2113,6 +2655,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um das Chat-Fenster zu öffnen, um Kommandos einzugeben.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2120,6 +2665,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Öffnen des Chat-Fensters.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2127,6 +2675,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Öffnen des Inventars.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2134,6 +2685,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um die Debug-Stacks auszugeben. Für die Entwicklung benutzt.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2143,6 +2697,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Schleichen.\n" +"Wird auch zum Runterklettern und das Sinken im Wasser verwendet, falls " +"aux1_descends deaktiviert ist.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2150,6 +2709,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Wechseln der Kamera (Ego- oder Dritte-Person-Perspektive).\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2157,6 +2719,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zur Erzeugung von Bildschirmfotos.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2164,6 +2729,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten des Filmmodus.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2171,6 +2739,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Wechseln der Anzeige der Übersichtskarte.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2178,6 +2749,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten des Schnellmodus.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2185,6 +2759,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten des Flugmodus.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2192,6 +2769,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten des Geistmodus.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2199,6 +2779,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten der Kameraaktualisierung. Nur für die Entwicklung " +"benutzt.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2206,6 +2790,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten der Anzeige der Debug-Informationen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2213,6 +2800,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um das HUD zu verbergen oder wieder anzuzeigen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2220,6 +2810,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um das Chatprotokoll zu verbergen oder wieder anzuzeigen.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2227,6 +2820,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten des Nebels.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2234,6 +2830,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste zum Umschalten der Profiler-Anzeige. Für die Entwicklung benutzt.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2241,18 +2840,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Taste, um die unbegrenzte Sichtweite ein- oder auszuschalten.\n" +"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "„Benutzen“-Taste zum Runterklettern" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Sprache" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Tiefe für große Höhlen" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Lavakammern" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Blätterstil" #: src/settings_translation_file.cpp msgid "" @@ -2261,17 +2871,32 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Blätterstil:\n" +"- Fancy: Alle Seiten sind sichtbar\n" +"- Simple: Nur die äußeren Seiten sind sichtbar, oder special_tiles werden " +"benutzt\n" +"- Opaque: Blätter sind undurchsichtig" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Alt" +msgstr "Linkstaste" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." msgstr "" +"Länge eines Servertakts und dem Zeitintervall, in dem Objekte über das " +"Netzwerk üblicherweise\n" +"aktualisiert werden." + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "Dauer der Zeit zwischen ABM-Ausführungszyklen" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "Dauer der Zeit zwischen NodeTimer-Ausführungszyklen" #: src/settings_translation_file.cpp msgid "" @@ -2284,14 +2909,23 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Bis zu welcher Dringlichkeitsstufe Protokollmeldungen\n" +"in debug.txt geschrieben werden sollen:\n" +"- (keine Protokollierung)\n" +"- none (Meldungen ohne Einstufung)\n" +"- error (Fehler)\n" +"- warning (Warnungen)\n" +"- action (Aktionen)\n" +"- info (Informationen)\n" +"- verbose (Ausführlich)" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "Erzeugungswarteschlangengrenze auf Festspeicher" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "Limit der Erzeugungswarteschlangen" #: src/settings_translation_file.cpp msgid "" @@ -2301,328 +2935,546 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"Begrenzt die Anzahl der parallelen HTTP-Anfragen. Betrifft:\n" +"- Medienabholung, falls der Server die remote_media-Einstellung " +"verwendet.\n" +"- Herunterladen der Serverliste und Server-Ankündigungsdaten.\n" +"- Downloads, die vom Hauptmenü aus getätigt werden (z.B. Mod-Manager).\n" +"Hat nur eine Wirkung, wenn mit cURL-Unterstützung kompiliert wurde." #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Flüssigkeitswiederstand" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Flüssigkeitswiderstandsglättung" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Max. Flüssigkeitsiterationen" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Aufräumzeit für Flüssigkeitswarteschlange" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Sinkgeschwindigkeit in Flüssigkeiten" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Flüssigkeitsaktualisierungsintervall in Sekunden." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Flüssigkeitsaktualisierungstakt" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Hauptmenü-Spiel-Manager" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Hauptmenü" +msgstr "Hauptmenü-Mod-Manager" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Hauptmenü" +msgstr "Hauptmenü-Skript" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Nebel- und Himmelsfarben von der Tageszeit (Sonnenaufgang/Sonnenuntergang)\n" +"und Blickrichtung abhängig machen." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" +"DirectX mit LuaJIT zusammenarbeiten lassen. Deaktivieren Sie dies,\n" +"falls es Probleme verursacht." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Kartenordner" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Kartengenerierungsattribute speziell für den Kartengenerator „Täler“.\n" +"„altitude_chill“ macht höhere Höhen kälter, was ein paar Biomprobleme " +"hervorrufen könnte.\n" +"„humid_rivers“ modifiert die Luftfeuchtigkeit um Flüssen und in Gebieten, wo " +"sich Wasser\n" +"ansammeln würde; es könnte fein abgestimmte Biomen beeinträchtigen.\n" +"Die von der Engine standardmäßig gesetzten Flags lauten:\n" +"„altitude_chill, humid_rivers“.\n" +"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n" +"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +"werden von der Standardeinstellung unverändert gelassen.\n" +"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +"zu deaktivieren." #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Kartengenerierungsattribute speziell für den flachen Kartengenerator.\n" +"Gelegentlich werden Seen und Hügel zur flachen Welt hinzugefügt.\n" +"Die von der Engine standardmäßig gesetzten Flags sind: keine.\n" +"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n" +"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +"werden von der Standardeinstellung unverändert gelassen.\n" +"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +"zu deaktivieren." + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Kartengenerierungsattribute speziell für den Kartengenerator v6.\n" +"Falls Schneebiome aktiviert, werden Dschungel aktiviert und das „jungles“-" +"Flag\n" +"wird ignoriert.\n" +"Die von der Engine standardmäßig gesetzten Flags lauten:\n" +"„biomeblend, mudflow“.\n" +"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n" +"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +"werden von der Standardeinstellung unverändert gelassen.\n" +"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +"zu deaktivieren." + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Kartengenerierungsattribute speziell für den Kartengenerator v7.\n" +"Das „ridges“-Flag steuert die Flüsse.\n" +"Die von der Engine standardmäßig gesetzten Flags lauten:\n" +"„mountains, ridges“.\n" +"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n" +"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +"werden von der Standardeinstellung unverändert gelassen.\n" +"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +"zu deaktivieren." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Kartenerzeugungsgrenze" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Speicherintervall der Karte" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Kartenblock-Grenze" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Timeout zum Entladen von Kartenblöcken" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Täler-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Biomhitzen-Rauschparameter" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Biomluftfeuchtigkeitsübergangs-Rauschparameter" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" -msgstr "" +msgstr "Biomluftfeuchtigkeits-Rauschparameter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Weltgenerator" +msgstr "Kartengenerator-Debugging" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Weltgenerator" +msgstr "Kartengenerator-Flags" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Flacher Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "Höhlenbreite für den flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "cave1-Rauschparameter für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "cave2-Rauschparameter für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "Fülltiefenrauschparameter für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Flags für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Basishöhe für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Hügelsteilheilt für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Hügel-Schwellwert für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "See-Steilheit für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "See-Schwellwert für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "Tiefe für große Höhlen für den flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "Gelände-Rauschparameter für flachen Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "Höhlenbreite für den Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "cave1-Rauschparameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "cave2-Rauschparameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "Fülltiefenrauschparameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "Fraktale-Kartengenerator-Fraktal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "Iterationen für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "w-Parameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "x-Parameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "y-Parameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "z-Parameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "Versatz für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "Skalierung für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Meeresgrundrauschparameter für Fraktale-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "w-Ausschnitt für Fraktale-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" -msgstr "" +msgstr "Hitzenübergangs-Rauschparameter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Weltgenerator" +msgstr "Kartengeneratorname" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v5" -msgstr "Weltgenerator" +msgstr "v5-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "Höhlenbreite für v5-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" -msgstr "" +msgstr "cave1-Höhlen-Rauschparameter für v5-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave2 noise parameters" -msgstr "" +msgstr "cave2-Höhlen-Rauschparameter für v5-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v5 factor noise parameters" -msgstr "" +msgstr "Faktor-Rauschparameter für v5-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v5 filler depth noise parameters" -msgstr "" +msgstr "Fülltiefen-Rauschparameter für v5-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v5 height noise parameters" -msgstr "" +msgstr "Höhen-Rauschparameter für v5-Kartengenerator" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Weltgenerator" +msgstr "v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" -msgstr "" +msgstr "Apfelbaum-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "Strandhäufigkeit für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" -msgstr "" +msgstr "Strand-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 biome noise parameters" -msgstr "" +msgstr "Biom-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 cave noise parameters" -msgstr "" +msgstr "Höhlen-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Wüsten-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "v6-Kartengenerator-Flags" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" -msgstr "" +msgstr "Höhenauswahl-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 humidity noise parameters" -msgstr "" +msgstr "Luftfeuchtigkeits-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 mud noise parameters" -msgstr "" +msgstr "Schlamm-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 steepness noise parameters" -msgstr "" +msgstr "Steilheits-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain altitude noise parameters" -msgstr "" +msgstr "Geländehöhen-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain base noise parameters" -msgstr "" +msgstr "Basisgelände-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v6 trees noise parameters" -msgstr "" +msgstr "Baum-Rauschparameter für v6-Kartengenerator" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Weltgenerator" +msgstr "v7-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "Höhlenbreite für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" -msgstr "" +msgstr "cave1-Höhlen-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave2 noise parameters" -msgstr "" +msgstr "cave2-Höhlen-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 filler depth noise parameters" -msgstr "" +msgstr "Fülltiefen-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "v7-Kartengenerator-Flags" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" -msgstr "" +msgstr "Höhenauswahl-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 mount height noise parameters" -msgstr "" +msgstr "Berghöhen-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 mountain noise parameters" -msgstr "" +msgstr "Berg-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge noise parameters" -msgstr "" +msgstr "Fluss-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge water noise parameters" -msgstr "" +msgstr "Flusswasser-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain altitude noise parameters" -msgstr "" +msgstr "Geländehöhen-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain base noise parameters" -msgstr "" +msgstr "Basisgelände-Rauschparameter für v7-Kartengenerator" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain persistation noise parameters" -msgstr "" +msgstr "Geländepersistenz-Rauschparameter für v7-Kartengenerator" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "Tiefe für gigantische Höhlen" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "Rauschen für gigantische Höhlen" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "An dieser Tiefe und darunter bilden sich gigantische Höhlen." #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Max. Distanz für Kartenblockerzeugung" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "Max. Distanz für Kartenblockübertragung" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "Max. Flüssigkeitsblöcke, die pro Schritt verarbeitet werden." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "Max. clearobjects-Zusatz-Kartenblöcke" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "Max. Pakete pro Iteration" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "Maximale Bildwiederholrate" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Maximale Bildwiederholrate, wenn das Spiel pausiert ist." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "Maximal zwangsgeladene Kartenblöcke" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Max. Breite der Schnellzugriffsleiste" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "Maximale Anzahl der Kartenblöcke in der Ladewarteschlange." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximale Anzahl der Kartenblöcke, die in die Erzeugungswarteschlage gesetzt " +"werden.\n" +"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus\n" +"einer Datei gesetzt werden können.\n" +"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "Maximale Anzahl der zwangsgeladenen Kartenblöcke." #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Maximale Anzahl der Kartenblöcke, die der Client im Speicher vorhalten " +"soll.\n" +"Auf -1 setzen, um keine Obergrenze zu verwenden." #: src/settings_translation_file.cpp msgid "" @@ -2630,135 +3482,154 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"Maximale Anzahl der Pakete, die pro Sende-Schritt gesendet werden. Falls Sie " +"eine\n" +"langsame Verbindung haben, probieren Sie, diesen Wert zu reduzieren,\n" +"aber reduzieren Sie ihn nicht unter der doppelten Anzahl der Clients, die " +"Sie\n" +"anstreben." #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "Maximale Anzahl der Spieler, die sich simultan verbinden können." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." msgstr "" +"Maximale Anzahl der statisch gespeicherten Objekte in einem Kartenblock." #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Maximales Verhältnis zum aktuellen Fenster, das für die\n" +"Schnellzugriffsleiste verwendet werden soll. Nützlich, wenn es\n" +"etwas gibt, was links oder rechts von ihr angezeigt werden soll." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Max. gleichzeitig versendete Kartenblöcke pro Client" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Max. gleichzeitig versendete Kartenblöcke" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Maximale Zeit in ms, die das Herunterladen einer Datei (z.B. einer Mod) " +"dauern darf." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Maximale Benutzerzahl" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Maximale Objekte pro Kartenblock" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menü" +msgstr "Menüs" #: src/settings_translation_file.cpp msgid "Mesh cache" -msgstr "" +msgstr "3D-Modell-Zwischenspeicher" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Meldung des Tages (message of the day)" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." msgstr "" +"Die Meldung des Tages, die frisch verbundenen Spielern angezeigt werden " +"soll.\n" +"Auf Englisch bekannt als „message of the day“ oder „MOTD“." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "Verwendete Methode, um ein ausgewähltes Objekt hervorzuheben." #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Übersichtskarte" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Übersichtskartentaste" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Abtasthöhe der Übersichtskarte" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" +msgstr "Minimale Texturengröße für Filter" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" msgstr "Mip-Mapping" #: src/settings_translation_file.cpp msgid "Mod profiling" -msgstr "" +msgstr "Mod-Profiling" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "Modspeicher: Details-URL" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "Modspeicher: Download-URL" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "Modspeicher: Listen-URL" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Pfad der Festbreitenschrift" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Größe der Festbreitenschrift" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Mausempfindlichkeit" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Faktor für die Mausempfindlichkeit." #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Faktor für Kameraschütteln beim Sturz.\n" +"Zum Beispiel: 0 für kein Schütteln, 1.0 für den Standardwert, 2.0 für " +"doppelte Geschwindigkeit." #: src/settings_translation_file.cpp msgid "" "Multiplier for view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Faktor für Auf- und Abbewegung (grafischer Effekt).\n" +"Zum Beispiel: 0 für keine Auf- und Abbewegung, 1.0 für den Standardwert, 2.0 " +"für doppelte Geschwindigkeit." #: src/settings_translation_file.cpp msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"Name des Kartengenerators, der für die Erstellung neuer Welten\n" +"verwendet werden soll. Mit der Erstellung einer Welt im Hauptmenü\n" +"wird diese Einstellung überschrieben." #: src/settings_translation_file.cpp msgid "" @@ -2766,58 +3637,73 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"Name des Spielers.\n" +"Wenn ein Server gestartet wird, werden Clients mit diesem Namen zu " +"Administratoren.\n" +"Wird vom Hauptmenü aus gestartet, wird diese Einstellung überschrieben." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" +"Name des Servers. Er wird in der Serverliste angezeigt und für frisch " +"verbundene\n" +"Spieler angezeigt." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Netzwerk" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"Netzwerkport (UDP), auf dem gelauscht werden soll.\n" +"Dieser Wert wird überschrieben, wenn vom Hauptmenü\n" +"aus gestartet wird." #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Neue Benutzer müssen dieses Passwort eingeben." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Geistmodus" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Geistmodustaste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" msgstr "Blöcke hervorheben" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "NodeTimer-Intervall" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +"Rauschparameter für Temperatur-, Luftfeuchtigkeits- und Biomübergänge\n" +"in der Biom-API." + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "Rauschen" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "" +msgstr "Normalmaps-Sampling" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "" +msgstr "Normalmaps-Stärke" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "Anzahl der Erzeugerthreads" #: src/settings_translation_file.cpp msgid "" @@ -2827,6 +3713,13 @@ msgid "" "speed greatly\n" "at the cost of slightly buggy caves." msgstr "" +"Anzahl der zu benutzenden Erzeugerthreads. Lassen Sie dieses Feld frei, oder " +"erhöhen Sie\n" +"diese Zahl, um mehrere Threads zu verwenden. Auf Mehrprozessorsystemen wird " +"dies die\n" +"Geschwindigkeit der Kartengenerierung auf Kosten von leicht fehlerhaften " +"Höhlen stark\n" +"erhöhen." #: src/settings_translation_file.cpp msgid "" @@ -2834,122 +3727,114 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"Anzahl der zusätzlichen Kartenblöcke, welche mit /clearobjects gleichzeitig\n" +"geladen werden können. Dies ist ein Kompromiss zwischen SQLite-\n" +"Transaktions-Overhead und Speicherverbrauch (Faustregel: 4096=100MB)." #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "Anzahl der Parallax-Occlusion-Iterationen." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" +msgstr "Startwert des Parallax-Occlusion-Effektes, üblicherweise Skalierung/2." #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" +msgstr "Gesamtskalierung des Parallax-Occlusion-Effektes." #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax Oklusion" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion-Skalierung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion-Startwert" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion-Iterationen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion-Modus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "Parallax Oklusion" +msgstr "Parallax-Occlusion-Stärke" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Pfad, in dem Bildschirmfotos abgespeichert werden." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." msgstr "" +"Pfad der Texturenverzeichnisse. Alle Texturen werden von dort zuerst gesucht." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Physik" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"Der Spieler kann unabhängig von der Schwerkraft fliegen.\n" +"Dafür wird das „fly“-Privileg auf dem Server benötigt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Spielername zu lang." +msgstr "Spielername" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Spieler-Übertragungsdistanz" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Spielerkampf" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Texturen laden ..." +"UDP-Port, zu dem sich verbunden werden soll.\n" +"Beachten Sie, dass das Port-Feld im Hauptmenü diese Einstellung\n" +"überschreibt." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Verhindert, dass Mods unsichere Funktionen, wie das Ausführen von\n" +"Shell-Kommandos, benutzen können." + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "Privilegien, die Spieler mit basic_privs gewähren können" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" +"Profiler-Datenausgabeintervall. 0 = deaktivieren. Nützlich für Entwickler." #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "Profiler-Umschalten-Taste" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "Profiler-Ausgabeintervall" #: src/settings_translation_file.cpp msgid "" @@ -2957,52 +3842,73 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"Radius des Wolkenbereichs; In Einheiten von 64 Blöcken.\n" +"Werte größer als 26 werden scharfe Schnittkanten an den Ecken des Wolken-\n" +"bereichs erzeugen." + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "Erhöht das Gelände, um Täler um den Flüssen zu erzeugen" #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Zufällige Steuerung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Weite Sicht" +msgstr "Sichtweitentaste" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Externer Medienserver" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Serverport" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Ersetzt das Standardhauptmenü mit einem benutzerdefinierten Hauptmenü." #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Alt Gr" +msgstr "Rechtstaste" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "Rechtsklick-Wiederholungsrate" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "Flusstiefe" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "Flussrauschen" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "Flussgröße" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "Flussrauschen – Flüsse erscheinen in der Nähe von null" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "Rollback-Aufzeichnung" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Runde Übersichtskarte" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "Speichert die vom Client empfangene Karte auf dem Datenträger." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "Karte vom Server speichern" #: src/settings_translation_file.cpp msgid "" @@ -3012,111 +3918,130 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"GUI mit einem benutzerdefinierten Wert skalieren.\n" +"Benutzt einen Pixelwiederholungs-Anti-Aliasing-Filter, um\n" +"die GUI zu skalieren. Dies wird einige der harten Kanten\n" +"abglätten und Pixel beim Verkleinern mischen, wobei einige\n" +"Kantenpixel verschwommen werden, wenn sie mit nicht-\n" +"ganzzahligen Größen skaliert werden." #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Bildschirmhöhe" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Bildschirmbreite" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Druck" +msgstr "Bildschirmfoto" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Bildschirmfotoverzeichnis" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "Bildschirmfotoformat" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "Bildschirmfotoqualität" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" +"Bildschirmfotoqualität. Wird nur für das JPEG-Format benutzt.\n" +"1 steht für die schlechteste Qualität, 100 für die beste Qualität.\n" +"Benutzen Sie 0 für die Standardqualität." #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Sicherheit" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Siehe http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Farbe der Auswahlbox (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Auswahlboxfarbe" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Auswahlboxbreite" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Einzelspieler starten" +msgstr "Server / Einzelspieler" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "Server-URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Serverport" +msgstr "Serveradresse" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Serverport" +msgstr "Serverbeschreibung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Servername" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Serverport" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Öffentliche Serverliste" +msgstr "Serverlisten-URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Öffentliche Serverliste" +msgstr "Serverlistendatei" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Setzt die Sprache. Leer lassen, um Systemsprache zu verwenden.\n" +"Nach Änderung ist ein Neustart erforderlich." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Auf „wahr“ setzen, um sich im Wind wehende Blätter zu aktivieren.\n" +"Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"Auf „wahr“ setzen, um sich im Wind wehende Pflanzen zu aktivieren.\n" +"Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shader" +"Auf „wahr“ setzen, um Wasserwogen zu aktivieren.\n" +"Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp msgid "" @@ -3124,52 +4049,66 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"Shader werden für fortgeschrittene visuelle Effekte benötigt und können die " +"Performanz\n" +"auf einigen Grafikkarten erhöhen.\n" +"Funktioniert nur mit dem OpenGL-Backend." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "Form der Übersichtskarte. Aktiviert = rund, Deaktiviert = rechteckig." #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "" +msgstr "Debug-Info zeigen" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "Entitiy-Auswahlboxen zeigen" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Herunterfahrnachricht" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Größe der Stücke, die gleichzeitig vom Kartengenerator erzeugt werden,\n" +"in Kartenblöcken (16×16×16 Blöcke)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "Hänge und Füllungen arbeiten zusammen, um die Höhen zu verändern" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "Besseres Licht" +msgstr "Geglättetes Licht" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Glättet Kamerabewegungen bei der Fortbewegung und\n" +"beim Umsehen. Nützlich zum Aufnehmen von Videos." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "Glättet die Rotation der Kamera im Filmmodus. 0 zum Ausschalten." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Glättet die Rotation der Kamera. 0 zum Ausschalten." #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Schleichen" +msgstr "Schleichtaste" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Sound" #: src/settings_translation_file.cpp msgid "" @@ -3178,53 +4117,91 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"Spezifiziert die URL, von der die Clients die Medien (Texturen, Sounds, …) " +"herunterladen.\n" +"$Dateiname sollte von $remote_media$Dateiname mittels cURL erreichbar sein\n" +"(diese Einstellung sollte also mit einem Schrägstrich enden).\n" +"Dateien, die nicht über diesen Server erreichbar sind, werden auf dem " +"üblichen\n" +"Weg heruntergeladen (UDP)." #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Statische Einstiegsposition" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Normalmaps generieren" +msgstr "Stärke der generierten Normalmaps." #: src/settings_translation_file.cpp msgid "Strength of parallax." -msgstr "" +msgstr "Stärke von Parallax." #: src/settings_translation_file.cpp msgid "Strict protocol checking" -msgstr "" +msgstr "Strikte Protokollversionsprüfung" + +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "Ältere Server unterstützen" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "Synchrones SQLite" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Texturpakete" +msgid "Terrain Height" +msgstr "Geländehöhe" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." msgstr "" +"Schwellwert für Geländerauschen der Hügel.\n" +"Steuert das Verhältnis des Weltgebiets, das von Hügeln bedeckt ist.\n" +"Passen Sie diesen Wert in Richtung 0.0 für ein größeres Verhältnis an." + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" +"Schwellwert für Geländerauschen der Seen.\n" +"Steuert das Verhältnis des Weltgebiets, das von Seen bedeckt ist.\n" +"Passen Sie diesen Wert in Richtung 0.0 für ein größeres Verhältnis an." + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Texturpfad" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "Die Höhe, ab der die Temperatur um 20 °C fällt" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "Die Tiefe von Erde oder einem anderem Füller" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "Die Netzwerkschnittstelle, auf die der Server lauscht." #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"Die Privilegien, die neue Benutzer automatisch erhalten.\n" +"Siehe /privs im Spiel für eine vollständige Liste aller möglichen " +"Privilegien\n" +"auf Ihrem Server und die Modkonfiguration." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Das Render-Backend für Irrlicht." #: src/settings_translation_file.cpp msgid "" @@ -3233,6 +4210,11 @@ msgid "" "setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" "set to the nearest valid value." msgstr "" +"Die Stärke (Dunkelheit) der blockweisen Ambient-Occlusion-Schattierung.\n" +"Niedriger bedeutet dunkler, höher bedeutet heller. Gültige Werte liegen\n" +"zwischen 0.25 und 4.0 inklusive. (Achtung: Punkt als Dezimaltrennzeichen\n" +"verwenden!) Falls der Wert außerhalb liegt, wird er zum nächsten gültigen\n" +"Wert gesetzt." #: src/settings_translation_file.cpp msgid "" @@ -3240,34 +4222,51 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" +"Die Zeit (in Sekunden), die die Flüssigkeitswarteschlange über die " +"Verarbeitungs-\n" +"kapazität hinauswachsen darf, bevor versucht wird, ihre Größe durch das\n" +"Verwerfen alter Warteschlangeneinträge zu reduzieren. Der Wert 0 " +"deaktiviert\n" +"diese Funktion." #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." msgstr "" +"Das Intervall in Sekunden, in dem Rechtsklicks wiederholt werden, wenn die " +"rechte\n" +"Maustaste gedrückt gehalten wird." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." -msgstr "" +msgstr "Diese Schrift wird von bestimmten Sprachen benutzt." + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "Zeit zwischen Active-Block-Management-Zyklen" #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Zeit in Sekunden, die Item-Entitys (fallengelassene Gegenstände)\n" +"existieren dürfen. Der Wert -1 deaktiviert diese Funktion." #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "Zeit-Sendeintervall" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "Zeitgeschwindigkeit" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." msgstr "" +"Zeit, nach der der Client nicht benutzte Kartendaten aus\n" +"dem Speicher löscht." #: src/settings_translation_file.cpp msgid "" @@ -3276,17 +4275,21 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"Um Verzögerungen zu reduzieren, werden Kartenblockübertragungen verlangsamt, " +"während\n" +"ein Spieler etwas baut. Diese Einstellung bestimmt, wie lange sie " +"verlangsamt sind,\n" +"nachdem ein Block platziert oder entfernt wurde." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Kameraauswahltaste" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Tooltip-Verzögerung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Trilinearer Filter" @@ -3296,149 +4299,183 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"Wahr = 256\n" +"Falsch = 128\n" +"Nützlich, um die Übersichtskarte performanter auf langsamen Maschinen zu " +"machen." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Vertrauenswürdige Mods" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." msgstr "" +"URL der Serverliste, die in der Mehrspieler-Registerkarte angezeigt wird." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Unbegrenzte Spielerübertragungsdistanz" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "Nicht benutzte Serverdaten entladen" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Wolken blockförmig statt flach aussehen lassen." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Eine Wolkenanimation für den Hintergrund im Hauptmenü benutzen." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." msgstr "" +"Anisotrope Filterung verwenden, wenn auf Texturen aus einem\n" +"gewissen Blickwinkel heraus geschaut wird." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Bilineare Filterung bei der Skalierung von Texturen benutzen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "Taste drücken" +msgstr "Benutztaste" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." msgstr "" +"Mip-Mapping benutzen, um Texturen zu skalieren. Kann die Performanz\n" +"leicht erhöhen." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Trilineare Filterung bei der Skalierung von Texturen benutzen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Ehemalige Hauptentwickler" +msgstr "Nützlich für Mod-Entwickler." #: src/settings_translation_file.cpp msgid "V-Sync" -msgstr "" +msgstr "Vertikale Synchronisation" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." -msgstr "" +msgid "VBO" +msgstr "VBO" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "Taltiefe" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "Talfüllung" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "Talprofil" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "Talhang" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "C-Täler-Flags" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "Vertikale Bildschirmsynchronisation." #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Grafiktreiber" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "Auf- und Abbewegung der Ansicht" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"Sichtweite in Blöcken.\n" +"Minimum = 20" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "Taste „Sichtweite reduzieren“" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "Taste „Sichtweite erhöhen“" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" +msgid "Viewing range" +msgstr "Sichtweite" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Tonlautstärke" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "Wehende Blätter" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"W-Koordinate des generierten 3D-Ausschnitts eines 4D-Fraktals.\n" +"Bestimmt, welcher 3D-Ausschnitt der 4D-Form generiert wird.\n" +"Hat keine Auswirkung auf 3D-Fraktale.\n" +"Die Weite liegt grob zwischen -2 und 2." #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Gehgeschwindigkeit" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "Wasserkammern" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Meeresspiegel" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "Die Höhe des (Meer-)Wassers in der Welt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Wehende Blätter" +msgstr "Wehende Blöcke" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "Wehende Blätter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" -msgstr "Wogende Pflanzen" +msgstr "Wehende Pflanzen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Wasserwellen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Wasserwellen" +msgstr "Wasserwellenhöhe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Wasserwellen" +msgstr "Wasserwellenlänge" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Wasserwellen" +msgstr "Wasserwellengeschwindigkeit" #: src/settings_translation_file.cpp msgid "" @@ -3446,6 +4483,10 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"Falls gui_scaling_filter wahr ist, dann müssen alle GUI-Bilder\n" +"von der Software gefiltert werden, aber einige Bilder werden\n" +"direkt zur Hardware erzeugt (z.B. Rendern in die Textur für\n" +"die Inventarbilder von Blöcken)." #: src/settings_translation_file.cpp msgid "" @@ -3454,6 +4495,11 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "propery support downloading textures back from hardware." msgstr "" +"Falls gui_scaling_filter_txr2img auf „wahr“ gesetzt ist, werden\n" +"diese Bilder von der Hardware zur Software für die Skalierung\n" +"kopiert. Falls es auf „falsch“ gesetzt ist, wird für alte Videotreiber,\n" +"die das Herunterladen von Texturen zurück von der Hardware\n" +"nicht vernünftig unterstützen." #: src/settings_translation_file.cpp msgid "" @@ -3465,6 +4511,16 @@ msgid "" "have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" "enabled." msgstr "" +"Wenn bilineare, trilineare oder anisotrope Filter benutzt werden, können\n" +"niedrigauflösende Texturen verschwommen sein, also werden sie automatisch\n" +"mit Pixelwiederholung vergrößert, um scharfe Pixel zu behalten. Dies setzt " +"die\n" +"minimale Texturengröße für die vergrößerten Texturen; höhere Werte führen\n" +"zu einem schärferen Aussehen, aber erfordern mehr Speicher. Zweierpotenzen\n" +"werden empfohlen. Ein Wert größer als 1 könnte keinen sichtbaren Effekt\n" +"hervorbringen, es sei denn, die bilineare, trilineare oder anisotropische " +"Filterung\n" +"ist aktiviert." #: src/settings_translation_file.cpp msgid "" @@ -3475,116 +4531,377 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Wo der Kartengenerator aufhört.\n" +"Bitte beachten Sie:\n" +"- Begrenzt auf 31000 (größere Werte sind wirkungslos).\n" +"- Der Kartengenerator arbeitet in Gruppen von 80×80×80 Blöcken (5×5×5 " +"Kartenblöcke).\n" +"- Diese Gruppen haben einen Abstand von [-32, -32] Blöcken vom Ursprung.\n" +"- Nur Gruppen, welche innerhalb der von map_generation_limit definierten " +"Grenze liegen,\n" +" werden erzeugt." #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." msgstr "" +"Ob FreeType-Schriften benutzt werden.\n" +"Dafür muss Minetest mit FreeType-Unterstüzung kompiliert worden sein." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" +"Ob Blocktexturanimationen pro Kartenblock desynchronisiert sein sollten." #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"Ob Spieler an Clients ohne Distanzbegrenzung angezeigt werden.\n" +"Veraltet, benutzen Sie stattdessen die Einstellung " +"„player_transfer_distance“." #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Ob sich Spieler gegenseitig Schaden zufügen und töten können." #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Ob Clients gefragt werden sollen, sich nach einem (Lua-)Absturz\n" +"neu zu verbinden. Auf „wahr“ setzen, falls Ihr Server für auto-\n" +"matische Neustarts eingerichtet ist." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "Ob das Ende des sichtbaren Gebietes im Nebel verschwinden soll." #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"Ob der Client Debug-Informationen zeigen soll (hat die selbe Wirkung\n" +"wie das Drücken von F5)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" +"Ob ältere Server vor Protokollversion 25 unterstützt werden sollen.\n" +"Aktivieren Sie dies, falls Sie sich mit Servern der Version 0.4.12 und\n" +"davor verbinden möchten. Server ab 0.4.13 werden funktionieren,\n" +"Server der Version 0.4.12-dev könnten funktionieren.\n" +"Die Deaktivierung dieser Einstellung wird Ihr Passwort besser schützen." + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "Breiten-Komponente der anfänglichen Fenstergröße." #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "Breite der Linien der Auswahlbox um Blöcken." #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Weltverzeichnis (alles in der Welt wird hier gespeichert).\n" +"Nicht benötigt, wenn vom Hauptmenü aus gestartet wird." + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "Y-Höhe des flachen Bodens." + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "Y-Wert der Obergrenze von großen pseudozufälligen Höhlen." #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "cURL-Dateidownload-Zeitüberschreitung" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "cURL-Parallel-Begrenzung" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL-Zeitüberschreitung" -#~ msgid "Rendering:" -#~ msgstr "Rendering:" +#~ msgid "Item textures..." +#~ msgstr "Inventarbilder ..." -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Neustart nach Ändern des Treibers erforderlich" +#~ msgid "" +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." +#~ msgstr "" +#~ "Eine etwas niedrigere Wasseroberfläche aktivieren, damit der Node\n" +#~ "nicht vollständig „gefüllt“ wird. Beachten Sie, dass dies nicht wirklich\n" +#~ "optimiert wurde, und dass weiches Licht auf der Wasseroberfläche\n" +#~ "nicht mit dieser Einstellung funktioniert." -#~ msgid "Downloading" -#~ msgstr "Lade herunter" +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "Blöcke bei Auswahl aufleuchten lassen (Deaktiviert die Auswahlbox)." -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen" +#~ msgid "" +#~ "Julia set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes." +#~ msgstr "" +#~ "Julia-Menge: (X,Y,Z)-Versatz vom Mittelpunkt der Welt.\n" +#~ "Reichweite liegt grob von -2 bis 2, wird mit j_scale für Versätze in\n" +#~ "Nodes multipliziert." -#~ msgid "is required by:" -#~ msgstr "wird benötigt von:" +#~ msgid "" +#~ "Julia set: W value determining the 4D shape.\n" +#~ "Range roughly -2 to 2." +#~ msgstr "" +#~ "Julia-Menge: W-Wert, der die 4D-Form festlegt.\n" +#~ "Weite liegt grob zwischen -2 und 2." -#~ msgid "Configuration saved. " -#~ msgstr "Konfiguration gespeichert. " +#~ msgid "" +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Taste zur Reduzierung der Sichtweite. Verändert die minimale Sichtweite.\n" +#~ "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Warnung: Konfiguration nicht konsistent. " +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Taste zur Erhöhung der Sichtweite. Verändert die minimale Sichtweite.\n" +#~ "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen" +#~ msgid "" +#~ "Mandelbrot set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by m_scale for offsets in nodes." +#~ msgstr "" +#~ "Mandelbrotmenge: (X,Y,Z)-Versatz vom Mittelpunkt der Welt.\n" +#~ "Reichweite liegt grob von -2 bis 2, wird mit m_scale für\n" +#~ "Versätze in Nodes multipliziert." -#~ msgid "Show Public" -#~ msgstr "Zeige öffentliche" +#~ msgid "Mandelbrot set: Approximate (X,Y,Z) scales in nodes." +#~ msgstr "Mandelbrotmenge: Approximative (X,Y,Z)-Skalierungen in Nodes." -#~ msgid "Show Favorites" -#~ msgstr "Zeige Favoriten" +#~ msgid "" +#~ "Mandelbrot set: Iterations of the recursive function.\n" +#~ "Controls scale of finest detail." +#~ msgstr "" +#~ "Mandelbrotmenge: Iterationen der rekursiven Funktion.\n" +#~ "Steuert die Skalierung mit einem sehr hohem Detailgrad." -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Lasse die Adresse frei um einen eigenen Server zu starten." +#~ msgid "" +#~ "Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape.\n" +#~ "Range roughly -2 to 2." +#~ msgstr "" +#~ "Madnelbrotmenge: W-Koordinate des generierten 3D-Ausschnitts der 4D-" +#~ "Form.\n" +#~ "Die Weite liegt grob zwischen -2 und 2." -#~ msgid "Create world" -#~ msgstr "Welt erstellen" +#~ msgid "" +#~ "Map generation attributes specific to Mapgen fractal.\n" +#~ "'julia' selects a julia set to be generated instead of a mandelbrot set.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Kartengenerierungsattribute, die speziell für den Fraktale-\n" +#~ "Kartenerzeuger sind.\n" +#~ "„julia“ wählt für die Erzeugung eine Julia-Menge statt einer\n" +#~ "Mandelbrotmenge aus.\n" +#~ "Bitschalter, welche in der Bitschalterzeichenkette nicht angegeben sind,\n" +#~ "werden von der Standardeinstellung unverändert gelassen.\n" +#~ "Bitschalter, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +#~ "zu deaktivieren." -#~ msgid "Address required." -#~ msgstr "Adresse benötigt." +#~ msgid "Mapgen fractal mandelbrot iterations" +#~ msgstr "Mandelbrotiterationen für Fraktale-Kartenerzeuger" -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Kann Welt nicht löchen: Nichts ausgewählt" +#~ msgid "Mapgen fractal mandelbrot offset" +#~ msgstr "Mandelbrotversatz für Fraktale-Kartenerzeuger" -#~ msgid "Files to be deleted" -#~ msgstr "Zu löschende Dateien" +#~ msgid "Mapgen fractal mandelbrot scale" +#~ msgstr "Mandelbrotskalierung für Fraktale-Kartenerzeuger" -#~ msgid "Cannot create world: No games found" -#~ msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden" +#~ msgid "Mapgen fractal mandelbrot slice w" +#~ msgstr "Mandelbrot-w-Ausschnitt für Fraktale-Kartenerzeuger" -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt" +#~ msgid "" +#~ "Maximum distance above water level for player spawn.\n" +#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n" +#~ "Smaller values may result in a suitable spawn point not being found,\n" +#~ "resulting in a spawn at (0, 0, 0) possibly buried underground." +#~ msgstr "" +#~ "Höchstabstand über dem Meeresspiegel für den Spieler-\n" +#~ "startpunkt. Größere Werte führen zu Startpunkten näher an\n" +#~ "(x = 0, z = 0). Kleinere Werte können dazu führen, dass kein\n" +#~ "brauchbarer Startpunkt gefunden wird, was wiederum zu einem\n" +#~ "Startpunkt bei (0, 0, 0) führt, der möglicherweise im Untergrund\n" +#~ "eingegraben ist." -#~ msgid "Failed to delete all world files" -#~ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden" +#~ msgid "" +#~ "Minimum wanted FPS.\n" +#~ "The amount of rendered stuff is dynamically set according to this. and " +#~ "viewing range min and max." +#~ msgstr "" +#~ "Minimal gewünschte Bildwiederholrate.\n" +#~ "Die Anzahl der berechneten Dinge wird anhand dieses Werts dynamisch " +#~ "angepasst; auch\n" +#~ "die minimale und maximale Sichtweite werden angepasst." + +#~ msgid "New style water" +#~ msgstr "Wasser im neuen Stil" + +#~ msgid "" +#~ "Pre-generate all item visuals used in the inventory.\n" +#~ "This increases startup time, but runs smoother in-game.\n" +#~ "The generated textures can easily exceed your VRAM, causing artifacts in " +#~ "the inventory." +#~ msgstr "" +#~ "Alle Itembilder im Inventar vor dem Spielstart erzeugen.\n" +#~ "Dies erhöht die Vorbereitungszeit, wird aber zu einem flüssigerem Spiel " +#~ "führen.\n" +#~ "Die erzeugten Texturen können Ihr VRAM leicht überlasten, was Artefakte " +#~ "im Inventar\n" +#~ "verursachen kann." + +#~ msgid "Preload inventory textures" +#~ msgstr "Texturen vorgenerieren" + +#~ msgid "" +#~ "The allowed adjustment range for the automatic rendering range " +#~ "adjustment.\n" +#~ "Set this to be equal to viewing range minimum to disable the auto-" +#~ "adjustment algorithm." +#~ msgstr "" +#~ "Die erlaubte Anpassungsreichweite für die automatische Render-" +#~ "Reichweitenanpassung.\n" +#~ "Setzen Sie den Wert auf den gleichen Wert wie die minimale Sichtweite, um " +#~ "den automatischen\n" +#~ "Anpassungsalgorithmus zu deaktivieren." + +#~ msgid "Vertical initial window size." +#~ msgstr "Anfängliche Fensterhöhe." + +#~ msgid "Vertical spawn range" +#~ msgstr "Vertikaler Startpunktbereich" + +#~ msgid "Viewing range minimum" +#~ msgstr "Minimale Sichtweite" + +#~ msgid "Wanted FPS" +#~ msgstr "Gewünschte Bildwiederholrate" + +#~ msgid "Reset singleplayer world" +#~ msgstr "Einzelspielerwelt zurücksetzen" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Auf Menüelemente angewandter Skalierfaktor: " + +#~ msgid "Touch free target" +#~ msgstr "Berührungsfreies Ziel" + +#~ msgid " KB/s" +#~ msgstr " KB/s" + +#~ msgid " MB/s" +#~ msgstr " MB/s" + +#~ msgid "Game Name" +#~ msgstr "Spielname" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Kann mod \"$1\" nicht in Spiel \"$2\" kopieren" + +#~ msgid "GAMES" +#~ msgstr "SPIELE" + +#~ msgid "Mods:" +#~ msgstr "Mods:" + +#~ msgid "new game" +#~ msgstr "neues Spiel" + +#~ msgid "EDIT GAME" +#~ msgstr "SPIEL ÄNDERN" + +#~ msgid "Remove selected mod" +#~ msgstr "Ausgewählte Mod löschen" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Mod hinzufügen" + +#~ msgid "CLIENT" +#~ msgstr "CLIENT" + +#~ msgid "START SERVER" +#~ msgstr "SERVER STARTEN" + +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgid "Password" +#~ msgstr "Passwort" + +#~ msgid "SETTINGS" +#~ msgstr "EINSTELLUNGEN" + +#~ msgid "Preload item visuals" +#~ msgstr "Lade Inventarbilder vor" + +#~ msgid "Finite Liquid" +#~ msgstr "Endliches Wasser" + +#~ msgid "SINGLE PLAYER" +#~ msgstr "EINZELSPIELER" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "TEXTUREN PAKETE" + +#~ msgid "MODS" +#~ msgstr "MODS" + +#~ msgid "Add mod:" +#~ msgstr "Modifikation hinzufügen:" + +#~ msgid "Local install" +#~ msgstr "Lokale Install." + +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Warnung: Einige Mods sind noch nicht konfiguriert.\n" +#~ "Sie werden aktiviert wenn die Konfiguration gespeichert wird. " + +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "Warnung: Einige konfigurierte Mods fehlen.\n" +#~ "Mod Einstellungen werden gelöscht wenn die Konfiguration gespeichert " +#~ "wird. " + +#~ msgid "KEYBINDINGS" +#~ msgstr "TASTEN EINST." + +#~ msgid "Delete map" +#~ msgstr "Karte löschen" #~ msgid "" #~ "Default Controls:\n" @@ -3610,149 +4927,117 @@ msgstr "" #~ "- I: Inventar\n" #~ "- T: Chat\n" -#~ msgid "Delete map" -#~ msgstr "Karte löschen" +#~ msgid "Failed to delete all world files" +#~ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden" -#~ msgid "KEYBINDINGS" -#~ msgstr "TASTEN EINST." +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden" + +#~ msgid "Files to be deleted" +#~ msgstr "Zu löschende Dateien" + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Kann Welt nicht löchen: Nichts ausgewählt" + +#~ msgid "Address required." +#~ msgstr "Adresse benötigt." + +#~ msgid "Create world" +#~ msgstr "Welt erstellen" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Lasse die Adresse frei um einen eigenen Server zu starten." + +#~ msgid "Show Favorites" +#~ msgstr "Zeige Favoriten" + +#~ msgid "Show Public" +#~ msgstr "Zeige öffentliche" + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen" + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Warnung: Konfiguration nicht konsistent. " + +#~ msgid "Configuration saved. " +#~ msgstr "Konfiguration gespeichert. " + +#~ msgid "is required by:" +#~ msgstr "wird benötigt von:" + +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen" + +#~ msgid "Downloading" +#~ msgstr "Lade herunter" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Neustart nach Ändern des Treibers erforderlich" + +#~ msgid "Rendering:" +#~ msgstr "Rendering:" + +#~ msgid "If enabled, " +#~ msgstr "Wenn aktiviert, " + +#~ msgid "If disabled " +#~ msgstr "Wenn deaktiviert " + +#~ msgid "Enable a bit lower water surface, so it doesn't " +#~ msgstr "Senkt ein bisschen den Wasserspiegel, so tut es nicht " + +#, fuzzy +#~ msgid "\"" +#~ msgstr "”" #~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." #~ msgstr "" -#~ "Warnung: Einige konfigurierte Mods fehlen.\n" -#~ "Mod Einstellungen werden gelöscht wenn die Konfiguration gespeichert " -#~ "wird. " +#~ "Kartengenerierungsattribute speziell für Kartengenerator v7.\n" +#~ "„ridges“ sind die Flüsse.\n" +#~ "Flags, welche in der Bitschalterzeichenkette nicht angegeben sind,\n" +#~ "werden von der Standardeinstellung unverändert gelassen.\n" +#~ "Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +#~ "zu deaktivieren." #~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." #~ msgstr "" -#~ "Warnung: Einige Mods sind noch nicht konfiguriert.\n" -#~ "Sie werden aktiviert wenn die Konfiguration gespeichert wird. " - -#~ msgid "Local install" -#~ msgstr "Lokale Install." - -#~ msgid "Add mod:" -#~ msgstr "Modifikation hinzufügen:" - -#~ msgid "MODS" -#~ msgstr "MODS" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "TEXTUREN PAKETE" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "EINZELSPIELER" - -#~ msgid "Finite Liquid" -#~ msgstr "Endliches Wasser" - -#~ msgid "Preload item visuals" -#~ msgstr "Lade Inventarbilder vor" - -#~ msgid "SETTINGS" -#~ msgstr "EINSTELLUNGEN" - -#~ msgid "Password" -#~ msgstr "Passwort" - -#~ msgid "Name" -#~ msgstr "Name" - -#~ msgid "START SERVER" -#~ msgstr "SERVER STARTEN" - -#~ msgid "Favorites:" -#~ msgstr "Favoriten:" - -#~ msgid "CLIENT" -#~ msgstr "CLIENT" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Mod hinzufügen" - -#~ msgid "Remove selected mod" -#~ msgstr "Ausgewählte Mod löschen" - -#~ msgid "EDIT GAME" -#~ msgstr "SPIEL ÄNDERN" - -#~ msgid "new game" -#~ msgstr "neues Spiel" - -#~ msgid "Mods:" -#~ msgstr "Mods:" - -#~ msgid "GAMES" -#~ msgstr "SPIELE" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Kann mod \"$1\" nicht in Spiel \"$2\" kopieren" - -#~ msgid "Game Name" -#~ msgstr "Spielname" - -#~ msgid " MB/s" -#~ msgstr " MB/s" - -#~ msgid " KB/s" -#~ msgstr " KB/s" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "Berührungsempfindlichkeit (px)" - -#~ msgid "Touch free target" -#~ msgstr "Berührungsfreies Ziel" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Um Shader zu benutzen, muss der OpenGL-Treiber benutzt werden." - -#~ msgid "Texturing:" -#~ msgstr "Texturierung:" - -#~ msgid "Simple Leaves" -#~ msgstr "Einfache Blätter" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Auf Menüelemente angewandter Skalierfaktor: " - -#~ msgid "Reset singleplayer world" -#~ msgstr "Einzelspielerwelt zurücksetzen" - -#~ msgid "Opaque Water" -#~ msgstr "Undurchs. Wasser" - -#~ msgid "Opaque Leaves" -#~ msgstr "Undurchs. Blätter" +#~ "Kartengenerierungsattribute speziell für den Täler-Kartengenerator.\n" +#~ "Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n" +#~ "werden von der Standardeinstellung unverändert gelassen.\n" +#~ "Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n" +#~ "zu deaktivieren.\n" +#~ "„altitude_chill“ macht höhere Höhen kälter, was zu einigen Biomproblemen " +#~ "führen könnte.\n" +#~ "„humid_rivers“ modifiziert die Luftfeuchtigkeit um Flüssen und in " +#~ "Gebieten, in denen das Wasser sich in Pfützen ansammeln würde.\n" +#~ "Dies könnte mit fein abgestimmten Biomen zu Konflikten führen." #~ msgid "No!!!" #~ msgstr "Nein!!!" -#~ msgid "No Mipmap" -#~ msgstr "Keine Mipmap" +#~ msgid "Generate Normalmaps" +#~ msgstr "Normalmaps generieren" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap u. Aniso. Filter" +#~ msgid "Public Serverlist" +#~ msgstr "Öffentliche Serverliste" -#~ msgid "Mipmap" -#~ msgstr "Mipmap" - -#~ msgid "Fancy Leaves" -#~ msgstr "Schöne Blätter" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Sind Sie sicher, dass Sie die Einzelspielerwelt löschen wollen?" - -#~ msgid "Antialiasing:" -#~ msgstr "Kantenglättung:" - -#~ msgid "8x" -#~ msgstr "8x" - -#~ msgid "4x" -#~ msgstr "4x" - -#~ msgid "2x" -#~ msgstr "2x" +#~ msgid "No of course not!" +#~ msgstr "Nein, natürlich nicht!" diff --git a/po/eo/minetest.po b/po/eo/minetest.po index d0ca66e5..d1c137f2 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: 2015-09-13 12:36+0200\n" "Last-Translator: Tim \n" "Language-Team: Esperanto , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Games" +msgstr "Ludo" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Modifoj" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Select path" +msgstr "Selekto" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -300,10 +386,6 @@ msgstr "Instalantaj modifoj:" msgid "Mod information:" msgstr "Modifaj informoj:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Modifoj" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Neniu modifa priskribo disponeblas" @@ -325,7 +407,8 @@ msgid "Uninstall selected modpack" msgstr "Malinstali selektan modifaron" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "Adreso / Pordo:" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -344,18 +427,18 @@ msgstr "Kreiva reĝimo" msgid "Damage enabled" msgstr "Damaĝo ŝaltitas" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Forigi" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Nomo / Pasvorto:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Publika servilolisto" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nomo / Pasvorto:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -379,7 +462,7 @@ msgstr "Kreiva reĝimo" msgid "Enable Damage" msgstr "Ŝalti damaĝon" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nomo/Pasvorto" @@ -416,16 +499,44 @@ msgid "Start Game" msgstr "Startigi ludon" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +#, fuzzy +msgid "3D Clouds" +msgstr "3D nuboj" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Agordoj" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Glatigo:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Ĉu vi certas, ke vi volas nuligi vian solludantan mondon?" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Bilineara filtrilo" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Protuberancmapado" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" @@ -433,73 +544,127 @@ msgstr "Ŝanĝi klavojn" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Malŝaltu modifaron" +msgid "Connected Glass" +msgstr "Ligata glaco" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +msgid "Fancy Leaves" +msgstr "Ŝikaj foliaĵoj" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmapo" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmapo + Malizotropa filtrilo" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Ne" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Filter" +msgstr "Neniu filtrilo" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Neniu Mipmapo" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Marki nodaĵojn" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Marki nodaĵojn" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "ŝaltita" +msgid "Normal Mapping" +msgstr "Protuberancmapado" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Opaque Leaves" +msgstr "Opakaj foliaĵoj" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Opaka akvo" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Paralaksa Okludo" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "Ludo" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Selekto" +msgid "Particles" +msgstr "Ŝaltu ĉiujn" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Agordoj" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Ombrigiloj" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Simplaj foliaĵoj" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Smooth Lighting" +msgstr "Glatiga lumo" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Teksturado:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Por uzi ombrigilojn, OpenGL-a pelilo estas necesa." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Protuberancmapado" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Tuŝa sojlo (px)" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Trilinear Filter" +msgstr "Triineara filtrilo" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Ondantaj foliaĵoj" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Ondantaj plantoj" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Ondanta akvo" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Jes" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -525,10 +690,6 @@ msgstr "Solludanto" msgid "No information available" msgstr "Neniu informoj disponeblas" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Selekti teksturaron:" @@ -553,10 +714,6 @@ msgstr "Pravalorizi nodaĵojn" msgid "Initializing nodes..." msgstr "Pravalorizi nodaĵojn…" -#: src/client.cpp -msgid "Item textures..." -msgstr "Aĵaj teksturoj…" - #: src/client.cpp msgid "Loading textures..." msgstr "Ŝargi teksturojn…" @@ -711,10 +868,6 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "Nodaĵaj difinoj…" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Daŭrigi" - #: src/game.cpp msgid "Resolving address..." msgstr "Adrestrovili…" @@ -735,13 +888,17 @@ msgstr "Sonintenso" msgid "You died." msgstr "Vi mortis." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "bone" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Enen " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "bone" +msgid "Proceed" +msgstr "Daŭrigi" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1152,6 +1309,15 @@ msgstr "X-Butono 2" msgid "Zoom" msgstr "Zomo" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1175,7 +1341,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1200,6 +1367,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1231,6 +1406,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1239,6 +1418,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1254,6 +1437,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1267,10 +1454,19 @@ msgstr "" msgid "Backward key" msgstr "Malantaŭen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Base terrain height" +msgstr "Ondanta akvo" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1305,6 +1501,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1315,6 +1527,29 @@ msgstr "Ŝanĝi klavojn" msgid "Chat toggle key" msgstr "Ŝanĝi klavojn" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1373,6 +1608,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1429,14 +1670,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1525,6 +1790,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1547,6 +1820,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1579,8 +1859,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Ŝaltu modifaron" #: src/settings_translation_file.cpp #, fuzzy @@ -1595,10 +1876,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1629,6 +1906,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1641,6 +1922,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Ŝalti damaĝon" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1712,7 +1998,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1729,6 +2015,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1786,6 +2080,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1840,6 +2138,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Generate normalmaps" @@ -1848,9 +2150,13 @@ msgstr "Generi Normalmapojn" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1861,6 +2167,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Modifoj" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1873,6 +2184,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1886,7 +2201,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1911,6 +2226,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1930,21 +2249,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Malŝaltu modifaron" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "ŝaltita" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2002,6 +2323,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2019,6 +2344,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2030,7 +2390,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2044,7 +2404,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2241,6 +2601,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2264,6 +2632,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2350,21 +2726,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2383,6 +2789,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Mondogenerilo" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2405,6 +2816,131 @@ msgstr "Mondogenerilo" msgid "Mapgen flags" msgstr "Mondogenerilo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Paralaksa Okludo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Paralaksa Okludo" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Mondogenerilo" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Mondogenerilo" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2419,6 +2955,11 @@ msgstr "Mondogenerilo" msgid "Mapgen v5" msgstr "Mondogenerilo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Mondogenerilo" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2505,6 +3046,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Mondogenerilo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Mondogenerilo" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2553,6 +3099,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2673,6 +3231,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2689,13 +3251,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2773,10 +3328,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2794,10 +3345,18 @@ msgstr "" msgid "Node highlighting" msgstr "Marki nodaĵojn" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2838,10 +3397,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Paralaksa Okludo" - #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion" @@ -2891,7 +3446,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2914,20 +3469,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Ŝargi teksturojn…" - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2949,6 +3495,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2979,6 +3529,22 @@ msgstr "Dekstra Menuo" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3021,6 +3587,23 @@ msgstr "Ekrankopio" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Ekrankopio" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Ekrankopio" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3105,10 +3688,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Ombrigiloj" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3124,6 +3703,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3134,6 +3717,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3141,7 +3728,7 @@ msgstr "Glatiga lumo" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3187,20 +3774,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Teksturaroj" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3242,6 +3852,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3343,7 +3957,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3358,6 +3992,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3367,11 +4007,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3379,14 +4015,23 @@ msgstr "" msgid "Volume" msgstr "Sonintenso" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Walking speed" msgstr "Ondantaj foliaĵoj" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Aĵaj teksturoj…" #: src/settings_translation_file.cpp msgid "Water level" @@ -3501,6 +4146,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3511,6 +4168,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3523,65 +4188,42 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Rendering:" -#~ msgstr "Bildigo:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Restartigu Minetest-on por efikigi pelilan ŝanĝon" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "Tuŝa sojlo (px)" - -#~ msgid "Touch free target" -#~ msgstr "Sentuŝa celo" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Por uzi ombrigilojn, OpenGL-a pelilo estas necesa." - -#~ msgid "Texturing:" -#~ msgstr "Teksturado:" - -#~ msgid "Simple Leaves" -#~ msgstr "Simplaj foliaĵoj" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Skala faktoro por menuoj " +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "Ŝargi teksturojn…" #~ msgid "Reset singleplayer world" #~ msgstr "Nuligi solludantan mondon" -#~ msgid "Opaque Water" -#~ msgstr "Opaka akvo" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Skala faktoro por menuoj " -#~ msgid "Opaque Leaves" -#~ msgstr "Opakaj foliaĵoj" +#~ msgid "Touch free target" +#~ msgstr "Sentuŝa celo" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Restartigu Minetest-on por efikigi pelilan ŝanĝon" + +#~ msgid "Rendering:" +#~ msgstr "Bildigo:" + +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "ŝaltita" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Malŝaltu modifaron" #~ msgid "No!!!" #~ msgstr "Ne!!!" -#~ msgid "No Mipmap" -#~ msgstr "Neniu Mipmapo" +#, fuzzy +#~ msgid "Generate Normalmaps" +#~ msgstr "Generi Normalmapojn" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmapo + Malizotropa filtrilo" +#~ msgid "Public Serverlist" +#~ msgstr "Publika servilolisto" -#~ msgid "Mipmap" -#~ msgstr "Mipmapo" - -#~ msgid "Fancy Leaves" -#~ msgstr "Ŝikaj foliaĵoj" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Ĉu vi certas, ke vi volas nuligi vian solludantan mondon?" - -#~ msgid "Antialiasing:" -#~ msgstr "Glatigo:" - -#~ msgid "8x" -#~ msgstr "8x" - -#~ msgid "4x" -#~ msgstr "4x" - -#~ msgid "2x" -#~ msgstr "2x" +#~ msgid "No of course not!" +#~ msgstr "Ne, memkompreneble!" diff --git a/po/es/minetest.po b/po/es/minetest.po index 5d7ac085..03df1d59 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-10-04 12:36+0200\n" -"Last-Translator: OdnetninI \n" -"Language-Team: Spanish \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-10 18:21+0000\n" +"Last-Translator: Diego Martínez \n" +"Language-Team: Spanish " +"\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Ha ocurrido un error en un script de Lua, por ejemplo en un mod:" +msgstr "Un error ha ocurrido en un script de Lua, tal como en un mod:" #: builtin/fstk/ui.lua msgid "An error occured:" @@ -37,7 +37,7 @@ msgstr "Aceptar" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "Volver a conectar" +msgstr "Reconectar" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" @@ -48,35 +48,36 @@ msgid "Loading..." msgstr "Cargando..." #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "No concuerda la versión del protocolo, servidor " +msgstr "Desajuste con la versión del protocolo. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "El servidor hace respetar la versión $1 del protocolo " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "El servidor soporta versiones del protocolo entre $1 y $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" -"Intenta re-habilitar la lista de servidores públicos y verifica tu conexión " +"Intente rehabilitar la lista de servidores públicos y verifique su conexión " "a Internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Solo se soporta la versión de protocolo $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Nosotros soportamos versiones de protocolo entre la versión $1 y $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Cancelar" @@ -101,8 +102,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" -"Error al habilitar el mod \"$1\" por contener caracteres no permitidos. Solo " -"se permiten los caracteres [a-z0-9_]." +"Error al activar el mod \"$1\" por contener caracteres no permitidos. Solo " +"los caracteres [a-z0-9_] estan permitidos." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -110,14 +111,14 @@ msgstr "Ocultar juego" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "Ocultar contenido mp" +msgstr "Ocultar contenido" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Guardar" @@ -143,7 +144,7 @@ msgstr "Descarga un sub-juego, como minetest_game, desde minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "Descarga algunos desde minetest.net" +msgstr "Descarga uno desde minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -179,6 +180,12 @@ msgstr "No tienes sub-juegos instalados." msgid "Are you sure you want to delete \"$1\"?" msgstr "¿Realmente desea borrar \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Borrar" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: Error al borrar \"$1\"" @@ -187,22 +194,10 @@ msgstr "Modmgr: Error al borrar \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: Ruta del mod \"$1\" inválida" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "¡No, por su puesto que no!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Sí" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "¿Eliminar el mundo \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "No" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Aceptar" @@ -211,6 +206,95 @@ msgstr "Aceptar" msgid "Rename Modpack:" msgstr "Renombrar paquete de mod:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" no es un indicador válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Ninguna descripción de ajuste dada)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Volver a la página de Configuración" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Navegar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Desactivado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Editar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Activado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" +"El formato es 3 números separados por comas y éstos dentro de paréntesis." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formato: (, , ), " +", , " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Juegos" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "Opcionalmente, el lacunaridad puede ser anexado con una coma líder." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Por favor, introduzca una lista de indicadores separados por comas." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Por favor, introduzca un entero válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Por favor, introduzca un número válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Los valores posibles son: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Restablecer por defecto" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Seleccionar ruta" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Mostrar los nombres técnicos" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "El valor debe ser mayor que $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "El valor debe ser menor que $1." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -296,7 +380,7 @@ msgstr "Antiguos colaboradores" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "Antiguos desarrolladores" +msgstr "Antiguos desarrolladores principales" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -306,10 +390,6 @@ msgstr "Mods instalados:" msgid "Mod information:" msgstr "Información del mod:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mods" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "La descripción del mod no está disponible" @@ -332,8 +412,8 @@ msgid "Uninstall selected modpack" msgstr "Desinstalar el paquete seleccionado" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "Dirección / puerto:" +msgid "Address / Port" +msgstr "Dirección / puerto" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -351,18 +431,17 @@ msgstr "Modo creativo" msgid "Damage enabled" msgstr "Daño activado" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Borrar" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Nombre / contraseña:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "Borrar Fav." #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Lista de servidores públicos" +msgid "Favorite" +msgstr "Favorito" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Nombre / contraseña" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -387,7 +466,7 @@ msgid "Enable Damage" msgstr "Permitir daños" # Los dos puntos son intencionados. -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nombre / contraseña" @@ -424,90 +503,156 @@ msgid "Start Game" msgstr "Iniciar juego" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Nubes 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Configuración Avanzada" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Suavizado:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "¿Estás seguro de querer reiniciar el mundo de un jugador?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtrado bilineal" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "Mapeado de relieve" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Configurar teclas" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Desactivar paquete" +msgid "Connected Glass" +msgstr "Vidrio Conectado" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Hojas elegantes" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "Activado" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Filtro aniso." #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Games" -msgstr "Juego" +msgid "No" +msgstr "No" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "Sin Filtrado" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "Sin Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "Resaltar nodos" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "Marcar nodos" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Ninguno" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "Mapeado de relieve" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "Hojas opacas" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Seleccionar" +msgid "Opaque Water" +msgstr "Agua opaca" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Oclusión de paralaje" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Partículas" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Configuración" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Sombreadores" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Hojas simples" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Iluminación Suave" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturizado:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Para habilitar los sombreadores debe utilizar el controlador OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Mapeado de tonos" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Umbral táctil (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtrado Trilineal" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Movimiento de Hojas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Movimiento de Plantas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Oleaje" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Sí" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -533,10 +678,6 @@ msgstr "Un jugador" msgid "No information available" msgstr "Sin información disponible" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "Ninguno" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Seleccione un paquete de texturas:" @@ -562,10 +703,6 @@ msgstr "Inicializando nodos" msgid "Initializing nodes..." msgstr "Inicializando nodos..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Texturas de objetos..." - #: src/client.cpp msgid "Loading textures..." msgstr "Cargando texturas..." @@ -606,16 +743,15 @@ msgstr "La ruta del mundo especificada no existe: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "no" #: src/game.cpp -#, fuzzy msgid "" "\n" "Check debug.txt for details." msgstr "" "\n" -"Revisa el archivo debug.txt para más detalles." +"Revisa debug.txt para más detalles." #: src/game.cpp msgid "Change Keys" @@ -723,10 +859,6 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "Definiciones de nodos..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Continuar" - #: src/game.cpp msgid "Resolving address..." msgstr "Resolviendo dirección..." @@ -747,13 +879,17 @@ msgstr "Volumen del sonido" msgid "You died." msgstr "Has muerto." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "aceptar" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Ingresar " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "aceptar" +msgid "Proceed" +msgstr "Continuar" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -884,7 +1020,7 @@ msgstr "Aplicaciones" #: src/keycode.cpp msgid "Attn" -msgstr "Attn" +msgstr "Atentamente" #: src/keycode.cpp msgid "Back" @@ -1166,21 +1302,36 @@ msgstr "X Botón 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"Compensado (X,Y,Z) del ruido fractal en unidades de 'scale'.\n" +"Usado para mover un área plana adecuada para el inicio a (0, 0).\n" +"El valor predeterminado es adecuado para conjunts de Mandelbrot,\n" +"necesita ser editado para conjuntos de Julia.\n" +"El valor debe ser entre -2 y 2. Multiplicar por 'scale' para compensar en " +"nodos." + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = oclusión de paralaje con información de inclinación (más rápido).\n" +"1 = mapa de relieve (más lento, más preciso)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" -msgstr "Nubes 3D" +msgstr "Nubes en 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "Modo vuelo" +msgstr "Modo 3D" #: src/settings_translation_file.cpp msgid "" @@ -1190,38 +1341,60 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Soporte 3D.\n" +"Soportado Actualmente:\n" +"- Ninguno (none): No hay salida 3D.\n" +"- Anaglifo (anaglyph): 3D para anteojos de colores cyan y magenta.\n" +"- Entrelazado (interlaced): Filas pares e impares intercaladas.\n" +"- Superior-inferior (topbottom): Partir pantalla horizontalmente.\n" +"- Lado a lado (sidebyside): Partir pantalla verticalmente." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Una semilla de mapa para un mapa nuevo, deja vacío para una semilla al " +"azar.\n" +"Será anulado si se crea un nuevo mundo en el menú principal." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Un mensaje para ser mostrado a todos los clientes cuando el servidor cae." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Un mensaje para ser mostrado a todos los clientes cuando el servidor se " +"apaga." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limite absoluto de colas emergentes" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Aceleración en el aire" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "Intervalo de administración de bloques activos" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "Intervalo de modificador de bloques activos" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Rango de bloque activo" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Alcance de objetos activos a enviar" #: src/settings_translation_file.cpp msgid "" @@ -1229,38 +1402,54 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Dirección a conectarse.\n" +"Dejar aquí vacío para iniciar un servidor local.\n" +"Nótese que el campo de dirección en el menú principal anula este ajuste." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Ajustar la configuración de puntos por pulgada a tu pantalla (único no X11/" +"Android) p.ej. para pantallas 4K." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Ajustar la codificación gamma para las tablas de luz. Los números mas bajos " +"son mas brillantes.\n" +"Este ajuste es solo para el cliente y es ignorado por el servidor." #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "Avanzado" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Altura de enfriamiento" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Siempre volar y rápido" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Gamma de oclusión de ambiente" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Amplificar valles" #: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "" +msgstr "Filtrado anisotrópico" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Anunciar servidor" #: src/settings_translation_file.cpp msgid "" @@ -1268,41 +1457,55 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Anunciar a esta lista de servidores.\n" +"Si deseas anunciar tu dirección ipv6, usa serverlist_url = v6.servers." +"minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Escala aproximada (X,Y,Z) en nodos, de los fractales" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Preguntar para volver a conectar despues de una caída" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Automáticamente informar a la lista del servidor." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Atrás" +msgstr "Tecla retroceso" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Altura base del terreno" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Básico" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "Privilegios básicos" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" -msgstr "Filtro bi-lineal" +msgstr "Filtrado bilineal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Asociar dirección" +msgstr "Dirección BIND" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." msgstr "" +"Bits por píxel (también conocido como profundidad de color) en modo de " +"pantalla completa." #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Construir dentro de jugador" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1310,130 +1513,188 @@ msgstr "Mapeado de relieve" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Suavizado de cámara" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Suavizado de cámara en modo cinematográfico" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Tecla alternativa para la actualización de la cámara" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Ruido de cueva Nº1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Ruido de cueva Nº2" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "Anchura de cueva" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Formar cuevas y túneles en la intersección de dos ruidos" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat key" -msgstr "Configurar teclas" +msgstr "Tecla del Chat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Configurar teclas" +msgstr "Tecla alternativa para el chat" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Elección de 18 fractales desde 9 fórmulas.\n" +"1 = Conjunto de Mandelbrot 4D \"Redondo\".\n" +"2 = Conjunto de Julia 4D \"Redondo\".\n" +"3 = Conjunto de Mandelbrot 4D \"Cuadrado\".\n" +"4 = Conjunto de Julia 4D \"Cuadrado\".\n" +"5 = Conjunto de Mandelbrot 4D \"Mandy Cousin\".\n" +"6 = Conjunto de Julia 4D \"Mandy Cousin\".\n" +"7 = Conjunto de Mandelbrot 4D \"Variado\".\n" +"8 = Conjunto de Julia 4D \"Variado\".\n" +"9 = Conjunto de Mandelbrot 3D \"Mandelbrot/Mandelbar\".\n" +"10 = Conjunto de Julia 3D \"Mandelbrot/Mandelbar\".\n" +"11 = Conjunto de Mandelbrot 3D \"Árbol de Navidad\".\n" +"12 = Conjunto de Julia 3D \"Árbol de Navidad\".\n" +"13 = Conjunto de Mandelbrot 3D \"Mandelbulb\".\n" +"14 = Conjunto de Julia 3D \"Mandelbulb\".\n" +"15 = Conjunto de Mandelbrot 3D \"Mandelbulb Coseno\".\n" +"16 = Conjunto de Julia 3D \"Mandelbulb Coseno\".\n" +"17 = Conjunto de Mandelbrot 4D \"Mandelbulb\".\n" +"18 = Conjunto de Julia 4D \"Mandelbulb\"." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Tamaño del chunk" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Modo creativo" +msgstr "Modo cinematográfico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Modo creativo" +msgstr "Tecla modo cinematográfico" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Limpiar texturas transparentes" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Cliente y servidor" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Velocidad de escalada" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Altura de la nube" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Radio de nube" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Nubes 3D" +msgstr "Nubes" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Las nubes son un efecto del lado del cliente." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menú principal" +msgstr "Nubes en el menú" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Niebla colorida" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Lista de mods de fiar separada por coma que se permiten acceder a funciones\n" +"inseguras incluso quando securidad de mods está puesto (vía " +"request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Lista separada por comas de los mods a los que se les permite usar las\n" +"interfaces de HTTP, las cuales permiten cargar y descargar datos desde/" +"hacia\n" +"la Internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Comando" +msgstr "Tecla comando" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Vidrios conectados" +msgstr "Conectar vidrio" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Conectando al servidor..." +msgstr "Conectar a un servidor media externo" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Conectar gafas si el nodo lo soporta." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Consola" +msgstr "Alfa de consola" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Consola" +msgstr "Color de la consola" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Consola" +msgstr "Tecla de la consola" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Avance continuo" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Avance continuo (sólo utilizado para la testing)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Controles" #: src/settings_translation_file.cpp msgid "" @@ -1441,184 +1702,240 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Controla el duración del ciclo día/noche.\n" +"Ejemplos: 72 = 20min, 360 = 4min, 1 = 24hora, 0 = día/noche/lo que sea se " +"queda inalterado." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Controla el tamaño de desiertos y playas en Mapgen v6.\n" +"Cuando snowbiomes están activados 'mgv6_freq_desert' se ignora." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controla lo escarpado/profundo de las depresiones." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controla lo escarpado/alto de las colinas." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" +"Controla el ancho de los túneles, un valor menor crea túneles más anchos." #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Mensaje de error" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Crea características de lava impredecibles en cuevas.\n" +"Pueden hacer la minería más difícil. Cero lo deshabilita. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Crea características de agua impredecibles en cuevas.\n" +"Pueden hacer la minería más difícil. Cero lo deshabilita. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Opacidad de punto de mira" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Alfa del punto de mira (opacidad, entre 0 y 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Color de la cruz" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Color de la cruz (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Velocidad al agacharse" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Permitir daños" +msgstr "Daño" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Tecla alternativa para la información de la depuración" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Nivel de registro de depuración" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Intervalo de servidor dedicado" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Aceleración por defecto" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "Juego por defecto" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Juego predeterminado al crear un nuevo mundo.\n" +"Será sobreescrito al crear un mundo desde el menú principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Contraseña nueva" +msgstr "Contraseña por defecto" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Privilegios por defecto" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Tiempo de espera predeterminado para cURL, en milisegundos.\n" +"Sólo tiene efecto si está compilado con cURL." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Define el intervalo de muestreo de las texturas.\n" +"Un valor más alto causa mapas de relieve más suaves." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Define la distancia máxima de envío de jugadores, en bloques (0 = sin " +"límite)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Demora para mostrar información sobre herramientas, en milisegundos." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Manejo de funciones de Lua obsoletas" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Profundidad en la cual comienzan las grandes cuevas." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Profundidad en la cual comienzan cuevas enormes." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Velocidad de descenso" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Descripción del servidor, que se muestra cuando los jugadores se unen, y en\n" +"la lista de servidores." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Desincronizar animación de bloques" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." msgstr "" +"Datos detallados de perfilación de mod. Útil para desarrolladores de mods." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Perfilador detallado de los mods" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Determina la forma del terreno.\n" +"Los tres números entre paréntesis controlan la escala\n" +"del terreno, y deben ser iguales." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Habilitar partículas" +msgstr "Desactivar Anticheat" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "No permitir contraseñas vacías" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." msgstr "" +"Nombre de dominio del servidor, será mostrado en la lista de servidores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "Pulsar dos veces \"saltar\" para volar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Pulsar dos veces \"saltar\" para volar" +msgstr "Pulsar dos veces \"saltar\" alterna el modo vuelo." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tecla de \"Soltar objeto\"" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Imprimir información de depuración del generador de mapas." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Activar VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Repositorio de mods en línea" +msgstr "Activar seguridad de mods" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Habilitar daños y muerte de jugadores." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Habilitar entrada aleatoria (solo usar para pruebas)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Habilita iluminación suave con oclusión ambiental simple.\n" +"Deshabilítalo para mayor velocidad o una vista diferente." #: src/settings_translation_file.cpp msgid "" @@ -1628,6 +1945,10 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Habilitar para no permitir que clientes antíguos se conecten.\n" +"Los clientes antíguos son compatibles al punto de conectarse a nueos " +"servidores,\n" +"pero pueden no soportar nuevas características." #: src/settings_translation_file.cpp msgid "" @@ -1636,6 +1957,9 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Habilita el uso de un servidor remoto de medios (si lo provee el servidor).\n" +"Servidores remotos ofrecen una manera significativamente más rápida de\n" +"descargar medios (por ej. texturas) cuando se conecta a un servidor." #: src/settings_translation_file.cpp msgid "" @@ -1643,6 +1967,13 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Habilita/deshabilita ejecutar un servidor IPv6. Un servidor IPv6 puede ser\n" +"restringido a clientes IPv6, dependiendo de la configuración del sistema.\n" +"Ignorado si 'bind_address' está configurado." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Habilita la animación de objetos en el inventario." #: src/settings_translation_file.cpp msgid "" @@ -1651,37 +1982,51 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Habilita mapeado de relieves para las texturas. El mapeado de normales " +"necesita ser\n" +"suministrados por el paquete de texturas, o será generado automaticamente.\n" +"Requiere habilitar sombreadores." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "Habilitar cacheado de mallas giradas." + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "Habilita el mapeado de tonos fílmico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Permitir daños" +msgstr "Activar mini-mapa." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"Habilita la generación de mapas de normales (efecto realzado) en el momento." +"\n" +"Requiere habilitar mapeado de relieve." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Habilita mapeado de oclusión de paralaje.\n" +"Requiere habilitar sombreadores." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Opción experimental, puede causar espacios visibles entre los\n" +"bloques si se le da un valor mayor a 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS (cuadros/s) en el menú de pausa" #: src/settings_translation_file.cpp msgid "FSAA" @@ -1689,60 +2034,71 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Movimiento de cámara al caer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Fuente de reserva" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Sombra de fuente de reserva" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Alfa de sombra de fuente de reserva" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Tamaño de fuente de reserva" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Tecla de \"Rápido\"" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Aceleración del modo rápido" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Velocidad del modo rápido" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Movimiento rápido" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Movimiento rápido (por medio de tecla de \"Uso\").\n" +"Requiere privilegio \"fast\" (rápido) en el servidor." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Campo visual" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Campo visual en grados." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Fichero en client/serverlist/ que contiene sus servidores favoritos que se " +"mostrarán en la página de Multijugador." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "Profundidad del relleno" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Mapa de tonos fílmico" #: src/settings_translation_file.cpp msgid "" @@ -1751,122 +2107,140 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"Las texturas filtradas pueden mezclar los valores RGB de los vecinos\n" +"completamete tranparentes, los cuales los optimizadores de ficheros\n" +"PNG usualmente descartan, lo que a veces resulta en un borde claro u\n" +"oscuro en las texturas transparentes. Aplica éste filtro para limpiar ésto\n" +"al cargar las texturas." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Sin filtro" +msgstr "Filtrado" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Semilla de mapa fija" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" -msgstr "Modo vuelo" +msgstr "Tecla vuelo" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Volar" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Niebla" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Tecla para alternar niebla" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Ruta de fuentes" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Sombra de fuentes" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Alfa de sombra de fuentes" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "Compensado de sombra de fuente, si es 0 no se dibujará la sombra." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Tamaño de fuente" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "Formato de capturas de pantalla." #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Adelante" +msgstr "Tecla Avanzar" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Fuentes Freetype" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Desde cuán lejos se generan los bloques para los clientes, especificado\n" +"en bloques de mapa (mapblocks, 16 nodos)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Desde cuán lejos se envían bloques a los clientes, especificado en\n" +"bloques de mapa (mapblocks, 16 nodos)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Desde cuán lejos los clientes saben acerca de otros objetos,\n" +"especificado en bloques de mapa (mapblocks, 16 nodos)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Pantalla completa" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Profundidad de color en pantalla completa" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Modo de pantalla completa." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Escala de IGU" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "Factor de escala (GUI)" +msgstr "Filtro de escala de IGU" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtro de escala de IGU \"txr2img\"" #: src/settings_translation_file.cpp msgid "Gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "Generar mapas normales" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1877,6 +2251,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Mods" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1889,6 +2268,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1902,7 +2285,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1927,6 +2310,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1946,21 +2333,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Desactivar paquete" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Activado" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2019,9 +2408,12 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "Inventario" +msgstr "Tecla Inventario" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -2036,9 +2428,43 @@ msgid "Item entity TTL" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Jump key" -msgstr "Saltar" +msgstr "Tecla Saltar" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -2046,7 +2472,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2060,7 +2486,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2257,6 +2683,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2270,9 +2704,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Menú izq." +msgstr "Tecla izquierda" #: src/settings_translation_file.cpp msgid "" @@ -2280,6 +2713,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2342,14 +2783,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menú principal" +msgstr "Menú principal del gestor de mods" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menú principal" +msgstr "Script del menú principal" #: src/settings_translation_file.cpp msgid "" @@ -2366,21 +2805,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2399,6 +2868,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Generador de mapas" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2412,15 +2886,139 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Generador de mapas" +msgstr "Depuración del generador de mapas" #: src/settings_translation_file.cpp #, fuzzy msgid "Mapgen flags" msgstr "Generador de mapas" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Oclusión de paralaje" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Oclusión de paralaje" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Generador de mapas" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Generador de mapas" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2435,6 +3033,11 @@ msgstr "Generador de mapas" msgid "Mapgen v5" msgstr "Generador de mapas" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Generador de mapas" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2521,6 +3124,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Generador de mapas" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Generador de mapas" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2569,6 +3177,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2673,9 +3293,8 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menú" +msgstr "Menús" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -2689,6 +3308,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2705,13 +3328,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2789,10 +3405,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2806,14 +3418,21 @@ msgid "Noclip key" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" -msgstr "Resaltar nodos" +msgstr "Resaltado de los nodos" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2854,10 +3473,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Oclusión de paralaje" - #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion" @@ -2907,13 +3522,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Nombre de jugador demasiado largo." +msgstr "Nombre del jugador" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2930,20 +3544,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Cargando texturas..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2965,14 +3570,17 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Seleccionar distancia" +msgstr "Tecla seleccionar rango de visión" #: src/settings_translation_file.cpp msgid "Remote media" @@ -2987,14 +3595,29 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Menú der." +msgstr "Tecla derecha" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3029,7 +3652,6 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "Captura de pantalla" @@ -3037,6 +3659,23 @@ msgstr "Captura de pantalla" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Captura de pantalla" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Captura de pantalla" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3058,44 +3697,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Comenzar un jugador" +msgstr "Servidor / Un jugador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Servidor" +msgstr "URL del servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Puerto del servidor" +msgstr "Dirección del servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Puerto del servidor" +msgstr "Descripción del servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Servidor" +msgstr "Nombre del servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Puerto del servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Lista de servidores públicos" +msgstr "Lista de las URLs de servidores" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Lista de servidores públicos" +msgstr "Archivo de la lista de servidores" #: src/settings_translation_file.cpp msgid "" @@ -3121,10 +3752,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Sombreadores" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3140,6 +3767,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3151,13 +3782,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "Iluminación suave" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3170,9 +3804,8 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Caminar" +msgstr "Tecla sigilo" #: src/settings_translation_file.cpp msgid "Sound" @@ -3203,21 +3836,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + # No cabe "Paquetes de texturas". #: src/settings_translation_file.cpp -#, fuzzy msgid "Texture path" -msgstr "Texturas" +msgstr "Ruta de la textura" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3259,6 +3914,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3294,9 +3953,8 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "Filtro tri-lineal" +msgstr "Filtrado trilineal" #: src/settings_translation_file.cpp msgid "" @@ -3338,9 +3996,8 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "pulsa una tecla" +msgstr "Usa la tecla" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." @@ -3351,16 +4008,35 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Antiguos desarrolladores" +msgstr "Útil para los desarrolladores de mods." #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3375,6 +4051,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3384,26 +4066,29 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" -msgstr "Volumen del sonido" +msgstr "Volumen" + +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "Velocidad del caminar" #: src/settings_translation_file.cpp #, fuzzy -msgid "Walking speed" -msgstr "Movimiento de hojas" - -#: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Water Features" +msgstr "Texturas de objetos..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3419,17 +4104,14 @@ msgid "Waving Nodes" msgstr "Movimiento de hojas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "Movimiento de hojas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "Movimiento de plantas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Oleaje en el agua" @@ -3444,9 +4126,8 @@ msgid "Waving water length" msgstr "Oleaje en el agua" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Oleaje en el agua" +msgstr "Velocidad del oleaje en el agua" #: src/settings_translation_file.cpp msgid "" @@ -3518,6 +4199,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3528,6 +4221,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3538,75 +4239,49 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "Tiempo de espera de cURL" -#~ msgid "Rendering:" -#~ msgstr "Renderizado:" +#~ msgid "Preload inventory textures" +#~ msgstr "Precarga de las texturas del inventario" + +#~ msgid "Reset singleplayer world" +#~ msgstr "Reiniciar mundo de un jugador" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Factor de escala aplicado a los elementos del menú: " + +#~ msgid "Touch free target" +#~ msgstr "Tocar para interactuar" + +#~ msgid " KB/s" +#~ msgstr " KB/s" + +#~ msgid " MB/s" +#~ msgstr " MB/s" #~ msgid "Restart minetest for driver change to take effect" #~ msgstr "" #~ "Reinicia minetest para que los cambios en el controlador tengan efecto" -#~ msgid " MB/s" -#~ msgstr " MB/s" +#~ msgid "Rendering:" +#~ msgstr "Renderizado:" -#~ msgid " KB/s" -#~ msgstr " KB/s" +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "Activado" -#~ msgid "Touchthreshold (px)" -#~ msgstr "Umbral táctil (px)" - -#~ msgid "Touch free target" -#~ msgstr "Tocar para interactuar" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "" -#~ "Para habilitar los sombreadores debe utilizar el controlador OpenGL." - -#~ msgid "Texturing:" -#~ msgstr "Texturizado:" - -#~ msgid "Simple Leaves" -#~ msgstr "Hojas simples" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Factor de escala aplicado a los elementos del menú: " - -#~ msgid "Reset singleplayer world" -#~ msgstr "Reiniciar mundo de un jugador" - -#~ msgid "Opaque Water" -#~ msgstr "Agua opaca" - -#~ msgid "Opaque Leaves" -#~ msgstr "Hojas opacas" +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Desactivar paquete" #~ msgid "No!!!" #~ msgstr "¡¡¡No!!!" -#~ msgid "No Mipmap" -#~ msgstr "Sin Mipmap" +#~ msgid "Generate Normalmaps" +#~ msgstr "Generar mapas normales" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap + Filtro aniso." +#~ msgid "Public Serverlist" +#~ msgstr "Lista de servidores públicos" -#~ msgid "Mipmap" -#~ msgstr "Mipmap" - -#~ msgid "Fancy Leaves" -#~ msgstr "Hojas elegantes" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "¿Estás seguro de querer reiniciar el mundo de un jugador?" - -#~ msgid "Antialiasing:" -#~ msgstr "Suavizado:" - -#~ msgid "8x" -#~ msgstr "8x" - -#~ msgid "4x" -#~ msgstr "4x" - -#~ msgid "2x" -#~ msgstr "2x" +#~ msgid "No of course not!" +#~ msgstr "¡No, claro que no!" diff --git a/po/et/minetest.po b/po/et/minetest.po index c4883888..15cfe12a 100644 --- a/po/et/minetest.po +++ b/po/et/minetest.po @@ -7,134 +7,132 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2013-12-18 21:28+0200\n" -"Last-Translator: Jabo Babo \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-04-09 13:53+0000\n" +"Last-Translator: Jan Harald \n" +"Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 1.7-dev\n" +"X-Generator: Weblate 2.6-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Lue skriptis ilmnes viga; nagu näiteks mod:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Ilmnes viga:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" -msgstr "Menüü" +msgstr "Peamenüü" #: builtin/fstk/ui.lua builtin/mainmenu/store.lua msgid "Ok" -msgstr "kinnitama" +msgstr "Olgu." #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Liitu" +msgstr "Taasta ühendus" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Server taotles taasühendumist:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." -msgstr "" +msgstr "Laadimine..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Protokolli versioon ei sobi. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Server jõustab protokolli versiooni $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Server toetab protokolli versioone $1 kuni $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Proovi lubada uuesti avalike serverite loend ja kontrolli oma Interneti " +"ühendust." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Meie toetame ainult protokolli versiooni $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Meie toetame protokolli versioone $1 kuni $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Tühista" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Depends:" -msgstr "Vajab:" +msgstr "Sõltub:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable MP" -msgstr "Lülita kõik välja" +msgstr "Keela MP" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable MP" -msgstr "Lülita kõik sisse" +msgstr "Luba MP" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable all" -msgstr "Lülita kõik sisse" +msgstr "Luba kõik" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Mod \"$1\" kasutamine nurjus, sest ta sisaldab keelatud sümboleid. Lubatud " +"on ainult märgid [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Hide Game" -msgstr "Mäng" +msgstr "Peida mäng" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "" +msgstr "Peida mod. pakkide sisu" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Salvesta" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "World:" -msgstr "Vali maailm:" +msgstr "Maailm:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" msgstr "Sisse lülitatud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "A world named \"$1\" already exists" -msgstr "Maailma loomine ebaõnnestus: Samanimeline maailm on juba olemas" +msgstr "Maailm nimega \"$1\" on juba olemas" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -142,20 +140,19 @@ msgstr "Loo" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Laadi alla alammäng, näiteks minetest_game, aadressilt minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Laadi minetest.net-st üks mäng alla" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" msgstr "Mäng" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen" -msgstr "Põlvkonna kaardid" +msgstr "Kaardi generaator" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -163,11 +160,11 @@ msgstr "No nimi või no mäng valitud" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" -msgstr "" +msgstr "Seed" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Hoiatus: minimaalne arendustest on mõeldud arendajatele." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -175,12 +172,18 @@ msgstr "Maailma nimi" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Sa ei ole alammänge paigaldanud." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Kustuta" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "" @@ -189,22 +192,9 @@ msgstr "" msgid "Modmgr: invalid modpath \"$1\"" msgstr "" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Jah" - #: builtin/mainmenu/dlg_delete_world.lua -#, fuzzy msgid "Delete World \"$1\"?" -msgstr "Kustuta maailm: \"$1\"?" - -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Ei" +msgstr "Kas kustutada maailm \"$1\"?" #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" @@ -214,6 +204,95 @@ msgstr "Nõustu" msgid "Rename Modpack:" msgstr "" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Disabled" +msgstr "Lülita kõik välja" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Enabled" +msgstr "Sisse lülitatud" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Mängud" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Select path" +msgstr "Vali" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -221,9 +300,8 @@ msgid "" msgstr "" #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "Failed to install $1 to $2" -msgstr "Maailma initsialiseerimine ebaõnnestus" +msgstr "$1 paigaldamine $2 nurjus" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" @@ -262,9 +340,8 @@ msgid "Search" msgstr "" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Maailma nimi" +msgstr "Lühike nimi:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" @@ -295,9 +372,8 @@ msgid "Previous Contributors" msgstr "Early arendajad" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Põhiline arendaja" +msgstr "Eelmised põhilised arendajad" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -307,10 +383,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -320,9 +392,8 @@ msgid "Rename" msgstr "" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Select Mod File:" -msgstr "Vali maailm:" +msgstr "Vali modifikatsiooni fail:" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" @@ -334,8 +405,8 @@ msgstr "" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "IP/Port" +msgid "Address / Port" +msgstr "Aadress / Port:" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -346,29 +417,27 @@ msgid "Connect" msgstr "Liitu" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" -msgstr "Kujunduslik mängumood" +msgstr "Loov režiim" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "Sisse lülitatud" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Kustuta" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Nimi/Parool" +msgstr "Kahjustamine lubatud" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy -msgid "Public Serverlist" -msgstr "Avatud serverite nimekiri:" +msgid "Del. Favorite" +msgstr "Lemmikud:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Lemmikud:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nimi / Parool:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -393,7 +462,7 @@ msgstr "Kujunduslik mängumood" msgid "Enable Damage" msgstr "Lülita valu sisse" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nimi/Parool" @@ -431,89 +500,179 @@ msgid "Start Game" msgstr "Alusta mängu" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "3D pilved" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Sätted" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Üksikmäng" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Bi-lineaarsed Filtreerimine" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Väga hea kvaliteet" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Vaheta nuppe" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Lülita kõik välja" +msgid "Connected Glass" +msgstr "Liitu" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Läbipaistmatu vesi" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap" +msgstr "Väga hea kvaliteet" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Ei" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Filter" +msgstr "Anisotroopne Filtreerimine" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Mipmap" +msgstr "Väga hea kvaliteet" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Ilus valgustus" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Ilus valgustus" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "Sisse lülitatud" +msgid "Normal Mapping" +msgstr "Väga hea kvaliteet" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +#, fuzzy +msgid "Opaque Leaves" +msgstr "Läbipaistmatu vesi" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Mängud" +#, fuzzy +msgid "Opaque Water" +msgstr "Läbipaistmatu vesi" -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Vali" +msgid "Particles" +msgstr "Luba kõik" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Sätted" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Varjutajad" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#, fuzzy +msgid "Simple Leaves" +msgstr "Läbipaistmatu vesi" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Smooth Lighting" +msgstr "Ilus valgustus" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Aktiveerimiseks varjud, nad vajavad OpenGL draiver." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Väga hea kvaliteet" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Trilinear Filter" +msgstr "Tri-Linear Filtreerimine" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Uhked puud" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Uhked puud" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Uhked puud" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Jah" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -542,10 +701,6 @@ msgstr "Üksikmäng" msgid "No information available" msgstr "Informatsioon ei ole kättesaadav" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Vali graafika:" @@ -572,10 +727,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "" - #: src/client.cpp msgid "Loading textures..." msgstr "" @@ -708,10 +859,6 @@ msgstr "" msgid "Node definitions..." msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Jätka" - #: src/game.cpp msgid "Resolving address..." msgstr "" @@ -732,13 +879,17 @@ msgstr "Hääle volüüm" msgid "You died." msgstr "Sa surid." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Proceed" +msgstr "Jätka" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1151,6 +1302,15 @@ msgstr "X Nupp 2" msgid "Zoom" msgstr "Suumi" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1174,7 +1334,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1199,6 +1360,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1230,6 +1399,10 @@ msgstr "" msgid "Advanced" msgstr "Arenenud sätted" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1238,6 +1411,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1254,6 +1431,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1267,10 +1448,18 @@ msgstr "" msgid "Backward key" msgstr "Tagasi" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1306,6 +1495,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1316,6 +1521,29 @@ msgstr "Vaheta nuppe" msgid "Chat toggle key" msgstr "Vaheta nuppe" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1374,6 +1602,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1429,14 +1663,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1526,6 +1784,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1548,6 +1814,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1580,8 +1853,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Luba MP" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1595,10 +1869,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1629,6 +1899,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1641,6 +1915,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Lülita valu sisse" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1711,7 +1990,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1728,6 +2007,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1785,6 +2072,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1838,6 +2129,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1845,9 +2140,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1858,6 +2157,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1870,6 +2173,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1883,7 +2190,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1908,6 +2215,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1927,21 +2238,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Lülita kõik välja" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Sisse lülitatud" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1999,6 +2312,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2016,6 +2333,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2027,7 +2379,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2041,7 +2393,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2238,6 +2590,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2261,6 +2621,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2347,21 +2715,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2380,6 +2778,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Põlvkonna kaardid" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2402,6 +2805,131 @@ msgstr "Põlvkonna kaardid" msgid "Mapgen flags" msgstr "Põlvkonna kaardid" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Põlvkonna kaardid" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2416,6 +2944,11 @@ msgstr "Põlvkonna kaardid" msgid "Mapgen v5" msgstr "Põlvkonna kaardid" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Põlvkonna kaardid" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2502,6 +3035,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Põlvkonna kaardid" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Põlvkonna kaardid" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2550,6 +3088,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2670,6 +3220,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2686,13 +3240,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2770,10 +3317,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2790,10 +3333,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2834,10 +3385,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2881,7 +3428,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2902,22 +3449,14 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" @@ -2937,6 +3476,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2967,6 +3510,22 @@ msgstr "Parem Menüü" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3009,6 +3568,23 @@ msgstr "Mängupilt" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Mängupilt" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Mängupilt" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3088,10 +3664,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Varjutajad" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3107,6 +3679,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3117,6 +3693,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3124,7 +3704,7 @@ msgstr "Ilus valgustus" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3169,20 +3749,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Vali graafika:" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3224,6 +3827,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3325,7 +3932,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3340,6 +3967,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3349,11 +3982,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3361,12 +3990,20 @@ msgstr "" msgid "Volume" msgstr "Hääle volüüm" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3476,6 +4113,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3487,9 +4136,17 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "cURL file download timeout" +msgid "Y of flat ground." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "cURL faili allalaadimine aegus" + #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" @@ -3499,58 +4156,55 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Game Name" -#~ msgstr "Mäng" +#~ msgid "Downloading" +#~ msgstr "Alla" -#~ msgid "GAMES" -#~ msgstr "MÄNGUD" - -#~ msgid "new game" -#~ msgstr "uus mängu" - -#~ msgid "EDIT GAME" -#~ msgstr "MUUDA MÄNGU" - -#, fuzzy -#~ msgid "Remove selected mod" -#~ msgstr "Eemalda valitud muutus" - -#, fuzzy -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Lisama muutus" - -#~ msgid "Favorites:" -#~ msgstr "Lemmikud:" - -#~ msgid "Name" -#~ msgstr "Nimi" - -#~ msgid "Password" -#~ msgstr "Parool" - -#~ msgid "SETTINGS" -#~ msgstr "Seaded" - -#~ msgid "Preload item visuals" -#~ msgstr "Lae asjade visuaale" - -#, fuzzy -#~ msgid "Finite Liquid" -#~ msgstr "Löppev vedelik" - -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ msgid "Left click: Move all items, Right click: Move single item" #~ msgstr "" -#~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n" -#~ "Need lülitatakse sisse kohe pärast sätete salvestamist." +#~ "Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut " +#~ "asja" -#~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " -#~ msgstr "" -#~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n" -#~ "Nende sätted kustutatakse kui salvestada konfiguratsioon." +#~ msgid "is required by:" +#~ msgstr "Seda vajavad:" + +#~ msgid "Configuration saved. " +#~ msgstr "Konfiguratsioon salvestatud. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Hoiatus: Konfiguratsioon pole kindel." + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti" + +#~ msgid "Show Public" +#~ msgstr "Näita avalikke" + +#~ msgid "Show Favorites" +#~ msgstr "Näita lemmikuid" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit." + +#~ msgid "Create world" +#~ msgstr "Loo maailm" + +#~ msgid "Address required." +#~ msgstr "IP on vajalkik." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud" + +#~ msgid "Files to be deleted" +#~ msgstr "Failid mida kustutada" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus" #~ msgid "" #~ "Default Controls:\n" @@ -3577,68 +4231,64 @@ msgstr "" #~ "- ESC: Menüü\n" #~ "- T: Jututupa\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus" - -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud" - -#~ msgid "Files to be deleted" -#~ msgstr "Failid mida kustutada" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud" - -#~ msgid "Address required." -#~ msgstr "IP on vajalkik." - -#~ msgid "Create world" -#~ msgstr "Loo maailm" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit." - -#~ msgid "Show Favorites" -#~ msgstr "Näita lemmikuid" - -#~ msgid "Show Public" -#~ msgstr "Näita avalikke" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Hoiatus: Konfiguratsioon pole kindel." - -#~ msgid "Configuration saved. " -#~ msgstr "Konfiguratsioon salvestatud. " - -#~ msgid "is required by:" -#~ msgstr "Seda vajavad:" - -#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " #~ msgstr "" -#~ "Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut " -#~ "asja" +#~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n" +#~ "Nende sätted kustutatakse kui salvestada konfiguratsioon." + +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n" +#~ "Need lülitatakse sisse kohe pärast sätete salvestamist." #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Alla" +#~ msgid "Finite Liquid" +#~ msgstr "Löppev vedelik" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Aktiveerimiseks varjud, nad vajavad OpenGL draiver." +#~ msgid "Preload item visuals" +#~ msgstr "Lae asjade visuaale" + +#~ msgid "SETTINGS" +#~ msgstr "Seaded" + +#~ msgid "Password" +#~ msgstr "Parool" + +#~ msgid "Name" +#~ msgstr "Nimi" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Üksikmäng" +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Lisama muutus" #, fuzzy -#~ msgid "Opaque Water" -#~ msgstr "Läbipaistmatu vesi" +#~ msgid "Remove selected mod" +#~ msgstr "Eemalda valitud muutus" + +#~ msgid "EDIT GAME" +#~ msgstr "MUUDA MÄNGU" + +#~ msgid "new game" +#~ msgstr "uus mängu" + +#~ msgid "GAMES" +#~ msgstr "MÄNGUD" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Läbipaistmatu vesi" +#~ msgid "Game Name" +#~ msgstr "Mäng" + +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "Sisse lülitatud" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Lülita kõik välja" + +#~ msgid "Public Serverlist" +#~ msgstr "Avalikud serverid" diff --git a/po/fr/minetest.po b/po/fr/minetest.po index 1b8cdc6b..523c73bb 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -7,28 +7,27 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-07-17 22:49+0200\n" -"Last-Translator: Jean-Patrick G. \n" -"Language-Team: French \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-07 11:19+0000\n" +"Last-Translator: Yvan YR \n" +"Language-Team: French " +"\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Une erreur est survenue avec un script Lua, comme un mod :" +msgstr "Une erreur est survenue avec un script Lua, il peut s'agir d'un mod :" #: builtin/fstk/ui.lua msgid "An error occured:" msgstr "Une erreur est survenue :" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Menu principal" @@ -37,13 +36,12 @@ msgid "Ok" msgstr "OK" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Rejoindre" +msgstr "Se reconnecter" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Le serveur souhaite rétablir une connexion :" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,15 +49,15 @@ msgstr "Chargement..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "La version du protocole ne correspond pas. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Le serveur impose une version du protocole $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Le serveur supporte les versions de protocole entre $1 et $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -68,15 +66,17 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Nous supportons seulement la version du protocole $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Nous supportons seulement les versions du protocole entre $1 et $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Annuler" @@ -86,7 +86,7 @@ msgstr "Dépend de :" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" -msgstr "Désactiver le pack de mods" +msgstr "Désactiver les packs de mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" @@ -101,6 +101,9 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Échec du chargement du mod \"$1\" car il contient des caractères non-" +"autorisés.\n" +"Seulement les caractères alphanumériques [a-z0-9_] sont autorisés." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -114,8 +117,8 @@ msgstr "Cacher le pack de mods" msgid "Mod:" msgstr "Mod :" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Enregistrer" @@ -137,7 +140,7 @@ msgstr "Créer" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "Téléchargez un sous-jeu, comme minetest_game, depuis minetest.net" +msgstr "Téléchargez un jeu, comme minetest_game, depuis minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -149,7 +152,7 @@ msgstr "Jeu" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Générateur de carte" +msgstr "Générateur de terrain" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -169,36 +172,30 @@ msgstr "Nom du monde" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "Vous n'avez pas de sous-jeux installés." +msgstr "Vous n'avez pas de jeux installés." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Êtes-vous sûr de vouloir supprimer \"$1\" ?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Supprimer" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "Modmgr : n'a pas pu supprimer \"$1\"" +msgstr "Le gestionnaire de mods n'a pas pu supprimer \"$1\"" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "Modmgr : chemin de mod invalide \"$1\"" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Non, bien sûr que non !" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Oui" +msgstr "Gestionnaire de mods : chemin de mod invalide \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Supprimer le monde \"$1\" ?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Non" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Accepter" @@ -207,35 +204,128 @@ msgstr "Accepter" msgid "Rename Modpack:" msgstr "Renommer le pack de mods :" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" n'est pas un drapeau valide." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Aucune description donnée de l'option)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Revenir aux paramètres" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Naviguer" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Désactivé" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Modifier" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Activé" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" +"Le format est 3 nombres séparés par des virgules et entre les parenthèses." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Format : , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Jeux" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Éventuellement, l'option \"lacunarity\" peut être jointe par une virgule " +"d'en-tête." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Veuillez séparer les drapeaux par des virgules dans la liste." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Veuillez entrer un nombre entier valide." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Veuillez entrer un nombre valide." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Les valeurs possibles sont : " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Réinitialiser" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Sélectionner un chemin" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Montrer les noms techniques" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "La valeur doit être supérieure à $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "La valeur doit être inférieure à $1." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Installer un mod : type de fichier non supporté \"$1\" ou archive cassée" +"Installation d'un mod : type de fichier non supporté \"$1\" ou archive " +"endommagée" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" -msgstr "N'a pas pu installer $1 à $2" +msgstr "Échec de l'installation de $1 vers $2" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" -msgstr "Installer un mod : fichier : \"$1\"" +msgstr "Installation d'un mod : fichier : \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "Installer un mod : impossible de trouver le vrai nom du mod pour : $1" +msgstr "" +"Installation d'un mod : impossible de trouver le vrai nom du mod pour : $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" -"Installer un mod : impossible de trouver un nom de dossier valide pour le " +"Installation un mod : impossible de trouver un nom de dossier valide pour le " "pack de mods $1" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "Fermer le store" +msgstr "Fermer le magasin" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." @@ -247,7 +337,7 @@ msgstr "Installer" #: builtin/mainmenu/store.lua msgid "Page $1 of $2" -msgstr "Page $1 sur $2" +msgstr "Page $1 de $2" #: builtin/mainmenu/store.lua msgid "Rating" @@ -259,7 +349,7 @@ msgstr "Rechercher" #: builtin/mainmenu/store.lua msgid "Shortname:" -msgstr "Nom :" +msgstr "Nom court :" #: builtin/mainmenu/store.lua msgid "Successfully installed:" @@ -267,11 +357,11 @@ msgstr "Installé avec succès :" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "Non trié" +msgstr "Non-trié" #: builtin/mainmenu/store.lua msgid "re-Install" -msgstr "Réinstaller" +msgstr "Ré-installer" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -299,11 +389,7 @@ msgstr "Mods installés :" #: builtin/mainmenu/tab_mods.lua msgid "Mod information:" -msgstr "Information du mod :" - -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mods" +msgstr "Informations du mod :" #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" @@ -326,7 +412,8 @@ msgid "Uninstall selected modpack" msgstr "Désinstaller le pack de mods" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "Adresse / Port :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -345,18 +432,20 @@ msgstr "Mode créatif" msgid "Damage enabled" msgstr "Dégâts activés" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Supprimer" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Nom / Mot de passe :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Del. Favorite" +msgstr "Supprimer favoris :" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Liste de serveurs publics" +#, fuzzy +msgid "Favorite" +msgstr "Favoris :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nom / Mot de passe :" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -380,7 +469,7 @@ msgstr "Mode créatif" msgid "Enable Damage" msgstr "Activer les dégâts" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nom / Mot de passe" @@ -417,16 +506,41 @@ msgid "Start Game" msgstr "Démarrer" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Nuages en 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Réglages avancés" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Anti-crénelage :" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Êtes-vous sûr de vouloir réinitialiser votre monde ?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtrage bilinéaire" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bump mapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" @@ -434,72 +548,121 @@ msgstr "Changer les touches" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Désactiver le pack de mods" +msgid "Connected Glass" +msgstr "Verre unifié" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Arbres détaillés" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "MIP mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "MIP map + anisotropie" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Non" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Aucun filtre" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Sans MIP map" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "activé" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Jeux" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Node Highlighting" +msgstr "Surbrillance des blocs" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Sélectionner" +msgid "Node Outlining" +msgstr "Surbrillance des blocs" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Aucun" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Normal Mapping" +msgstr "Échantillonnage de normalmaps" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Arbres minimaux" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Eau opaque" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Occlusion parallaxe" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Activer les particules" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Réglages" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Arbres simples" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Lumière douce" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Textures :" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Pour activer les shaders, le pilote OpenGL doit être utilisé." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Sensibilité du toucher (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtrage trilinéaire" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Feuilles ondulantes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Plantes ondulantes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Eau ondulante" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Oui" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -511,7 +674,7 @@ msgstr "Menu principal" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "Démarrer la partie solo" +msgstr "Démarrer une partie solo" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -525,10 +688,6 @@ msgstr "Solo" msgid "No information available" msgstr "Pas d'information disponible" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Sélectionner un pack de textures :" @@ -538,9 +697,8 @@ msgid "Texturepacks" msgstr "Packs de textures" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Erreur de connexion (perte de connexion ?)" +msgstr "Connexion perdue." #: src/client.cpp msgid "Done!" @@ -548,15 +706,11 @@ msgstr "Terminé !" #: src/client.cpp msgid "Initializing nodes" -msgstr "Initialisation des nodes" +msgstr "Initialisation des blocs" #: src/client.cpp msgid "Initializing nodes..." -msgstr "Initialisation des nodes..." - -#: src/client.cpp -msgid "Item textures..." -msgstr "Textures d'objets..." +msgstr "Initialisation des blocs..." #: src/client.cpp msgid "Loading textures..." @@ -564,7 +718,7 @@ msgstr "Chargement des textures..." #: src/client.cpp msgid "Rebuilding shaders..." -msgstr "Construction des shaders..." +msgstr "Reconstruction des shaders..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -595,9 +749,8 @@ msgid "Provided world path doesn't exist: " msgstr "Le chemin du monde spécifié n'existe pas : " #: src/fontengine.cpp -#, fuzzy msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "yes" #: src/game.cpp msgid "" @@ -605,7 +758,7 @@ msgid "" "Check debug.txt for details." msgstr "" "\n" -"Voir debug.txt pour plus d'information." +"Voir debug.txt pour plus d'informations." #: src/game.cpp msgid "Change Keys" @@ -613,7 +766,7 @@ msgstr "Changer les touches" #: src/game.cpp msgid "Change Password" -msgstr "Changer mot de passe" +msgstr "Changer votre mot de passe" #: src/game.cpp msgid "Connecting to server..." @@ -648,7 +801,7 @@ msgstr "" "Contrôles:\n" "- ZQSD : se déplacer\n" "- Espace : sauter/grimper\n" -"- Maj. : marcher prudemment/descendre\n" +"- Maj. : marcher lentement/descendre\n" "- A : lâcher l'objet en main\n" "- I : inventaire\n" "- Souris : tourner/regarder\n" @@ -672,6 +825,15 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Touches par défaut :\n" +"Sans menu visible :\n" +"- un seul appui : touche d'activation\n" +"- double-appui : placement / utilisation\n" +"- Glissement du doigt : regarder autour\n" +"Menu / Inventaire visible :\n" +"- double-appui (en dehors) : fermeture\n" +"- objet(s) dans l'inventaire : déplacement\n" +"- appui, glissement et appui : placement d'un seul item par slot\n" #: src/game.cpp msgid "Exit to Menu" @@ -683,7 +845,7 @@ msgstr "Quitter le jeu" #: src/game.cpp msgid "Item definitions..." -msgstr "Définitions d'objets..." +msgstr "Définitions des items..." #: src/game.cpp msgid "KiB/s" @@ -701,17 +863,13 @@ msgstr "Mo/s" msgid "Node definitions..." msgstr "Définitions des blocs..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Procéder" - #: src/game.cpp msgid "Resolving address..." msgstr "Résolution de l'adresse..." #: src/game.cpp msgid "Respawn" -msgstr "Ressusciter" +msgstr "Réapparaître" #: src/game.cpp msgid "Shutting down..." @@ -725,17 +883,21 @@ msgstr "Volume du son" msgid "You died." msgstr "Vous êtes mort." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "ok" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Entrer " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "ok" +msgid "Proceed" +msgstr "Procéder" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" -msgstr "\"Use\" = descendre (escalade)" +msgstr "\"Use\" = descendre" #: src/guiKeyChangeMenu.cpp msgid "Backward" @@ -759,7 +921,7 @@ msgstr "Double-appui sur \"saut\" pour voler" #: src/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "Jeter" +msgstr "Lâcher" #: src/guiKeyChangeMenu.cpp msgid "Forward" @@ -787,11 +949,11 @@ msgstr "Gauche" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "Imprimer stacks" +msgstr "Afficher les stacks" #: src/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "Distance d'affichage" +msgstr "Distance de vue" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" @@ -799,7 +961,7 @@ msgstr "Droite" #: src/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "Marcher" +msgstr "Marcher lentement" #: src/guiKeyChangeMenu.cpp msgid "Toggle Cinematic" @@ -831,7 +993,7 @@ msgstr "Changer" #: src/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "Confirmer mot de passe" +msgstr "Confirmer le mot de passe" #: src/guiPasswordChange.cpp msgid "New Password" @@ -863,7 +1025,7 @@ msgstr "Attente" #: src/keycode.cpp msgid "Back" -msgstr "Retour en arrière" +msgstr "Retour" #: src/keycode.cpp msgid "Capital" @@ -906,7 +1068,6 @@ msgid "Escape" msgstr "Échap" #: src/keycode.cpp -#, fuzzy msgid "ExSel" msgstr "ExSel" @@ -931,17 +1092,14 @@ msgid "Insert" msgstr "Insérer" #: src/keycode.cpp -#, fuzzy msgid "Junja" msgstr "Junja" #: src/keycode.cpp -#, fuzzy msgid "Kana" msgstr "Kana" #: src/keycode.cpp -#, fuzzy msgid "Kanji" msgstr "Kanji" @@ -986,9 +1144,8 @@ msgid "Next" msgstr "Suivant" #: src/keycode.cpp -#, fuzzy msgid "Nonconvert" -msgstr "Nonconvert" +msgstr "Non converti" #: src/keycode.cpp msgid "Num Lock" @@ -1051,7 +1208,6 @@ msgid "Numpad 9" msgstr "Pavé num. 9" #: src/keycode.cpp -#, fuzzy msgid "OEM Clear" msgstr "OEM Clear" @@ -1097,7 +1253,7 @@ msgstr "Menu droite" #: src/keycode.cpp msgid "Right Shift" -msgstr "Shift droite" +msgstr "Shift droit" #: src/keycode.cpp msgid "Right Windows" @@ -1149,19 +1305,28 @@ msgstr "Zoomer" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = occlusion parallaxe avec des informations de pente (plus rapide).\n" +"1 = cartographie en relief (plus lent, plus précis)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "Nuages 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "Voler" +msgstr "Mode écran 3D" #: src/settings_translation_file.cpp msgid "" @@ -1171,38 +1336,62 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Support 3D.\n" +"Options :\n" +"- aucun : pas de sortie 3D.\n" +"- anaglyphe : couleur 3D bleu turquoise/violet.\n" +"- entrelacé : polarisation basée sur des lignes avec support de l'écran.\n" +"- horizontal : partage de l'écran horizontal.\n" +"- vertical : partage de l'écran vertical.\n" +"- pageflip: 3D basé sur quadbuffer." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Une graine de génération de terrain pour un nouveau monde, laisser vide pour " +"une graine aléatoire.\n" +"Sera annulé lors de la création d'un nouveau monde dans le menu." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Un message qui sera affiché à tous les joueurs quand le serveur s'interrompt." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Un message qui sera affiché à tous les joueurs quand le serveur s’interrompt." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limite absolue des files émergentes" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Accélération en l'air" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Portée des mapblocks actifs" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Portée des mapblocks actifs" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Portée des mapblocks actifs" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Portée des objets actifs envoyés" #: src/settings_translation_file.cpp msgid "" @@ -1210,39 +1399,52 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Adresse où se connecter.\n" +"Laisser vide pour démarrer un serveur local.\n" +"Le champ de l'adresse dans le menu peut annuler cette option." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." -msgstr "" +msgstr "Ajuster le DPI de votre écran (non-X11 / Android seulement)." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" +"Ce paramètre s'applique au client seulement et est ignoré par le serveur." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Avancé" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Altitude Chill" +msgstr "Altitude d'état de froid" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Toujours voler et être rapide" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Occlusion gamma ambiente" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Amplifier les vallées" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "Filtrage anisotrope" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Annoncer le serveur" #: src/settings_translation_file.cpp msgid "" @@ -1250,42 +1452,56 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Annoncer à la liste des serveurs publics.\n" +"Si vous voulez annoncer votre adresse IPv6, utilisez serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Série Julia : échelles (X,Y,Z) en blocs." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Demander de se reconnecter après une coupure de connexion" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." msgstr "" +"Déclarer automatiquement votre serveur à la liste des serveurs publics." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" msgstr "Reculer" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Hauteur du terrain de base" + #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Principal" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "Privilèges par défaut" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "Filtrage bilinéaire" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "Adresse à assigner" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bits par pixel (profondeur de couleur) en mode plein-écran." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Multijoueur" +msgstr "Placement de bloc à la position du joueur" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1293,130 +1509,171 @@ msgstr "Bump mapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Lissage du mouvement de la caméra" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Lissage du mouvement de la caméra en mode cinématique" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Touche de mise à jour de la caméra" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Bruit de cave #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Bruit de cave #2" #: src/settings_translation_file.cpp #, fuzzy +msgid "Cave width" +msgstr "Largeur de la fenêtre" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Les caves et tunnels se forment à l'intersection de deux bruits" + +#: src/settings_translation_file.cpp msgid "Chat key" -msgstr "Changer les touches" +msgstr "Chatter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Changer les touches" +msgstr "Afficher le chat" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Taille des chunks" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Mode créatif" +msgstr "Mode cinématique" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Mode créatif" +msgstr "Mode cinématique" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Textures transparentes filtrées" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Client et Serveur" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Vitesse d'escalade du joueur" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Hauteur des nuages" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Niveau de détails des nuages" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Nuages 3D" +msgstr "Nuages" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Les nuages ont un effet sur le client exclusivement." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menu principal" +msgstr "Nuages dans le menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Brume colorée" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Liste séparée par des virgules des mods de confiance qui sont autorisés à " +"accéder aux fonctions non\n" +"sécurisées même lorsque l'option de sécurisation des mods est activée (via " +"request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Liste séparée par des virgules des mods de confiance qui sont autorisés à " +"accéder\n" +"aux API HTTP, leur permettant d'envoyer et de télécharger des données vers/" +"depuis Internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" msgstr "Commande" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Verre connecté" +msgstr "Verre unifié" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Connexion au serveur..." +msgstr "Se connecter à un serveur de média externe" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Unifier le verre si le bloc le permet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Console" +msgstr "Opacité du fond de la console de jeu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Console" +msgstr "Couleur de la console de jeu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Console" +msgstr "Console de jeu" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Avancer en continu" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Mouvement avant permanent (seulement utilisé pour des tests)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Contrôle" +msgstr "Touches de contrôle" #: src/settings_translation_file.cpp msgid "" @@ -1424,185 +1681,239 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Durée complet du cycle jour/nuit.\n" +"Exemples : 72 = 20 minutes, 360 = 4 minutes, 1 = 24 heures, 0 = jour ou nuit " +"reste figé(e)." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Taille des déserts et plages dans Mapgen V6.\n" +"Quand les environnements neigeux sont activés, le paramètre de fréquence des " +"déserts dans Mapgen V6 est ignoré." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Contrôle l'élévation/profondeur des dépressions lacustres." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Contrôle l'élévation/hauteur des collines." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Message d'interruption du serveur" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Crée des zones imprévisibles de lave dans les caves.\n" +"Elles rendent le minage plus difficile. 0 les désactivent. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Crée des zones aquatiques imprévisibles dans les caves.\n" +"Elles rendent le minage plus difficile. 0 les désactivent. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Opacité du réticule" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Opacité du réticule (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Couleur du réticule" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Couleur du réticule (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Vitesse du joueur en position accroupie" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Activer les dégâts" +msgstr "Dégâts" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Infos de débogage" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Niveau de détails des infos de débogage" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Intervalle de mise à jour des objets sur le serveur" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Vitesse d’accélération par défaut" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "éditer le jeu" +msgstr "Jeu par défaut" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Jeu par défaut lors de la création d'un nouveau monde.\n" +"Sera annulé lors de la création d'un nouveau monde dans le menu." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Nouveau mot de passe" +msgstr "Mot de passe par défaut" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Privilèges par défaut" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Délais d'interruption de cURL par défaut, établi en millisecondes.\n" +"Seulement appliqué si Minetest est compilé avec cURL." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Niveau de lissage des normal maps.\n" +"Une valeur plus grande lisse davantage les normal maps." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Détermine la distance maximale de transfert du joueur en mapblocks (0 = " +"illimité)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Latence d'apparition des infobulles, établie en millisecondes." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Traitement d'API Lua obsolète(s)" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Profondeur en-dessous duquel se trouvent de grandes caves." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Profondeur en-dessous duquel se trouvent des caves massives." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Vitesse de descente du joueur" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." -msgstr "" +msgstr "Description du serveur affichée sur la liste des serveurs." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Désynchroniser les textures animées par mapblock" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." msgstr "" +"Profil détaillé des données du mod. Utile pour les développeurs de mods." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Profil détaillé des mods" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Détermine la forme du terrain.\n" +"Les 3 nombres entre parenthèses contrôlent l'échelle du terrain,\n" +"ces nombres doivent être identiques." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Particules" +msgstr "Désactiver l'anti-triche" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Refuser les mots de passe vides" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Nom de domaine du serveur affichée sur la liste des serveurs publics." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "Double-appui sur \"saut\" pour voler" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Double-appui sur \"saut\" pour voler" +msgstr "Double-appui sur \"saut\" pour voler." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Lâcher" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgstr "Afficher les infos de débogage de la génération de terrain." #: src/settings_translation_file.cpp #, fuzzy +msgid "Enable VBO" +msgstr "Activer le pack de mods" + +#: src/settings_translation_file.cpp msgid "Enable mod security" -msgstr "Dépôt de mods en ligne" +msgstr "Activer la sécurisation des mods" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Active les dégâts et la mort des joueurs." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +"Active l'entrée aléatoire du joueur (seulement utilisé pour des tests)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Active l'éclairage doux avec une occlusion ambiante simple.\n" +"Désactiver pour davantage de performances." #: src/settings_translation_file.cpp msgid "" @@ -1612,6 +1923,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Activer pour empêcher les anciens clients de se connecter.\n" +"Les anciens clients sont compatibles dans le sens où ils ne s'interrompent " +"pas lors de la connexion\n" +"aux serveurs récents, mais ils peuvent ne pas supporter certaines " +"fonctionnalités." #: src/settings_translation_file.cpp msgid "" @@ -1620,6 +1936,10 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Activer l'usage d'un serveur de média distant (si pourvu par le serveur).\n" +"Les serveurs de média distants offrent un moyen significativement plus " +"rapide de télécharger\n" +"des données média (ex.: textures) lors de la connexion au serveur." #: src/settings_translation_file.cpp msgid "" @@ -1627,6 +1947,14 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Active/désactive l'usage d'un serveur IPv6. Un serveur IPv6 peut être " +"restreint\n" +"aux clients IPv6, selon leur configuration système.\n" +"Ignoré si bind_address est paramétré." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Active la rotation des items d'inventaire." #: src/settings_translation_file.cpp msgid "" @@ -1635,98 +1963,124 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Active le bumpmapping pour les textures.\n" +"Les normalmaps peuvent être fournies par un pack de textures pour un " +"meilleur effet de relief,\n" +"ou bien celui-ci est auto-généré.\n" +"Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "Active la mise en cache des meshnodes." #: src/settings_translation_file.cpp #, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Active la mini-carte." + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Activer les dégâts" +msgstr "Active la mini-carte." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"Active la génération à la volée des normalmaps.\n" +"Nécessite le bumpmapping pour être activé." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Active l'occlusion parallaxe.\n" +"Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Option expérimentale, peut causer un espace vide visible entre les blocs\n" +"quand paramétré avec un nombre supérieur à 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS maximum sur le menu pause" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Fréquence du mouvement du bras en tombant" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Police alternative" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Ombre de la police alternative" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Opacité de l'ombre de la police alternative" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Taille de la police alternative" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Mode rapide" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Accélération en mode rapide" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Vitesse en mode rapide" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Mouvement rapide" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Mouvement rapide (via la touche utiliser).\n" +"Nécessite le privilège \"fast\" sur un serveur." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Champ de vision" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Champ de vision en degrés." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Fichier localisé dans /client/serverlist contenant vos serveurs favoris dans " +"l'onglet multijoueur." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Tone Mapping" #: src/settings_translation_file.cpp msgid "" @@ -1735,135 +2089,168 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"Les textures filtrées peuvent mélanger des valeurs RGB avec des zones 100% " +"transparentes.\n" +"aboutissant parfois à des bords foncés ou clairs sur les textures " +"transparentes.\n" +"Appliquer ce filtre pour nettoyer cela au chargement de la texture." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Aucun filtrage" +msgstr "Filtrage" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Graine de génération de terrain déterminée" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" msgstr "Voler" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Voler" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Brume" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Brume" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Chemin du fichier de police" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Ombre de la police" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Opacité de l'ombre de la police" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." msgstr "" +"Décalage de l'ombre de la police, si 0 est choisi alors l'ombre ne " +"s'affichera pas." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Taille de la police" #: src/settings_translation_file.cpp #, fuzzy +msgid "Format of screenshots." +msgstr "Chemin où les captures d'écran sont sauvegardées." + +#: src/settings_translation_file.cpp msgid "Forward key" msgstr "Avancer" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Polices Freetype" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Distance maximale de génération des mapblocks (16^3 blocs) depuis la " +"position du client." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Distance maximale d'envoi des mapblocks aux clients, établie en mapblocks " +"(16^3 blocs)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Distance maximale d'envoi de données sur les objets aux clients, établie en " +"mapblocks (16^3 blocs)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Plein écran" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Bits par pixel en mode plein écran" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Mode plein écran." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Taille du GUI" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "Taille des menus" +msgstr "Filtrage des images du GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtrage txr2img du GUI" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Général" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "Normal mapping" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributs spécifiques à Mapgen V6.\n" +"Quand les terrains neigeux sont activés, les jungles sont activés et les " +"drapeaux jungle est ignoré.\n" +"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " +"défaut.\n" +"Les drapeaux commençant par \"non\" sont désactivés." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Options graphiques" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravité" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Mods" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "HUD" #: src/settings_translation_file.cpp msgid "" @@ -1872,22 +2259,32 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Traitement des appels d'API Lua obsolètes :\n" +"- legacy : imite l'ancien comportement (par défaut en mode release).\n" +"- log : imite et registre les appels obsolètes (par défaut en mode debug).\n" +"- error : interruption à l'usage d'un appel obsolète (recommandé pour les " +"développeurs de mods)." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Height component of the initial window size." +msgstr "Résolution verticale de la fenêtre de jeu." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Hauteur des nuages dans le jeu." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "FPU de haute précision" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Adresse web du serveur affichée sur la liste des serveurs." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Profondeur des rivières" #: src/settings_translation_file.cpp msgid "" @@ -1895,76 +2292,105 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Largeur des aires de mapblocks qui sont sujets à être gardés actifs, établie " +"en mapblocks (16^3 blocs).\n" +"Les mapblocks actifs sont chargés et les ABMs y sont actifs." #: src/settings_translation_file.cpp msgid "" "How many blocks are flying in the wire simultaneously for the whole server." -msgstr "" +msgstr "Nombre maximum de mapblocks simultanés envoyés sur le serveur." #: src/settings_translation_file.cpp msgid "How many blocks are flying in the wire simultaneously per client." -msgstr "" +msgstr "Nombre maximum de mapblocks simultanés envoyés par client." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Délais maximum jusqu'où le serveur va attendre avant de purger les mapblocks " +"inactifs.\n" +"Une valeur plus grande est plus confortable, mais utilise davantage de " +"mémoire." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Largeur des rivières" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "Serveur IPv6" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Support IPv6." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Si le nombre d'images par seconde (FPS) veut aller au-delà de cette valeur, " +"il est limité\n" +"pour ne pas gaspiller inutilement les ressources du processeur." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Désactiver le pack de mods" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Si désactivé la touche \"Utiliser\" est utilisée pour voler + mode rapide " +"(si ceux-ci sont activés)." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Si activé avec le mode vol, le joueur sera capable de traverser les blocs " +"solides en volant." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "activé" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Si activé, la touche \"Utiliser\" est utilisée à la place de la touche " +"\"Sneak\" pour monter ou descendre." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Si activé, les actions sont enregistrés pour une restauration éventuelle.\n" +"Cette option est seulement activé quand le serveur démarre." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "Si activé, cela désactive la détection anti-triche en multijoueur." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Si activé, les données invalides du monde ne causeront pas l'interruption du " +"serveur.\n" +"Activer seulement si vous sachez ce que vous faites." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" +"Si activé, les nouveaux joueurs ne pourront pas se connecter avec un mot de " +"passe vide." #: src/settings_translation_file.cpp msgid "" @@ -1972,68 +2398,125 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Si activé, vous pourrez placer des blocs à la position où vous êtes.\n" +"C'est utile quand vous travaillez avec des modèles nodebox dans des zones " +"exiguës." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." -msgstr "" +msgstr "Détermine les coordonnées où les joueurs vont toujours réapparaître." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Ignorer les erreurs du monde" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Jeu" +msgstr "Dans le jeu" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Opacité de fond de la console du jeu (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Couleur de fond de la console du jeu (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Intervalle de sauvegarde des changements importants dans le monde, établie " +"en secondes." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "Intervalle d'envoi de l'heure de jeu aux clients." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "Animation des items d'inventaire" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" msgstr "Inventaire" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Inverser la souris" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Inverser les mouvements verticaux de la souris." #: src/settings_translation_file.cpp msgid "Item entity TTL" +msgstr "Durée de vie des items abandonnés" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" +"Série Julia : itérations de la fonction récursive.\n" +"Contrôle l'échelle du détail le plus subtil." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Série Julia : valeur X déterminant la forme 4D.\n" +"La portée est environ entre -2 et 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Série Julia : valeur Y déterminant la forme 4D.\n" +"La portée est environ entre -2 et 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Série Julia : valeur Z déterminant la forme 4D.\n" +"La portée est environ entre -2 et 2." + +#: src/settings_translation_file.cpp msgid "Jump key" msgstr "Sauter" #: src/settings_translation_file.cpp msgid "Jumping speed" -msgstr "" +msgstr "Vitesse de saut du joueur" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour activer/désactiver la distance de vue illimitée.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2041,13 +2524,20 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour jeter l'objet sélectionné.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour activer/désactiver la distance de vue illimitée.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2055,6 +2545,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour sauter.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2062,6 +2555,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour se déplacer rapidement en mode rapide.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2069,6 +2565,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour reculer.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2076,6 +2575,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour avancer.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2083,6 +2585,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour se déplacer à gauche.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2090,6 +2595,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour se déplacer à droite.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2097,6 +2605,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour ouvrir la console de jeu.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2104,6 +2615,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour ouvrir la fenêtre de chat pour entrer des commandes.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2111,6 +2625,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour ouvrir la fenêtre de chat.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2118,6 +2635,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour ouvrir l'inventaire.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2125,6 +2645,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher les infos de débogage. Utilisé pour le développement.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2134,6 +2657,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour se déplacer lentement.\n" +"Utilisé pour descendre si aux1_descends est désactivé.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2141,6 +2668,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour changer de vue entre la 1ère et 3ème personne.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2148,6 +2678,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour prendre des captures d'écran.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2155,6 +2688,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour passer en mode cinématique.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2162,6 +2698,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher la mini-carte.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2169,6 +2708,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour passer en mode rapide.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2176,6 +2718,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour voler.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2183,6 +2728,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour passer en mode \"sans-collision\".\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2190,6 +2738,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche de mise à jour de la caméra. Seulement utilisé pour le " +"développement.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2197,6 +2749,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher les infos de débogage.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2204,6 +2759,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher le HUD.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2211,6 +2769,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher la zone de chat.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2218,6 +2779,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher la brume.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2225,6 +2789,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour afficher/cacher la zone de profilage. Utilisé pour le " +"développement.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2232,18 +2800,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Touche pour activer/désactiver la distance de vue illimitée.\n" +"Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "Touche \"utiliser\" pour monter/descendre" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Langue" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Profondeur des grandes caves" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Fonctionnalités de la lave" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Apparence des feuilles d'arbres" #: src/settings_translation_file.cpp msgid "" @@ -2252,16 +2831,27 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Apparence des feuilles d'arbres :\n" +"- Détaillée : toutes les faces sont visibles\n" +"- Simple : seulement les faces externes sont visibles\n" +"- Opaque : désactive la transparence entre les feuilles" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Menu gauche" +msgstr "Gauche" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." +msgstr "Temps d'intervalle entre la mise à jour des objets sur le réseau." + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" msgstr "" #: src/settings_translation_file.cpp @@ -2275,14 +2865,22 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Niveau de détails des infos de débogage écrits dans debug.txt :\n" +"- (pas d'infos)\n" +"- aucun (messages sans niveau)\n" +"- erreur\n" +"- avertissement\n" +"- action\n" +"- info\n" +"- prolixe" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "Limite des files émergentes sur le disque" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "Limite des files émergentes à générer" #: src/settings_translation_file.cpp msgid "" @@ -2292,328 +2890,549 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"Nombre limite de requête HTTP en parallèle. Affecte :\n" +"- L'obtention de média si le serveur utilise l'option remote_media.\n" +"- Le téléchargement de la liste des serveurs et l'annonce du serveur.\n" +"- Les téléchargements effectués par le menu (ex.: gestionnaire de mods).\n" +"Prend seulement effet si Minetest est compilé avec cURL." #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Fluidité des liquides" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Régularité de la fluidité des liquides" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Itérations maximum pendant la transformation des liquides" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Délais de nettoyage d'une file de liquide" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Facteur d'écoulement des liquides" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Intervalle de mise-à-jour des liquides en secondes." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Intervalle de mise-à-jour des liquides" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Gestionnaire de jeux du menu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menu principal" +msgstr "Gestionnaire de mods du menu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menu principal" +msgstr "Script de menu personnalisé" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Rendre la couleur de la brume et du ciel différente selon l'heure du jour et " +"la direction du regard." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" +"Rendre DirectX compatible avec LuaJIT. Désactiver si cela cause des " +"problèmes." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Chemin du monde" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributs spécifiques à Mapgen V6.\n" +"Quand les terrains neigeux sont activés, les jungles sont activés et les " +"drapeaux jungle est ignoré.\n" +"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " +"défaut.\n" +"Les drapeaux commençant par \"non\" sont désactivés." #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributs de terrain spécifiques à Mapgen V7.\n" +"'ridges' sont les rivières.\n" +"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " +"défaut.\n" +"Les drapeaux commençant par \"non\" sont désactivés." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Attributs spécifiques à Mapgen V6.\n" +"Quand les terrains neigeux sont activés, les jungles sont activés et les " +"drapeaux jungle est ignoré.\n" +"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " +"défaut.\n" +"Les drapeaux commençant par \"non\" sont désactivés." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Attributs spécifiques à Mapgen V6.\n" +"Quand les terrains neigeux sont activés, les jungles sont activés et les " +"drapeaux jungle est ignoré.\n" +"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " +"défaut.\n" +"Les drapeaux commençant par \"non\" sont désactivés." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Limites de génération du terrain" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Intervalle de sauvegarde de la carte" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Limite des mapblocks" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Délais d'interruption du déchargement des mapblocks" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Nom du générateur de carte" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Mapgen : paramètres de bruit de la température" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Mapgen : paramètres de mélange de l'humidité" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" +msgstr "Mapgen : paramètres de bruit de l'humidité" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "Débogage de la génération du terrain" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Drapeaux de génération de terrain" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Drapeaux de génération de terrain" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Mapgen Julia : échelles fractales" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave1 noise parameters" +msgstr "Mapgen V5 : paramètres de bruit cave1" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave2 noise parameters" +msgstr "Mapgen V5 : paramètre de bruit cave2" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat filler depth noise parameters" +msgstr "Mapgen V5 : paramètres de bruit sur la profondeur" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Drapeaux des fractales de la génération de terrain" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Drapeaux de génération de terrain" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Élévation des collines plates" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen debug" -msgstr "Générateur de carte" +msgid "Mapgen flat lake steepness" +msgstr "Mapgen Julia : itérations fractales" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Générateur de carte" +msgid "Mapgen flat lake threshold" +msgstr "Mapgen Julia : échelles fractales" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat large cave depth" +msgstr "Mapgen Julia : échelles fractales" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat terrain noise parameters" +msgstr "Mapgen V6 : paramètres de bruit du terrain de base" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Fractales de la génération de terrain" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen Julia : couche fractale W" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "Mapgen V5 : paramètres de bruit cave1" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "Mapgen V5 : paramètre de bruit cave2" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "Mapgen V5 : paramètres de bruit sur la profondeur" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Drapeaux des fractales de la génération de terrain" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Mapgen Julia : itérations fractales" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "Mapgen Julia : fractale W" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "Mapgen Julia : fractale X" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Mapgen Julia : fractale Y" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Mapgen Julia : fractale Z" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Mapgen Julia : décalages fractals" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Mapgen Julia : échelles fractales" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Mapgen : paramètres de bruit du fond de l'eau" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Mapgen Julia : couche fractale W" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" -msgstr "" +msgstr "Mapgen : paramètres de mélange de la température" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Générateur de carte" +msgstr "Nom du générateur de carte" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Mapgen V5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Générateur de carte" +msgid "Mapgen v5 cave width" +msgstr "Mapgen Julia : échelles fractales" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" -msgstr "" +msgstr "Mapgen V5 : paramètres de bruit cave1" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave2 noise parameters" -msgstr "" +msgstr "Mapgen V5 : paramètre de bruit cave2" #: src/settings_translation_file.cpp msgid "Mapgen v5 factor noise parameters" -msgstr "" +msgstr "Mapgen V5 : paramètres de facteur de dispersion" #: src/settings_translation_file.cpp msgid "Mapgen v5 filler depth noise parameters" -msgstr "" +msgstr "Mapgen V5 : paramètres de bruit sur la profondeur" #: src/settings_translation_file.cpp msgid "Mapgen v5 height noise parameters" -msgstr "" +msgstr "Mapgen V5 : paramètres de bruit de la hauteur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Générateur de carte" +msgstr "Mapgen V6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des pommiers" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "Mapgen V6 : fréquence des plages" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des plages" #: src/settings_translation_file.cpp msgid "Mapgen v6 biome noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des biomes" #: src/settings_translation_file.cpp msgid "Mapgen v6 cave noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des caves" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Mapgen V6 : fréquence des déserts" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "Mapgen V6 : drapeaux" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de sélection de la hauteur de bruit" #: src/settings_translation_file.cpp msgid "Mapgen v6 humidity noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit de l'humidité" #: src/settings_translation_file.cpp msgid "Mapgen v6 mud noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit de la vase" #: src/settings_translation_file.cpp msgid "Mapgen v6 steepness noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des pentes" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain altitude noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit de l'altitude du terrain" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain base noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit du terrain de base" #: src/settings_translation_file.cpp msgid "Mapgen v6 trees noise parameters" -msgstr "" +msgstr "Mapgen V6 : paramètres de bruit des arbres" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7" +msgstr "Mapgen V7" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v7" -msgstr "Générateur de carte" +msgid "Mapgen v7 cave width" +msgstr "Mapgen Julia : échelles fractales" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit cave1" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave2 noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit cave2" #: src/settings_translation_file.cpp msgid "Mapgen v7 filler depth noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit sur la profondeur" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "Mapgen V7 : drapeaux" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de sélection de la hauteur du bruit" #: src/settings_translation_file.cpp msgid "Mapgen v7 mount height noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de hauteur du bruit des montagnes" #: src/settings_translation_file.cpp msgid "Mapgen v7 mountain noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit des montagnes" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit des rivières" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge water noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit de l'eau des rivières" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain altitude noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres de bruit de l'altitude du terrain" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain base noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres du bruit du terrain de base" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain persistation noise parameters" -msgstr "" +msgstr "Mapgen V7 : paramètres du bruit de la persistance du terrain" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "Profondeur des caves massives" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "Bruit des caves massives" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "Forme des caves massives." #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Distance maximale de génération des mapblocks" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "Distance maximale d'envoi des mapblocks" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "Maximum de liquides traités par étape de serveur." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "Maximum d'extra-mapblocks par clearobjects" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "Paquets maximum par itération" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "FPS maximum" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "FPS maximum quand le jeu est en pause." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "Mapblocks maximum chargés de force" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Largeur maximale de la barre d'inventaire" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "Nombre maximum de mapblocks qui peuvent être listés pour chargement." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Nombre maximum de mapblocks à lister qui doivent être générés.\n" +"Laisser ce champ vide pour un montant approprié défini automatiquement." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Nombre maximum de mapblocks à lister qui doivent être générés depuis un " +"fichier.\n" +"Laisser ce champ vide pour un montant approprié défini automatiquement." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "Nombre maximum de mapblocks chargés de force." #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Nombre maximum de mapblocks gardés dans la mémoire du client.\n" +"Définir à -1 pour un montant illimité." #: src/settings_translation_file.cpp msgid "" @@ -2621,135 +3440,146 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"Nombre maximum de paquets envoyés par étape d'envoi. Si vous avez une " +"connexion lente,\n" +"essayez de réduire cette valeur, mais réduisez pas cette valeur en-dessous " +"du double du nombre\n" +"de clients maximum sur le serveur." #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "Nombre maximum de joueurs qui peuvent être connectés en même temps." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "Nombre maximum d'objets sauvegardés dans un mapblock (16^3 blocs)." #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Proportion maximale de la fenêtre à utiliser pour la barre d'inventaire.\n" +"Utile quand il y a quelque chose à afficher à gauche ou à droite de la barre." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Nombre maximum de mapblocks simultanés envoyés par client" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Nombre maximum total de mapblocks simultanés envoyés" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Délais maximum de téléchargement d'un fichier (ex.: un mod), établi en " +"millisecondes." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Joueurs maximum" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Nombre maximum d'objets par mapblock" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menu" +msgstr "Menus" #: src/settings_translation_file.cpp msgid "Mesh cache" -msgstr "" +msgstr "Mise en cache des meshes" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Message du jour" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "Message du jour affiché aux joueurs lors de la connexion." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "Méthodes utilisées pour l'éclairage des objets." #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Mini-carte" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Mini-carte" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Hauteur de scannage de la mini-carte" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" +msgstr "Taille minimum des textures à filtrer" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" msgstr "Mip-mapping" #: src/settings_translation_file.cpp msgid "Mod profiling" -msgstr "" +msgstr "Profilage des mods" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "URL des détails du magasin de mods" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "URL de téléchargement du magasin de mods" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "URL de liste des mods du magasin de mods" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Chemin de la police Monospace" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Taille de la police Monospace" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Sensibilité de la souris" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Facteur de sensibilité de la souris." #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Facteur de mouvement de bras en tombant.\n" +"Exemples : 0 = aucun mouvement, 1 = normal, 2 = double." #: src/settings_translation_file.cpp msgid "" "Multiplier for view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Facteur de mouvement de bras.\n" +"Par exemple : 0 = pas de mouvement, 1 = normal, 2 = double." #: src/settings_translation_file.cpp msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"Nom du générateur de terrain à utiliser lorsque de la création d'un nouveau " +"monde.\n" +"Créer un nouveau monde dans le menu va annuler ce paramètre." #: src/settings_translation_file.cpp msgid "" @@ -2757,58 +3587,70 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"Nom du joueur.\n" +"Lors qu'un serveur est lancé, les clients se connectant avec ce nom sont " +"administrateurs." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" +"Nom du serveur, affiché sur liste des serveurs publics et lorsque les " +"joueurs se connectent." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Réseau" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"Port du réseau à écouter (UDP).\n" +"Cette valeur est annulée en commençant depuis le menu." #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Les nouveaux joueurs ont besoin d'entrer ce mot de passe." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Sans collision" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Mode sans collision" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "Eclairage des blocs" #: src/settings_translation_file.cpp #, fuzzy -msgid "Node highlighting" -msgstr "Eclairage des nodes" +msgid "NodeTimer interval" +msgstr "Intervalle d'envoi du temps" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +"Paramètres de mélange pour la température, humidité et mélange de biomes." + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "Bruits" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "" +msgstr "Échantillonnage de normalmaps" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "" +msgstr "Force des normalmaps" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "Nombre de threads" #: src/settings_translation_file.cpp msgid "" @@ -2818,6 +3660,11 @@ msgid "" "speed greatly\n" "at the cost of slightly buggy caves." msgstr "" +"Nombre de threads à utiliser. Laisser ce champ vide, ou augmenter cette " +"valeur\n" +"pour utiliser le multi-threading. Sur des systèmes multi-processeurs, cela " +"va améliorer grandement\n" +"la génération de terrain au détriment de quelques caves altérées." #: src/settings_translation_file.cpp msgid "" @@ -2825,122 +3672,119 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"Nombre d'extra-mapblocks qui peuvent être chargés par /clearobjects dans " +"l'immédiat.\n" +"C'est un compromis entre un transfert SQLite plafonné et la consommation " +"mémoire\n" +"(4096 = 100 Mo, comme règle fondamentale)." #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "Nombre d'itérations sur l'occlusion parallaxe." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." msgstr "" +"Bias général de l'occlusion parallaxe, habituellement échelle divisée par 2." #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" +msgstr "Echelle générale de l'occlusion parallaxe." #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Occlusion parallaxe" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" msgstr "Occlusion parallaxe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "Occlusion parallaxe" +msgstr "Echelle de l'occlusion parallaxe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Occlusion parallaxe" +msgstr "Bias de l'occlusion parallaxe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Occlusion parallaxe" +msgstr "Nombre d'itérations sur l'occlusion parallaxe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Occlusion parallaxe" +msgstr "Mode occlusion parallaxe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "Occlusion parallaxe" +msgstr "Force de l'occlusion parallaxe" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "Chemin vers police TrueType ou Bitmap." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Chemin où les captures d'écran sont sauvegardées." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." msgstr "" +"Chemin vers le dossier des textures. Toutes les textures sont d'abord " +"cherchées dans ce dossier." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Physique" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"Le joueur est capable de voler sans être affecté par la gravité.\n" +"Nécessite le privilège \"fly\" sur un serveur." #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Nom du joueur trop long." +msgstr "Nom du joueur" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Distance de transfert du joueur" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Mode combat" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Chargement des textures..." +"Port où se connecter (UDP).\n" +"Le champ de port dans le menu va annuler ce paramètre." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Empêcher les mods d'exécuter des fonctions insécurisées (comme des commandes " +"système)." + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" +"Délais d’intervalle d'affichage du profilage des données. 0 = " +"désactivation.\n" +"Utile pour les développeurs." #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "Profilage" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "Délais d'intervale du profilage" #: src/settings_translation_file.cpp msgid "" @@ -2948,52 +3792,73 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"Rayon de l'aire des nuages où se trouve 64 blocs de nuage.\n" +"Les valeurs plus grandes que 26 entraînent une \"coupure\" nette des nuages " +"aux coins de l'aire." + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "Élève le terrain pour former des vallées autour des rivières" #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Entrée aléatoire" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Distance d'affichage" +msgstr "Distance d'affichage illimitée" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Média distant" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Port distant" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Remplace le menu par défaut par un menu personnalisé." #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Menu droite" +msgstr "Droite" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "Intervalle de répétition du clic droit" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "Profondeur des rivières" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "Bruit des rivières" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "Taille des rivières" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "Bruit des rivières" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "Enregistrement des actions" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Mini-carte circulaire" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "Sauvegarde le monde du serveur sur le disque-dur du client." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "Sauvegarder le monde du serveur" #: src/settings_translation_file.cpp msgid "" @@ -3003,111 +3868,129 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"Mise à l'échelle du GUI par une valeur spécifique de l'utilisateur.\n" +"Cela va lisser certains bords grossiers, et mélanger les pixels en réduisant " +"l'échelle\n" +"au détriment d'un effet de flou sur des pixels en bordure quand les images " +"sont\n" +"misent à l'échelle par des valeurs non-entières." #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Hauteur de la fenêtre" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Largeur de la fenêtre" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "Capture d'écran" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Dossier des captures d'écran" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Dossier des captures d'écran" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Capture d'écran" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Sécurité" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Voir http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Couleur des bords de sélection (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Couleur des bords de sélection" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Epaisseur des bords de sélection" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Démarrer la partie solo" +msgstr "Serveur / Partie solo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Serveur" +msgstr "URL du serveur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Port du serveur" +msgstr "Adresse du serveur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Port du serveur" +msgstr "Description du serveur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Serveur" +msgstr "Nom du serveur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Port du serveur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Liste de serveurs publics" +msgstr "URL de la liste des serveurs publics" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Liste de serveurs publics" +msgstr "Fichier des serveurs publics" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Détermine la langue. Laisser vide pour utiliser celui de votre système.\n" +"Un redémarrage du jeu est nécessaire pour prendre effet." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Mettre sur \"true\" active les feuilles d'arbres mouvantes.\n" +"Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"Mettre sur \"true\" active les plantes mouvantes.\n" +"Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shaders" +"Mettre sur \"true\" active les liquides mouvants.\n" +"Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "" @@ -3115,52 +3998,63 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"Les shaders permettent des effets visuels avancés et peut améliorer les " +"performances sur certaines cartes graphiques.\n" +"Fonctionne seulement avec OpenGL." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "Forme de la mini-carte. Activé = ronde, désactivé = carré." #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "Afficher les infos de débogage" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Message d'arrêt du serveur" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." +msgstr "Taille des chunks à générer, établie en mapblocks (16^3 blocs)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" msgstr "Lumière douce" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Lisse les mouvement de la caméra en se déplaçant et en regardant autour.\n" +"Utile pour enregistrer des vidéos." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "Lisse la rotation de la caméra en mode cinématique. 0 pour désactiver." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Lisse la rotation de la caméra. 0 pour désactiver." #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Marcher" +msgstr "Déplacement lent" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Audio" #: src/settings_translation_file.cpp msgid "" @@ -3169,53 +4063,82 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"Spécifie l'URL à laquelle les clients obtiennent les fichiers média au lieu " +"d'utiliser le port UDP.\n" +"$filename doit être accessible depuis $remote_media$filename via cURL " +"(évidemment, remote_media devrait\n" +"se terminer avec un slash).\n" +"Les fichiers qui ne sont pas présents seront obtenus avec le moyen usuel." #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Emplacement du spawn" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Normal mapping" +msgstr "Force des normalmaps autogénérés." #: src/settings_translation_file.cpp msgid "Strength of parallax." -msgstr "" +msgstr "Force de l'occlusion parallaxe." #: src/settings_translation_file.cpp msgid "Strict protocol checking" +msgstr "Vérification stricte du protocole" + +#: src/settings_translation_file.cpp +msgid "Support older servers" msgstr "" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "SQLite synchronisé" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Packs de textures" +msgid "Terrain Height" +msgstr "Hauteur du terrain" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Chemin des textures" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "L'altitude à laquelle la température descend de 20°C" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "L'interface réseau que le serveur écoute." #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"Les privilèges que les nouveaux joueurs obtiennent automatiquement.\n" +"Entrer /privs dans le jeu pour voir une liste complète des privilèges." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Le pilote vidéo pour Irrlicht." #: src/settings_translation_file.cpp msgid "" @@ -3224,6 +4147,12 @@ msgid "" "setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" "set to the nearest valid value." msgstr "" +"Force (obscurité) de l'ombrage des blocs avec l'occlusion ambiante.\n" +"Les valeurs plus basses sont plus sombres, les valeurs plus hautes sont plus " +"claires.\n" +"Une gamme valide de valeurs pour ceci se situe entre 0.25 et 4.0. Si la " +"valeur est en dehors\n" +"de cette gamme alors elle sera définie à la plus proche des valeurs valides." #: src/settings_translation_file.cpp msgid "" @@ -3231,15 +4160,26 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" +"Le temps (en secondes) où la file des liquides peut s'agrandir au-delà de " +"sa\n" +"capacité de traitement jusqu'à ce qu'une tentative est faite pour réduire sa " +"taille en vidant\n" +"l'ancienne file d'items. Une valeur de 0 désactive cette fonctionnalité." #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." msgstr "" +"L'intervalle en secondes entre des clics droits répétés lors de l'appui sur " +"le bouton droit de la souris." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." +msgstr "Cette police sera utilisée pour certaines langues." + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" msgstr "" #: src/settings_translation_file.cpp @@ -3247,18 +4187,22 @@ msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Durée de visibilité des objets jetés.\n" +"Définir ceci à -1 pour désactiver cette fonctionnalité." #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "Intervalle d'envoi du temps" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "Vitesse du temps" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." msgstr "" +"Temps de délais pour le client pour supprimer les données de la carte de sa " +"mémoire." #: src/settings_translation_file.cpp msgid "" @@ -3267,17 +4211,21 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"Pour réduire le lag, le transfert des mapblocks sont ralentis quand un " +"joueur\n" +"est en train de construire quelque chose.\n" +"Cela détermine la durée du ralentissement après placement ou destruction " +"d'un bloc." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Changer de caméra" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Délais d'apparition des infobulles" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Filtrage trilinéaire" @@ -3287,149 +4235,179 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"Utile pour rendre la mini-carte plus fluide sur des ordinateurs peu " +"performants." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Mods sécurisés" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "URL de la liste des serveurs affichée dans l'onglet multijoueur." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Distance de transfert du joueur illimitée" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "Purger les données de serveur inutiles" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Activation des nuages 3D au lieu des nuages 2D (plats)." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Mouvement des nuages dans le menu." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" +msgstr "Utilisation du filtrage anisotrope." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Utilisation du filtrage bilinéaire." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "appuyez sur une touche" +msgstr "Utiliser" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." -msgstr "" +msgstr "Utilisation du mip-mapping. Peut impacter les performances." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Utilisation du filtrage trilinéaire." #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Anciens développeurs" +msgstr "Utile pour les développeurs de mods." #: src/settings_translation_file.cpp msgid "V-Sync" +msgstr "Synchronisation verticale" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "VBO" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "Profondeur des vallées" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "Valley Profile" +msgstr "Profil des vallées" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "Inclinaison des vallées" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "Synchronisation verticale de la fenêtre de jeu." #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Pilote vidéo" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "Mouvement du bras" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"Distance d'affichage en blocs.\n" +"Minimum à 20" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "Réduire la distance d'affichage" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" +msgstr "Augmenter la distance d'affichage" #: src/settings_translation_file.cpp #, fuzzy +msgid "Viewing range" +msgstr "Distance de vue maximum" + +#: src/settings_translation_file.cpp msgid "Volume" msgstr "Volume du son" #: src/settings_translation_file.cpp #, fuzzy -msgid "Walking speed" -msgstr "Feuilles mouvantes" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Série Julia : coordonnée W de la couche 3D de la forme 4D.\n" +"La portée est environ entre -2 et 2." #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Vitesse de marche" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Water Features" +msgstr "Niveau de l'eau" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Niveau de l'eau" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "Niveau de la surface de l'eau dans le monde." #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Feuilles mouvantes" +msgstr "Environnement mouvant" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Feuilles mouvantes" +msgstr "Feuilles d'arbres mouvantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "Plantes mouvantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Liquides mouvants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Liquides mouvants" +msgstr "Hauteur des liquides mouvants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Liquides mouvants" +msgstr "Durée du mouvement des liquides" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Liquides mouvants" +msgstr "Vitesse de mouvement des liquides" #: src/settings_translation_file.cpp msgid "" @@ -3437,6 +4415,9 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"Quand gui_scaling_filter est activé, tous les images du GUI sont\n" +"filtrées dans Minetest, mais quelques images sont générées directement\n" +"par le matériel (ex.: textures des blocs dans l'inventaire)." #: src/settings_translation_file.cpp msgid "" @@ -3445,6 +4426,11 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "propery support downloading textures back from hardware." msgstr "" +"Quand gui_scaling_filter_txr2img est activé, cela copie les images depuis\n" +"votre matériel vers Minetest pour mise à l'échelle. Si désactivé, retour à " +"la méthode par défaut\n" +"pour les pilotes vidéo qui ne supportent pas le chargement des textures " +"depuis le matériel." #: src/settings_translation_file.cpp msgid "" @@ -3456,6 +4442,19 @@ msgid "" "have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" "enabled." msgstr "" +"En utilisant le filtrage bilinéaire / trilinéaire / anisotrope, les textures " +"de basse résolution\n" +"peuvent être floues en agrandissat automatiquement les textures avec une " +"interpolation précise\n" +"pour préserver les pixels hasardeux.\n" +"\n" +"Ceci détermine la taille de la texture minimale pour les textures agrandie. " +"Les valeurs plus hautes rendent\n" +"les textures plus détaillées, mais nécessitent plus de mémoire.\n" +"Les valeurs en puissance de 2 sont recommandées. Définir une valeur " +"supérieure à 1 peut ne pas\n" +"avoir un effet visible sauf le filtrage bilinéaire / trilinéaire / " +"anisotrope est activé." #: src/settings_translation_file.cpp msgid "" @@ -3466,148 +4465,334 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Limite de la génération de terrain.\n" +"Notes :\n" +"- Limite absolue à 31000 (une valeur supérieure n'a aucun effet).\n" +"- La génération de terrain fonctionne par groupes de 80^3 blocs (= 5^3 " +"mapblocks).\n" +"- Ces groupes ont un décalage de -32, -32 blocs depuis leur origine.\n" +"- Seuls les groupes intégrant les limites définies par map_generation_limit " +"sont générées" #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." msgstr "" +"Détermine l'utilisation des polices Freetype. Nécessite une compilation avec " +"le support Freetype." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "" +msgstr "Détermine la désynchronisation des textures animées par mapblock." #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"Détermine l'exposition illimitée des noms de joueurs aux autres clients.\n" +"Obsolète : utiliser l'option player_transfer_distance à la place." #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Détermine la possibilité des joueurs de tuer d'autres joueurs." #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Détermine la possibilité des clients de se re-connecter après une " +"interruption de serveur.\n" +"Activé-le si votre serveur est paramétré pour redémarrer automatiquement." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "Détermine la visibilité de la brume au bout de l'aire visible." #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"Détermine la visibilité des infos de débogage du client (même effet que " +"taper F5)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Width component of the initial window size." +msgstr "Résolution verticale de la fenêtre de jeu." #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "Épaisseur des bordures de sélection autour des blocs." #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Chemin du monde (tout ce qui relatif au monde est enregistré ici).\n" +"Inutile si démarré depuis le menu." + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "Délais d'interruption de cURL lors d'un téléchargement de fichier" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "Limite parallèle de cURL" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "Délais d'interruption de cURL" -#~ msgid "Rendering:" -#~ msgstr "Affichage :" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Redémarrez Minetest pour que le changement du pilote prenne effet" - -#~ msgid "Game Name" -#~ msgstr "Nom du jeu" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr : Impossible de copier le mod \"$1\" dans le jeu \"$2\"" - -#~ msgid "GAMES" -#~ msgstr "JEUX" - -#~ msgid "Mods:" -#~ msgstr "Mods :" - -#~ msgid "new game" -#~ msgstr "nouveau jeu" - -#~ msgid "EDIT GAME" -#~ msgstr "MODIFIER LE JEU" - -#~ msgid "Remove selected mod" -#~ msgstr "Supprimer le mod sélectionné" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Ajouter un mod" - -#~ msgid "CLIENT" -#~ msgstr "CLIENT" - -#~ msgid "Favorites:" -#~ msgstr "Favoris :" - -#~ msgid "START SERVER" -#~ msgstr "DÉMARRER LE SERVEUR" - -#~ msgid "Name" -#~ msgstr "Nom" - -#~ msgid "Password" -#~ msgstr "Mot de passe" - -#~ msgid "SETTINGS" -#~ msgstr "PARAMÈTRES" - -#~ msgid "Preload item visuals" -#~ msgstr "Précharger les objets" - -#~ msgid "Finite Liquid" -#~ msgstr "Liquides limités" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "PARTIE SOLO" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "PACKS DE TEXTURES" - -#~ msgid "MODS" -#~ msgstr "MODS" - -#~ msgid "Add mod:" -#~ msgstr "Ajouter un mod :" - -#~ msgid "Local install" -#~ msgstr "Installation locale" +#~ msgid "Item textures..." +#~ msgstr "Textures d'items..." #~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." #~ msgstr "" -#~ "Attention : certains mods ne sont pas encore configurés.\n" -#~ "Ils seront activés par défaut quand vous enregistrerez la configuration. " +#~ "Rend la surface de l'eau légèrement plus basse, de façon à ce qu'elle ne " +#~ "submerge pas\n" +#~ "entièrement le bloc voisin.\n" +#~ "Cette fonctionnalité est encore expérimentale et la lumière douce " +#~ "n’apparaît pas à la\n" +#~ "surface de l'eau." + +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "" +#~ "Active l'éclairage des blocs pointés (et supprime les bordures noires de " +#~ "sélection)." #~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " +#~ "Julia set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes." #~ msgstr "" -#~ "Attention : certains mods configurés sont introuvables.\n" -#~ "Leurs réglages seront effacés quand vous enregistrerez la configuration. " +#~ "Série Julia : décalages (X,Y,Z) à partir du centre du monde.\n" +#~ "La portée est environ entre -2 et 2. Multiplier par j_scale pour décaler " +#~ "en nombre de blocs." -#~ msgid "Delete map" -#~ msgstr "Supprimer la carte" +#~ msgid "" +#~ "Julia set: W value determining the 4D shape.\n" +#~ "Range roughly -2 to 2." +#~ msgstr "" +#~ "Série Julia : valeur W déterminant la forme 4D.\n" +#~ "La portée est environ entre -2 et 2." + +#~ msgid "" +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Touche pour réduire la distance de vue. Modifie la distance de vue " +#~ "minimale.\n" +#~ "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Touche pour augmenter la distance de vue. Modifie la distance de vue " +#~ "minimale.\n" +#~ "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Mandelbrot set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by m_scale for offsets in nodes." +#~ msgstr "" +#~ "Série Mandelbrot : décalages (X,Y,Z) à partir du centre du monde.\n" +#~ "La portée est environ entre -2 et 2. Multiplier par m_scale pour décaler " +#~ "en nombre de blocs." + +#~ msgid "Mandelbrot set: Approximate (X,Y,Z) scales in nodes." +#~ msgstr "Série Mandelbrot : échelles (X,Y,Z) en blocs." + +#~ msgid "" +#~ "Mandelbrot set: Iterations of the recursive function.\n" +#~ "Controls scale of finest detail." +#~ msgstr "" +#~ "Série Mandelbrot : itérations de la fonction récursive.\n" +#~ "Contrôle l'échelle du détail le plus subtil." + +#~ msgid "" +#~ "Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape.\n" +#~ "Range roughly -2 to 2." +#~ msgstr "" +#~ "Série Mandelbrot : coordonnée W de la couche 3D de la forme 4D.\n" +#~ "La portée est environ entre -2 et 2." + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen fractal.\n" +#~ "'julia' selects a julia set to be generated instead of a mandelbrot set.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Attributs de terrain spécifiques à Mapgen V7.\n" +#~ "'ridges' sont les rivières.\n" +#~ "Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs " +#~ "par défaut.\n" +#~ "Les drapeaux commençant par \"non\" sont désactivés." + +#~ msgid "Mapgen fractal mandelbrot iterations" +#~ msgstr "Mapgen Mandelbrot : itérations fractales" + +#~ msgid "Mapgen fractal mandelbrot offset" +#~ msgstr "Mapgen Mandelbrot : décalages fractals" + +#~ msgid "Mapgen fractal mandelbrot scale" +#~ msgstr "Mapgen Mandelbrot : échelles fractales" + +#~ msgid "Mapgen fractal mandelbrot slice w" +#~ msgstr "Mapgen Mandelbrot : couche fractale W" + +#~ msgid "" +#~ "Maximum distance above water level for player spawn.\n" +#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n" +#~ "Smaller values may result in a suitable spawn point not being found,\n" +#~ "resulting in a spawn at (0, 0, 0) possibly buried underground." +#~ msgstr "" +#~ "Distance maximum au-dessus du niveau de l'eau où le joueur apparaît.\n" +#~ "Des valeurs plus grandes aboutissent à des locations plus proches de (x = " +#~ "0, z = 0).\n" +#~ "Des valeurs plus petites peut résulter à une location de spawn non-" +#~ "trouvée, résultant\n" +#~ "à une location située à (0, 0, 0) probablement enterrée sous le sol." + +#~ msgid "" +#~ "Minimum wanted FPS.\n" +#~ "The amount of rendered stuff is dynamically set according to this. and " +#~ "viewing range min and max." +#~ msgstr "" +#~ "Images par seconde (FPS) minimum.\n" +#~ "Le niveau de rendu est dynamiquement adapté selon ce paramètre et la " +#~ "distance de vue (minimale et maximale)." + +#~ msgid "New style water" +#~ msgstr "Nouveau style de liquide" + +#~ msgid "" +#~ "Pre-generate all item visuals used in the inventory.\n" +#~ "This increases startup time, but runs smoother in-game.\n" +#~ "The generated textures can easily exceed your VRAM, causing artifacts in " +#~ "the inventory." +#~ msgstr "" +#~ "Pré-générer tous les visuels d'items utilisés dans l'inventaire.\n" +#~ "Cela augmente le temps de démarrage, mais rend les inventaires plus " +#~ "fluides.\n" +#~ "Les textures générées peuvent facilement déborder votre VRAM, causant des " +#~ "bugs dans votre inventaire." + +#~ msgid "Preload inventory textures" +#~ msgstr "Pré-chargement des textures d'inventaire" + +#~ msgid "" +#~ "The allowed adjustment range for the automatic rendering range " +#~ "adjustment.\n" +#~ "Set this to be equal to viewing range minimum to disable the auto-" +#~ "adjustment algorithm." +#~ msgstr "" +#~ "Distance d'affichage maximum.\n" +#~ "Définir cette valeur égale à la distance de vue minimum pour désactiver\n" +#~ "l'auto-ajustement dynamique de la distance d'affichage." + +#~ msgid "Vertical initial window size." +#~ msgstr "Largeur initiale de la fenêtre de jeu." + +#~ msgid "Vertical spawn range" +#~ msgstr "Portée verticale du spawn" + +#~ msgid "Viewing range minimum" +#~ msgstr "Distance de vue minimum" + +#~ msgid "Wanted FPS" +#~ msgstr "FPS minimum" + +#~ msgid "Reset singleplayer world" +#~ msgstr "Réinitialiser le monde" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Taille appliquée aux menus : " + +#~ msgid "Downloading" +#~ msgstr "Téléchargement" + +#~ msgid " KB/s" +#~ msgstr " Ko/s" + +#~ msgid " MB/s" +#~ msgstr " Mo/s" + +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "" +#~ "Clic gauche : déplacer tous les objets -- Clic droit : déplacer un objet" + +#~ msgid "is required by:" +#~ msgstr "est requis par :" + +#~ msgid "Configuration saved. " +#~ msgstr "Configuration enregistrée. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Attention : configuration incorrecte. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "" +#~ "Impossible de créer le monde : le nom contient des caractères invalides" + +#~ msgid "Show Public" +#~ msgstr "Voir les serveurs publics" + +#~ msgid "Show Favorites" +#~ msgstr "Voir les serveurs favoris" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Laisser l'adresse vide pour lancer un serveur local." + +#~ msgid "Create world" +#~ msgstr "Créer un monde" + +#~ msgid "Address required." +#~ msgstr "Adresse requise." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Impossible de supprimer le monde : rien n'est sélectionné" + +#~ msgid "Files to be deleted" +#~ msgstr "Fichiers à supprimer" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Impossible de créer le monde : aucun jeu n'est présent" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Impossible de configurer ce monde : aucune sélection active" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Tous les fichiers du monde n'ont pu être supprimés" #~ msgid "" #~ "Default Controls:\n" @@ -3634,97 +4819,142 @@ msgstr "" #~ "- Échap : ce menu\n" #~ "- T : discuter\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Tous les fichiers du monde n'ont pu être supprimés" +#~ msgid "Delete map" +#~ msgstr "Supprimer la carte" -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Impossible de configurer ce monde : aucune sélection active" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Impossible de créer le monde : aucun jeu n'est présent" - -#~ msgid "Files to be deleted" -#~ msgstr "Fichiers à supprimer" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Impossible de supprimer le monde : rien n'est sélectionné" - -#~ msgid "Address required." -#~ msgstr "Adresse requise." - -#~ msgid "Create world" -#~ msgstr "Créer un monde" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Laisser l'adresse vide pour lancer un serveur local." - -#~ msgid "Show Favorites" -#~ msgstr "Voir les serveurs favoris" - -#~ msgid "Show Public" -#~ msgstr "Voir les serveurs publics" - -#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " #~ msgstr "" -#~ "Impossible de créer le monde : le nom contient des caractères invalides" +#~ "Attention : certains mods configurés sont introuvables.\n" +#~ "Leurs réglages seront effacés quand vous enregistrerez la configuration. " -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Attention : configuration incorrecte. " - -#~ msgid "Configuration saved. " -#~ msgstr "Configuration enregistrée. " - -#~ msgid "is required by:" -#~ msgstr "est requis par :" - -#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " #~ msgstr "" -#~ "Clic gauche : déplacer tous les objets -- Clic droit : déplacer un objet" +#~ "Attention : certains mods ne sont pas encore configurés.\n" +#~ "Ils seront activés par défaut quand vous enregistrerez la configuration. " -#~ msgid " MB/s" -#~ msgstr " Mo/s" +#~ msgid "Local install" +#~ msgstr "Installation locale" -#~ msgid " KB/s" -#~ msgstr " Ko/s" +#~ msgid "Add mod:" +#~ msgstr "Ajouter un mod :" -#~ msgid "Downloading" -#~ msgstr "Téléchargement" +#~ msgid "MODS" +#~ msgstr "MODS" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Pour activer les shaders, le pilote OpenGL doit être utilisé." +#~ msgid "TEXTURE PACKS" +#~ msgstr "PACKS DE TEXTURES" -#~ msgid "Texturing:" -#~ msgstr "Textures :" +#~ msgid "SINGLE PLAYER" +#~ msgstr "PARTIE SOLO" -#~ msgid "Simple Leaves" -#~ msgstr "Arbres simples" +#~ msgid "Finite Liquid" +#~ msgstr "Liquides limités" -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Taille appliquée aux menus : " +#~ msgid "Preload item visuals" +#~ msgstr "Précharger les objets" -#~ msgid "Reset singleplayer world" -#~ msgstr "Réinitialiser le monde" +#~ msgid "SETTINGS" +#~ msgstr "PARAMÈTRES" -#~ msgid "Opaque Water" -#~ msgstr "Eau opaque" +#~ msgid "Password" +#~ msgstr "Mot de passe" -#~ msgid "Opaque Leaves" -#~ msgstr "Arbres minimaux" +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "START SERVER" +#~ msgstr "DÉMARRER LE SERVEUR" + +#~ msgid "CLIENT" +#~ msgstr "CLIENT" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Ajouter un mod" + +#~ msgid "Remove selected mod" +#~ msgstr "Supprimer le mod sélectionné" + +#~ msgid "EDIT GAME" +#~ msgstr "MODIFIER LE JEU" + +#~ msgid "new game" +#~ msgstr "nouveau jeu" + +#~ msgid "Mods:" +#~ msgstr "Mods :" + +#~ msgid "GAMES" +#~ msgstr "JEUX" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr : Impossible de copier le mod \"$1\" dans le jeu \"$2\"" + +#~ msgid "Game Name" +#~ msgstr "Nom du jeu" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Redémarrez Minetest pour que le changement du pilote prenne effet" + +#~ msgid "Rendering:" +#~ msgstr "Affichage :" + +#~ msgid "If enabled, " +#~ msgstr "Si activé, " + +#~ msgid "If disabled " +#~ msgstr "Si désactivé " + +#~ msgid "Enable a bit lower water surface, so it doesn't " +#~ msgstr "" +#~ "Rend l'eau légèrement plus basse, de façon à ce qu'elle ne submerge pas " +#~ "le bloc complètement.\n" +#~ "Note : cette fonctionnalité est assez expérimentale et l'éclairage doux " +#~ "ne fonctionne pas dessus. " + +#~ msgid "\"" +#~ msgstr "\"" + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Attributs de terrain spécifiques à Mapgen V7.\n" +#~ "'ridges' sont les rivières.\n" +#~ "Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs " +#~ "par défaut.\n" +#~ "Les drapeaux commençant par \"non\" sont désactivés." + +#, fuzzy +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "Attributs généraux de la génération de terrain.\n" +#~ "Les drapeaux qui ne sont spécifiés dans leur champ respectif gardent " +#~ "leurs valeurs par défaut." #~ msgid "No!!!" #~ msgstr "Non !" -#~ msgid "No Mipmap" -#~ msgstr "Sans MIP map" +#~ msgid "Generate Normalmaps" +#~ msgstr "Normal Mapping" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "MIP map + anisotropie" +#~ msgid "Public Serverlist" +#~ msgstr "Liste de serveurs publics" -#~ msgid "Mipmap" -#~ msgstr "MIP mapping" - -#~ msgid "Fancy Leaves" -#~ msgstr "Arbres détaillés" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Êtes-vous sûr de vouloir réinitialiser votre monde ?" +#~ msgid "No of course not!" +#~ msgstr "Non, bien sûr que non !" diff --git a/po/he/minetest.po b/po/he/minetest.po new file mode 100644 index 00000000..f4229208 --- /dev/null +++ b/po/he/minetest.po @@ -0,0 +1,4047 @@ +# Hebrew translations for minetest package. +# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# Automatically generated, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2015-10-26 16:22+0200\n" +"Last-Translator: ChaosWormz \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: builtin/fstk/ui.lua +msgid "An error occured in a Lua script, such as a mod:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occured:" +msgstr "התרחשה שגיאה:" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "תפריט ראשי" + +#: builtin/fstk/ui.lua builtin/mainmenu/store.lua +msgid "Ok" +msgstr "אישור" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "התחבר מחדש" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/mainmenu/common.lua src/game.cpp +msgid "Loading..." +msgstr "טוען..." + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp +msgid "Cancel" +msgstr "ביטול" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua +msgid "Depends:" +msgstr "תלוי ב:" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable MP" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable MP" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "אפשר בכל" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"chararacters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Hide Game" +msgstr "הסתר משחק" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Hide mp content" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "מוד:" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "שמור" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "עולם:" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "מופעל" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "ליצור" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a subgame, such as minetest_game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "משחק" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No worldname given or no game selected" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The minimal development test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "שם העולם" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no subgames installed." +msgstr "" + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "האם ברצונך למחוק את \"$1\"?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "מחק" + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Modmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_mod.lua +msgid "Modmgr: invalid modpath \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "למחוק עולם \"$1\"?" + +#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp +msgid "Accept" +msgstr "קבל" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "משחקים" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "מודים" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + +#: builtin/mainmenu/modmgr.lua +msgid "" +"\n" +"Install Mod: unsupported filetype \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/modmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: unable to find real modname for: $1" +msgstr "" + +#: builtin/mainmenu/modmgr.lua +msgid "Install Mod: unable to find suitable foldername for modpack $1" +msgstr "" + +#: builtin/mainmenu/store.lua +msgid "Close store" +msgstr "" + +#: builtin/mainmenu/store.lua +msgid "Downloading $1, please wait..." +msgstr "" + +#: builtin/mainmenu/store.lua +msgid "Install" +msgstr "החקן" + +#: builtin/mainmenu/store.lua +msgid "Page $1 of $2" +msgstr "" + +#: builtin/mainmenu/store.lua +msgid "Rating" +msgstr "דירוג" + +#: builtin/mainmenu/store.lua +msgid "Search" +msgstr "חפש" + +#: builtin/mainmenu/store.lua +msgid "Shortname:" +msgstr "שם קצר:" + +#: builtin/mainmenu/store.lua +msgid "Successfully installed:" +msgstr "הותקן בהצלחה:" + +#: builtin/mainmenu/store.lua +msgid "Unsorted" +msgstr "" + +#: builtin/mainmenu/store.lua +msgid "re-Install" +msgstr "התקן מחדש" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "קרדיטים" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Installed Mods:" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Mod information:" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "No mod description available" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Select Mod File:" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Uninstall selected mod" +msgstr "" + +#: builtin/mainmenu/tab_mods.lua +msgid "Uninstall selected modpack" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua +#, fuzzy +msgid "Address / Port" +msgstr "כתובת / פורט :" + +#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp +msgid "Client" +msgstr "קלינט" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "התחבר" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "שם/סיסמה :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "PvP אפשר" + +#: builtin/mainmenu/tab_server.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "Configure" +msgstr "קביעת תצורה" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Creative Mode" +msgstr "משחק יצירתי" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Enable Damage" +msgstr "אפשר נזק" + +#: builtin/mainmenu/tab_server.lua +msgid "Name/Password" +msgstr "שם/סיסמה" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "New" +msgstr "חדש" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "No world created or selected!" +msgstr "אין עולם נוצר או נבחר!" + +#: builtin/mainmenu/tab_server.lua +msgid "Port" +msgstr "פורט" + +#: builtin/mainmenu/tab_server.lua +msgid "Public" +msgstr "ציבורי" + +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +msgid "Select World:" +msgstr "בחר עולם:" + +#: builtin/mainmenu/tab_server.lua +msgid "Server" +msgstr "שרת" + +#: builtin/mainmenu/tab_server.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_server.lua +msgid "Start Game" +msgstr "התחל משחק" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "הגדרות" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Change keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Connected Glass" +msgstr "התחבר" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "לא" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "אפשר בכל" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "הגדרות" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "כן" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp +msgid "Play" +msgstr "שחק" + +#: builtin/mainmenu/tab_singleplayer.lua +msgid "Singleplayer" +msgstr "שחקן יחיד" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "No information available" +msgstr "" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "Select texture pack:" +msgstr "" + +#: builtin/mainmenu/tab_texturepacks.lua +msgid "Texturepacks" +msgstr "חבילות מרקם" + +#: src/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client.cpp +msgid "Done!" +msgstr "" + +#: src/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/game.cpp +msgid "Change Keys" +msgstr "" + +#: src/game.cpp +msgid "Change Password" +msgstr "" + +#: src/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/game.cpp +msgid "Continue" +msgstr "" + +#: src/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/game.cpp +msgid "" +"Default Controls:\n" +"- WASD: move\n" +"- Space: jump/climb\n" +"- Shift: sneak/go down\n" +"- Q: drop item\n" +"- I: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- T: chat\n" +msgstr "" + +#: src/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/game.cpp +msgid "Media..." +msgstr "" + +#: src/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/game.cpp +msgid "Respawn" +msgstr "" + +#: src/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/game.cpp +msgid "You died." +msgstr "" + +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + +#: src/guiFormSpecMenu.cpp +msgid "Enter " +msgstr "" + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "\"Use\" = climb down" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/guiKeyChangeMenu.cpp src/keycode.cpp +msgid "Left" +msgstr "" + +#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Print stacks" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/guiKeyChangeMenu.cpp src/keycode.cpp +msgid "Right" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle Cinematic" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "Use" +msgstr "" + +#: src/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/keycode.cpp +msgid "Attn" +msgstr "" + +#: src/keycode.cpp +msgid "Back" +msgstr "" + +#: src/keycode.cpp +msgid "Capital" +msgstr "" + +#: src/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/keycode.cpp +msgid "Comma" +msgstr "" + +#: src/keycode.cpp +msgid "Control" +msgstr "" + +#: src/keycode.cpp +msgid "Convert" +msgstr "" + +#: src/keycode.cpp +msgid "CrSel" +msgstr "" + +#: src/keycode.cpp +msgid "Down" +msgstr "" + +#: src/keycode.cpp +msgid "End" +msgstr "" + +#: src/keycode.cpp +msgid "Erase OEF" +msgstr "" + +#: src/keycode.cpp +msgid "Escape" +msgstr "" + +#: src/keycode.cpp +msgid "ExSel" +msgstr "" + +#: src/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/keycode.cpp +msgid "Final" +msgstr "" + +#: src/keycode.cpp +msgid "Help" +msgstr "" + +#: src/keycode.cpp +msgid "Home" +msgstr "" + +#: src/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/keycode.cpp +msgid "Junja" +msgstr "" + +#: src/keycode.cpp +msgid "Kana" +msgstr "" + +#: src/keycode.cpp +msgid "Kanji" +msgstr "" + +#: src/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/keycode.cpp +msgid "Minus" +msgstr "" + +#: src/keycode.cpp +msgid "Mode Change" +msgstr "" + +#: src/keycode.cpp +msgid "Next" +msgstr "" + +#: src/keycode.cpp +msgid "Nonconvert" +msgstr "" + +#: src/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/keycode.cpp +msgid "PA1" +msgstr "" + +#: src/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/keycode.cpp +msgid "Period" +msgstr "" + +#: src/keycode.cpp +msgid "Plus" +msgstr "" + +#: src/keycode.cpp +msgid "Print" +msgstr "" + +#: src/keycode.cpp +msgid "Prior" +msgstr "" + +#: src/keycode.cpp +msgid "Return" +msgstr "" + +#: src/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/keycode.cpp +msgid "Select" +msgstr "" + +#: src/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/keycode.cpp +msgid "Space" +msgstr "" + +#: src/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/keycode.cpp +msgid "Up" +msgstr "" + +#: src/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/keycode.cpp +msgid "Zoom" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of emerge queues" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" +"This setting is for the client only and is ignored by the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Announce to this serverlist.\n" +"If you want to announce your ipv6 address, use serverlist_url = v6.servers." +"minetest.net." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automaticaly report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward movement (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " +"unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls size of deserts and beaches in Mapgen v6.\n" +"When snowbiomes are enabled 'mgv6_freq_desert' is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crouch speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Descending speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Detailed mod profile data. Useful for mod developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Detailed mod profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug infos." +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enable VBO" +msgstr "אפשר בכל" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n" +"to IPv6 clients, depending on system configuration.\n" +"Ignored if bind_address is set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via use key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow offset, if 0 then shadow will not be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Freetype fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "מודים" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated lua api calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height on which clouds are appearing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How large area of blocks are subject to the active block stuff, stated in " +"mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How many blocks are flying in the wire simultaneously for the whole server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How many blocks are flying in the wire simultaneously per client." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for printing debug stacks. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camrea update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key use for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues on disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sink" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu game manager" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu mod manager" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome heat noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome humidity blend noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen biome humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen heat blend noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 factor noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 height noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 apple trees noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 beach frequency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 beach noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 biome noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 cave noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 desert frequency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 height select noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 mud noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 steepness noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 terrain altitude noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 terrain base noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v6 trees noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 height select noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 mount height noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 mountain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 ridge noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 ridge water noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain altitude noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain base noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 terrain persistation noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can connect simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneously blocks send per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneously bocks send total" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maxmimum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size for filters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore details URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore download URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modstore mods list URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noise parameters for biome API temperature, humidity and biome blend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use. Make this field blank, or increase this " +"number\n" +"to use multiple threads. On multiprocessor systems, this will improve mapgen " +"speed greatly\n" +"at the cost of slightly buggy caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion Scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to TrueTypeFont or bitmap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to save screenshots at." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus Player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler data print interval. 0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale gui by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "שרת" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true enables waving water.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visul effects and may increase performance on some " +"video cards.\n" +"Thy only work with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when moving and looking around.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The rendering back-end for Irrlicht." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "This font will be used for certain languages." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Useable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use mip mapping to scale textures. May slightly increase performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Useful for mod developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "V-Sync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving water speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"propery support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Where the map generator stops.\n" +"Please note:\n" +"- Limited to 31000 (setting above has no effect)\n" +"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n" +"- Those groups have an offset of -32, -32 nodes from the origin.\n" +"- Only groups which are within the map_generation_limit are generated" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether freetype fonts are used, requires freetype support to be compiled in." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selectionbox's lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#~ msgid "Public Serverlist" +#~ msgstr "רשימת שרתים פומבי" + +#~ msgid "No of course not!" +#~ msgstr "לא ברור שלא!" diff --git a/po/hu/minetest.po b/po/hu/minetest.po index faccede7..776ce693 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-21 14:55+0200\n" -"Last-Translator: way-hu \n" -"Language-Team: Hungarian \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-07 03:17+0000\n" +"Last-Translator: Kisbenedek Márton \n" +"Language-Team: Hungarian " +"\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" @@ -48,9 +48,8 @@ msgid "Loading..." msgstr "Betöltés..." #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "Protokol verzió eltérés, szerver " +msgstr "Protokoll verzió eltérés. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " @@ -58,7 +57,7 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "A szerver $1 és $2 protokoll verzió közötti verziókat támogat. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -68,33 +67,35 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Csak $1 protokoll verziót támogatjuk." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "$1 és $2 közötti protokoll verziókat támogatunk." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Mégse" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua msgid "Depends:" -msgstr "Függőségek:" +msgstr "Függ:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" -msgstr "Csomag letiltás" +msgstr "Modpakk letiltás" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" -msgstr "Csomag engedélyez" +msgstr "Modpakk engedélyez" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "Összes engedélyezése" +msgstr "Mind engedélyez" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -106,18 +107,18 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" -msgstr "Játék elrejtése" +msgstr "Játék elrejtés" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "Modpakk tartalom elrejtése" +msgstr "Modpakk tartalom elrejtés" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Mentés" @@ -135,11 +136,11 @@ msgstr "\"$1\" nevű világ már létezik" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "Létrehozás" +msgstr "Létrehoz" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "Tölts le egy al-játékot (pl. minetest_game) a minetest.net-ről" +msgstr "Tölts le egy al-játékot (mint a Minetest Game) a minetest.net-ről" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -178,6 +179,12 @@ msgstr "Nincsenek aljátékok telepítve." msgid "Are you sure you want to delete \"$1\"?" msgstr "Biztosan törölni akarod: \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Törlés" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: \"$1\" törlése meghiúsult" @@ -186,29 +193,103 @@ msgstr "Modmgr: \"$1\" törlése meghiúsult" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: érvénytelen mod útvonal: \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Persze, hogy nem!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Igen" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "\"$1\" világ törlése?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nem" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Elfogad" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Modpakk átnevezése:" +msgstr "Modpakk átnevezés:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Nincs megadva leírás a beállításhoz)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Vissza a Beállítások oldalra" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Keres" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Letiltva" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Szerkeszt" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Engedélyezve" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "A formátum 3 szám vesszőkkel elválasztva, zárójelek között." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Játékok" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Modok" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Írj be egy érvényes egész számot." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Írj be egy érvényes számot." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Lehetséges értékek: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Alapértelmezett visszaállítás" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Útvonal kiválasztás" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Technikai nevek mutatása" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Az értéknek nagyobbnak kell lennie ennél: $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Az értéknek kisebbnek kell lennie ennél: $1." #: builtin/mainmenu/modmgr.lua msgid "" @@ -220,7 +301,7 @@ msgstr "" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" -msgstr "$1 telepítése meghiúsult" +msgstr "$1 telepítése meghiúsult ide: $2" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" @@ -303,10 +384,6 @@ msgstr "Telepített modok:" msgid "Mod information:" msgstr "Mod ismertető:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Modok" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Nincs elérhető mod leírás" @@ -328,8 +405,8 @@ msgid "Uninstall selected modpack" msgstr "Kiválasztott modpakk törlése" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "Cím / Port:" +msgid "Address / Port" +msgstr "Cím / Port" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -347,30 +424,30 @@ msgstr "Kreatív mód" msgid "Damage enabled" msgstr "Sérülés engedélyezve" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Törlés" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Név / jelszó:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "Kedvenc törlés" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Nyilvános szerverlista" +msgid "Favorite" +msgstr "Kedvenc" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Név / Jelszó" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP engedélyezve" #: builtin/mainmenu/tab_server.lua +#, fuzzy msgid "Bind Address" msgstr "Bind Address" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" -msgstr "Beállítás" +msgstr "Beállít" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua @@ -382,7 +459,7 @@ msgstr "Kreatív mód" msgid "Enable Damage" msgstr "Sérülés engedélyezése" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Név/jelszó" @@ -419,90 +496,160 @@ msgid "Start Game" msgstr "Játék indítása" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D felhők" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Haladó beállítások" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Élsimítás:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Biztosan visszaállítod az egyjátékos világod?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Bilineáris szűrés" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bumpmapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Gombok változtatása" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Csomag letiltás" +msgid "Connected Glass" +msgstr "Csatlakozó üveg" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Szép levelek" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "Engedélyez" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "Játék" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Aniso. Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." +msgid "No" +msgstr "Nem" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Nincs szűrés" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Nincs Mipmap" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Blokk kiemelés" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "Node körvonalazás" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Nincs" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "Opaque Leaves" +msgstr "Átlátszatlan levelek" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Opaque Water" +msgstr "Átlátszatlan víz" -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp #, fuzzy -msgid "Select path" -msgstr "Kiválaszt" +msgid "Parallax Occlusion" +msgstr "Parallax Occlusion" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Részecskék" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Beállítások" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shaderek" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Simple Leaves" +msgstr "Egyszerű levelek" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "Simított megvilágítás" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Textúrázás:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "A shaderek engedélyezéséhez OpenGL driver használata szükséges." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Touchthreshold (px)" +msgstr "Érintésküszöb (px)" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Trilinear Filter" +msgstr "Tri-lineáris szűrés" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Hullámzó levelek" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Hullámzó növények" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Hullámzó víz" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Igen" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -510,7 +657,7 @@ msgstr "Modok beállítása" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "Főmenü" +msgstr "Fő" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" @@ -522,28 +669,23 @@ msgstr "Játék" #: builtin/mainmenu/tab_singleplayer.lua msgid "Singleplayer" -msgstr "Egyjátékos mód" +msgstr "Egyjátékos" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" msgstr "Nincs elérhető információ" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "Semmi" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" -msgstr "Textúracsomag kiválasztása:" +msgstr "Textúrapakk kiválasztása:" #: builtin/mainmenu/tab_texturepacks.lua msgid "Texturepacks" msgstr "Textúra pakkok" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Csatlakozási hiba (idő lejárt?)" +msgstr "Csatlakozási idő lejárt." #: src/client.cpp msgid "Done!" @@ -557,10 +699,6 @@ msgstr "Csomópontok inicializálása" msgid "Initializing nodes..." msgstr "Csomópontok inicializálása..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Elem textúrák..." - #: src/client.cpp msgid "Loading textures..." msgstr "Textúrák betöltése..." @@ -651,14 +789,14 @@ msgstr "" "Alapértelmezett irányítás:\n" "- WASD: Mozgás\n" "- Space: Ugrás/Mászás\n" -"- Shift: Lopakodás/Lefele menés\n" -"- Q: Tárgyak eldobása\n" -"- I: Invertory\n" +"- Shift: Lopakodás/Lefelé\n" +"- Q: Tárgy eldobása\n" +"- I: Eszköztár\n" "- Egér: Forgás/Nézelődés\n" -"- Egér Bal-gomb: Ásás/Ütés\n" -"- Egér jobb-gomb: Helyezés/Használat\n" -"- Egér görgő: Tárgyak kiválasztása\n" -"- T: Beszélgetés\n" +"- Bal-egér: Ásás/Ütés\n" +"- Jobb-egér: Helyez/Használ\n" +"- Egér görgő: Tárgy kiválaszt\n" +"- T: Csevegés\n" #: src/game.cpp msgid "" @@ -677,14 +815,14 @@ msgid "" msgstr "" "Alapértelmezett irányítás:\n" "Nem látható menü:\n" -"- egy érintés: gomb aktiválás\n" -"- dupla érintés: helyez/használat\n" +"- egy érintés: gomb aktivál\n" +"- dupla érintés: helyez/használ\n" "- ujj csúsztatás: körbenéz\n" -"Menü/Inventory látható:\n" +"Menü/Eszköztár látható:\n" "- dupla érintés (külső):\n" " -->bezár\n" "- stack, vagy slot érintése:\n" -" --> stack mozgatása\n" +" --> stack mozgatás\n" "- érint&megfogás, érintés 2. ujjal\n" " --> egy elem slotba helyezése\n" @@ -694,7 +832,7 @@ msgstr "Kilépés a menübe" #: src/game.cpp msgid "Exit to OS" -msgstr "Kilépés az OP-rendszerbe" +msgstr "Bezárás" #: src/game.cpp msgid "Item definitions..." @@ -716,10 +854,6 @@ msgstr "MiB/mp" msgid "Node definitions..." msgstr "Csomópont definíciók..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Folytatás" - #: src/game.cpp msgid "Resolving address..." msgstr "Cím feloldása..." @@ -740,13 +874,17 @@ msgstr "Hangerő" msgid "You died." msgstr "Meghaltál." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "Ok" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Belépés " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "Ok" +msgid "Proceed" +msgstr "Folytatás" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -758,7 +896,7 @@ msgstr "Vissza" #: src/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "Beszélgetés" +msgstr "Csevegés" #: src/guiKeyChangeMenu.cpp msgid "Command" @@ -781,9 +919,8 @@ msgid "Forward" msgstr "Előre" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inventory" -msgstr "Inventory" +msgstr "Eszköztár" #: src/guiKeyChangeMenu.cpp msgid "Jump" @@ -796,7 +933,7 @@ msgstr "A gomb már használatban van" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"Gombkiosztás. (Ha elfuserálod ezt a menüt, távolíts el néhány cuccot a " +"Gombkiosztás. (Ha elfuserálod ezt a menüt, távolíts el néhány dolgot a " "minetest.conf-ból)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp @@ -805,7 +942,7 @@ msgstr "Bal" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "Stacks nyomtatása" +msgstr "Halmok nyomtatása" #: src/guiKeyChangeMenu.cpp msgid "Range select" @@ -820,9 +957,8 @@ msgid "Sneak" msgstr "Lopakodás" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Toggle Cinematic" +msgstr "Váltás \"cinematic\" módba" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -954,6 +1090,7 @@ msgid "Insert" msgstr "Beilleszt" #: src/keycode.cpp +#, fuzzy msgid "Junja" msgstr "Junjaa" @@ -963,6 +1100,7 @@ msgid "Kana" msgstr "Kana" #: src/keycode.cpp +#, fuzzy msgid "Kanji" msgstr "Kanjii" @@ -972,7 +1110,7 @@ msgstr "Bal gomb" #: src/keycode.cpp msgid "Left Control" -msgstr "Bal Controll" +msgstr "Bal Control" #: src/keycode.cpp msgid "Left Menu" @@ -1016,59 +1154,59 @@ msgstr "Numlock" #: src/keycode.cpp msgid "Numpad *" -msgstr "Numerikus billentyű *" +msgstr "Numerikus bill. *" #: src/keycode.cpp msgid "Numpad +" -msgstr "Numerikus billentyű +" +msgstr "Numerikus bill. +" #: src/keycode.cpp msgid "Numpad -" -msgstr "Numerikus billentyű -" +msgstr "Numerikus bill. -" #: src/keycode.cpp msgid "Numpad /" -msgstr "Numerikus billentyű /" +msgstr "Numerikus bill. /" #: src/keycode.cpp msgid "Numpad 0" -msgstr "Numerikus billentyű 0" +msgstr "Numerikus bill. 0" #: src/keycode.cpp msgid "Numpad 1" -msgstr "Numerikus billentyű 1" +msgstr "Numerikus bill. 1" #: src/keycode.cpp msgid "Numpad 2" -msgstr "Numerikus billentyű 2" +msgstr "Numerikus bill. 2" #: src/keycode.cpp msgid "Numpad 3" -msgstr "Numerikus billentyű 3" +msgstr "Numerikus bill. 3" #: src/keycode.cpp msgid "Numpad 4" -msgstr "Numerikus billentyű 4" +msgstr "Numerikus bill. 4" #: src/keycode.cpp msgid "Numpad 5" -msgstr "Numerikus billentyű 5" +msgstr "Numerikus bill. 5" #: src/keycode.cpp msgid "Numpad 6" -msgstr "Numerikus billentyű 6" +msgstr "Numerikus bill. 6" #: src/keycode.cpp msgid "Numpad 7" -msgstr "Numerikus billentyű 7" +msgstr "Numerikus bill. 7" #: src/keycode.cpp msgid "Numpad 8" -msgstr "Numerikus billentyű 8" +msgstr "Numerikus bill. 8" #: src/keycode.cpp msgid "Numpad 9" -msgstr "Numerikus billentyű 9" +msgstr "Numerikus bill. 9" #: src/keycode.cpp #, fuzzy @@ -1171,18 +1309,29 @@ msgstr "Nagyítás" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = parallax occlusion with slope information (gyorsabb).\n" +"1 = relief mapping (lassabb, pontosabb)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "3D felhők" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D mód" #: src/settings_translation_file.cpp msgid "" @@ -1192,22 +1341,33 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3D támogatás.\n" +"Jelenleg támogatott:\n" +"- none: nincs 3d kimenet.\n" +"- anaglyph: cián/magenta színű 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: osztott képernyő fent/lent.\n" +"- sidebyside: osztott képernyő kétoldalt.\n" +"- pageflip: quadbuffer based 3d." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Egy választott map seed az új térképhez, véletlenszerűhöz hagyd üresen.\n" +"Felül lesz írva új világ létrehozásánál a főmenüben." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Az összes kliensen megjelenített üzenet a szerver összeomlásakor." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Az összes kliensen megjelenített üzenet a szerver leállításakor." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" @@ -1215,15 +1375,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Gyorsulás levegőben" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "Aktív blokk kezelés időköze" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "Aktív blokk módosító időköze" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Aktív blokk kiterjedési terület" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Aktív objektum küldés hatótávolsága" #: src/settings_translation_file.cpp msgid "" @@ -1231,39 +1399,53 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Cím a csatlakozáshoz.\n" +"Hagyd üresen helyi szerver indításához.\n" +"Megjegyzés: a cím mező a főmenüben felülírja ezt a beállítást." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Dpi konfiguráció igazítása a képernyődhöz (nem X11/csak Android) pl. 4k " +"képernyőkhöz." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb fényerő.\n" +"Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Haladó" #: src/settings_translation_file.cpp -msgid "Always fly and fast" +msgid "Altitude Chill" msgstr "" +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "Repülés és gyorsaság mindig" + #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Amplifies the valleys" +msgstr "Felerősíti a völgyeket" + +#: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "Anzisztrópikus szűrés" +msgstr "Anizotrópikus szűrés" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Szerver kihirdetése" #: src/settings_translation_file.cpp msgid "" @@ -1271,28 +1453,41 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Kihirdetés a szerverlistára.\n" +"Ha ki akarod hirdetni az ipv6 címedet, használd ezt: serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Összeomlás után újracsatlakozás kérése" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Automatikus bejelentés a szerverlistára." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Vissza" +msgstr "Vissza gomb" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Alap terep magassága" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Alap" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "Alap jogosultságok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" -msgstr "Bi-lineáris szűrés" +msgstr "Bilineáris szűrés" #: src/settings_translation_file.cpp #, fuzzy @@ -1301,12 +1496,11 @@ msgstr "Bind Address" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bit/pixel (vagyis színmélység) teljes képernyős módban." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Többjátékos mód" +msgstr "Építés játékos helyére" #: src/settings_translation_file.cpp #, fuzzy @@ -1315,130 +1509,169 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Kamera simítás" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Kamera simítás \"cinematic\" módban" #: src/settings_translation_file.cpp msgid "Camera update toggle key" +msgstr "Kamera frissítés váltás gomb" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Chat key" -msgstr "Gombok változtatása" +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "Barlang szélesség" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Csevegés gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Gombok változtatása" +msgstr "Csevegés váltás gomb" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Térképdarab (chunk) mérete" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Kreatív mód" +msgstr "Filmkészítő mód" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Kreatív mód" +msgstr "Filmkészítő mód gomb" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Tiszta átlátszó textúrák" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Kliens és szerver" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Mászás sebessége" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Felhő magasság" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Felhő rádiusz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D felhők" +msgstr "Felhők" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "A felhők egy kliens oldali effekt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Főmenü" +msgstr "Felhők a menüben" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Színezett köd" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Megbízható modok vesszővel elválasztott listája amiknek engedélyezettek nem " +"biztonságos\n" +"funkcióik még a mod biztonság bekapcsolása esetén is " +"(request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Modok vesszővel elválasztott listája, melyeknek engedélyezett HTTP API-k " +"elérése, amik\n" +"lehetővé teszik, hogy feltöltsenek és letöltsenek adatokat a netről/netre." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Parancs" +msgstr "Parancs gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Tiszta (csatlakozó) üveg" +msgstr "Üveg csatlakozása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Csatlakozás a szerverhez..." +msgstr "Csatlakozás külső médiaszerverhez" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Üveg csatlakoztatása ha a blokk támogatja." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Konzol" +msgstr "Konzol alfa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Konzol" +msgstr "Konzol szín" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Konzol" +msgstr "Konzol gomb" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Folyamatos előre" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Folyamatos mozgás előre (csak tesztelésre használatos)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Irányítás" #: src/settings_translation_file.cpp msgid "" @@ -1446,53 +1679,88 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Nap/éjjel ciklus hossza.\n" +"Példák: 72 = 20 perc, 360 = 4 perc, 1 = 24 óra, 0 = nappal/éjjel/bármelyik " +"változatlan marad." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Sivatagok és tengerpartok mérete a v6 térképgenerátorban.\n" +"Amikor a havas területek engedélyezve vannak, 'mgv6_freq_desert' figyelmen " +"kívül hagyva." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "A tavak süllyedésének meredekségét/mélységét állítja." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "A dombok meredekségét/magasságát állítja." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" +"A járatok szélességét határozza meg, alacsonyabb érték szélesebb járatokat " +"hoz létre." #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Üzenet összeomláskor" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Kiszámíthatatlanná teszi a láva viselkedését a barlangokban.\n" +"Ez megnehezítheti a bányászatot. Nulla érték kikapcsolja. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Kiszámíthatatlanná teszi a víz viselkedését a barlangokban.\n" +"Ez megnehezítheti a bányászatot. Nulla érték kikapcsolja. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Célkereszt alfa" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Célkereszt alfa (átlátszatlanság, 0 és 255 között)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Célkereszt színe" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Célkereszt színe (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Sebesség guggoláskor" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Sérülés engedélyezése" +msgstr "Sérülés" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Hibakereső infó váltás gomb" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Hibakereső napló szint" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -1500,26 +1768,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Alapértelmezett gyorsulás" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "Alapértelmezett játék" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Alapértelmezett játék új világ létrehozásánál.\n" +"A főmenüből történő világ létrehozása ezt felülírja." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Új jelszó" +msgstr "Alapértelmezett jelszó" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Alap jogosultságok" #: src/settings_translation_file.cpp msgid "" @@ -1539,21 +1808,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Eszköztippek megjelenítésének késleltetése, ezredmásodpercben megadva." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "A mélység, ami alatt nagy terjedelmű barlangokat találsz majd." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "A mélység, ami alatt masszív barlangokat találsz majd." + #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Ereszkedés sebessége" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"A szerver leírása, ami a szerverlistában jelenik meg és amikor a játékosok " +"csatlakoznak." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -1561,69 +1840,73 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "Részletes mod profil adat. Mod fejlesztőknek hasznos." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"A terep alakját határozza meg.\n" +"A 3 szám a zárójelben határozza meg a terep \n" +"méretarányát, a 3 számnak meg kell egyeznie." + +#: src/settings_translation_file.cpp msgid "Disable anticheat" -msgstr "Részecskék engedélyezése" +msgstr "Csalás elleni védelem letiltása" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Üres jelszavak tiltása" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "A szerver domain neve, ami a szerverlistában megjelenik." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "Az \"ugrás\" gomb duplán a repüléshez" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Az \"ugrás\" gomb duplán a repüléshez" +msgstr "Az ugrás gomb kétszeri megnyomásával lehet repülés módba váltani." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tárgy eldobás gomb" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "VBO engedélyez" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Online mod tároló" +msgstr "Mod biztonság engedélyezése" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Játékosok sérülésének és halálának engedélyezése." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"A simított megvilágítás engedélyezése egyszerű ambient occlusion-nel.\n" +"A sebesség érdekében vagy másféle kinézetért kikapcsolhatod." #: src/settings_translation_file.cpp msgid "" @@ -1633,6 +1916,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Régi verziójú kliensek csatlakozásának tiltása.\n" +"A régi kliensek kompatibilisek olyan értelemben, hogy nem omlanak össze ha " +"egy új verziójú\n" +"szerverhez csatlakoznak, de nem biztos, hogy támogatnak minden elvárt " +"funkciót." #: src/settings_translation_file.cpp msgid "" @@ -1641,6 +1929,9 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Távoli média szerver használatának engedélyezése (ha a szerver biztosítja).\n" +"Ezekről jelentősen gyorsabb a média letöltése (pl. textúrák)\n" +"a szerverhez történő csatlakozáskor." #: src/settings_translation_file.cpp msgid "" @@ -1648,6 +1939,14 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"IPv6 szerver futtatásának engedélyezése/letiltása. Egy IPv6 szerver " +"lehetséges, hogy\n" +"IPv6 kliensekre van korlátozva, a rendszer konfigurációtól függően.\n" +"Nincs figyelembe véve, ha bind_address van beállítva." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Az eszköztár elemeinek animációjának engedélyezése." #: src/settings_translation_file.cpp msgid "" @@ -1662,9 +1961,12 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Sérülés engedélyezése" +msgstr "Minitérkép engedélyezése." #: src/settings_translation_file.cpp msgid "" @@ -1683,10 +1985,12 @@ msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Kísérleti opció, látható rések jelenhetnek meg a blokkok között\n" +"ha nagyobbra van állítva, mint 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS a szünet menüben" #: src/settings_translation_file.cpp msgid "FSAA" @@ -1697,57 +2001,68 @@ msgid "Fall bobbing" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Tartalék betűtípus" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Tartalék betűtípus árnyék" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Tartalék betűtípus árnyék alfa" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Tartalék betűtípus méret" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Gyorsaság gomb" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Gyorsulás gyors módban" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Sebesség gyors módban" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Gyors mozgás" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Gyors mozgás (a használat gombbal).\n" +"Szükséges hozzá a \"fast\" (gyorsaság) jogosultság a szerveren." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Látótávolság" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Látóterület fokokban." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"A client/serverlist/ mappában lévő fájl, ami tartalmazza a kedvenc " +"szervereket, amik a Többjátékos fül alatt jelennek meg." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1758,9 +2073,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Nincs szűrés" +msgstr "Szűrés" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -1768,122 +2082,141 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Repülés gomb" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Repülés" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Köd" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Köd váltás gomb" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Betűtípus helye" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Betűtípus árnyéka" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Betűtípus árnyék alfa" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "Betűtípus árnyék eltolás, ha 0, akkor nem lesz árnyék rajzolva." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Betűtípus mérete" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "Képernyőmentések formátuma." #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Előre" +msgstr "Előre gomb" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Freetype betűtípusok" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Milyen távolságból generálódnak a blokkok a kliensek számára, " +"térképblokkokban megadva (16 blokk)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Milyen távolságból lesznek elküldve a blokkok a kliens számára, " +"térképblokkokban megadva (16 blokk)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Milyen távolságból szereznek tudomást az objektumokról a kliensek, " +"térképblokkokban megadva (16 blokk)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Teljes képernyő" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Teljes képernyő BPP" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Teljes képernyős mód." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "GUI scaling filter" msgstr "Felhasználói felület méretaránya" +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "Felhasználói felület méretarány szűrő" + #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Felhasználói felület méretarány szűrő txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Általános" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "Normálfelületek generálása" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafika" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravitáció" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP Modok" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "HUD váltás gomb" #: src/settings_translation_file.cpp msgid "" @@ -1893,21 +2226,25 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "A kezdeti ablak méret magasság összetevője." + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "A felhők megjelenésének magassága." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "Nagy pontosságú FPU" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "A szerver honlapja, ami a szerverlistában megjelenik." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Milyen mélyek legyenek a folyók" #: src/settings_translation_file.cpp msgid "" @@ -1930,41 +2267,60 @@ msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Mennyi ideig vár a szerver, mielőtt betöltetlenné teszi a nem használt " +"térképblokkokat.\n" +"Magasabb érték egyenletesebb, de több RAM-ot használ." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Milyen szélesek legyenek a folyók" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 szerver" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6 támogatás." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Ha az FPS ennél magasabbra is tudna menni, lekorlátozható, \n" +"hogy ne pazaroljon CPU erőforrást feleslegesen." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Csomag letiltás" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Ha le van tiltva, a használat (use) gomb lesz használatban a gyors " +"repüléshez,\n" +"ha a repülés és a gyors mód is engedélyezve van." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Ha engedélyezve van együtt a repülés (fly) móddal, a játékos átrepülhet " +"szilárd\n" +"blokkokon. Szükséges hozzá a \"noclip\" jogosultság a szerveren." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Engedélyez" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Ha engedélyezve van, a \"használat\" (use) gomb lesz használatban a " +"\"lopakodás\" (sneak) helyett lefelé mászáskor, vagy ereszkedéskor." #: src/settings_translation_file.cpp msgid "" @@ -1975,16 +2331,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." msgstr "" +"Ha ez engedélyezve van, kikapcsolja a csalás megelőzést többjátékos módban." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Ha engedélyezve van, érvénytelen világ adat nem okozza a szerver leállását.\n" +"Csak akkor engedélyezd, ha tudod, hogy mit csinálsz." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." -msgstr "" +msgstr "Ha engedélyezve van, új játékosok nem csatlakozhatnak jelszó nélkül." #: src/settings_translation_file.cpp msgid "" @@ -1992,68 +2351,115 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Ha engedélyezve van, elhelyezhetsz blokkokat oda, ahol állsz (láb + " +"szemmagasság).\n" +"Ez segít, ha kis területen dolgozol." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "" +"Ha be van állítva, a játékosok mindig a megadott pozícióban élednek újra (és " +"jelennek meg új csatlakozáskor)." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Világ hibák figyelmen kívül hagyása" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Játék" +msgstr "Játékon belül" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" +"Játékon belüli csevegő konzol hátterének alfája (átlátszatlanság, 0 és 255 " +"között)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Játékon belüli csevegő konzol hátterének színe (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Fontos változások mentésének időköze a világban, másodpercekben megadva." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "Eszköztár elemek animációi" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "Inventory" +msgstr "Eszköztár gomb" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Egér invertálása" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Függőleges egérmozgás invertálása." #: src/settings_translation_file.cpp msgid "Item entity TTL" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "Ugrás" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "Ugrás gomb" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "Ugrás sebessége" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a látóterület csökkentéséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2061,13 +2467,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb az éppen kijelölt tárgy eldobásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a látóterület növeléséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2075,6 +2487,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Ugrás gombja.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2082,6 +2497,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a gyors mozgáshoz gyors (fast) módban.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2089,6 +2507,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a játékos hátrafelé mozgásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2096,6 +2517,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a játékos előre mozgásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2103,6 +2527,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a játékos balra mozgatásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2110,6 +2537,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a játékos jobbra mozgatásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2117,6 +2547,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a csevegő konzol megnyitásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2124,6 +2557,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a csevegő ablak megnyitásához, parancsok beírásához.\n" +"Lásd: //irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2131,6 +2567,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a csevegő ablak megnyitásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2138,6 +2577,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb az Eszköztár megnyitásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2154,6 +2596,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a lopakodáshoz (sneak).\n" +"A lefelé mászáshoz és vízben történő ereszkedéshez is használt, ha a " +"aux1_descends le van tiltva.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2161,6 +2608,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a belső és külső nézetű kamera váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2168,6 +2618,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb képernyőfelvétel készítéshez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2175,6 +2628,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a \"cinematic\" mód (filmkészítés) bekapcsolásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2182,6 +2638,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a minitérkép megjelenítéséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2189,6 +2648,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a gyors (fast) módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2196,6 +2658,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a repülés (fly) módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2203,6 +2668,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a noclip módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2210,6 +2678,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a kamerafrissítés bekapcsolásához. Csak fejlesztők számára.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2217,6 +2688,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a hibakeresési infók megjelenítéséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2224,6 +2698,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a HUD megjelenítéséhez/kikapcsolásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2231,6 +2708,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a csevegő megjelenítéséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2238,6 +2718,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a köd megjelenítésének ki/bekapcsolásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2252,18 +2735,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Gomb a végtelen látóterület bekapcsolásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "Gomb használat a mászás/ereszkedéshez" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Nyelv" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Nagy barlang mélység" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Láva jellemzők" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Levelek stílusa" #: src/settings_translation_file.cpp msgid "" @@ -2272,11 +2766,15 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Levelek stílusa:\n" +"- Szép (Fancy): minden oldal látható\n" +"- Egyszerű (Simple): csak a külső oldalak láthatók, if defined " +"special_tiles are used\n" +"- Átlátszatlan (Opaque): átlátszóság kikapcsolása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Bal menü" +msgstr "Bal gomb" #: src/settings_translation_file.cpp msgid "" @@ -2284,6 +2782,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2315,11 +2821,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Folyadék folyékonysága" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Folyadék folyékonyságának simítása" #: src/settings_translation_file.cpp msgid "Liquid loop max" @@ -2331,7 +2837,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Folyadék süllyedés" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." @@ -2343,66 +2849,130 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Főmenü játék kezelő" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Főmenü" +msgstr "Főmenü mod kezelő" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Főmenü" +msgstr "Főmenü script" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"A köd és ég színe függjön a napszaktól (hajnal/naplemente) és a látószögtől." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" +"Lehetővé teszi, hogy a DriectX működjön a LuaJIT-tel. Tiltsd le, ha " +"problémákat okoz." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Térkép mappája" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V6.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Térkép generálási jellemzők a Mapgen Valleys esetében.\n" +"Az 'altitude_chill' a magasabb helyeket hűvösebbé teszi, ami biome " +"problémákat okozhat.\n" +"A 'humid_rivers' a folyók környéki páratartalmat módosítja, és ott, ahol " +"medencék alakulnak ki,\n" +"ütközhet a finoman beállított biome-okkal.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Térkép generálási jellemzők csak a Flat (lapos) térképgenerátor esetében.\n" +"Esetenkénti tavak és dombok generálása a lapos világba.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with \"no\" are used to explicitly disable them." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Térképgenerálási jellemzők csak a v6 térképgenerátor esetében.\n" "When snowbiomes are enabled jungles are enabled and the jungles flag is " "ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " -msgstr "" +"Flags starting with \"no\" are used to explicitly disable them." #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Térkép generálási korlát" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Térkép mentésének időköze" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Térképblokk korlát" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Valleys térképgenerátor" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2416,28 +2986,140 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Térkép generátor" +msgstr "Térkép generátor hibakereső" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Térkép generátor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Flat (lapos) térképgenerátor" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "Flat (lapos) térképgenerátor barlang szélesség" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Flat (lapos) térképgenerátor talaj szint" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Flat (lapos) térképgenerátor domb meredekség" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Flat (lapos) térképgenerátor domb küszöb" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Flat (lapos) térképgenerátor tó meredekség" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Flat (lapos) térképgenerátor tó küszöb" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "Flat (lapos) térképgenerátor nagy barlang mélység" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Fractal térképgenerátor" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "Fractal térképgenerátor barlang szélesség" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Térkép generátor" +msgstr "Térkép generátor neve" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v5" -msgstr "Térkép generátor" +msgstr "Térkép generátor v5" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "v5 térképgenerátor barlang szélesség" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2460,9 +3142,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Térkép generátor" +msgstr "Térkép generátor v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2470,7 +3151,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "V6 térképgenerátor tengerpart gyakoriság" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" @@ -2486,7 +3167,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "V6 térképgenerátor sivatag gyakoriság" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" @@ -2521,9 +3202,12 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Térkép generátor" +msgstr "Térkép generátor v7" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "v7 térképgenerátor barlang szélesség" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2574,9 +3258,21 @@ msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" #: src/settings_translation_file.cpp -msgid "Max block generate distance" +msgid "Massive cave depth" +msgstr "Masszív barlang mélység" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "Masszív barlangok innentől." + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "Max blokk generálási távolság" + #: src/settings_translation_file.cpp msgid "Max block send distance" msgstr "" @@ -2595,11 +3291,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "Maximum FPS (képkocka/mp)" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Maximum FPS a játék szüneteltetésekor." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -2607,23 +3303,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Maximum hotbar szélesség" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "Maximum blokkok száma, amik sorban állhatnak betöltésre." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximum blokkok száma, amik sorban állhatnak generálásra.\n" +"Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximum blokkok száma, amik sorban állhatnak egy fájlból való betöltésre.\n" +"Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -2634,6 +3334,8 @@ msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Maximum térképblokkok száma, amit a kliens memóriában tárolhat.\n" +"Állítsd -1-re végtelen mennyiségért." #: src/settings_translation_file.cpp msgid "" @@ -2644,42 +3346,45 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "Az egy időben csatlakozó játékosok maximális száma." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "Statikusan tárolt objektumok maximális száma egy térképblokkban." #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Az aktuális ablak maximum hányada a hotbar számára.\n" +"Hasznos, ha valamit el kell helyezni a hotbar jobb, vagy bal oldalán." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Az egyidejűleg a kliensenként küldött térképblokkok maximális száma" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Egyidejűleg küldött térképblokkok maximális száma összesen" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Egy fájl letöltésének maximum ideje (milliszekundumban), amíg eltarthat (pl. " +"mod letöltés)." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Maximum felhasználók" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Maximum objektum térképblokkonként" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menü" +msgstr "Menük" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -2687,34 +3392,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Napi üzenet" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "Napi üzenet a csatlakozó játékosoknak." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "Kijelölt objektum kiemelésére használt módszer." #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Minitérkép" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Minitérkép gomb" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Minitérkép letapogatási magasság" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" +msgstr "Minimum textúra méret a szűrőknek" #: src/settings_translation_file.cpp #, fuzzy @@ -2727,31 +3429,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "Mod áruház részletek URL" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "Mod áruház letöltés URL" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "Mod áruház mod lista URL" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Monospace betűtípus útvonal" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Monospace betűtípus méret" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Egér érzékenység" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Egér érzékenység szorzó." #: src/settings_translation_file.cpp msgid "" @@ -2770,6 +3472,8 @@ msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"A használni kívánt térképgenerátor neve új világ létrehozásakor.\n" +"A főmenüben történő világ létrehozás ezt felülírja." #: src/settings_translation_file.cpp msgid "" @@ -2777,15 +3481,20 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"A játékos neve.\n" +"Szerver indításakor ezzel a névvel csatlakozó játékos admin jogú.\n" +"A főmenüből történő indítás ezt felülírja." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" +"A szerver neve, ami megjelenik a szerverlistában, és amikor a játékosok " +"csatlakoznak." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Hálózat" #: src/settings_translation_file.cpp msgid "" @@ -2793,13 +3502,9 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Az új felhasználóknak ezt a jelszót kell megadniuk." #: src/settings_translation_file.cpp msgid "Noclip" @@ -2807,15 +3512,22 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Noclip key" +msgstr "Noclip gomb" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "Blokk kiemelés" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Node highlighting" -msgstr "Node kiemelés" +msgid "Noise parameters for biome API temperature, humidity and biome blend." +msgstr "" #: src/settings_translation_file.cpp -msgid "Noise parameters for biome API temperature, humidity and biome blend." +msgid "Noises" msgstr "" #: src/settings_translation_file.cpp @@ -2858,11 +3570,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Parallax Occlusion" -msgstr "Parallax Occlusion" - #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion" @@ -2871,54 +3578,53 @@ msgstr "Parallax Occlusion" #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax Occlusion" +msgstr "Parallax Occlusion skála" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Parallax Occlusion" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Parallax Occlusion" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax Occlusion" +msgstr "Parallax Occlusion mód" #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion strength" -msgstr "Parallax Occlusion" +msgstr "Parallax Occlusion ereje" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Képernyőmentések mappája." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." -msgstr "" +msgstr "Textúra mappa útvonala. Először minden textúrát itt keres a játék." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Fizika" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"A játékos képes repülni, nem hat rá a gravitáció.\n" +"Szükséges hozzá a repülés jogosultság (fly) a szerveren." #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Túl hosszú játékosnév." +msgstr "Játékos neve" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2926,30 +3632,25 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Játékos játékos ellen (PvP)" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Textúrák betöltése..." +"Port a csatlakozáshoz (UDP).\n" +"A főmenü port mezője ezt a beállítást felülírja." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Annak megelőzése, hogy a modok nem biztonágos dolgokat futtassanak, pl. " +"shell parancsok." + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "Jogosultságok, amiket a basic_privs adhat a játékosoknak" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." @@ -2970,34 +3671,52 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Látótávolság választása" +msgstr "Látóterület választása gomb" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Távoli média" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Távoli port" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Az alapértelmezett főmenüt lecseréli egy másikkal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Jobb menü" +msgstr "Jobb gomb" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" +msgstr "Jobb kattintás ismétlés időköz" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "Folyó mélység" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "Folyó méret" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" msgstr "" #: src/settings_translation_file.cpp @@ -3006,15 +3725,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Kör alakú minitérkép" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "A kliens által fogadott térkép mentése lemezre." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "A szerverről fogadott térkép mentése" #: src/settings_translation_file.cpp msgid "" @@ -3024,111 +3743,130 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"A felhasználói felület méretezése egy meghatározott értékkel.\n" +"A legközelebbi szomszédos anti-alias szűrőt használja a GUI méretezésére.\n" +"Ez elsimít néhány durva élt, és elhajlít pixeleket a méretezés " +"csökkentésekor,\n" +"de ennek az az ára, hogy elhomályosít néhány szélső pixelt, ha a képek nem\n" +"egész számok alapján vannak méretezve." #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Képernyő magasság" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Képernyő szélesség" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Pillanatkép" +msgstr "Képernyőkép" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Képernyőkép mappa" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "Képernyőkép formátum" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "Képernyőkép minőség" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" +"Képernyőkép minőség. Csak a JPEG formátumnál használatos.\n" +"1 jelenti a legrosszabb minőséget; 100 jelenti a legjobb minőséget.\n" +"Használd a 0-t az alapértelmezett minőséghez." #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Biztonság" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Lásd: http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Kijelölő doboz keret színe (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Kijelölő doboz színe" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Kijelölő doboz szélesség" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Egyjátékos mód indítása" +msgstr "Szerver / Egyjátékos" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Szerver" +msgstr "Szerver URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Szerver port" +msgstr "Szerver címe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Szerver port" +msgstr "Szerver leírása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Szerver" +msgstr "Szerver neve" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Szerver port" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Nyilvános szerverlista" +msgstr "Szerverlista URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Nyilvános szerverlista" +msgstr "Szerverlista fájl" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Nyelv beállítása. Hagyd üresen a rendszer nyelvének használatához.\n" +"A változtatás után a játék újraindítása szükséges." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"A \"true\" beállítás engedélyezi a levelek hullámzását.\n" +"A shaderek engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"A \"true\" beállítás engedélyezi a növények hullámzását.\n" +"A shaderek engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shaderek" +"A \"true\" beállítás engedélyezi a víz hullámzását.\n" +"A shaderek engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp msgid "" @@ -3136,52 +3874,68 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"A shaderek fejlett vizuális effekteket engedélyeznek és növelhetik a " +"teljesítményt néhány videókártya esetében.\n" +"Csak OpenGL-el működnek." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." msgstr "" +"A minitérkép alakja. Engedélyezve (enabled) = kerek, letiltva (disabled) = " +"négyzet." #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "" +msgstr "Hibakereső infó mutatása" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "Entitások kijelölő dobozának mutatása" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Leállítási üzenet" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Az egyszerre generált térképblokkok mérete, térképblokkokban megadva (16 " +"blokk)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" msgstr "Simított megvilágítás" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Kamera mozgásának simítása mozgáskor és körbenézéskor.\n" +"Videofelvételekhez hasznos." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." msgstr "" +"A kamera forgását simítja a cinematic (filmkészítés) módban. 0 = letiltás." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Kamera forgás simítása. 0 = letiltás." #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Lopakodás" +msgstr "Lopakodás gomb" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Hang" #: src/settings_translation_file.cpp msgid "" @@ -3193,12 +3947,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Statikus feléledési (spawn) pont" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Normálfelületek generálása" +msgstr "Generált normálfelületek erőssége." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -3208,20 +3961,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "Régebbi szerverek támogatása" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Textúra pakkok" +msgid "Terrain Height" +msgstr "Terep magasság" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Textúrák útvonala" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "A magasság, ahol a hőmérséklet 20 fokkal csökken" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3233,6 +4008,9 @@ msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"Jogosultságok, amiket az új játékosok automatikusan megkapnak.\n" +"A játékban a /privs parancs beírásával láthatod a teljes listát a " +"szervereden." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." @@ -3258,9 +4036,15 @@ msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." msgstr "" +"Ennyi másodperc szükséges az ismételt jobb kattintáshoz a jobb egérgomb " +"nyomva tartásakor." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." +msgstr "Ezt a betűtípust bizonyos nyelvek használják." + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" msgstr "" #: src/settings_translation_file.cpp @@ -3268,6 +4052,8 @@ msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Annak az ideje, hogy mennyi ideig \"élnek\" az eldobott tárgyak.\n" +"-1-re állítás kikapcsolja ezt a funkciót." #: src/settings_translation_file.cpp msgid "Time send interval" @@ -3275,7 +4061,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "Idő sebessége" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." @@ -3288,17 +4074,20 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"A lag (késés) csökkentéséért a blokkok lerakása le van lassítva, ha a " +"játékos épít valamit.\n" +"Ez azt határozza meg, hogy mennyire van lelassítva blokkok elhelyezésekor, " +"vagy eltávolításakor." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Kamera mód váltó gomb" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Eszköztipp késleltetés" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Tri-lineáris szűrés" @@ -3308,14 +4097,17 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"Arra használható, hogy simábbá tegye a minitérképet lassabb gépeken." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Megbízható modok" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "A Többjátékos fül alatt megjelenített szerverlista URL-je." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -3327,130 +4119,153 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "3D felhő kinézet használata lapos helyett." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Felhő animáció használata a főmenü háttereként." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" +msgstr "Anizotropikus szűrés használata, ha egy szögből nézzük a textúrákat." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Bilineáris szűrés a textúrák méretezésekor." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "Nyomj meg egy gombot" +msgstr "Használat gomb" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." msgstr "" +"Mip mapping használata a textúrák méretezéséhez. Kicsit növelheti a " +"teljesítményt." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Trilineáris szűrés a textúrák méretezéséhez." #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Korábbi belső fejlesztők" +msgstr "Mod fejlesztőknek hasznos." #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "Völgyek mélysége" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "Völgyek meredeksége" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "Függőleges képernyő szinkronizálás." #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Videó driver" #: src/settings_translation_file.cpp msgid "View bobbing" msgstr "" #: src/settings_translation_file.cpp -msgid "View range decrease key" +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"Látótávolság blokkokban megadva.\n" +"Min = 20" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "Látóterület csökkentés gomb" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "Látóterület növelés gomb" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" +msgid "Viewing range" +msgstr "Látóterület" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Hangerő" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "Hullámzó levelek" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Járás sebessége" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "Víz jellemzők" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Vízszint" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "A világ vízfelszínének szintje." #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Hullámzó levelek" +msgstr "Hullámzó blokkok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "Hullámzó levelek" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "Hullámzó növények" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Hullámzó víz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Hullámzó víz" +msgstr "Hullámzó víz magassága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Hullámzó víz" +msgstr "Hullámzó víz szélessége" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Hullámzó víz" +msgstr "Hullámzó víz sebessége" #: src/settings_translation_file.cpp msgid "" @@ -3487,11 +4302,20 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Hol áll meg a térkép generálás.\n" +"Fontos:\n" +"- 31000 -re van korlátozva (ha magasabbra állítjuk, nem lesz eredménye).\n" +"- A térképgenerátor 80x80x80-as csoportokban dolgozik (5x5x5-ös térkép " +"blokkok).\n" +"- Those groups have an offset of -32, -32 nodes from the origin.\n" +"- Only groups which are within the map_generation_limit are generated" #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." msgstr "" +"Használatban vannak-e freetype betűtípusok. Szükséges a beépített freetype " +"támogatás." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -3505,32 +4329,56 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Engedélyezve van-e, hogy a játékosok sebezzék, ill. megöljék egymást." #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Kérjük-e a klienseket, hogy újracsatlakozzanak egy (Lua) összeomlás után.\n" +"Állítsd true-ra, ha a szervered automatikus újraindításra van állítva." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "A látható terület vége el legyen-e ködösítve." #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "A hibakereső infó mutatása (ugyanaz a hatás, ha F5-öt nyomunk)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." msgstr "" +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "Kezdeti ablak méret szélessége." + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "A kijelölődoboz vonalainak szélessége a blokkok körül." #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Világ (world) mappa (minden itt tárolódik ami a világban van).\n" +"Ez nem szükséges, ha a főmenüből indítunk." + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" #: src/settings_translation_file.cpp msgid "cURL file download timeout" @@ -3544,137 +4392,204 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Rendering:" -#~ msgstr "Renderelés:" +#~ msgid "Item textures..." +#~ msgstr "Elem textúrák..." -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "A driver változások életbe lépéséhez indítsd újra a Minetestet" +#~ msgid "" +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." +#~ msgstr "" +#~ "Kicsivel alacsonyabb víz felszín engedélyezése, hogy ne töltse meg " +#~ "teljesen a blokkot.\n" +#~ "Megjegyzés: ez nem teljesen optimalizált, és a simított megvilágítás\n" +#~ "így nem működik a víz felszínén." + +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "" +#~ "Kijelölés kiemelés (kivilágítás) engedélyezése a blokkoknál (letiltja a " +#~ "kijelölődobozt)." + +#~ msgid "" +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "A látóterület csökkentésének gombja. A minimum látóterületet módosítja.\n" +#~ "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "A látóterület növelésének gombja. A minimum látótávolságot módosítja.\n" +#~ "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Maximum distance above water level for player spawn.\n" +#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n" +#~ "Smaller values may result in a suitable spawn point not being found,\n" +#~ "resulting in a spawn at (0, 0, 0) possibly buried underground." +#~ msgstr "" +#~ "Maximum távolság a vízszinttől, ahol a játékosok újraéledhetnek/" +#~ "megjelenhetnek csatlakozáskor (spawn).\n" +#~ "Magasabb értékek közelebb visznek az (x = 0, z = 0)-hoz.\n" +#~ "Alacsonyabb értékek azt eredményezhetik, hogy nem lesz megfelelő pont a " +#~ "feléledéshez,\n" +#~ "(0,0,0) pozícióban történő feléledést, ami valószínűleg a föld alatt lesz." #, fuzzy -#~ msgid "Game Name" -#~ msgstr "Játék" +#~ msgid "" +#~ "Minimum wanted FPS.\n" +#~ "The amount of rendered stuff is dynamically set according to this. and " +#~ "viewing range min and max." +#~ msgstr "" +#~ "Minimum kívánt FPS.\n" +#~ "A renderelt cuccok mennyisége dinamikusan ez alapján állítódik be (és a " +#~ "látórerület min és max)." -#~ msgid "Favorites:" -#~ msgstr "Kedvencek:" +#~ msgid "New style water" +#~ msgstr "Új stílusú víz" -#, fuzzy -#~ msgid "Password" -#~ msgstr "Régi jelszó" +#~ msgid "Preload inventory textures" +#~ msgstr "Eszköztár textúráinak előtöltése" -#~ msgid "Preload item visuals" -#~ msgstr "Előretöltött tárgy láthatóság" +#~ msgid "Vertical initial window size." +#~ msgstr "Függőleges kezdeti ablak méret." -#, fuzzy -#~ msgid "Finite Liquid" -#~ msgstr "Végtelen folyadék" +#~ msgid "Vertical spawn range" +#~ msgstr "Az (újra)éledés függőleges irányú területe" -#~ msgid "Failed to delete all world files" -#~ msgstr "Hiba az összes világ törlése közben" +#~ msgid "Viewing range minimum" +#~ msgstr "Minimum látóterület" -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Nem sikerült a világ beállítása: Nincs kiválasztva" +#~ msgid "Wanted FPS" +#~ msgstr "Kívánt FPS" -#~ msgid "Cannot create world: No games found" -#~ msgstr "Nem sikerült a világot létrehozni: Nem található a játék" +#~ msgid "Reset singleplayer world" +#~ msgstr "Egyjátékos világ visszaállítása" -#~ msgid "Files to be deleted" -#~ msgstr "A fájl törölve lett" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Nem törölhető a világ: Nincs kiválasztva" - -#~ msgid "Address required." -#~ msgstr "Cím szükséges." - -#~ msgid "Create world" -#~ msgstr "Világ létrehozása" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Hagyd el a nevét, hogy helyi szervert indíts." - -#~ msgid "Show Favorites" -#~ msgstr "Kedvencek mutatása" - -#~ msgid "Show Public" -#~ msgstr "Publikus mutatása" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Nem sikerült a világ létrehozása: A névben nem jó karakterek vannak" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Figyelem: A beállítások nem egyformák. " - -#~ msgid "Configuration saved. " -#~ msgstr "Beállítások mentve. " - -#~ msgid "is required by:" -#~ msgstr "kell neki:" - -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Ball gomb: Tárgyak mozgatása, Jobb gomb: egy tárgyat mozgat" - -#, fuzzy -#~ msgid "Downloading" -#~ msgstr "Le" - -#, fuzzy -#~ msgid "Touchthreshold (px)" -#~ msgstr "Touchthreshold (px)" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "A méretarány alkalmazva a menü elemekre: " #, fuzzy #~ msgid "Touch free target" #~ msgstr "Touch free target" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "A shaderek engedélyezéséhez OpenGL driver használata szükséges." +#, fuzzy +#~ msgid "Downloading" +#~ msgstr "Le" -#~ msgid "Texturing:" -#~ msgstr "Textúrázás:" +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Ball gomb: Tárgyak mozgatása, Jobb gomb: egy tárgyat mozgat" -#~ msgid "Simple Leaves" -#~ msgstr "Egyszerű levelek" +#~ msgid "is required by:" +#~ msgstr "kell neki:" -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "A méretarány alkalmazva a menü elemekre: " +#~ msgid "Configuration saved. " +#~ msgstr "Beállítások mentve. " -#~ msgid "Reset singleplayer world" -#~ msgstr "Egyjátékos világ visszaállítása" +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Figyelem: A beállítások nem egyformák. " -#~ msgid "Opaque Water" -#~ msgstr "Áttetsző víz" +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Nem sikerült a világ létrehozása: A névben nem jó karakterek vannak" -#~ msgid "Opaque Leaves" -#~ msgstr "Áttetsző levelek" +#~ msgid "Show Public" +#~ msgstr "Publikus mutatása" + +#~ msgid "Show Favorites" +#~ msgstr "Kedvencek mutatása" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Hagyd el a nevét, hogy helyi szervert indíts." + +#~ msgid "Create world" +#~ msgstr "Világ létrehozása" + +#~ msgid "Address required." +#~ msgstr "Cím szükséges." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Nem törölhető a világ: Nincs kiválasztva" + +#~ msgid "Files to be deleted" +#~ msgstr "A fájl törölve lett" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Nem sikerült a világot létrehozni: Nem található a játék" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Nem sikerült a világ beállítása: Nincs kiválasztva" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Hiba az összes világ törlése közben" + +#, fuzzy +#~ msgid "Finite Liquid" +#~ msgstr "Végtelen folyadék" + +#~ msgid "Preload item visuals" +#~ msgstr "Előretöltött tárgy láthatóság" + +#, fuzzy +#~ msgid "Password" +#~ msgstr "Régi jelszó" + +#, fuzzy +#~ msgid "Game Name" +#~ msgstr "Játék" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "A driver változások életbe lépéséhez indítsd újra a Minetestet" + +#~ msgid "Rendering:" +#~ msgstr "Renderelés:" + +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "Engedélyez" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Csomag letiltás" + +#, fuzzy +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "Térkép generálási jellemzők csak a Valleys térképgenerátor esetében.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." #~ msgid "No!!!" #~ msgstr "Nem!!!" -#, fuzzy -#~ msgid "No Mipmap" -#~ msgstr "No Mipmap" +#~ msgid "Generate Normalmaps" +#~ msgstr "Normálfelületek generálása" -#, fuzzy -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap + Aniso. Filter" +#~ msgid "Public Serverlist" +#~ msgstr "Nyilvános szerverlista" -#, fuzzy -#~ msgid "Mipmap" -#~ msgstr "Mipmap" - -#~ msgid "Fancy Leaves" -#~ msgstr "Szép levelek" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Biztosan visszaállítod az egyjátékos világod?" - -#~ msgid "Antialiasing:" -#~ msgstr "Élsimítás:" - -#~ msgid "8x" -#~ msgstr "8x" - -#~ msgid "4x" -#~ msgstr "4x" - -#~ msgid "2x" -#~ msgstr "2x" +#~ msgid "No of course not!" +#~ msgstr "Persze, hogy nem!" diff --git a/po/id/minetest.po b/po/id/minetest.po index 362ee8ec..3505fca5 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -2,13 +2,12 @@ # Copyright (C) 2014 srifqi # This file is distributed under the same license as the PACKAGE package. # Muhammad Rifqi Priyo Susanto , 2014. -# msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-06 08:59+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-04-12 19:07+0000\n" "Last-Translator: Muhammad Rifqi Priyo Susanto " "\n" "Language-Team: Indonesian , , (, , ), , " +", " +msgstr "" +"Format: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Permainan" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mod" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"lacunarity (celah, opsional) dapat ditambahkan dengan awalan tanda koma." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Silakan masukan daftar flag yang dipisahkan dengan tanda koma." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Mohon masukkan sebuah bilangan bulat yang sah." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Mohon masukkan sebuah angka yang sah." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Nilai yang mungkin adalah: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Atur ke Bawaan" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Pilih jalur" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Tampilkan nama teknis" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Nilai harus lebih besar dari $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Nilai harus lebih kecil dari $1." #: builtin/mainmenu/modmgr.lua msgid "" @@ -219,7 +305,7 @@ msgid "" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Pemasangan Mod: tipe berkas tidak didukung \"$1\" atau kerusakan arsip" +"Pemasangan Mod: tipe berkas tidak didukung \"$1\" atau kerusakan pada arsip" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -307,17 +393,13 @@ msgstr "Mod Terpasang:" msgid "Mod information:" msgstr "Informasi mod:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mod" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Tidak ada deskripsi mod tersedia" #: builtin/mainmenu/tab_mods.lua msgid "Rename" -msgstr "Ganti Nama" +msgstr "Ganti nama" #: builtin/mainmenu/tab_mods.lua msgid "Select Mod File:" @@ -332,8 +414,9 @@ msgid "Uninstall selected modpack" msgstr "Copot pemasangan paket mod terpilih" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "Alamat / Port:" +#, fuzzy +msgid "Address / Port" +msgstr "Alamat / Port :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -351,18 +434,18 @@ msgstr "Mode kreatif" msgid "Damage enabled" msgstr "Kerusakan diaktifkan" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Hapus" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Nama / Kata sandi:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Daftar Server Publik" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nama / Kata sandi :" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -386,7 +469,7 @@ msgstr "Mode Kreatif" msgid "Enable Damage" msgstr "Aktifkan Kerusakan" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nama/Kata sandi" @@ -396,7 +479,7 @@ msgstr "Baru" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "No world created or selected!" -msgstr "Tidak ada dunia atau permainan yang dipilih!" +msgstr "Tidak ada dunia yang dibuat atau dipilih!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -423,90 +506,167 @@ msgid "Start Game" msgstr "Mulai Permainan" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Awan 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Pengaturan Lanjutan" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Apakah Anda yakin ingin mengatur ulang dunia Anda?" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Bilinear Filter" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bumpmapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Ubah tombol" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Nonaktifkan PM" +msgid "Connected Glass" +msgstr "Kaca Tersambung" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Daun Megah" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "diaktifkan" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "Permainan" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Aniso. Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No" +msgstr "Tidak" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Filter" +msgstr "Tanpa Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "No Mipmap" +msgstr "Tanpa Mipmap" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Select" +msgid "Node Highlighting" +msgstr "Node Highlighting" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Node Highlighting" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Tidak ada" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Normal Mapping" +msgstr "Tone Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Daun Opak" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Air Buram" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Parallax Occlusion" +msgstr "Parallax Occlusion" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Aktifkan Partikel" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Pengaturan" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shader" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Daun Sederhana" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Pencahayaan Halus" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Penteksturan:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Untuk mengaktifkan shaders OpenGL driver harus digunakan." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Tone Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Batas sentuhan (px)" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Trilinear Filter" +msgstr "Trilinear Filter" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Daun Melambai" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Tanaman Berayun" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Air Berombak" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ya" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -532,10 +692,6 @@ msgstr "Pemain Tunggal" msgid "No information available" msgstr "Tidak ada informasi tersedia" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Pilih paket tekstur:" @@ -545,9 +701,8 @@ msgid "Texturepacks" msgstr "Paket Tekstur" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Koneksi rusak (terlalu lama?)" +msgstr "Koneksi kehabisan waktu." #: src/client.cpp msgid "Done!" @@ -555,15 +710,11 @@ msgstr "Selesai!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Menginisialisasi node" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" - -#: src/client.cpp -msgid "Item textures..." -msgstr "Tekstur barang..." +msgstr "Menginisialisasi node..." #: src/client.cpp msgid "Loading textures..." @@ -603,7 +754,7 @@ msgstr "Jalur dunia yang diberikan tidak ada: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "no" #: src/game.cpp msgid "" @@ -693,7 +844,7 @@ msgstr "" #: src/game.cpp msgid "Exit to Menu" -msgstr "Kembali ke Menu Utama" +msgstr "Menu Utama" #: src/game.cpp msgid "Exit to OS" @@ -719,10 +870,6 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "Definisi node..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Lanjut" - #: src/game.cpp msgid "Resolving address..." msgstr "Mencari alamat..." @@ -743,13 +890,17 @@ msgstr "Volume Suara" msgid "You died." msgstr "Anda mati." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "oke" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Masuk " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "oke" +msgid "Proceed" +msgstr "Lanjut" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -824,9 +975,8 @@ msgid "Sneak" msgstr "Menyelinap" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Gerak cepat" +msgstr "Toggle Sinematik" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -838,7 +988,7 @@ msgstr "Terbang" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Tembus blok" +msgstr "Beralih tembus blok" #: src/guiKeyChangeMenu.cpp msgid "Use" @@ -998,7 +1148,7 @@ msgstr "Kurang" #: src/keycode.cpp msgid "Mode Change" -msgstr "Mode Change" +msgstr "Pergantian Mode" #: src/keycode.cpp msgid "Next" @@ -1166,19 +1316,28 @@ msgstr "Zoom" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = parallax occlusion with slope information (cepat).\n" +"1 = relief mapping (pelan, lebih akurat)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "Awan 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "Mode terbang" +msgstr "Mode 3D" #: src/settings_translation_file.cpp msgid "" @@ -1188,38 +1347,60 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Dukungan 3D.\n" +"Didukung saat ini:\n" +"- none: tidak ada keluaran 3d.\n" +"- anaglyph: 3d berwarna cyan/magenta.\n" +"- interlaced: garis ganjil/genap berdasarkan polarisasi dukungan layar.\n" +"- topbottom: pisahkan layar atas/bawah.\n" +"- sidebyside: pisahkan layar berdampingan." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Seed peta terpilih untuk peta baru, kosongkan untuk nilai acak.\n" +"Akan diganti ketika menciptakan dunia baru dalam menu utama." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Sebuah pesan yang akan ditampilkan ke semua klien ketika server crash." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Sebuah pesan yang akan ditampilkan ke semua klien ketika server dimatikan." #: src/settings_translation_file.cpp +#, fuzzy msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Batas absolut dari antrian muncul" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Percepatan di udara" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Batas blok aktif" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Batas blok aktif" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Batas blok aktif" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Batas pengiriman objek aktif" #: src/settings_translation_file.cpp msgid "" @@ -1227,39 +1408,57 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Alamat untuk menghubungkan.\n" +"Biarkan kosong untuk memulai sebuah server lokal.\n" +"Perhatikan bahwa bidang alamat dalam menu utama menimpa pengaturan ini." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Atur konfigurasi dpi ke layar Anda (non X11/Android saja) misalkan untuk " +"layar 4K." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Sesuaikan encoding gamma untuk tabel cahaya. Angka yang lebih rendah lebih " +"terang.\n" +"Pengaturan ini untuk klien saja dan diabaikan oleh server." #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "Lanjutan" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Dingin di Ketinggian" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Selalu terbang dan bergerak cepat" #: src/settings_translation_file.cpp +#, fuzzy msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Ambient occlusion gamma" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Amplifies the valleys" +msgstr "Menguatkan lembah" #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" -msgstr "Anisotropic Filtering" +msgstr "Anisotropic filtering" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Umumkan server" #: src/settings_translation_file.cpp msgid "" @@ -1267,172 +1466,246 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Mengumumkan kepada daftar server ini.\n" +"Jika Anda ingin mengumumkan alamat IPv6 Anda, gunakan serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Memperkirakan skala (X,Y,Z) dari fraktal pada node." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Minta untuk menyambung ulang setelah crash" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Secara otomatis melaporkan ke daftar server." #: src/settings_translation_file.cpp #, fuzzy msgid "Backward key" msgstr "Mundur" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Base terrain height" +msgstr "Air Berombak" + #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Dasar" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Basic Privileges" +msgstr "Izin bawaan" #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" -msgstr "Bilinear Filter" +msgstr "Bilinear filtering" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Alamat Sambungan" +msgstr "Alamat sambungan" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bit per piksel (alias kedalaman warna) dalam mode layar penuh." #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Bangun di dalam pemain" #: src/settings_translation_file.cpp +#, fuzzy msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Penghalusan kamera" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Penghalusan kamera dalam mode sinema" #: src/settings_translation_file.cpp msgid "Camera update toggle key" +msgstr "Tombol beralih pembaruan kamera" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Noise #1 gua" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Noise #2 gua" + +#: src/settings_translation_file.cpp +msgid "Cave width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Chat key" -msgstr "Ubah tombol" +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Gua dan terowongan terbentuk di persimpangan antara dua noise" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Tombol obrolan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Ubah tombol" +msgstr "Tombol beralih obrolan" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"18 pilihan fraktal dari 9 rumus.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Besar chunk" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Mode kreatif" +msgstr "Mode sinema" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Mode kreatif" +msgstr "Tombol mode sinema" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Bersihkan tekstur transparan" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Klien dan Server" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Kecepatan memanjat" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Tinggi awan" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Jari-jari awan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Awan 3D" +msgstr "Awan" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Awan adalah efek dari klien." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menu Utama" +msgstr "Awan dalam menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Kabut berwarna" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Daftar yang dengan dipisahkan koma dari mod terpercaya yang diperbolehkan\n" +"untuk mengakses fungsi yang tidak aman bahkan ketika mod security aktif\n" +"(melalui request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Daftar yang dipisahkan koma dari mod yang dibolehkan untuk mengakses\n" +"HTTP API, membolehkan mereka untuk mengunggah dan mengunduh data\n" +"ke/dari internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Perintah" +msgstr "Tombol perintah" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Kaca Tersambung" +msgstr "Sambungkan kaca" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Menghubungkan ke server..." +msgstr "Menyambungkan ke server media eksternal" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Sambungkan kaca jika didukung oleh node." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Konsol" +msgstr "Alpha konsol" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Konsol" +msgstr "Warna konsol" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Konsol" +msgstr "Tombol konsol" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Maju terus-menerus" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Gerakan maju terus-menerus (hanya digunakan untuk pengujian)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Ctrl" +msgstr "Kontrol" #: src/settings_translation_file.cpp msgid "" @@ -1440,32 +1713,65 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Mengatur panjang siklus pagi/malam.\n" +"Contoh: 72 = 20 menit, 360 = 4 menit, 1 = 24 jam, 0 = pagi/malam/lainnya " +"tidak berubah." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Mengatur ukuran padang gurun dan pantai dalam Mapgen v6.\n" +"Jika snowbiomes di aktifkan 'mgv6_freq_desert' akan dihiraukan." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Mengatur kecuraman/kedalaman dari lekukan danau." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Mengatur kecuraman/ketinggian dari bukit." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Pesan kerusakan" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Membuat lava yang tidak dapat diprediksi di dalam gua.\n" +"Ini dapat menyebabkan menambang menjadi sulit. Nol menonaktifkannya. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Membuat air yang tidak dapat diprediksi di dalam gua.\n" +"Ini dapat menyebabkan menambang menjadi sulit. Nol menonaktifkannya. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Keburaman crosshair" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Keburaman crosshair (keopakan, antara 0 sampai 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Warna crosshair" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Warna crosshair (merah,hijau,biru atau R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" @@ -1473,20 +1779,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Aktifkan Kerusakan" +msgstr "Kerusakan" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Tombol beralih info debug" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Tingkat catatan debug" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -1494,32 +1799,35 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Percepatan bawaan" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "Permainan bawaan" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Permainan bawaan saat membuat dunia baru.\n" +"Ini akan diganti saat membuat dunia dari menu utama." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Kata Sandi Baru" +msgstr "Kata sandi bawaan" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Izin bawaan" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Batas waktu bawaan untuk cURL, dalam milidetik.\n" +"Hanya berefek jika di-compile dengan cURL." #: src/settings_translation_file.cpp msgid "" @@ -1537,7 +1845,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Penanganan Lua API usang" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Kedalaman minimal di mana Anda akan menemukan gua besar." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Kedalaman minimal di mana Anda akan menemukan gua raksasa." #: src/settings_translation_file.cpp msgid "Descending speed" @@ -1548,6 +1864,8 @@ msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Deskripsi dari server yang akan ditampilkan saat pemain bergabung dan pada " +"daftar server." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -1562,66 +1880,67 @@ msgid "Detailed mod profiling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Menentukan bentuk tanah.\n" +"3 angka dalam kurung mengatur skala dari bentuk\n" +"tanah, ketiganya harus sama." + +#: src/settings_translation_file.cpp msgid "Disable anticheat" -msgstr "Aktifkan Partikel" +msgstr "Nonaktifkan anticurang (anticheat)" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Larang kata sandi kosong" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Nama domain dari server yang akan ditampilkan di daftar server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "" -"Tekan ganda \"lompat\" untuk\n" -"beralih terbang" +msgstr "Tekan ganda \"lompat\" untuk terbang" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "" -"Tekan ganda \"lompat\" untuk\n" -"beralih terbang" +msgstr "Menekan ganda tombol \"lompat\" untuk beralih terbang." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tombol menjatuhkan barang" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Aktifkan VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Gudang mod daring" +msgstr "Aktifkan mod keamanan" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Membolehkan pemain terkena kerusakan dan mati." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Aktifkan masukan acak dari pengguna (hanya digunakan untuk pengujian)." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Aktifkan pencahayaan halus dengan ambient occlusion sederhana.\n" +"Nonaktifkan untuk kecepatan atau untuk tampilan lain." #: src/settings_translation_file.cpp msgid "" @@ -1631,6 +1950,12 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Membolehkan untuk melarang klien lawas untuk terhubung.\n" +"Klien-klien lawas dianggap sesuai jika mereka tidak rusak saat " +"menghubungkan\n" +"ke server-server baru, tetapi mereka mungkin tidak mendukung semua fitur " +"baru\n" +"yang Anda harapkan." #: src/settings_translation_file.cpp msgid "" @@ -1639,6 +1964,10 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Membolehkan penggunaan server media asing (jika diberikan oleh server).\n" +"Server asing menawarkan cara lebih cepat untuk mengunduh media (misal.: " +"tekstur)\n" +"saat terhubung ke server." #: src/settings_translation_file.cpp msgid "" @@ -1646,6 +1975,13 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Nyalakan/matikan menjalankan server IPv6. Sebuah server IPv6 mungkin\n" +"terbatas untuk klien IPv6, tergantung dari konfigurasi sistem.\n" +"Diabaikan jika bind_address telah diatur." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Nyalakan animasi barang inventaris." #: src/settings_translation_file.cpp msgid "" @@ -1654,15 +1990,21 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Nyalakan bumpmapping untuk tekstur. Normalmaps harus disediakan oleh paket\n" +"tekstur atau harus dihasilkan otomatis.\n" +"Membutuhkan shader diaktifkan." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Mengaktifkan pemetaan suasana (tone mapping) filmis" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Aktifkan Kerusakan" +msgstr "Aktifkan peta mini." #: src/settings_translation_file.cpp msgid "" @@ -1681,10 +2023,12 @@ msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Eksperimental, dapat menyebabkan terlihatnya spasi antara blok\n" +"saat diatur dengan angka yang lebih besar dari 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS (bingkai per detik) pada menu jeda" #: src/settings_translation_file.cpp msgid "FSAA" @@ -1717,11 +2061,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Mode akselerasi cepat" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Mode cepat" #: src/settings_translation_file.cpp msgid "Fast movement" @@ -1730,7 +2074,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1747,6 +2091,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1758,28 +2110,27 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy msgid "Filtering" -msgstr "Tanpa Filter" +msgstr "Filtering" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Seed peta yang diatur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" -msgstr "Mode terbang" +msgstr "Tombol terbang" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Terbang" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Kabut" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Tombol beralih kabut" #: src/settings_translation_file.cpp msgid "Font path" @@ -1803,6 +2154,10 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Font size" +msgstr "Ukuran font" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." msgstr "" #: src/settings_translation_file.cpp @@ -1832,7 +2187,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Layar penuh" #: src/settings_translation_file.cpp msgid "Full screen BPP" @@ -1840,16 +2195,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Mode layar penuh." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Skala antarmuka" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "Skala antarmuka" +msgstr "Filter skala antarmuka" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" @@ -1859,6 +2213,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Umum" + #: src/settings_translation_file.cpp #, fuzzy msgid "Generate normalmaps" @@ -1867,22 +2225,30 @@ msgstr "Gunakan Normalmaps" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafik" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravitasi" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "Mod HTTP" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Tombol beralih HUD" #: src/settings_translation_file.cpp msgid "" @@ -1892,6 +2258,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1905,7 +2275,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1931,39 +2301,53 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "IPv6" +msgid "How wide to make rivers" msgstr "" +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "IPv6" + #: src/settings_translation_file.cpp msgid "IPv6 server" msgstr "" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Dukungan IPv6." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Jika FPS (bingkai per detik) lebih tinggi dari ini, akan\n" +"dibatasi dengan jeda agar tidak menghabiskan tenaga\n" +"CPU dengan percuma." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Nonaktifkan PM" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Jika dinonaktifkan tombol \"gunakan\" digunakan untuk terbang cepat jika " +"mode terbang dan cepat diaktifkan." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Jika diaktifkan dengan mode terbang, pemain mampu terbang melalui node " +"padat.\n" +"Hal ini memerlukan hak istimewa \"noclip\" pada server." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "diaktifkan" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1998,12 +2382,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Abaikan kesalahan pada dunia" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Permainan" +msgstr "Dalam Permainan" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -2021,6 +2404,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2038,6 +2425,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2048,11 +2470,15 @@ msgid "Jumping speed" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak cepat dalam mode cepat.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2060,13 +2486,20 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk menjatuhkan barang yang sedang dipilih.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak cepat dalam mode cepat.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2074,6 +2507,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk lompat.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2081,6 +2517,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak cepat dalam mode cepat.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2088,6 +2527,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak mundur.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2095,6 +2537,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak maju.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2102,6 +2547,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak ke kiri.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2109,6 +2557,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk bergerak ke kanan.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2137,6 +2588,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk membuka inventaris.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2160,6 +2614,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk mengganti kamera antara orang pertama dan ketiga.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2167,6 +2624,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk mengambil tangkapan layar.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2174,6 +2634,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk beralih mode sinema.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2181,6 +2644,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk mennganti tampilan peta mini.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2188,6 +2654,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk beralih mode cepat.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2195,6 +2664,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk beralih terbang.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2202,6 +2674,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tombol untuk beralih mode tembus blok.\n" +"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2258,11 +2733,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Language" +msgstr "Bahasa" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" msgstr "" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Gaya dedaunan" #: src/settings_translation_file.cpp msgid "" @@ -2283,6 +2766,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2345,14 +2836,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menu Utama" +msgstr "Pengelola mod menu utama" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menu Utama" +msgstr "Skrip menu utama" #: src/settings_translation_file.cpp msgid "" @@ -2365,30 +2854,60 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map directory" +msgstr "Direktori peta" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Batas generasi peta" #: src/settings_translation_file.cpp msgid "Map save interval" @@ -2402,6 +2921,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Generator peta Valleys" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2425,19 +2948,147 @@ msgid "Mapgen flags" msgstr "Generator peta" #: src/settings_translation_file.cpp -msgid "Mapgen heat blend noise parameters" +#, fuzzy +msgid "Mapgen flat" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen name" +msgid "Mapgen flat flags" msgstr "Generator peta" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" +msgid "Mapgen flat ground level" msgstr "Generator peta" +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Parallax Occlusion" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Parallax Occlusion" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen heat blend noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "Nama generator peta" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Generator peta v5" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Generator peta v5" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2459,9 +3110,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Generator peta" +msgstr "Generator peta v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2485,7 +3135,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Frekuensi padang gurun pada generator peta v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" @@ -2520,9 +3170,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Generator peta" +msgstr "Generator peta v7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Generator peta v7" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2572,6 +3226,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2594,45 +3260,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "FPS (bingkai per detik) maksimal" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "FPS (bingkai per detik) maksimal saat permainan dijeda." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "Jumlah maksimal blok yang dipaksa muat (forceloaded)" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Lebar maksimal hotbar" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "Jumlah maksimal blok yang dapat diantrikan untuk dimuat." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Jumlah maksimal blok yang akan diantrikan yang akan dihasilkan.\n" +"Atur ke kosong untuk diatur secara otomatis." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Jumlah maksimal blok yang akan diantrikan yang akan dimuat dari berkas.\n" +"Atur ke kosong untuk diatur secara otomatis." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "Jumlah maksimal blok peta (mapblock) yang dipaksa muat (forceloaded)." #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Jumlah maksimal blok peta (mapblock) yang disimpan di memori klien.\n" +"Atur ke -1 untuk tak terhingga." #: src/settings_translation_file.cpp msgid "" @@ -2640,40 +3312,47 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"Jumlah maksimal paket dikirim tiap langkah mengirim (send step), jika Anda\n" +"memiliki koneksi lambat, cobalah untuk menguranginya, tetapi jangan " +"mengurangi\n" +"di bawah dua kalinya jumlah klien yang ditargetkan." #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "Jumlah maksimal pemain yang dapat terhubung serentak." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "Jumlah maksimal objek yang disimpan secara statis dalam satu blok." #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Proporsi maksimal jendela saat ini yang digunakan untuk hotbar.\n" +"Berguna jika ada sesuatu yang akan ditampilkan di kanan atau kiri hotbar." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Jumlah maksimal blok yang dikirim serentak tiap klien" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Jumlah maksimal total blok yang dikirim" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Waktu maksimal dalam milidetik saat mengunduh berkas (misal.: mengunduh mod)." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Jumlah pengguna maksimal" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Jumlah objek maksimal tiap blok" #: src/settings_translation_file.cpp #, fuzzy @@ -2686,19 +3365,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Pesan hari ini" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." +msgstr "Pesan hari ini yang ditampilkan ke pemain yang terhubung." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Peta mini" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Tombol peta mini" #: src/settings_translation_file.cpp msgid "Minimap scan height" @@ -2709,16 +3392,8 @@ msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip-Mapping" +msgstr "Mipmapping" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2792,30 +3467,34 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Tembus blok" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Tombol tembus blok" #: src/settings_translation_file.cpp msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2857,18 +3536,13 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax Occlusion" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "Parallax Occlusion" +msgstr "Parallax occlusion" #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax Occlusion" +msgstr "Skala parallax occlusion" #: src/settings_translation_file.cpp #, fuzzy @@ -2881,9 +3555,8 @@ msgid "Parallax occlusion iterations" msgstr "Parallax Occlusion" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax Occlusion" +msgstr "Mode parallax occlusion" #: src/settings_translation_file.cpp #, fuzzy @@ -2909,13 +3582,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Nama pemain terlalu panjang." +msgstr "Nama pemain" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2932,20 +3604,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Memuat tekstur..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2967,6 +3630,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2997,6 +3664,22 @@ msgstr "Right Menu" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3031,14 +3714,30 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Snapshot" +msgstr "Tangkapan layar" #: src/settings_translation_file.cpp msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Tangkapan layar" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Tangkapan layar" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3060,44 +3759,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Mulai Pemain Tunggal" +msgstr "Server / Pemain Tunggal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "URL Server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Port Server" +msgstr "Alamat server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Port Server" +msgstr "Deskripsi server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Nama server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "Port Server" +msgstr "Port server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Daftar Server Publik" +msgstr "URL Daftar server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Daftar Server Publik" +msgstr "Berkas Daftar server" #: src/settings_translation_file.cpp msgid "" @@ -3123,10 +3814,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shaders" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3142,6 +3829,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3153,19 +3844,22 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" -msgstr "Pencahayaan Halus" +msgstr "Pencahayaan halus" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "Menghaluskan rotasi kamera dalam modus sinema. 0 untuk menonaktifkan." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." @@ -3205,20 +3899,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Paket Tekstur" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3260,6 +3977,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3288,16 +4009,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Tombol beralih mode kamera" #: src/settings_translation_file.cpp msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "Trilinear Filter" +msgstr "Trilinear filtering" #: src/settings_translation_file.cpp msgid "" @@ -3352,16 +4072,35 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Pengembang Inti Sebelumnya" +msgstr "Berguna untuk pengembang mod." #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3376,6 +4115,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3385,30 +4130,33 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Volume Suara" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "Daun Melambai" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Kecepatan berjalan" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Water Features" +msgstr "Tekstur barang..." #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Ketinggian air" #: src/settings_translation_file.cpp msgid "Water surface level of the world." @@ -3420,34 +4168,28 @@ msgid "Waving Nodes" msgstr "Daun Melambai" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Daun Melambai" +msgstr "Daun melambai" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" -msgstr "Tanaman Berayun" +msgstr "Tanaman berayun" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" -msgstr "Air Berombak" +msgstr "Air berombak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Air Berombak" +msgstr "Ketinggian ombak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Air Berombak" +msgstr "Panjang ombak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Air Berombak" +msgstr "Kecepatan ombak" #: src/settings_translation_file.cpp msgid "" @@ -3519,6 +4261,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3530,73 +4284,72 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "cURL file download timeout" +msgid "Y of flat ground." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "Batas waktu cURL mengunduh berkas" + #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "Batas cURL paralel" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "Batas waktu cURL" -#~ msgid "Rendering:" -#~ msgstr "Rendering:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Mulai ulang minetest untuk beralih ke driver yang dipilih" - -#~ msgid " MB/s" -#~ msgstr " MB/detik" - -#~ msgid " KB/s" -#~ msgstr " KB/detik" - -#~ msgid "Downloading" -#~ msgstr "Mengunduh" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "Batas sentuhan (px)" - -#~ msgid "Touch free target" -#~ msgstr "Bebas sentuhan" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Untuk mengaktifkan shaders OpenGL driver harus digunakan." - -#~ msgid "Texturing:" -#~ msgstr "Penteksturan:" - -#~ msgid "Simple Leaves" -#~ msgstr "Daun Sederhana" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Faktor skala yang diatur untuk elemen menu: " +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "Memuat tekstur..." #~ msgid "Reset singleplayer world" #~ msgstr "Atur ulang dunia pemain tunggal" -#~ msgid "Opaque Water" -#~ msgstr "Air Buram" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Faktor skala yang diatur untuk elemen menu: " -#~ msgid "Opaque Leaves" -#~ msgstr "Daun Opak" +#~ msgid "Touch free target" +#~ msgstr "Bebas sentuhan" + +#~ msgid "Downloading" +#~ msgstr "Mengunduh" + +#~ msgid " KB/s" +#~ msgstr " KB/detik" + +#~ msgid " MB/s" +#~ msgstr " MB/detik" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Mulai ulang minetest untuk beralih ke driver yang dipilih" + +#~ msgid "Rendering:" +#~ msgstr "Rendering:" + +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "diaktifkan" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Nonaktifkan PM" + +#~ msgid "\"" +#~ msgstr "\"" #~ msgid "No!!!" #~ msgstr "Tidak!!!" -#~ msgid "No Mipmap" -#~ msgstr "Tanpa Mipmap" +#~ msgid "Generate Normalmaps" +#~ msgstr "Hasilkan Normalmaps" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap + Aniso. Filter" +#~ msgid "Public Serverlist" +#~ msgstr "Daftar Server Publik" -#~ msgid "Mipmap" -#~ msgstr "Mipmap" - -#~ msgid "Fancy Leaves" -#~ msgstr "Daun Megah" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Yakin ingin mengaturulang dunia anda?" +#~ msgid "No of course not!" +#~ msgstr "Tentu tidak!" diff --git a/po/it/minetest.po b/po/it/minetest.po index e8d80539..83ff7c1a 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -1,50 +1,46 @@ -# Italian translation for Minetest. -# Copyright (C) 2011 Perttu Ahola "celeron55" +# Minetest's Italian localization. +# Copyright (C) 2011-2016 Perttu Ahola # This file is distributed under the same license as the Minetest package. -# Giuseppe Bilotta , 2011. -# +# Emon , 2016. msgid "" msgstr "" "Project-Id-Version: Minetest 0.4.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-08-24 20:44+0200\n" -"Last-Translator: betacentury \n" -"Language-Team: Italian \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-08 17:01+0000\n" +"Last-Translator: Emon Omen \n" +"Language-Team: Italian " +"\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" -"Si è verificato un errore in uno script Lua, come ad esempio un modulo:" +msgstr "E' avvenuto un errore in uno script Lua, come un mod.:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "Si è verificato un errore:" +msgstr "E' avvenuto un errore:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" -msgstr "Menù principale" +msgstr "Menu principale" #: builtin/fstk/ui.lua builtin/mainmenu/store.lua msgid "Ok" -msgstr "Ok" +msgstr "Va bene" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Connettere" +msgstr "Riconnettere" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Il server ha richiesto una riconnessione:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -52,31 +48,35 @@ msgstr "Caricamento..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Versione del protocollo non corrispondente. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Il server impone la versione di protocollo $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Il server supporta versioni di protocollo comprese tra $1 e $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Provate a riabilitare l'elenco dei server pubblici e controllate la vostra " +"connessione internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Supportiamo solo il protocollo versione $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Supportiamo versioni di protocollo comprese tra $1 e $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Annullare" @@ -86,36 +86,38 @@ msgstr "Dipendenze:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" -msgstr "Disatt. pacch." +msgstr "Disabilitare p.m." #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" -msgstr "Att. pacch." +msgstr "Abilitare p.m." #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "Attivarli tutti" +msgstr "Abilitarli tutti" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Abilitazione del mod. \"$1\" fallita perché contiene caratteri non ammessi. " +"Sono ammessi solo i caratteri [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" -msgstr "Nasc. gioco" +msgstr "Nasc. del gioco" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "Nasc. cont. pacchetti" +msgstr "Nasc. il cont. dei pacchetti" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod.:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Salvare" @@ -125,7 +127,7 @@ msgstr "Mondo:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "attivata" +msgstr "abilitato" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -137,11 +139,11 @@ msgstr "Creare" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "Scarica un sottogioco, come minetest_game, da minetest.net" +msgstr "Scaricare un sottogioco, come minetest_game, da minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "Scaricane uno da minetest.net" +msgstr "Scaricarne uno da minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -149,13 +151,12 @@ msgstr "Gioco" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Generat. mappe" +msgstr "Generatore mappa" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" msgstr "" -"Non è stato fornito nessun nome del mondo oppure non è stato selezionato " -"nessun gioco" +"Non è stato dato nessun nome di mondo o non è stato scelto nessun gioco" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" @@ -163,7 +164,7 @@ msgstr "Seme casuale" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Avviso: il \"minimal development test\" è inteso per gli sviluppatori." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -171,43 +172,126 @@ msgstr "Nome del mondo" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "Non hai installato nessun sottogioco." +msgstr "Non avete sottogiochi installati." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Siete certi di volere cancellare \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Cancellare" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "Gestore dei moduli: la cancellazione di \"$1\" è fallita" +msgstr "Modmgr: cancellazione di \"$1\" fallita" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "Gestore dei moduli: percorso del modulo \"$1\" non valido" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "No, certo che no!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Sì" +msgstr "Modmgr: percorso mod. non valido \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Cancellare il mondo \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "No" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Accettare" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Rinominare il pacchetto moduli:" +msgstr "Rinominare il pacchetto mod.:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" non è un marcatore valido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Non è stata fornita nessuna descrizione dell'impostazione)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Pag. delle impostazioni" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Mostrare" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Disabilitato" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Modificare" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Abilitato" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Il formato è tre numeri separati da virgole e dentro parentesi." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formato: , , (, , " +"), , , " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Giochi" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mod." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Facoltativamente si può aggiungere la lacunarità con una virgola davanti." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Inserite un elenco di valori separati da virgole, prego." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Inserite un numero intero valido, prego." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Inserite un numero valido, prego." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "I valori possibili sono: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Ripristino predefinite" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Scegliere il percorso" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Mostrare i nomi tecnici" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Il valore deve essere maggiore di $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Il valore deve essere minore di $1." #: builtin/mainmenu/modmgr.lua msgid "" @@ -215,34 +299,33 @@ msgid "" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Installazione modulo: tipo di file non supportato \"$1\"" +"Insallatore mod.: tipo di file non supportato \"$1\" o archivio danneggiato" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" -msgstr "L'installazione di $1 in $2 è fallita" +msgstr "Installazione di $1 in $2 fallita" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" -msgstr "Installazione modulo: file: \"$1\"" +msgstr "Installatore mod.: file: \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "" -"Installare un modulo: impossibile trovare il vero nome del modulo per: $1" +msgstr "Installatore mod.: impossibile trovare il vero nome mod per: $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" -"Installare un modulo: impossibile trovare un nome di cartella appropriato " -"per il pacchetto moduli $1" +"Installatore mod.: impossibile trovare un nome cartella adatto per il " +"pacchetto mod $1" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Chiudere il negozio" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Scaricamento di $1, attendere prego..." #: builtin/mainmenu/store.lua msgid "Install" @@ -258,12 +341,11 @@ msgstr "Valutazione" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "Cerca" +msgstr "Cercare" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Nome del mondo" +msgstr "Nome abbreviato:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" @@ -271,11 +353,11 @@ msgstr "Installato con successo:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "Non categorizzato" +msgstr "Non ordinati" #: builtin/mainmenu/store.lua msgid "re-Install" -msgstr "Reinstallare" +msgstr "reinstallare" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -287,16 +369,15 @@ msgstr "Sviluppatori principali" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "Riconoscimenti" +msgstr "Crediti" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "Contributori precedenti" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Sviluppatori principali" +msgstr "Sviluppatori principali precedenti" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -306,10 +387,6 @@ msgstr "Moduli installati:" msgid "Mod information:" msgstr "Informazioni sul modulo:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Moduli" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Nessuna descrizione disponibile per il modulo" @@ -320,20 +397,19 @@ msgstr "Rinominare" #: builtin/mainmenu/tab_mods.lua msgid "Select Mod File:" -msgstr "Selezionare il file modulo:" +msgstr "Scegliere il file mod.:" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" -msgstr "Disinstallare il modulo selezionato" +msgstr "Disinstallare il modulo scelto" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "Disinstallare il pacchetto moduli selezionato" +msgstr "Disinstallare il pacchetto mod. scelto" #: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Address / Port :" -msgstr "Indirizzo/Porta" +msgid "Address / Port" +msgstr "Indirizzo / Porta" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -341,39 +417,35 @@ msgstr "Client" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "Connettere" +msgstr "Connettersi" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Modalità creativa" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "Danni abilitati" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Cancellare" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Nome/Password" +msgstr "Danno abilitato" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Elenco dei server pubblici" +msgid "Del. Favorite" +msgstr "Canc. prefer." + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "Preferiti:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Nome / Password" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "PvP enabled" -msgstr "attivata" +msgstr "GcG abilitato" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Legare indirizzo" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -389,7 +461,7 @@ msgstr "Modalità creativa" msgid "Enable Damage" msgstr "Abilitare il danno" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nome/Password" @@ -398,11 +470,8 @@ msgid "New" msgstr "Nuovo" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "No world created or selected!" -msgstr "" -"Non è stato fornito nessun nome del mondo oppure non è stato selezionato " -"nessun gioco" +msgstr "Nessun mondo creato o scelto!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -414,7 +483,7 @@ msgstr "Pubblico" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Select World:" -msgstr "Selezionare il mondo:" +msgstr "Scegliere il mondo:" #: builtin/mainmenu/tab_server.lua msgid "Server" @@ -429,103 +498,168 @@ msgid "Start Game" msgstr "Avviare il gioco" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Nuvole in 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Impostazioni avanzate" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Antialias:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Siete certi di volere azzerare il vostro mondo di giocatore singolo?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtro bilineare" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "Bump Mapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" -msgstr "Cambiare i tasti" +msgstr "Modificare i tasti" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Disatt. pacch." +msgid "Connected Glass" +msgstr "Vetri uniti" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Foglie decorative" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "attivata" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Filtro aniso." #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Giochi" +msgid "No" +msgstr "No" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "Nessun filtro" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "Niente mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "Evidenz. nodo" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "Bordatura nodo" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Nessuno" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "Normal Mapping" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "Foglie opache" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Selezionare" +msgid "Opaque Water" +msgstr "Acqua opaca" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Occlusione di parallasse" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Particelle" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Impostazioni" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shader" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Foglie semplici" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Illuminaz. uniforme" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Immagini:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Per abilitare gli shader è necessario usare i driver OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Mappatura toni" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Soglia di tocco (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtro trilineare" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Foglie ondeggianti" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Piante ondeggianti" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Acqua ondeggiante" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Sì" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "Config. moduli" +msgstr "Config. mod." #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "Menù principale" +msgstr "Principale" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Giocatore singolo" +msgstr "Avviare il giocatore singolo" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -539,51 +673,37 @@ msgstr "Giocatore singolo" msgid "No information available" msgstr "Nessuna informazione disponibile" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" -msgstr "Selezionare un pacchetto di immagini:" +msgstr "Scegliere il pacchetto di immagini:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" -msgstr "Pacch. immagini" +msgstr "Pacch. di imm." #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Errore di connessione (scaduta?)" +msgstr "Tempo di connessione scaduto." #: src/client.cpp msgid "Done!" msgstr "Fatto!" #: src/client.cpp -#, fuzzy msgid "Initializing nodes" -msgstr "Inizializzazione nodi" +msgstr "Inizializzazione dei nodi" #: src/client.cpp -#, fuzzy msgid "Initializing nodes..." -msgstr "Inizializzazione nodi..." +msgstr "Inizializzazione dei nodi..." #: src/client.cpp -msgid "Item textures..." -msgstr "Immagini degli oggetti..." - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "Caricamento..." +msgstr "Caricamento delle texture..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "Risoluzione dell'indirizzo..." +msgstr "Ricostruzione degli shader..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -595,17 +715,15 @@ msgstr "Impossibile trovare o caricare il gioco \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "Specifica del gioco non valida." +msgstr "Spec. di gioco non valide." #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "Menù principale" +msgstr "Menu principale" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" -"Non è stato selezionato nessun mondo e non è stato fornito nessun indirizzo. " -"Niente da fare." +msgstr "Nessun mondo scelto e nessun indirizzo fornito. Niente da fare." #: src/client/clientlauncher.cpp msgid "Player name too long." @@ -617,7 +735,7 @@ msgstr "Il percorso del mondo fornito non esiste: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "necessita_font_ripiego" #: src/game.cpp msgid "" @@ -625,16 +743,15 @@ msgid "" "Check debug.txt for details." msgstr "" "\n" -"Controllare debug.txt per i dettagli." +"Controllate debug.txt per i dettagli." #: src/game.cpp -#, fuzzy msgid "Change Keys" -msgstr "Cambiare i tasti" +msgstr "Modificare i tasti" #: src/game.cpp msgid "Change Password" -msgstr "Cambiare la password" +msgstr "Modificare la password" #: src/game.cpp msgid "Connecting to server..." @@ -642,14 +759,13 @@ msgstr "Connessione al server..." #: src/game.cpp msgid "Continue" -msgstr "Continuare" +msgstr "Proseguire" #: src/game.cpp msgid "Creating client..." msgstr "Creazione del client..." #: src/game.cpp -#, fuzzy msgid "Creating server..." msgstr "Creazione del server..." @@ -669,15 +785,15 @@ msgid "" msgstr "" "Controlli predefiniti:\n" "- WASD: muoversi\n" -"- Space: saltare/arrampicarsi\n" -"- Shift: strisciare/scendere\n" -"- Q: scartare l'oggetto\n" +"- Spazio: saltare/salire\n" +"- Maiusc: strisciare/scendere\n" +"- Q: lasciare cadere l'oggetto\n" "- I: inventario\n" "- Mouse: girarsi/guardare\n" -"- Tasto sinistro del mouse: scavare/colpire\n" -"- Tasto destro del mouse: posizionare/usare\n" -"- Rotella del mouse: scegliere l'oggetto\n" -"- T: chat\n" +"- Mouse sin.: scavare/colpire\n" +"- Mouse des.: posizionare/usare\n" +"- Rot. mouse: scegliere l'oggetto\n" +"- T: messaggistica\n" #: src/game.cpp msgid "" @@ -694,18 +810,30 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Controlli predefiniti:\n" +"Menu non visibile:\n" +"- colpetto: attivare pulsante\n" +"- doppio colpetto: posizionare/usare\n" +"- trascinare col dito: guardare attorno\n" +"Menu/Inventario visibile:\n" +"- doppio colpetto (fuori):\n" +" -->chiudere\n" +"- toccare pila, toccare alloggio:\n" +" --> muovere pila\n" +"- tocco&trascina, colpetto 2o dito\n" +" --> posizionere oggetto singolo nell'alloggio\n" #: src/game.cpp msgid "Exit to Menu" -msgstr "Tornare al menù" +msgstr "Tornare al menu" #: src/game.cpp msgid "Exit to OS" -msgstr "Tornare al S.O." +msgstr "Tornare al s.o." #: src/game.cpp msgid "Item definitions..." -msgstr "Definizioni degli oggetti..." +msgstr "Definizioni dell'oggetto..." #: src/game.cpp msgid "KiB/s" @@ -713,7 +841,7 @@ msgstr "KiB/s" #: src/game.cpp msgid "Media..." -msgstr "Media..." +msgstr "Multimedia..." #: src/game.cpp msgid "MiB/s" @@ -721,11 +849,7 @@ msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." -msgstr "Definizioni dei cubi..." - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Procedere" +msgstr "Definizioni del nodo..." #: src/game.cpp msgid "Resolving address..." @@ -733,29 +857,31 @@ msgstr "Risoluzione dell'indirizzo..." #: src/game.cpp msgid "Respawn" -msgstr "Riapparire" +msgstr "Ricomparire" #: src/game.cpp -#, fuzzy msgid "Shutting down..." -msgstr "Spegnimento della roba..." +msgstr "Spegnimento..." #: src/game.cpp msgid "Sound Volume" -msgstr "Volume del suono" +msgstr "Volume dell'audio" #: src/game.cpp msgid "You died." msgstr "Siete morti." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "va bene" + #: src/guiFormSpecMenu.cpp -#, fuzzy msgid "Enter " msgstr "Invio " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "ok" +msgid "Proceed" +msgstr "Procedere" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -767,7 +893,7 @@ msgstr "Indietro" #: src/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "Chat" +msgstr "Messaggistica" #: src/guiKeyChangeMenu.cpp msgid "Command" @@ -779,11 +905,11 @@ msgstr "Console" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "Volare On/Off = due volte \"saltare\"" +msgstr "Doppio \"saltare\" per il volo" #: src/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "Scartare" +msgstr "Lasciare cadere" #: src/guiKeyChangeMenu.cpp msgid "Forward" @@ -804,7 +930,7 @@ msgstr "Tasto già in uso" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"Collegamenti dei tasti. (Se questo menù si incasina, rimuovete la roba da " +"Collegamenti dei tasti. (Se questo menu si incasina, togliete la roba da " "minetest.conf)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp @@ -813,11 +939,11 @@ msgstr "Sinistra" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "Stampa stack" +msgstr "Stampare stack" #: src/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "Selez. ad area" +msgstr "Raggio visivo" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" @@ -828,21 +954,20 @@ msgid "Sneak" msgstr "Strisciare" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Correre On/Off" +msgstr "Attiv. cinematic" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "Correre On/Off" +msgstr "Attivare veloce" #: src/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "Volare On/Off" +msgstr "Attivare volo" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Fantasma On/Off" +msgstr "Attivare noclip" #: src/guiKeyChangeMenu.cpp msgid "Use" @@ -850,7 +975,7 @@ msgstr "Usare" #: src/guiKeyChangeMenu.cpp msgid "press key" -msgstr "premere il tasto" +msgstr "prem. il tasto" #: src/guiPasswordChange.cpp msgid "Change" @@ -870,7 +995,7 @@ msgstr "Vecchia password" #: src/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "Le password non coincidono!" +msgstr "Le password non sono uguali!" #: src/guiVolumeChange.cpp msgid "Exit" @@ -878,7 +1003,7 @@ msgstr "Uscire" #: src/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "Volume suono: " +msgstr "Volume dell'audio: " #: src/keycode.cpp msgid "Apps" @@ -886,19 +1011,19 @@ msgstr "Applicazioni" #: src/keycode.cpp msgid "Attn" -msgstr "Attn" +msgstr "Attenzione" #: src/keycode.cpp msgid "Back" -msgstr "Backspace" +msgstr "Indietro" #: src/keycode.cpp msgid "Capital" -msgstr "Bloc Maiusc" +msgstr "Bloc maiusc" #: src/keycode.cpp msgid "Clear" -msgstr "Canc" +msgstr "Pulire" #: src/keycode.cpp msgid "Comma" @@ -910,7 +1035,7 @@ msgstr "Control" #: src/keycode.cpp msgid "Convert" -msgstr "Convert" +msgstr "Convertire" #: src/keycode.cpp msgid "CrSel" @@ -918,7 +1043,7 @@ msgstr "CrSel" #: src/keycode.cpp msgid "Down" -msgstr "Pag. giù" +msgstr "Giù" #: src/keycode.cpp msgid "End" @@ -926,7 +1051,7 @@ msgstr "Fine" #: src/keycode.cpp msgid "Erase OEF" -msgstr "Erase OEF" +msgstr "Cancellare l'OEF" #: src/keycode.cpp msgid "Escape" @@ -942,11 +1067,11 @@ msgstr "Eseguire" #: src/keycode.cpp msgid "Final" -msgstr "Fine" +msgstr "Finale" #: src/keycode.cpp msgid "Help" -msgstr "Aiuto" +msgstr "Help" #: src/keycode.cpp msgid "Home" @@ -962,7 +1087,7 @@ msgstr "Junja" #: src/keycode.cpp msgid "Kana" -msgstr "Kana" +msgstr "ì" #: src/keycode.cpp msgid "Kanji" @@ -970,31 +1095,31 @@ msgstr "Kanji" #: src/keycode.cpp msgid "Left Button" -msgstr "Tasto sinistro" +msgstr "Pulsante sinistro" #: src/keycode.cpp msgid "Left Control" -msgstr "Ctrl sx" +msgstr "Ctrl sinistro" #: src/keycode.cpp msgid "Left Menu" -msgstr "Menù a sinistra" +msgstr "Alt sinistro" #: src/keycode.cpp msgid "Left Shift" -msgstr "Maiusc sx" +msgstr "Maiusc sin." #: src/keycode.cpp msgid "Left Windows" -msgstr "Finestre a sinistra" +msgstr "Super sinistro" #: src/keycode.cpp msgid "Menu" -msgstr "Menù" +msgstr "Menu" #: src/keycode.cpp msgid "Middle Button" -msgstr "Tasto centrale" +msgstr "Pulsante centrale" #: src/keycode.cpp msgid "Minus" @@ -1002,11 +1127,11 @@ msgstr "Meno" #: src/keycode.cpp msgid "Mode Change" -msgstr "Cambio di modalità" +msgstr "Cambiare modalità" #: src/keycode.cpp msgid "Next" -msgstr "Successivo" +msgstr "Pag giù" #: src/keycode.cpp msgid "Nonconvert" @@ -1074,7 +1199,7 @@ msgstr "Tast. num. 9" #: src/keycode.cpp msgid "OEM Clear" -msgstr "OEM Clear" +msgstr "Pulire l'OEM" #: src/keycode.cpp msgid "PA1" @@ -1098,7 +1223,7 @@ msgstr "Stamp" #: src/keycode.cpp msgid "Prior" -msgstr "Precedente" +msgstr "Pag su" #: src/keycode.cpp msgid "Return" @@ -1106,27 +1231,27 @@ msgstr "Invio" #: src/keycode.cpp msgid "Right Button" -msgstr "Tasto destro" +msgstr "Pulsante destro" #: src/keycode.cpp msgid "Right Control" -msgstr "Ctrl dx" +msgstr "Ctrl destro" #: src/keycode.cpp msgid "Right Menu" -msgstr "Menù a destra" +msgstr "Alt destro" #: src/keycode.cpp msgid "Right Shift" -msgstr "Maiusc dx" +msgstr "Maiusc des." #: src/keycode.cpp msgid "Right Windows" -msgstr "Finestre a destra" +msgstr "Super destro" #: src/keycode.cpp msgid "Scroll Lock" -msgstr "Bloc Scorr" +msgstr "Bloc" #: src/keycode.cpp msgid "Select" @@ -1142,7 +1267,7 @@ msgstr "Sospensione" #: src/keycode.cpp msgid "Snapshot" -msgstr "Istantanea" +msgstr "Stamp" #: src/keycode.cpp msgid "Space" @@ -1154,7 +1279,7 @@ msgstr "Tab" #: src/keycode.cpp msgid "Up" -msgstr "Pag. su" +msgstr "Su" #: src/keycode.cpp msgid "X Button 1" @@ -1168,20 +1293,38 @@ msgstr "Pulsante X 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"(X, Y, Z) compensazione del frattale dal centro del mondo in unità di " +"'scala'.\n" +"Usata per muovere un'adeguata area di comparsa di terreno basso vicino a (0, " +"0).\n" +"La predefinita è adatta alle serie mandelbrot, necessita modifiche per le " +"serie julia.\n" +"Spazia pressapoco tra -2 e 2. Moltiplicate per 'scala' per una compensazione " +"in nodi." + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = occlusione di parallasse con informazione di pendenza (più veloce).\n" +"1 = mappatura di rilievo (più lenta, più accurata)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" -msgstr "Nuvole 3D" +msgstr "Nuvole in 3D" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "Modalità 3D" #: src/settings_translation_file.cpp msgid "" @@ -1191,38 +1334,58 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Supporto 3D.\n" +"Attualmente supportati:\n" +"- nessuno: nessun output 3D.\n" +"- anaglifo: 3D in colori ciano/magenta.\n" +"- intrecciato: supporto per polarizzazione schermo basata su linea pari/" +"dispari.\n" +"- superiore-inferiore: divisione dello schermo in superiore/inferiore.\n" +"- fianco-a-fianco: divisione dello schermo fianco a fianco.\n" +"- sfoglia-pagina: 3D basato su buffer quadruplo." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Un seme predefinito per la nuova mappa, lasciate vuoto per uno casuale.\n" +"Verrà ignorato alla creazione di un nuovo mondo nel menu principale." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Un messaggio da mostrare a tutti i client quando il server cade." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Un messaggio da mostrare a tutti i client quando il server si spegne." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limite assoluto di code 'emerge'" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Accelerazione in aria" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "Intervallo del gestore di blocco attivo" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "Intervallo del modificatore di blocco attivo" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Portata del blocco attivo" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Portata di invio dell'oggetto attivo" #: src/settings_translation_file.cpp msgid "" @@ -1230,39 +1393,55 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Indirizzo a cui connettersi.\n" +"Lasciatelo vuoto per avviare un server locale.\n" +"Si noti che il campo indirizzo nel menu principale ignora questa " +"impostazione." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Adattate la configurazione dpi al vostro schermo (non X11/solo Android) ad " +"es. per schermi 4k." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Adattate la codifica di gamma per le tavole di illuminazione. I numeri più " +"bassi sono più chiari.\n" +"Questa impostazione è solo per il client ed è ignorata dal server." #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "Avanzate" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Congelamento da altitudine" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Sempre 'volo' e 'veloce'" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Gamma di occlusione ambientale" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Ingrandisce le vallate" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "Filtro anisotropico" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Rendere noto il server" #: src/settings_translation_file.cpp msgid "" @@ -1270,173 +1449,241 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Rendere noto a questo elenco di server.\n" +"Se volete rendere noto il vostro indirizzo ipv6, usate serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Scala (X, Y, Z) approssimativa del frattale in nodi." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Chiedere di riconnettersi dopo un crollo" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Rapporto automatico all'elenco dei server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Indietro" +msgstr "Tasto all'indietro" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Altezza base del terreno" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Base" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "Privilegi di base" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" -msgstr "Filtro Bi-Lineare" +msgstr "Filtro bilineare" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Risoluzione dell'indirizzo..." +msgstr "Lega indirizzo" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bit per pixel (cioè profondità di colore) in modalità schermo intero." #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Costruisci nel giocatore" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "Mip-Mapping" +msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Camera scorrevole" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Camera scorrevole in modalità cinematic" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Tasto di scelta di aggiornamento della camera" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "'Rumore' n°1 della caverna" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "'Rumore' n°2 della caverna" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "Larghezza delle caverne" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Caverne e gallerie si formano all'intersezione dei due 'rumori'" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat key" -msgstr "Cambiare i tasti" +msgstr "Tasto della messaggistica" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Cambiare i tasti" +msgstr "Tasto di scelta della messaggistica" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Scelta di 18 frattali da 9 formule.\n" +"1 = 4D \"Arrotondato\" serie mandelbrot.\n" +"2 = 4D \"Arrotondato\" serie julia.\n" +"3 = 4D \"Squadrato\" serie mandelbrot.\n" +"4 = 4D \"Squadrato\" serie julia.\n" +"5 = 4D \"Cugino Mandy\" serie mandelbrot.\n" +"6 = 4D \"Cugino Mandy\" serie julia.\n" +"7 = 4D \"Variazione\" serie mandelbrot.\n" +"8 = 4D \"Variazione\" serie julia.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" serie mandelbrot.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" serie julia.\n" +"11 = 3D \"Albero di Natale\" serie mandelbrot.\n" +"12 = 3D \"Albero di Natale\" serie julia.\n" +"13 = 3D \"Mandelbulb\" serie mandelbrot.\n" +"14 = 3D \"Mandelbulb\" serie julia.\n" +"15 = 3D \"Coseno Mandelbulb\" serie mandelbrot.\n" +"16 = 3D \"Coseno Mandelbulb\" serie julia.\n" +"17 = 4D \"Mandelbulb\" serie mandelbrot.\n" +"18 = 4D \"Mandelbulb\" serie julia." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Dimensione del \"pezzo\"" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Modalità creativa" +msgstr "Modalità cinematic" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Modalità creativa" +msgstr "Tasto della modalità cinematic" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Immagini trasparenti pulite" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Client e server" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Velocità di arrampicata" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Altitudine delle nuvole" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Raggio delle nuvole" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Nuvole 3D" +msgstr "Nuvole" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Le nuvole sono un effetto sul lato client." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menù principale" +msgstr "Nuvole nel menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Nebbia colorata" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Lista separata da virgole dei mod affidabili ai quali è permesso accedere a " +"funzioni non sicure anche quando il valore \"mod security\" è impostato su \"" +"on\" (utilizzando request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Elenco separato da virgole di mod. a cui è permesso l'accesso alle API " +"HTTP,\n" +"che gli permettono di caricare e scaricare dati su/da internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Comando" +msgstr "Tasto di comando" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Connettere" +msgstr "Unire i vetri" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Connessione al server..." +msgstr "Connettere a un server di media esterni" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Connettere il vetro se è supportato dal nodo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Console" +msgstr "Trasparenza della console" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Console" +msgstr "Colore della console" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Console" +msgstr "Tasto della console" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Avanti continuo" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Movimento in avanti continuo (usato solo per le prove)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Controlli" #: src/settings_translation_file.cpp msgid "" @@ -1444,185 +1691,243 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Controlla la durata del ciclo giorno/notte.\n" +"Esempi: 72 = 20min, 360 = 4min, 1 = 24ore, 0 = giorno/notte/ecc. restano " +"invariati." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Controlla la dimensione di spiagge e deserti nel Generatore mappa v.6.\n" +"Quando sono attivati i biomi di neve 'mgv6_freq_desert' viene ignorato." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controlla la ripidità/profondità delle depressioni lacustri." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controlla la ripidità/altezza delle colline." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" +"Controlla la larghezza delle gallerie, un valore più piccolo crea gallerie " +"più larghe." #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Messaggio di crollo" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Crea imprevedibili caratteristiche di lava nelle caverne.\n" +"Queste possono rendere difficile minare. Zero le disabilita. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Crea imprevedibili caratteristiche di acqua nelle caverne.\n" +"Queste possono rendere difficile minare. Zero le disabilita. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Trasparenza del mirino" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Trasparenza del mirino (opacità, tra 0 e 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Colore del mirino" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Colore del mirino (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Velocità di accovacciamento" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "Punti per pollice" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Abilitare il danno" +msgstr "Danno" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Chiave di attivazione delle info. di debug" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Livello del registro di debug" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Passo del server dedicato" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Accelerazione predefinita" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "modificare il gioco" +msgstr "Gioco predefinito" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Gioco predefinito quando si crea un nuovo mondo.\n" +"Questo verrà ignorato quando si crea un mondo dal menu principale." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Nuova password" +msgstr "Password predefinita" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Privilegi predefiniti" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Scadenza predefinita per cURL, espressa in millisecondi.\n" +"Ha effetto solo se Minetest è stato compilato con cURL." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Definisce il passo di campionatura dell'immagine.\n" +"Un valore più alto ha come effetto normal map più uniformi." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Definisce la massima distanza di trasferimento del giocatore espressa in " +"blocchi (0 = illimitata)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Ritardo nella comparsa dei suggerimenti, espresso in millisecondi." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Gestione delle API Lua deplorate" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Profondità sotto cui troverete caverne grandi." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Profondità sotto cui troverete caverne imponenti." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Velocità di discesa" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Descrizione del server, da mostrarsi nell'elenco dei server e quando i " +"giocatori accedono." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "De-sincronizza l'animazione del blocco" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." msgstr "" +"Dati di profilo del mod. dettagliati. Utile per gli sviluppatori di mod." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Profilo dettagliato del mod." + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Stabilisce la forma del terreno.\n" +"I tre numeri tra parentesi controllano la scala del\n" +"terreno, i tre numeri dovrebbero essere identici." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Abilitare le particelle" +msgstr "Disabilita anti-trucchi" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Rifiutare le password vuote" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Nome di dominio del server, da mostrare nell'elenco dei server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "Volare On/Off = due volte \"saltare\"" +msgstr "Doppio colpetto su salta per volare" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Volare On/Off = due volte \"saltare\"" +msgstr "" +"Colpire brevemente il tasto di salto due volte attiva la modalità di volo." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tasto per il rilascio di un oggetto" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Pubblica le informazioni di debug del generatore della mappa." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Abilitare VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Archivio in linea" +msgstr "Abilita la protezione mod." #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Abilitare il ferimento e la morte dei giocatori." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +"Abilita input casuale da parte del giocatore (utilizzato solo per " +"esperimenti)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Abilita l'illuminazione uniforme con l'occlusione ambientale semplice.\n" +"Disabilitare per velocizzare o per un aspetto diverso." #: src/settings_translation_file.cpp msgid "" @@ -1632,6 +1937,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Abilitare per impedire ai client obsoleti di connettersi.\n" +"I client datati sono compatibili nella misura in cui non vanno in crash " +"quando si connettono\n" +"ai server più recenti, ma non supportano tutte le funzioni che ci si " +"aspetterebbe." #: src/settings_translation_file.cpp msgid "" @@ -1640,6 +1950,11 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Abilita l'utilizzo di un server di materiale remoto (se fornito dal server)." +"\n" +"I server remoti offrono un modo significativamente più veloce di " +"scaricamento\n" +"del materiale (ad es. le immagini) quando ci si collega al server." #: src/settings_translation_file.cpp msgid "" @@ -1647,6 +1962,14 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Abilita/disabilita l'esecuzione di un server IPv6. Un server IPv6 può " +"essere\n" +"limitato ai client IPv6, dipendentemente dalla configurazione del sistema.\n" +"Ignorata se bind_address è impostato." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Abilita l'animazione degli oggetti dell'inventario." #: src/settings_translation_file.cpp msgid "" @@ -1655,98 +1978,122 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Abilita il bumpmapping per le immagini. E' necessario che il pacchetto " +"texture fornisca le normalmap\n" +"o è necessario che siano generate automaticamente.\n" +"Richiede l'attivazione degli shader." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "Abilita la cache delle mesh ruotate con facedir." + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "Abilita il tone mapping filmico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Abilitare il danno" +msgstr "Abilita il minimap." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"Abilita la generazione al volo delle normalmap (effetto a sbalzo).\n" +"Richiede l'attivazione del bumpmapping." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Abilita la mappatura dell'occlusione di parallasse.\n" +"Richiede l'attivazione degli shader." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Opzione sperimentale, può determinare la visibilità di spazi tra i blocchi\n" +"quando impostato ad un numero maggiore di 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS nel menu di pausa" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Ondeggiamento in caduta" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Font di ripiego" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Ombreggiatura del font di ripiego" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Trasparenza del font di ripiego" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Dimensione del font di ripiego" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Tasto 'veloce'" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Accelerazione della modalità veloce" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Velocità della modalità veloce" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Movimento veloce" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Movimento veloce (tramite il tasto usare).\n" +"Ciò richiede il privilegio \"fast\" sul server." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Campo visivo" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Campo visivo in gradi." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"File in client/serverlist/ contenente i vostri server preferiti mostrati " +"nella linguetta Giocatori multipli." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "Profondità dello riempitore" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Mappatura del tono filmico" #: src/settings_translation_file.cpp msgid "" @@ -1755,132 +2102,171 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"Le immagini filtrate possono miscelare valori RGB coi vicini completamente " +"trasparenti,\n" +"che gli ottimizzatori PNG solitamente scartano, risultando a volte in un " +"bordo chiaro o\n" +"scuro verso le immagini trasparenti. Applicate questo filtro per ripulire " +"quell'effetto\n" +"al momento del caricamento delle immagini." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Nessun Filtro" +msgstr "Filtraggio" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Seme fisso della mappa" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Tasto di volo" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "In volo" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Nebbia" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Tasto di attivazione della nebbia" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Percorso del font" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Ombreggiatura del font" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Trasparenza dell'ombreggiatura del font" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Trasparenza dell'ombreggiatura del font (opacità, tra 0 e 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." msgstr "" +"Compensazione dell'ombra del font, se 0 allora l'ombra non verrà disegnata." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Dimensione del font" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "Formato delle istantanee." #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Avanti" +msgstr "Tasto avanti" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Font freetype" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Da che distanza vengono generati i blocchi per i client, espressa in blocchi " +"mappa (16 nodi)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Da che distanza i blocchi sono inviati ai client, espressa in blocchi mappa " +"(16 nodi)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Da che distanza i client sanno degli oggetti, espressa in blocchi mappa (16 " +"nodi)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Schermo intero" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "BPP schermo intero" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Modalità a schermo intero." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Scala GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter" -msgstr "" +msgstr "Filtro di scala GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtro di scala GUI txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Generali" #: src/settings_translation_file.cpp msgid "Generate normalmaps" -msgstr "" +msgstr "Generare le normalmap" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributi globali di generazione della mappa.\n" +"In Generatore mappa v. 6 l'impostazione 'decorazioni' controlla tutte le " +"decorazioni\n" +"eccetto alberi ed erba della giungla, in tutti gli altri gen. di mappe " +"questa\n" +"impostazione controlla tutte le decorazioni.\n" +"Le impostazioni che non vengono specificate nella stringa delle " +"impostazioni\n" +"mantengono i valori predefiniti.\n" +"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +"esplicitamente." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafiche" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravità" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "Mod. HTTP" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Tasto di attivazione dello HUD" #: src/settings_translation_file.cpp msgid "" @@ -1889,22 +2275,33 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Gestione delle chiamate deplorate alle API Lua:\n" +"- eredita: (prova a) mimare il vecchio comportamento (predefinita per i " +"rilasci).\n" +"- registra: mima e registra la traccia della chiamata deplorata " +"(predefinita per il debug).\n" +"- errore: abortire all'uso della chiamata deplorata (suggerita per gli " +"sviluppatori di mod.)." + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "Componente dell'altezza della dimensione della finestra iniziale." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Altezza alla quale appaiono le nuvole." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "FPU ad alta precisione" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Sito del server, da mostrare nell'elenco dei server." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Quale profondità di creazione dei fiumi" #: src/settings_translation_file.cpp msgid "" @@ -1912,76 +2309,103 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Quanto larghe le aree di blocchi sono soggette alle cose del blocco attivo, " +"espresso in blocchi mappa (16 nodi).\n" +"Nei blocchi attivi vengono caricati gli oggetti ed eseguiti gli ABM." #: src/settings_translation_file.cpp msgid "" "How many blocks are flying in the wire simultaneously for the whole server." -msgstr "" +msgstr "Quanti blocchi vengono inviati simultaneamente per l'intero server." #: src/settings_translation_file.cpp msgid "How many blocks are flying in the wire simultaneously per client." -msgstr "" +msgstr "Quanti blocchi volano nel cavo simultaneamente per ogni client." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Quanto il server aspetterà prima di scaricare i blocchi mappa non usati.\n" +"Un valore alto è più scorrevole, ma userà più RAM." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Larghezza di creazione dei fiumi" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "Server IPv6" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Supporto IPv6." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Se i FPS dovessero superare questo, limitarli con la sospensione\n" +"per non sprecare la potenza della CPU per nessun beneficio." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Disatt. pacch." +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Se disabilitata il tasto \"usare\" è utilizzato per volare veloce se " +"entrambe le\n" +"modalità 'volo' e 'veloce' sono abilitate." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Se abilitata assieme alla modalità di volo, il giocatore può volare " +"attraverso i nodi solidi.\n" +"Questo richiede il privilegio \"noclip\" sul server." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "attivata" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Se abilitata, il tasto \"usare\" viene utilizzato al posto di \"strisciare\" " +"per scendere." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Se abilitata, le azioni sono registrate per il ripristino.\n" +"Questa opzione viene letta solo all'avvio del server." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "Se abilitata, disattiva l'impedimento dei trucchi nel gioco multiplo." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Se abilitata, i dati mondo non validi non causeranno lo spegnimento del " +"server.\n" +"Abilitatela solo se sapete cosa state facendo." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" +"Se abilitata, i nuovi giocatori non possono unirsi con una password vuota." #: src/settings_translation_file.cpp msgid "" @@ -1989,68 +2413,130 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Se abilitata, potete posizionare blocchi nella posizione (piedi + livello " +"degli occhi) dove state.\n" +"Questo è utile quando si lavora con le scatole dei nodi in piccole aree." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "" +"Se si imposta, i giocatori (ri)compariranno sempre alla posizione data." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Ignorare gli errori del mondo" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Gioco" +msgstr "In gioco" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" +"Trasparenza in gioco dello sfondo della console dei messaggi (opacità, tra 0 " +"e 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Colore in gioco dello sfondo della console dei messaggi (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Intervallo di salvataggio dei cambiamenti importanti nel mondo, espresso in " +"secondi." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "Intervallo di invio ai client dell'ora del giorno." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "Animazioni degli oggetti dell'inventario" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "Inventario" +msgstr "Tasto dell'inventario" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Invertire il mouse" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Inverte il movimento verticale del mouse." #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "Saltare" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" -msgstr "" +msgstr "Entità TTL (tempo di vita) oggetto" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" +"Iterazioni della funzione ricorsiva.\n" +"Controlla l'ammontare del dettaglio fine." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Solo serie julia: componente W della costante iper-complessa determinante la " +"forma julia.\n" +"Non ha effetto sui frattali in 3D.\n" +"Spazia pressapoco tra -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Solo serie julia: componente X della costante iper-complessa determinante la " +"forma julia.\n" +"Spazia pressapoco tra -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Solo serie julia: componente Y della costante iper-complessa determinante la " +"forma julia.\n" +"Spazia pressapoco tra -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Solo serie julia: componente Z della costante iper-complessa determinante la " +"forma julia.\n" +"Spazia pressapoco tra -2 e 2." + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "Tasto di salto" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "Velocità di salto" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per ridurre il raggio visivo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2058,13 +2544,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per lasciare a terra l'oggetto attualmente selezionato.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per aumentare il raggio visivo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2072,6 +2564,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per saltare.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2079,6 +2574,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per muoversi rapidamente nella modalità veloce.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2086,6 +2584,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per muovere indietro il giocatore.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2093,6 +2594,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per muovere avanti il giocatore.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2100,6 +2604,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per muovere a sinistra il giocatore.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2107,6 +2614,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per muovere a destra il giocatore.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2114,6 +2624,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per aprire la console dei messaggi.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2121,6 +2634,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per aprire la finestra dei messaggi per scrivere comandi.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2128,6 +2644,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per aprire la finestra dei messaggi.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2135,6 +2654,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per aprire l'inventario.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2142,6 +2664,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per stampare le stack di debug. Usato per lo sviluppo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2151,6 +2676,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per strisciare.\n" +"Usato anche per scendere dalle scale e scendere in acqua se aux1_descends è " +"disabilitata.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2158,6 +2688,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per passare tra la camera in prima persona a quella in terza " +"persona..\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2165,6 +2699,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per scattare istantanee.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2172,6 +2709,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la modalità cinematic.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2179,6 +2719,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzatore della minimappa.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2186,6 +2729,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la modalità veloce.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2193,6 +2739,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare il volo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2200,6 +2749,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la modalità noclip.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2207,6 +2759,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare l'aggiornamento della camera. Usato solo per lo " +"sviluppo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2214,6 +2770,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzazione delle info. di debug.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2221,6 +2780,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzazione dello HUD.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2228,6 +2790,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzazione della messaggistica.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2235,6 +2800,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzazione della nebbia.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2242,6 +2810,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare la visualizzazione del profilatore. Usato per lo " +"sviluppo.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2249,18 +2821,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tasto per attivare il raggio visivo illimitato.\n" +"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "Tasto \"Usare\" per arrampicarsi/scendere" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Linua" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Profondità delle caverne grandi" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Caratteristiche della lava" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Stile delle foglie" #: src/settings_translation_file.cpp msgid "" @@ -2269,17 +2852,30 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Stile delle foglie:\n" +"- Decorative: tutte le facce visibili\n" +"- Semplici: solo le facce esterne, se impostate special_tiles sono usate\n" +"- Opache: disattiva la trasparenza" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Menù a sinistra" +msgstr "Tasto sinistro" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." msgstr "" +"Lunghezza di uno scatto del server e intervallo per cui gli oggetti sono " +"aggiornati in generale sulla rete." + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "Intervallo di tempo tra l'esecuzione dei cicli ABM" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "Intervallo di tempo tra l'esecuzione dei cicli del Temporizzatore Nodo" #: src/settings_translation_file.cpp msgid "" @@ -2292,14 +2888,22 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Livello di registro da scrivere su debug.txt:\n" +"- (nessun registro)\n" +"- nessuno (messaggi senza livello)\n" +"- errore\n" +"- avviso\n" +"- azione\n" +"- informazione\n" +"- verboso" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "Limite di code 'emerge' su disco" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "Limite di code 'emerge' da generare" #: src/settings_translation_file.cpp msgid "" @@ -2309,328 +2913,544 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"Limita il numero di richieste HTTP parallele. Influisce:- Recupero dei " +"media se il server usa l'impostazione remote_media.\n" +"- Scaricamento dell'elenco dei server e notifica del server.\n" +"- Scaricamenti effettuati dal menu principale (ad es.il gestore mod.).\n" +"Ha effetto solo se compilato con cURL." #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Fluidità del liquido" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Uniformazione della fluidità del liquido" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Iterazioni massime nel giro di trasformazione del liquido" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Tempo di svuotamento della coda del liquido" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Velocità di caduta del liquido" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Intervallo di aggiornamento del liquido in secondi." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Scatto di aggiornamento del liquido" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Menu principale gestore giochi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menù principale" +msgstr "Menu principale del gestore mod." #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menù principale" +msgstr "Script del menu principale" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Far sì che i colori di cielo e nebbia dipendano dall'ora del giorno (alba/" +"tramonto) e direzione visiva." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" +msgstr "Fa lavorare DirectX con LuaJIT. Disabilitare se causa problemi." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Cartella della mappa" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributi di generazione della mappa specifici per il Generatore mappa valli." +"\n" +"'altitude_chill' rende più fredde le altitudini più elevate, il che potrebbe " +"causare problemi di bioma.\n" +"'humid_rivers' modifica l'umidità attorno ai fiumi e in aree dove l'acqua " +"tenderebbe a stagnare,\n" +"potrebbe interferire con i biomi finemente regolati.\n" +"Le impostazioni predefinite impostate nel motore sono: altitude_chill, " +"humid_rivers\n" +"La stringa delle impostazioni modifica i valori predefiniti del motore.\n" +"Le impostazioni che non sono specificate nella stringa mantengono i valori " +"predefiniti.\n" +"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +"esplicitamente." #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Attributi di generazione della mappa specifici per Generatore mappa piatto.\n" +"Laghi e colline occasionali possono essere aggiunti al mondo piatto.\n" +"Le impostazioni predefinite impostate nel motore sono: nessuna\n" +"La stringa delle impostazioni modifica le impostazioni predefinite del " +"motore.\n" +"Le impostazioni che non sono specificate nella stringa mantengono i valori " +"predefiniti.\n" +"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +"esplicitamente." + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Attributi di generazione della mappa specifici per Generatore mappa v. 6.\n" +"Quando i biomi di neve sono abilitati le giungle sono abilitate " +"automaticamente, l'impostazione 'jungles' è ignorata.\n" +"Le impostazioni predefinite impostate nel motore sono: biomeblend, mudflow\n" +"La stringa delle impostazioni modifica le impostazioni predefinite del " +"motore.\n" +"Le impostazioni che non sono specificate nella stringa mantengono i valori " +"predefiniti.\n" +"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +"esplicitamente." + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Attributi di generazione della mappa specifici per Generatore mappa v. 6.\n" +"L'impostazione 'ridges' controlla i fiumi.\n" +"Le impostazioni predefinite impostate nel motore sono: mountains, ridges\n" +"La stringa delle impostazioni modifica le impostazioni predefinite del " +"motore.\n" +"Le impostazioni che non sono specificate nella stringa mantengono i valori " +"predefiniti.\n" +"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +"esplicitamente." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Limite di generazione della mappa" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Intervallo di salvataggio della mappa" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Limite del blocco mappa" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Tempo di scad. dello scaric. del blocco mappa" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Generatore mappa valli" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Param. del gen. mappa del 'rumore' del calore del bioma" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Param. del gen. mappa di misc. del 'rumore' dell'umidità del bioma" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" -msgstr "" +msgstr "Param. del gen. mappa del 'rumore' dell'umidità del bioma" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Generat. mappe" +msgstr "Debug del generatore mappa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Generat. mappe" +msgstr "Impostazioni del generatore mappa" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "Larghezza delle caverne del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "Gen. mappa piatto, parametri del 1° 'rumore' delle caverne" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "Gen. mappa piatto, parametri del 2° 'rumore' delle caverne" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" +"Gen. mappa piatto, parametri del 'rumore' dello riempitore di profondità" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Impostazioni del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Livello del terreno del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Ripidità delle colline del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Limite delle colline del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Ripidità dei laghi del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Limite dei laghi del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "Profondità delle caverne grandi del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "Parametri del 'rumore' del terreno del Generatore mappa piatto" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Generatore mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "Gen. mappa frattale, larghezza caverne" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "Gen. mappa frattale, parametri del 1° 'rumore' delle caverne" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "Gen. mappa frattale, parametri del 2° 'rumore' delle caverne" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" +"Gen. mappa frattale, parametri del 'rumore' dello riempitore di profondità" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "Frattale del Generatore mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "Iterazioni del Generatore mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "Gen. mappa frattale, julia w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "Gen. mappa frattale, julia x" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Gen. mappa frattale, julia y" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Gen. mappa frattale, julia z" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "Compensazione del Generatore mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "Scala del Generatore mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Param. del 'rumore' del fondale marino del Gen. mappa frattale" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "Gen. mappa frattale, fetta w" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" -msgstr "" +msgstr "Param. del gen. mappa di miscelazione del 'rumore' del calore" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Generat. mappe" +msgstr "Nome del gen. mappa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v5" -msgstr "Generat. mappe" +msgstr "Generatore mappa v. 5." + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "Gen. mappa v. 5, larghezza caverne" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" -msgstr "" +msgstr "Gen. mappa v. 5, parametri del 1° 'rumore' delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave2 noise parameters" -msgstr "" +msgstr "Gen. mappa v. 5, parametri del 2° 'rumore' delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v5 factor noise parameters" -msgstr "" +msgstr "Gen. mappa v. 5, parametri del 'rumore' di fabbrica" #: src/settings_translation_file.cpp msgid "Mapgen v5 filler depth noise parameters" -msgstr "" +msgstr "Gen. mappa v. 5, parametri del 'rumore' dello riempitore di profondità" #: src/settings_translation_file.cpp msgid "Mapgen v5 height noise parameters" -msgstr "" +msgstr "Gen. mappa v. 5, parametri 'rumore' dell'altezza" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Generat. mappe" +msgstr "Generatore mappa v. 6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' degli alberi" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "Gen. mappa v. 6, frequenza della spiaggia" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' della spiaggia" #: src/settings_translation_file.cpp msgid "Mapgen v6 biome noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' del bioma" #: src/settings_translation_file.cpp msgid "Mapgen v6 cave noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Gen. mappa v. 6, frequenza del deserto" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "Impostazioni del Generatore mappa v. 6" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' della selezione di altezza" #: src/settings_translation_file.cpp msgid "Mapgen v6 humidity noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' dell'umidità" #: src/settings_translation_file.cpp msgid "Mapgen v6 mud noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' del fango" #: src/settings_translation_file.cpp msgid "Mapgen v6 steepness noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' della ripidità" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain altitude noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' di altitudine del terreno" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain base noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' di base del terreno" #: src/settings_translation_file.cpp msgid "Mapgen v6 trees noise parameters" -msgstr "" +msgstr "Gen. mappa v. 6, parametri del 'rumore' degli alberi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Generat. mappe" +msgstr "Gen. mappa v. 7, parametri del 'rumore'" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "Gen. mappa v. 7, larghezza delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, parametri del 1° 'rumore' delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave2 noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, parametri del 2° 'rumore' delle caverne" #: src/settings_translation_file.cpp msgid "Mapgen v7 filler depth noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' dello riempitore di profondità" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "Impostazioni del Generatore mappa v. 7" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' della selezione di altezza" #: src/settings_translation_file.cpp msgid "Mapgen v7 mount height noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' di altezza delle montagne" #: src/settings_translation_file.cpp msgid "Mapgen v7 mountain noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' delle montagne" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' dei fiumi" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge water noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' dell'acqua dei fiumi" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain altitude noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' di altitudine del terreno" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain base noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del 'rumore' di base del terreno" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain persistation noise parameters" -msgstr "" +msgstr "Gen. mappa v. 7, param. del \"rumore\" di continuità del terreno" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "Profondità delle caverne imponenti" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "'Rumore' delle caverne imponenti" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "Caverne imponenti da qui." #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Distanza massima di generazione dei blocchi" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "Distanza massima di invio dei blocchi" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "Numero massimo di liquidi elaborati per passaggio." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "Clearobjects massimo per blocchi extra" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "Numero massimo di pacchetti per iterazione" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "FPS massimi" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "FPS massimi quando il gioco è in pausa." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "Numero massimo di blocchi caricati a forza" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Larghezza massima della barra oggetti" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." msgstr "" +"Numero massimo di blocchi che possono essere accodati per il caricamento." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Numero massimo di blocchi da generare da accodare.\n" +"Lasciate vuoto per scegliere automaticamente una quantità adatta." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Numero massimo di blocchi da accodare per essere caricati da file.\n" +"Lasciate vuoto per scegliere automaticamente una quantità adatta." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "Numero massimo di blocchi mappa caricati a forza." #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Numero massimo di blocchi mappa per client da tenere in memoria.\n" +"Impostare a -1 per una quantità illimitata." #: src/settings_translation_file.cpp msgid "" @@ -2638,135 +3458,146 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"Numero massimo di pacchetti inviati per passo di invio, se avete una " +"connessione lenta\n" +"provate a ridurlo, ma non riducetelo a un numero inferiore al doppio del " +"numero\n" +"dei client interessati." #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." msgstr "" +"Numero massimo di giocatori che possono connettersi contemporaneamente." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "Numero massimo di oggetti immagazzinati stabilmente in un blocco." #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Proporzione massima della finestra attuale da usarsi per la barra oggetti.\n" +"Utile se c'è qualcosa da mostrare a destra o sinistra della barra." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Num. mass. di blocchi inviati contemp. per client" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Totale massimo di invio contemporaneo di blocchi" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Tempo massimo in ms che può richiedere lo scaricamento di un file (ad es. un " +"mod.)." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Utenti massimi" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Oggetti massimi per blocco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menù" +msgstr "Menu" #: src/settings_translation_file.cpp msgid "Mesh cache" -msgstr "" +msgstr "Cache mesh" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Messaggio del giorno" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "Messaggio del giorno mostrato ai giocatori che si connettono." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "Metodo usato per evidenziare l'oggetto scelto." #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Minimappa" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Tasto della minimappa" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Altezza di scansione della minimappa" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" +msgstr "Dimensione minima dell'immagine per i filtri" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip-Mapping" +msgstr "Mipmapping" #: src/settings_translation_file.cpp msgid "Mod profiling" -msgstr "" +msgstr "Creazione del profilo dei mod." #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "URL dei dettagli del deposito mod." #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "URL di scaricamento del deposito mod." #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "URL dell'elenco dei mod. del deposito mod." #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Percorso del font a spaziatura fissa" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Dimensione del font a spaziatura fissa" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Sensibilità del mouse" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Moltiplicatore della sensibilità del mouse." #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Moltiplicatore per l'ondeggiamento in caduta.\n" +"Per esempio: 0 per nessun ondeggiamento visivo; 1.0 normale; 2.0 doppio." #: src/settings_translation_file.cpp msgid "" "Multiplier for view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Moltiplicatore per l'ondeggiamento visivo.\n" +"Per esempio: 0 per nessun ondeggiamento visivo; 1.0 normale; 2.0 doppio." #: src/settings_translation_file.cpp msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"Nome del generatore mappa da usare quando si crea un nuovo mondo.\n" +"Creare un nuovo mondo nel menu principale ignorerà questa impostazione." #: src/settings_translation_file.cpp msgid "" @@ -2774,58 +3605,71 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"Nome del giocatore.\n" +"Quando si esegue un server, i client che si connettono con questo nome sono " +"amministratori.\n" +"Quando si avvia dal menu principale, questa impostazione viene ignorata." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" +"Nome del server, da mostrare quando si uniscono dei giocatori e nell'elenco " +"dei server." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Rete" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"Porta di rete da ascoltare (UDP).\n" +"Questo valore verrà ignorato quando si avvia dal menu principale." #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "I nuovi utenti devono inserire questa password." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Movimento libero" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Tasto noclip" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" -msgstr "Evidenziamento Nodi" +msgstr "Evidenziamento nodo" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "Intervallo del Temporizzatore nodo" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +"Parametri di 'rumore' per l'API di temperatura del bioma, umidità e fusione " +"di bioma." + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "Rumori" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "" +msgstr "Campionamento normalmap" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "" +msgstr "Intensità normalmap" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "Numero di thread emerge" #: src/settings_translation_file.cpp msgid "" @@ -2835,6 +3679,11 @@ msgid "" "speed greatly\n" "at the cost of slightly buggy caves." msgstr "" +"Numero di thread emerge da usare. Lasciate vuoto questo campo, o aumentate " +"questo numero\n" +"per usare thread multipli. Su sistemi multiprocessore, questo migliorerà " +"molto la velocità del\n" +"generatore mappa al costo di caverne un po' buggate." #: src/settings_translation_file.cpp msgid "" @@ -2842,116 +3691,118 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"Numero di blocchi extra che possono essere caricati da /clearobjects in una " +"volta.\n" +"Questo è un controbilanciare tra spesa di transazione sqlite e\n" +"consumo di memoria (4096 = 100MB, come regola generale)." #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "Numero di iterazioni di occlusione di parallasse." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." msgstr "" +"Deviazione complessiva dell'effetto di occlusione di parallasse, solitamente " +"scala fratto 2." #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" +msgstr "Scala complessiva dell'effetto di occlusione di parallasse." #: src/settings_translation_file.cpp msgid "Parallax occlusion" -msgstr "" +msgstr "Occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Parallax occlusion Scale" -msgstr "" +msgstr "Scala dell'occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Parallax occlusion bias" -msgstr "" +msgstr "Deviazione dell'occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Parallax occlusion iterations" -msgstr "" +msgstr "Iterazioni dell'occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Parallax occlusion mode" -msgstr "" +msgstr "Modalità occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Parallax occlusion strength" -msgstr "" +msgstr "Intensità dell'occlusione di parallasse" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "Percorso per il font TrueType o bitmap." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Percorso dove salvare le istantanee." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." msgstr "" +"Percorso della cartella immagini. Tutte le immagini vengono cercate a " +"partire da qui." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Fisiche" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"Il giocatore può volare senza essere interessato dalla gravità.\n" +"Ciò richiede il privilegio \"fly\" sul server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Nome del giocatore troppo lungo." +msgstr "Nome del giocatore" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Distanza di trasferimento del giocatore" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Giocatore contro Giocatore" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Caricamento..." +"Porta a cui connettersi (UDP).\n" +"Si noti che il campo porta nel menu principale ignora questa impostazione." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Impedisce che i mod. facciano cose non sicure come eseguire comandi della " +"shell." + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "Privilegi che possono essere assegnati dai giocatori con basic_privs" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" +"Intervallo di stampa del profilatore. 0 = disabilitato. Utile per gli " +"sviluppatori." #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "Tasto di attivazione del profilatore" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "Intervallo di stampa del profilamento" #: src/settings_translation_file.cpp msgid "" @@ -2959,52 +3810,74 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"Raggio dell'area delle nuvole espresso in numero di 64 nodi nuvola " +"quadrati.\n" +"Valori maggiori di 26 cominceranno a produrre interruzioni appuntite agli " +"angoli delle aree nuvola." + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "Solleva il terreno per creare vallate attorno ai fiumi" #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Input casuale" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Selez. ad area" +msgstr "Tasto di selezione del raggio" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Media remoti" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Porta remota" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Sostituisce il menu principale predefinito con uno personalizzato." #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Menù a destra" +msgstr "Tasto destro" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "Intervallo di ripetizione del click destro" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "Profondità dei fiumi" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "'Rumore' dei fiumi" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "Dimensione dei fiumi" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "'Rumore' dei fiumi - i fiumi si manifestano vicino a zero" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "Registrazione di ripristino" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Minimappa rotonda" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "Salvare su disco la mappa ricevuta dal client." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "Salvataggio della mappa ricevuta dal server" #: src/settings_translation_file.cpp msgid "" @@ -3014,111 +3887,130 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"Ridimensionare l'interfaccia secondo un valore specificato dall'utente.\n" +"Usate un filtro anti-alias-vicino-più-vicino per ridimensionare " +"l'interfaccia.\n" +"Questo liscerà alcuni degli spigoli vivi, e armonizzerà i pixel al\n" +"rimpicciolimento, al costo di sfocare alcuni pixel di punta\n" +"quando le immagini sono ridimensionate per valori frazionari." #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Altezza dello schermo" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Larghezza dello schermo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "Istantanea" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Cartella delle istantanee" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "Formato delle istantanee" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "Qualità dell'istantanea" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" +"Qialità dell'istantanea. Usata solo per il formato JPEG.\n" +"1 significa qualità peggiore; 100 significa qualità migliore.\n" +"Usate 0 per la qualità predefinita." #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Sicurezza" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Si veda http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Colore del bordo del riquadro di selezione (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Colore del riquadro di selezione" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Larghezza del riquadro di selezione" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Giocatore singolo" +msgstr "Server / Giocatore singolo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "URL del server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Porta del server" +msgstr "Indirizzo del server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Porta del server" +msgstr "Descrizione del server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Nome del server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Porta del server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Elenco dei server pubblici" +msgstr "URL dell'elenco dei server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Elenco dei server pubblici" +msgstr "File dell'elenco dei server" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Impostate la lingua. Lasciate vuoto per usare la lingua di sistema.\n" +"E' necessario il riavvio dopo avere modificato questa impostazione." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Impostata a true abilita le foglie ondeggianti.\n" +"Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"Impostata su true abilita le piante ondeggianti.\n" +"Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shader" +"Impostata su true abilita l'acqua ondeggiante.\n" +"Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp msgid "" @@ -3126,52 +4018,67 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"Gli shader permettono effetti visivi avanzati e potrebbero aumentare il " +"rendimento su certe\n" +"schede video. Funzionano solo col supporto OpenGL." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "Forma del minimap. Abilitata = rotonda, disabilitata = quadrata." #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "" +msgstr "Mostrare le info. di debug" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "Mostrare i riquadri di selezione delle entità" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Messaggio di spegnimento" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Dimensione dei \"pezzi\" da generare immediatamente dal generatore mappa, " +"espressa in blocchi mappa (16 nodi)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "Pendenza e riempimento lavorano assieme per modificare le altezze" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "Illuminazione armoniosa" +msgstr "Illuminazione uniforme" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Rende fluida la camera quando ci si muove e si guarda attorno.\n" +"Utile per registrare video." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." msgstr "" +"Rende fluida la rotazione della camera in modalità cinematic. 0 per " +"disabilitare." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Rende fluida la rotazione della camera. 0 per disabilitare." #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Strisciare" +msgstr "Tasto per strisciare" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Suono" #: src/settings_translation_file.cpp msgid "" @@ -3180,52 +4087,88 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"Specifica l'URL da cui il client recupera i media al posto di usare UDP.\n" +"$filename dovrebbe essere accessibile da $remote_media$filename tramite " +"cURL\n" +"(ovviamente, remote_media dovrebbe finire con una barra).\n" +"I file che non sono presenti saranno recuperati nel solito modo." #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Punto stabile di comparsa" #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." -msgstr "" +msgstr "Intensità delle normalmap generate." #: src/settings_translation_file.cpp msgid "Strength of parallax." -msgstr "" +msgstr "Intensità di parallasse." #: src/settings_translation_file.cpp msgid "Strict protocol checking" -msgstr "" +msgstr "Controllo stretto del protocollo" + +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "Supporto dei server più vecchi" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "SQLite simultaneo" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Pacch. immagini" +msgid "Terrain Height" +msgstr "Altezza terreno" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." msgstr "" +"Limite di 'rumore' del terreno per le colline.\n" +"Controlla la porzione d'area del mondo coperta da colline.\n" +"Sistemare verso 0.0 per una porzione più ampia." + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" +"Limite di 'rumore' del terreno per i laghi.\n" +"Controlla la porzione d'area del mondo coperta da laghi.\n" +"Sistemare verso 0.0 per una porzione più ampia." + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Percorso delle immagini" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "L'altitudine a cui le temperature crollano di 20°C" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "La profondità della terra o altri riempitori" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "L'interfaccia di rete ascoltata dal server." #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"I privilegi ricevuti automaticamente dai nuovi utenti.\n" +"Si veda /privs in gioco per un elenco completo sul vostro server e la " +"configurazione dei mod." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Il supporto di rendering per Irrlicht." #: src/settings_translation_file.cpp msgid "" @@ -3234,6 +4177,13 @@ msgid "" "setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" "set to the nearest valid value." msgstr "" +"L'intensità (oscurità) dell'ombreggiatura di occlusione ambientale dei " +"nodi.\n" +"Minore è più scuro, maggiore è più chiaro. L'intervallo di valori validi " +"per\n" +"questa impostazione è tra 0.25 e 4.0 inclusi. Se il valore è fuori " +"intervallo\n" +"verrà impostato sul valore valido più vicino." #: src/settings_translation_file.cpp msgid "" @@ -3241,34 +4191,49 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" +"Il tempo (in secondi) in cui la coda dei liquidi può crescere oltre alla " +"capacità\n" +"di elaborazione finché viene fatto un tentativo di diminuirne la dimensione\n" +"scaricando gli oggetti della vecchia coda. Un valore 0 disattiva questa " +"funzionalità." #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." msgstr "" +"Il tempo in secondi richiesto tra click destri ripetuti quando si tiene il " +"pulsante mouse destro." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." -msgstr "" +msgstr "Questo font sarà usato per certe lingue." + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "Tempo tra i cicli di gestione del 'blocco'" #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Tempo in secondi di vita per le entità oggetto (oggetti lasciati a terra).\n" +"Impostandola a 0 si disattiva la caratteristica." #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "Intervallo del tempo di invio" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "Velocità del tempo" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." msgstr "" +"Tempo di scadenza per i client per rimuovere dati mappa inutilizzati dalla " +"memoria." #: src/settings_translation_file.cpp msgid "" @@ -3277,19 +4242,23 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"Per ridurre il ritardo, i trasferimenti di blocchi sono rallentati quando un " +"giocatore sta\n" +"costruendo qualcosa. Questo stabilisce per quanto a lungo sono rallentati " +"dopo avere\n" +"posizionato o rimosso un nodo." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Chiave di impostazione della modalità camera" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Ritardo dei suggerimenti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "Filtro Tri-Lineare" +msgstr "Filtro trilineare" #: src/settings_translation_file.cpp msgid "" @@ -3297,143 +4266,180 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"Vero = 256\n" +"Falso = 128\n" +"Utilizzabile per rendere più fluida la minimappa su macchine più lente." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Mod. fidati" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "URL dell'elenco server mostrato nella linguetta Giocatori multipli." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Distanza di trasferimento illimitata" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "Scaricare i dati server inutilizzati" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Usare le nuvole in 3D invece delle piatte." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Usare un'animazione con le nuvole per lo sfondo del menu principale." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." msgstr "" +"Usare il filtro anisotropico quando si vedono le immagini da un angolo." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Usare il filtro bilineare quando si ridimensionano le immagini." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "premere il tasto" +msgstr "Tasto 'usare'" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." msgstr "" +"Usare il mipmapping per ridimensionare le immagini. Potrebbe aumentare " +"leggermente la resa." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Usare il filtro trilineare quando si ridimensionano le immagini." #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Sviluppatori principali" +msgstr "Utile per gli sviluppatori di mod." #: src/settings_translation_file.cpp msgid "V-Sync" -msgstr "" +msgstr "Sincronia verticale" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." -msgstr "" +msgid "VBO" +msgstr "VBO" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "Profondità valli" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "Riempimento valli" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "Profilo valli" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "Pendenza valli" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "Impostazioni C delle valli" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "Sincronizzazione verticale dello schermo." #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Driver video" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "Ondeggiamento visuale" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"Distanza visiva in nodi.\n" +"Min = 20" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "Tasto di riduzione del raggio visivo" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "Tasto di aumento del raggio visivo" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" +msgid "Viewing range" +msgstr "Raggio visivo" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" -msgstr "Volume del suono" +msgstr "Volume" + +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Coordinata W della fetta in 3D generata di un frattale in 4D.\n" +"Determina quale fetta in 3D viene generata della forma in 4D.\n" +"Non ha effetto su frattali in 3D.\n" +"Spazia pressapoco tra -2 e 2." #: src/settings_translation_file.cpp msgid "Walking speed" -msgstr "" +msgstr "Velocità di camminata" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Water Features" +msgstr "Caratteristiche dell'acqua" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Livello dell'acqua" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "Livello di superficie dell'acqua del mondo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Inizializzazione nodi" +msgstr "Nodi ondeggianti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Alberi migliori" +msgstr "Foglie ondeggianti" #: src/settings_translation_file.cpp msgid "Waving plants" -msgstr "" +msgstr "Piante ondeggianti" #: src/settings_translation_file.cpp msgid "Waving water" -msgstr "" +msgstr "Acqua ondeggiante" #: src/settings_translation_file.cpp msgid "Waving water height" -msgstr "" +msgstr "Altezza dell'acqua ondeggiante" #: src/settings_translation_file.cpp msgid "Waving water length" -msgstr "" +msgstr "Durata di ondeggiamento dell'acqua" #: src/settings_translation_file.cpp msgid "Waving water speed" -msgstr "" +msgstr "Velocità di ondeggiamento dell'acqua" #: src/settings_translation_file.cpp msgid "" @@ -3441,6 +4447,10 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"Quando gui_scaling_filter è vero, tutte le immagini dell'interfaccia\n" +"necessitano il filtraggio software, ma alcune immagini sono generate\n" +"direttamente dall'hardware (ad es.. render-to-texture per i nodi " +"nell'inventario)." #: src/settings_translation_file.cpp msgid "" @@ -3449,6 +4459,11 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "propery support downloading textures back from hardware." msgstr "" +"Quando gui_scaling_filter_txr2img è vero, copia quelle immagini\n" +"dall'hardware al software per il ridimensionamento. Quando è falso,\n" +"ripiega sul vecchio metodo di ridimensionamento, per i driver video\n" +"che non supportano correttamente lo scaricamento delle immagini\n" +"dall'hardware." #: src/settings_translation_file.cpp msgid "" @@ -3460,6 +4475,15 @@ msgid "" "have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" "enabled." msgstr "" +"Quando si usano i filtri bilineare/trilineare/anisotropico, le immagini a " +"bassa\n" +"risoluzione possono essere sfocate, perciò ingranditele automaticamente\n" +"con l'interpolazione vicino-più-vicino per conservare pixel vivaci. Questa\n" +"imposta la dimensione minima dell'immagine per le immagini ingrandite;\n" +"valori maggiori risultano più a fuoco, ma richiedono più memoria. Sono\n" +"raccomandate le potenze di 2. Impostare questa a un valore maggiore di\n" +"1 potrebbe non avere un effetto visibile a meno che non sia attivato\n" +"il filtro bilineare/trilineare/anisotropico." #: src/settings_translation_file.cpp msgid "" @@ -3470,145 +4494,234 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Dove si ferma il generatore mappa.\n" +"Si noti prego:\n" +"- Limitato a 31.000 (impostazioni superiori non hanno effetto)\n" +"- Il generatore mappa lavora in gruppi di 80x80x80 nodi (5x5x5 nodi " +"mappa).\n" +"- Quei gruppi hanno una compensazione di -32, -32 nodi dall'origine.\n" +"- Solo i gruppi che rientrano nel map_generation_limit vengono generati." #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." msgstr "" +"Se si usano font freetype, richiede la compilazione col supporto freetype." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" +"Se le animazioni delle immagini dei nodi dovrebbero essere asincrone per " +"blocco mappa." #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"Se i giocatori sono mostrati ai client senza alcun limite di raggio.\n" +"Deplorata, usate invece l'impostazione player_transfer_distance." #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Se permettere ai giocatori di danneggiarsi e uccidersi l'un l'altro." #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Se chiedere ai client di riconnettersi dopo un crollo (Lua).\n" +"Impostatela a vero se il vostro server è impostato per ripartire " +"automaticamente." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "Se annebbiare la fine dell'area visibile." #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"Se mostrare le info. di debug del client (ha lo stesso effetto di premere " +"F5)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" +"Se supportare o meno i server più vecchi precedenti al protocollo versione " +"25.\n" +"Abilitatela se volete connettervi a server 0.4.12 e precedenti.\n" +"I server a partire da 0.4.13 funzioneranno, i server 0.4.12-dev potrebbero " +"funzionare.\n" +"Disabilitare questa opzione proteggerà meglio la vostra password." + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "Componente larghezza della dimensione iniziale della finestra." #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "Larghezza delle linee del riquadro di selezione attorno ai nodi." #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Cartella del mondo (ogni cosa nel mondo viene depositata qui).\n" +"Non necessaria se si avvia dal menu principale." + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "Y del terreno piatto." + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "Y del limite superiore delle caverne pseudocasuali grandi." #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "Tempo di scadenza cURL dello scaricamento dei file" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "Limite cURL parallelo" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "Tempo di scadenza cURL" -#, fuzzy -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Riavviare minetest per rendere effettive le modifiche" +#~ msgid "Item textures..." +#~ msgstr "Immagini degli oggetti..." -#~ msgid "Game Name" -#~ msgstr "Nome del gioco" +#~ msgid "Preload inventory textures" +#~ msgstr "Precaricamento delle textures dell'inventario" -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gestore del gioco: impossibile il modulo \"$1\" nel gioco \"$2\"" +#~ msgid "Viewing range minimum" +#~ msgstr "Distanza minima di visibilità" -#~ msgid "GAMES" -#~ msgstr "GIOCHI" - -#~ msgid "Mods:" -#~ msgstr "Moduli:" - -#~ msgid "new game" -#~ msgstr "nuovo gioco" - -#~ msgid "EDIT GAME" -#~ msgstr "MODIFICARE IL GIOCO" - -#~ msgid "Remove selected mod" -#~ msgstr "Rimuovere il modulo selezionato" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Aggiungere il modulo" - -#~ msgid "CLIENT" -#~ msgstr "CLIENT" - -#~ msgid "Favorites:" -#~ msgstr "Preferiti:" - -#~ msgid "START SERVER" -#~ msgstr "AVVIO SERVER" - -#~ msgid "Name" -#~ msgstr "Nome" - -#~ msgid "Password" -#~ msgstr "Password" - -#~ msgid "SETTINGS" -#~ msgstr "IMPOSTAZIONI" - -#~ msgid "Preload item visuals" -#~ msgstr "Precaricare le immagini" - -#~ msgid "Finite Liquid" -#~ msgstr "Liquido limitato" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "GIOC. SING." - -#~ msgid "TEXTURE PACKS" -#~ msgstr "PACCH. DI IMM." - -#~ msgid "MODS" -#~ msgstr "MODULI" - -#~ msgid "Add mod:" -#~ msgstr "Aggiungere un modulo:" +#~ msgid "Wanted FPS" +#~ msgstr "FPS desiderati" #~ msgid "Local install" #~ msgstr "Installazione locale" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "E' necessario usare i driver OpenGL per abilitare gli shader." +#~ msgid "Add mod:" +#~ msgstr "Aggiungere un modulo:" -#~ msgid "Simple Leaves" -#~ msgstr "Foglie semplici" +#~ msgid "MODS" +#~ msgstr "MODULI" -#, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Giocatore singolo" +#~ msgid "TEXTURE PACKS" +#~ msgstr "PACCH. DI IMM." -#~ msgid "Opaque Water" -#~ msgstr "Acqua opaca" +#~ msgid "SINGLE PLAYER" +#~ msgstr "GIOC. SING." -#~ msgid "Opaque Leaves" -#~ msgstr "Foglie opache" +#~ msgid "Finite Liquid" +#~ msgstr "Liquido limitato" + +#~ msgid "Preload item visuals" +#~ msgstr "Precaricare le immagini" + +#~ msgid "SETTINGS" +#~ msgstr "IMPOSTAZIONI" + +#~ msgid "Password" +#~ msgstr "Password" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "START SERVER" +#~ msgstr "AVVIO SERVER" + +#~ msgid "CLIENT" +#~ msgstr "CLIENT" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Aggiungere il modulo" + +#~ msgid "Remove selected mod" +#~ msgstr "Rimuovere il modulo selezionato" + +#~ msgid "EDIT GAME" +#~ msgstr "MODIFICARE IL GIOCO" + +#~ msgid "new game" +#~ msgstr "nuovo gioco" + +#~ msgid "Mods:" +#~ msgstr "Moduli:" + +#~ msgid "GAMES" +#~ msgstr "GIOCHI" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gestore del gioco: impossibile il modulo \"$1\" nel gioco \"$2\"" + +#~ msgid "Game Name" +#~ msgstr "Nome del gioco" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Riavviare minetest per rendere effettive le modifiche" + +#~ msgid "If enabled, " +#~ msgstr "attivata" + +#~ msgid "If disabled " +#~ msgstr "Disatt. pacch." + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Attributi di generazione della mappa specifici per Generatore mappa v. " +#~ "7.\n" +#~ "'ridges' sono i fiumi.\n" +#~ "Le impostazioni che non sono specificate nella stringa mantengono i " +#~ "valori predefiniti.\n" +#~ "Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +#~ "esplicitamente." + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "Attributi di generazione della mappa specifici per Generatore mappa " +#~ "valli.\n" +#~ "Le impostazioni che non sono specificate nella stringa mantengono i " +#~ "valori predefiniti.\n" +#~ "Le impostazioni che iniziano con \"no\" sono usate per disabilitarle " +#~ "esplicitamente.\n" +#~ "\"altitude_chill\" rende più fredde le elevazioni maggiori, il che " +#~ "potrebbe causare problemi ai biomi.\n" +#~ "\"humid_rivers\" modifica l'umidità attorno ai fiumi e nelle aree in cui " +#~ "l'acqua tenderebbe a stagnare. Potrebbe interferire con biomi" #~ msgid "No!!!" #~ msgstr "No!!!" + +#~ msgid "Generate Normalmaps" +#~ msgstr "Generare normalmap" + +#~ msgid "Public Serverlist" +#~ msgstr "Elenco dei server pubblici" + +#~ msgid "No of course not!" +#~ msgstr "No, certo che no!" diff --git a/po/ja/minetest.po b/po/ja/minetest.po index 2e1024d5..c6bc38d7 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -2,17 +2,17 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-10-05 08:20+0200\n" -"Last-Translator: Rui \n" -"Language-Team: Japanese \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-07 16:10+0000\n" +"Last-Translator: BreadW \n" +"Language-Team: Japanese " +"\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" @@ -36,40 +36,41 @@ msgstr "再接続" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "サーバが再接続を要求しました:" +msgstr "サーバが再接続を要求しました:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." msgstr "読み込み中..." #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "プロトコルバージョンの不一致、サーバー " +msgstr "プロトコルバージョンが一致していません。 " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "サーバのプロトコルバージョンは$1が適用されます。 " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "サーバは$1から$2までのプロトコルバージョンをサポートしています。 " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." -msgstr "インターネット接続を確認し、公開サーバーリストを再有効化してください。" +msgstr "インターネット接続を確認し、公開サーバ一覧を再有効化してください。" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "プロトコルバージョンは$1のみサポートしています。" #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "プロトコルバージョンは$1から$2までをサポートしています。" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "キャンセル" @@ -87,7 +88,7 @@ msgstr "有効化" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "すべて有効化" +msgstr "全て有効化" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -109,8 +110,8 @@ msgstr "Modパックを非表示" msgid "Mod:" msgstr "Mod名:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "保存" @@ -124,7 +125,7 @@ msgstr "有効化" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "ワールド名\"$1\"はすでに使用されています" +msgstr "ワールド名\"$1\"は既に使用されています" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -132,11 +133,12 @@ msgstr "作成" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "minetest.netからminetest_gameのゲームをダウンロードしてください" +msgstr "" +"minetest.netから、minetest_gameなどのサブゲームをダウンロードしてください" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "minetest.netから再ダウンロードしてください" +msgstr "minetest.netからダウンロードしてください" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -156,7 +158,7 @@ msgstr "Seed値" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "警告: Minimal development testは開発者のためのゲームです。" +msgstr "警告: Minimal development testは開発者用です。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -164,43 +166,125 @@ msgstr "ワールド名" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "ゲームがインストールされていません。" +msgstr "サブゲームがインストールされていません。" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "本当に\"$1\"を削除してよろしいですか?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "削除" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "Modマネージャ: \"$1\"の削除に失敗しました" +msgstr "Modマネージャー: \"$1\"の削除に失敗しました" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "Modマネージャ: Mod\"$1\"の場所が不明です" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "いいえ!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "はい" +msgstr "Modマネージャー: Mod\"$1\"の場所が不明です" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "ワールド\"$1\"を削除しますか?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "いいえ" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "決定" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "名前を変更:" +msgstr "Modパック名を変更:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\"は有効なフラグではありません。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(設定の説明はありません)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< 設定ページに戻る" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "参照" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "無効" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "編集" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "有効" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "括弧内に3つの数字をカンマで区切って入力してください。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"書式: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "ゲーム" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mod" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "空隙性の値には、任意でカンマを付けて読みやすくすることができます。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "フラグ一覧はカンマで区切って入力してください。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "有効な整数を入力してください。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "有効な数字を入力してください。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "使用可能な値: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "初期設定に戻す" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "ファイルの場所を選択" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "パラメータ名を表示" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "$1より大きい値でなければいけません。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "$1より小さい値でなければいけません。" #: builtin/mainmenu/modmgr.lua msgid "" @@ -230,7 +314,7 @@ msgstr "" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "閉じる" +msgstr "ストアを閉じる" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." @@ -270,7 +354,7 @@ msgstr "再インストール" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "開発協力者" +msgstr "活動中の開発協力者" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" @@ -296,10 +380,6 @@ msgstr "インストール済みのMod:" msgid "Mod information:" msgstr "Modの情報:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mod" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Modの説明がありません" @@ -321,8 +401,8 @@ msgid "Uninstall selected modpack" msgstr "選択したModパックを削除" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "アドレスとポート:" +msgid "Address / Port" +msgstr "アドレスとポート" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -340,18 +420,17 @@ msgstr "クリエイティブモード" msgid "Damage enabled" msgstr "ダメージ有効" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "削除" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "名前とパスワード:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "お気に入りを削除" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "公開サーバーリスト" +msgid "Favorite" +msgstr "お気に入り" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "名前とパスワード" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -375,7 +454,7 @@ msgstr "クリエイティブモード" msgid "Enable Damage" msgstr "ダメージ有効" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "名前とパスワード" @@ -393,7 +472,7 @@ msgstr "ポート" #: builtin/mainmenu/tab_server.lua msgid "Public" -msgstr "公開サーバー" +msgstr "公開サーバ" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Select World:" @@ -401,101 +480,167 @@ msgstr "ワールドを選択:" #: builtin/mainmenu/tab_server.lua msgid "Server" -msgstr "サーバー" +msgstr "サーバ" #: builtin/mainmenu/tab_server.lua msgid "Server Port" -msgstr "サーバーのポート" +msgstr "サーバのポート" #: builtin/mainmenu/tab_server.lua msgid "Start Game" msgstr "ゲームスタート" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2倍" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "立体な雲" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4倍" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8倍" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "詳細設定" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "アンチエイリアス:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "シングルプレイヤーのワールドをリセットしてよろしいですか?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "バイリニアフィルタ" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "バンプマッピング" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "操作変更" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "無効化" +msgid "Connected Glass" +msgstr "ガラスを繋げる" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "綺麗な葉" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "有効化" +msgid "Mipmap" +msgstr "ミップマップ" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "異方性フィルタ" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Games" -msgstr "ゲーム" +msgid "No" +msgstr "いいえ" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "フィルタ無し" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "ミップマップ無し" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "ノードのハイライト" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "ノードの輪郭線描画" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "無し" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "法線マッピング" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "不透明な葉" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "選択キー" +msgid "Opaque Water" +msgstr "不透明な水" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "視差遮蔽マッピング" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "パーティクル有効化" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "設定" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "シェーダー" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "シンプルな葉" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "滑らかな光" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "テクスチャリング:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "シェーダーを有効にするにはOpenGLを使用する必要があります。" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "ミップマッピング" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "タッチのしきい値(ピクセル)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "トリリニアフィルタ" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "揺れる葉" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "揺れる草花" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "揺れる水" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "はい" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -521,10 +666,6 @@ msgstr "シングルプレイヤー" msgid "No information available" msgstr "情報がありません" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "無し" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "テクスチャパックを選択:" @@ -543,35 +684,31 @@ msgstr "完了!" #: src/client.cpp msgid "Initializing nodes" -msgstr "ノードを設定中" +msgstr "ノードを初期化中" #: src/client.cpp msgid "Initializing nodes..." -msgstr "ノードの設定中..." - -#: src/client.cpp -msgid "Item textures..." -msgstr "テクスチャを設定中..." +msgstr "ノードを初期化中..." #: src/client.cpp msgid "Loading textures..." -msgstr "テクスチャ読み込み中..." +msgstr "テクスチャを読み込み中..." #: src/client.cpp msgid "Rebuilding shaders..." -msgstr "シェーダー構築中..." +msgstr "シェーダーを再構築中..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "接続失敗(またはタイムアウト)" +msgstr "接続エラー (タイムアウト?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "ゲーム\"の読み込みができません" +msgstr "以下のゲームが見つからないか読み込めません \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "無効なgamespecです。" +msgstr "無効なゲーム情報です。" #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -579,11 +716,11 @@ msgstr "メインメニュー" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "ワールドが選択されていないアドレスです。続行できません。" +msgstr "ワールドが選択されていないか存在しないアドレスです。続行できません。" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "名前が長過ぎます。" +msgstr "プレイヤー名が長過ぎます。" #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -599,7 +736,7 @@ msgid "" "Check debug.txt for details." msgstr "" "\n" -"詳細はdebug.txtをご覧ください。" +"詳細はdebug.txtを確認してください。" #: src/game.cpp msgid "Change Keys" @@ -611,7 +748,7 @@ msgstr "パスワード変更" #: src/game.cpp msgid "Connecting to server..." -msgstr "サーバー接続中..." +msgstr "サーバに接続中..." #: src/game.cpp msgid "Continue" @@ -619,11 +756,11 @@ msgstr "再開" #: src/game.cpp msgid "Creating client..." -msgstr "クライアント起動中..." +msgstr "クライアントを起動中..." #: src/game.cpp msgid "Creating server..." -msgstr "サーバー起動中..." +msgstr "サーバを起動中..." #: src/game.cpp msgid "" @@ -639,17 +776,17 @@ msgid "" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" -"基本操作:\n" +"デフォルトの操作:\n" "- WASD: 移動\n" -"- スペース: ジャンプ、登る\n" -"- Shift: スニーク、降りる\n" +"- スペース: ジャンプ/登る\n" +"- Shift: スニーク/降りる\n" "- Q: アイテムを落とす\n" "- I: インベントリ\n" "- マウス: 見回す\n" -"- 左クリック: 破壊、パンチ\n" -"- 右クリック: 設置、使用\n" -"- ホイール: アイテム選択\n" -"- T: チャット画面\n" +"- 左クリック: 破壊/パンチ\n" +"- 右クリック: 設置/使用\n" +"- マウスホイール: アイテム選択\n" +"- T: チャット\n" #: src/game.cpp msgid "" @@ -666,12 +803,12 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" -"基本操作:\n" +"デフォルトの操作:\n" "タッチ操作:\n" "- シングルタップ: ブロックの破壊\n" -"- ダブルタップ: 設置、使用\n" +"- ダブルタップ: 設置/使用\n" "- スライド: 見回す\n" -"メニュー、インベントリの操作:\n" +"メニュー/インベントリの操作:\n" "- メニューの外をダブルタップ:\n" " --> 閉じる\n" "- アイテムをタッチ:\n" @@ -689,7 +826,7 @@ msgstr "終了" #: src/game.cpp msgid "Item definitions..." -msgstr "アイテム定義中..." +msgstr "アイテムを定義中..." #: src/game.cpp msgid "KiB/s" @@ -705,15 +842,11 @@ msgstr "MB/秒" #: src/game.cpp msgid "Node definitions..." -msgstr "ノード定義中..." - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "決定" +msgstr "ノードを定義中..." #: src/game.cpp msgid "Resolving address..." -msgstr "アドレス解決中..." +msgstr "アドレスを解決中..." #: src/game.cpp msgid "Respawn" @@ -731,12 +864,16 @@ msgstr "音量" msgid "You died." msgstr "死にました。" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "決定" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "エンター " #: src/guiFormSpecMenu.cpp -msgid "ok" +msgid "Proceed" msgstr "決定" #: src/guiKeyChangeMenu.cpp @@ -786,8 +923,8 @@ msgstr "キーが重複しています" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"操作設定です。(変更に失敗した場合、minetest.confから該当する設定を削除してく" -"ださい)" +"操作設定です。 (変更に失敗した場合、minetest.confから該当する設定を削除してく" +"ださい)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" @@ -879,15 +1016,15 @@ msgstr "Caps Lock" #: src/keycode.cpp msgid "Clear" -msgstr "消す" +msgstr "クリア" #: src/keycode.cpp msgid "Comma" -msgstr "読点" +msgstr "," #: src/keycode.cpp msgid "Control" -msgstr "コントロール" +msgstr "Ctrl" #: src/keycode.cpp msgid "Convert" @@ -903,7 +1040,7 @@ msgstr "下" #: src/keycode.cpp msgid "End" -msgstr "終了" +msgstr "エンド" #: src/keycode.cpp msgid "Erase OEF" @@ -1149,21 +1286,37 @@ msgstr "Xボタン2" msgid "Zoom" msgstr "ズーム" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"(X,Y,Z)『スケール』の単位の世界センターからのフラクタルのオフセット。\n" +"動きに低い土地の適当な卵区域を使われます(0、0)。\n" +"デフォルトはmandelbrotセットに適しています、それはjuliaセットのために編集され" +"る必要があります。\n" +"およそ-2~2変動してください。ノードでオフセットのために『スケール』によって増" +"えてください。" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = 斜面情報付きの視差遮蔽マッピング(高速)。\n" +"1 = リリーフマッピング(正確だが低速)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" -msgstr "3Dの雲" +msgstr "立体な雲" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "飛行モード" +msgstr "3Dモード" #: src/settings_translation_file.cpp msgid "" @@ -1173,38 +1326,60 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3Dサポート\n" +"サポートしている出力:\n" +"- none: 3D出力を行いません。\n" +"- anaglyph: 赤/青の色による3Dです。\n" +"- interlaced: 偶数/奇数のラインをベースで偏光式スクリーンに対応していま" +"す。\n" +"- topbottom: 画面を上下で分割します。\n" +"- sidebyside: 画面を左右で分割します。" #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"新規マップを作成する際の初期シード値です。空にするとランダムに設定されま" +"す。\n" +"ワールドを新規作成する際にシード値を入力すると上書きされます。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "サーバクラッシュ時に全てのクライアントへ表示するメッセージ。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "サーバ終了時に全てのクライアントへ表示するメッセージ。" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "エマージキューの絶対的な制限値" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "空中での加速" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "アクティブなブロックの範囲" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "アクティブなブロックの範囲" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "アクティブなブロックの範囲" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "アクティブなオブジェクトの送信の範囲" #: src/settings_translation_file.cpp msgid "" @@ -1212,398 +1387,587 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"接続先のアドレスです。\n" +"ローカルサーバを起動する際は空白に設定してください。\n" +"メインメニューのアドレス欄は、この設定を上書きすることに注意してください。" #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"4kスクリーンなどのための、画面の解像度の設定です (非X11/Android環境のみ)。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"光のテーブルのガンマ補正を調整します。数値が低くなるほど明るくなります。\n" +"この設定はクライアント用であり、サーバの設定は無視されます。" #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "詳細" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Altitude Chill" +msgstr "高所の寒さ" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "飛行時に加速する" #: src/settings_translation_file.cpp +#, fuzzy msgid "Ambient occlusion gamma" -msgstr "" +msgstr "アンビエントオクルージョンガンマ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Amplifies the valleys" +msgstr "谷の高低差" #: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "" +msgstr "異方性フィルタリング" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "サーバを公開" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Announce to this serverlist.\n" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"公開サーバの通知先のサーバ一覧です。\n" +"IPv6アドレスを通知したい場合は、serverlist_url = v6.servers.minetest.netを使" +"用してください。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "ノードにおけるフラクタルのおおよその(X,Y,Z)の大きさ。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "クラッシュ後に再接続を促す" #: src/settings_translation_file.cpp #, fuzzy +msgid "Automaticaly report to the serverlist." +msgstr "自動的にサーバ一覧に報告します。" + +#: src/settings_translation_file.cpp msgid "Backward key" -msgstr "後退" +msgstr "後キー" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "水が揺れる高さ" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "基本" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "標準権限" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" -msgstr "バイリニアフィルタ" +msgstr "バイリニアフィルタリング" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "バインドアドレス" #: src/settings_translation_file.cpp +#, fuzzy msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "フルスクリーンモードでの1ピクセル(色深度)あたりのビット数。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Build inside player" -msgstr "" +msgstr "プレイヤーの位置に設置" #: src/settings_translation_file.cpp msgid "Bumpmapping" msgstr "バンプマッピング" #: src/settings_translation_file.cpp +#, fuzzy msgid "Camera smoothing" -msgstr "" +msgstr "滑らかなカメラ" #: src/settings_translation_file.cpp +#, fuzzy msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "映画風モードでのカメラの滑らかさ" #: src/settings_translation_file.cpp +#, fuzzy msgid "Camera update toggle key" +msgstr "カメラ更新切り替えキー" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Cave noise #1" +msgstr "洞窟ノイズ#1" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Cave noise #2" +msgstr "洞窟ノイズ#2" + +#: src/settings_translation_file.cpp +msgid "Cave width" msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "洞窟やトンネルは2つのノイズの交差部分に形成されます" + +#: src/settings_translation_file.cpp msgid "Chat key" -msgstr "操作変更" +msgstr "チャットキー" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "チャットトグルキー" #: src/settings_translation_file.cpp #, fuzzy -msgid "Chat toggle key" -msgstr "操作変更" +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"9つの形式からなる18のフラクタルの選択。\n" +"1 = 4D 「Roundy」 マンデルブロ集合。\n" +"2 = 4D 「Roundy」 ジュリア集合。\n" +"3 = 4D \"Squarry\" マンデルブロ集合。\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "チャンクサイズ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "クリエイティブモード" +msgstr "映画風モード" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "クリエイティブモード" +msgstr "映画風モード切り替えキー" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "テクスチャの透過を削除" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "クライアントとサーバ" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "上る速度" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "雲の高さ" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "雲の半径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3Dの雲" +msgstr "雲" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "雲はクライアント側で描画されます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "メインメニュー" +msgstr "メニューに雲" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "色つきの霧" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"流行の最先端の安全対策がオンの(request_insecure_environment()を通して)と" +"きでも、不安定な機能にアクセスしてもよい信用されたモッズのコンマで区切られた" +"リスト。" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"HTTP API(彼らがインターネットに出入りするデータをアップロードして、ダウン" +"ロードするのを許します)にアクセスしてもよいモッズのコンマseperatedされたリス" +"ト。" + +#: src/settings_translation_file.cpp msgid "Command key" -msgstr "コマンド" +msgstr "コマンドキー" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" msgstr "ガラスを繋げる" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "サーバー接続中..." +msgstr "外部メディアサーバに接続中" #: src/settings_translation_file.cpp +#, fuzzy msgid "Connects glass if supported by node." -msgstr "" +msgstr "ノードが対応している場合は、ガラスを繋ぎます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "コンソール" +msgstr "コンソールアルファ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "コンソール" +msgstr "コンソール色" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "コンソール" - -#: src/settings_translation_file.cpp -msgid "Continuous forward" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "コンソールキー" #: src/settings_translation_file.cpp #, fuzzy -msgid "Controls" -msgstr "コントロール" +msgid "Continuous forward" +msgstr "オートラン" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Continuous forward movement (only used for testing)." +msgstr "オートラン (テスト用)。" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "操作" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Controls length of day/night cycle.\n" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"昼夜交代の長さを制御します。\n" +"例: 72 = 20分、360 = 4分、1 = 24時間、0 = 時間は変更されません。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"砂漠の規制サイズとMapgen v6のビーチ。\n" +"snowbiomesが許可されるとき、『mgv6_freq_desert』は無視されます。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Controls steepness/depth of lake depressions." +msgstr "湖底の険しさ/深さの設定。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Controls steepness/height of hills." +msgstr "丘の険しさ/高さの設定。" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crouch speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "DPI" -msgstr "" +msgstr "クラッシュメッセージ" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"洞窟に予測不可能な溶岩を生成します。\n" +"これによって採掘を難しくできます。ゼロを指定すると無効になります。(0-10)" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"洞窟に予測不可能な水を生成します。\n" +"これによって採掘を難しくできます。ゼロを指定すると無効になります。(0-10)" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "照準の透過度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "照準線の透過 (不透明性、0から255)" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "照準線の色" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Crosshair color (R,G,B)." +msgstr "照準線の色 (R、G、B)。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Crouch speed" +msgstr "しゃがみ状態の速度" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "DPI" + +#: src/settings_translation_file.cpp msgid "Damage" -msgstr "ダメージ有効" +msgstr "ダメージ" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "デバッグ情報切り替えキー" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "デバッグログのレベル" #: src/settings_translation_file.cpp +#, fuzzy msgid "Dedicated server step" -msgstr "" +msgstr "サーバのステップ" #: src/settings_translation_file.cpp +#, fuzzy msgid "Default acceleration" -msgstr "" +msgstr "標準の加速度" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "標準ゲーム" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"新しいワールドを作成する際の標準のゲームです。\n" +"メインメニューでワールドを作成する際に上書きされる可能性があります。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "新しいパスワード" +msgstr "既定パスワード" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "標準権限" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"cURL(ミリ秒に述べられる)のためのデフォルト・タイムアウト。\n" +"cURLで編集されるならば、影響を持っているだけです。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." #: src/settings_translation_file.cpp +#, fuzzy msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." -msgstr "" +msgstr "ブロック(0無制限の=)で、最大限のプレーヤー移転距離を定めます。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "ツールチップを表示するまでの遅延です。ミリ秒で指定してください。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Deprecated Lua API handling" -msgstr "" +msgstr "廃止予定のLua APIの処理" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Depth below which you'll find large caves." +msgstr "あなたが大きな洞穴を見つける深さ。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Depth below which you'll find massive caves." +msgstr "あなたが大きい洞穴を見つける深さ。" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "Descending speed" -msgstr "" +msgstr "降りる速度" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Description of server, to be displayed when players join and in the " "serverlist." -msgstr "" +msgstr "サーバの説明です。プレイヤーがサーバ一覧から接続する際に表示されます。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Desynchronize block animation" -msgstr "" +msgstr "ブロックのアニメーションの非同期化" #: src/settings_translation_file.cpp +#, fuzzy msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "詳細なModのプロファイルデータです。Mod開発者に便利です。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Detailed mod profiling" -msgstr "" +msgstr "詳細なModのプロファイル化" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"地形形を決定します。\n" +"ブラケットの3番号は地形の目盛りを制御します、\n" +"3番号は同一でなければなりません。" + +#: src/settings_translation_file.cpp msgid "Disable anticheat" -msgstr "パーティクル有効化" - -#: src/settings_translation_file.cpp -msgid "Disallow empty passwords" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "対チート機関無効化" #: src/settings_translation_file.cpp #, fuzzy +msgid "Disallow empty passwords" +msgstr "空のパスワードを無効化" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "サーバのドメイン名です。サーバ一覧に表示されます。" + +#: src/settings_translation_file.cpp msgid "Double tap jump for fly" msgstr "「ジャンプ」キー二回押しで飛行モード" #: src/settings_translation_file.cpp #, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "「ジャンプ」キー二回押しで飛行モード" - -#: src/settings_translation_file.cpp -msgid "Drop item key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dump the mapgen debug infos." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgstr "「ジャンプ」キー二回押しで飛行モード。" #: src/settings_translation_file.cpp #, fuzzy +msgid "Drop item key" +msgstr "アイテムを捨てるキー" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Dump the mapgen debug infos." +msgstr "マップ生成のデバッグ情報を出力します。" + +#: src/settings_translation_file.cpp +msgid "Enable VBO" +msgstr "有効化" + +#: src/settings_translation_file.cpp msgid "Enable mod security" -msgstr "オンラインでModを検索" +msgstr "Modのセキュリティを有効化" #: src/settings_translation_file.cpp +#, fuzzy msgid "Enable players getting damage and dying." -msgstr "" +msgstr "損害を得ていて、死んでいるプレーヤーを使用可能にしてください。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Enable random user input (only used for testing)." msgstr "" +"入力される(テストのために使われるだけの)ランダムなユーザーに許可を与えてく" +"ださい。" #: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - -#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"単純な周囲の閉塞でスムーズな照明を使用可能にしてください。\n" +"速度のために、または、異なるルックスのために働かなくしてください。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enable to disallow old clients from connecting.\n" "Older clients are compatible in the sense that they will not crash when " @@ -1611,167 +1975,239 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"つながることから古いクライアントを認めないのを可能にしてください。\n" +"新しいサーバーに接続するとき彼らが完敗しないという点で、年上の依頼人は互換性" +"を持ちます、しかし、彼らがあなたが期待しているすべての新機能を支えるというわ" +"けではないかもしれません。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enable usage of remote media server (if provided by server).\n" "Remote servers offer a significantly faster way to download media (e.g. " "textures)\n" "when connecting to the server." msgstr "" +"遠隔メディア・サーバー(サーバーで提供されるならば)の使用法をイネーブルして" +"ください。\n" +"サーバーに接続するとき、遠隔サーバーはメディア(例えばテクスチャー)をダウン" +"ロードするかなりより高速道を提供します。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enable/disable running an IPv6 server. An IPv6 server may be restricted\n" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"IPv6サーバーを動かすことを可能にして/働かなくしてください。システム構成に従" +"い、IPv6サーバーは、IPv6クライアントに制限されるかもしれません。\n" +"bind_addressがセットされるならば、無視されます。" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables animation of inventory items." +msgstr "インベントリのアイテムのアニメーションを有効にします。" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " "texture pack\n" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enables caching of facedir rotated meshes." -msgstr "" +"テクスチャーのためにbumpmappingすることを可能にします。ノル悪地図はテクス" +"チャー・パックで供給される必要があるか、自動発生する必要があります。\n" +"許可されることを遮光物に要求します。" #: src/settings_translation_file.cpp #, fuzzy -msgid "Enables minimap." -msgstr "ダメージ有効" +msgid "Enables caching of facedir rotated meshes." +msgstr "facedir回転するメッシュのキャッシングを可能にします。" #: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "ミニマップを有効にする。" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "ミニマップを有効にする。" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"自動的にその場で、ノル悪地図生成(影響に浮彫りします)を可能にします。\n" +"許可されるためにbumpmappingすることを必要とします。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"視差オクルージョンマッピングを有効にします。\n" +"シェーダーが有効である必要があります。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" - -#: src/settings_translation_file.cpp -msgid "FPS in pause menu" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "FSAA" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fall bobbing" -msgstr "" +"0より高い数に設定されるとき、実験的なオプションはブロックの間の見える隙間を引" +"き起こすかもしれません。" #: src/settings_translation_file.cpp #, fuzzy +msgid "FPS in pause menu" +msgstr "ポーズメニューのFPS" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "FSAA" +msgstr "アンチエイリアス" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Fall bobbing" +msgstr "落下による上下の揺れ" + +#: src/settings_translation_file.cpp msgid "Fallback font" -msgstr "yes" +msgstr "フォールバックフォント" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fallback font shadow" -msgstr "" +msgstr "フォールバックフォントの影" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fallback font shadow alpha" -msgstr "" +msgstr "フォールバックフォントの影の透過" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fallback font size" -msgstr "" +msgstr "フォールバックフォントの大きさ" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fast key" -msgstr "" +msgstr "高速移動キー" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fast mode acceleration" -msgstr "" +msgstr "高速モードの加速度" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fast mode speed" -msgstr "" +msgstr "高速モードの速度" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fast movement" -msgstr "" +msgstr "高速移動" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"高速移動 (使用キー)。\n" +"サーバによる「fast」権限が必要です。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Field of view" -msgstr "" +msgstr "視野" #: src/settings_translation_file.cpp +#, fuzzy msgid "Field of view in degrees." -msgstr "" +msgstr "視野角。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"マルチプレーヤー・タブで示されるあなたの大好きなサーバーを含むclient/" +"serverlist/でファイルしてください。" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Filler Depth" +msgstr "詰め物深さ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Filmic tone mapping" +msgstr "映画トーン・マッピング" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" "which PNG optimizers usually discard, sometimes resulting in a dark or\n" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"フィルタ処理したテクスチャーは、透明なテクスチャーに暗いか明るい端に終わっ" +"て、RGBの価値と完全に透明な隣人(それをPNGオプティマイザーは通常捨てます)" +"を、時々混ぜ合わせることができます。テクスチャー荷時間にそれをきれいにするた" +"めに、このフィルタを使用してください。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "フィルタ無し" - -#: src/settings_translation_file.cpp -msgid "Fixed map seed" -msgstr "" +msgstr "フィルタリング" #: src/settings_translation_file.cpp #, fuzzy +msgid "Fixed map seed" +msgstr "固定マップシード値" + +#: src/settings_translation_file.cpp msgid "Fly key" -msgstr "飛行モード" +msgstr "飛行キー" #: src/settings_translation_file.cpp +#, fuzzy msgid "Flying" -msgstr "" +msgstr "飛行" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fog" -msgstr "" +msgstr "霧" #: src/settings_translation_file.cpp +#, fuzzy msgid "Fog toggle key" -msgstr "" +msgstr "霧切り替えキー" #: src/settings_translation_file.cpp +#, fuzzy msgid "Font path" -msgstr "" +msgstr "フォントパス" #: src/settings_translation_file.cpp +#, fuzzy msgid "Font shadow" -msgstr "" +msgstr "フォントの影" #: src/settings_translation_file.cpp +#, fuzzy msgid "Font shadow alpha" -msgstr "" +msgstr "フォントの影の透過" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." @@ -1786,9 +2222,12 @@ msgid "Font size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Forward key" -msgstr "前進" +msgstr "前キー" #: src/settings_translation_file.cpp msgid "Freetype fonts" @@ -1812,7 +2251,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "全画面表示" #: src/settings_translation_file.cpp msgid "Full screen BPP" @@ -1827,7 +2266,6 @@ msgid "GUI scaling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" msgstr "メニューの大きさ" @@ -1840,26 +2278,37 @@ msgid "Gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "ノーマルマップの生成" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "グラフィック" #: src/settings_translation_file.cpp msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "Mod" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1872,6 +2321,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1885,7 +2338,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1894,6 +2347,7 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Mapblock (16ノード) 数でオブジェクトのロードやABMの実効等の有効エリアを指定。" #: src/settings_translation_file.cpp msgid "" @@ -1910,6 +2364,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1929,21 +2387,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "無効化" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "有効化" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1981,7 +2441,6 @@ msgid "Ignore world errors" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" msgstr "ゲーム" @@ -2002,9 +2461,12 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "インベントリ" +msgstr "インベントリキー" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -2019,9 +2481,43 @@ msgid "Item entity TTL" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Jump key" -msgstr "ジャンプ" +msgstr "ジャンプキー" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -2029,7 +2525,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2043,7 +2539,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2240,6 +2736,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2253,9 +2757,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "左メニュー" +msgstr "左キー" #: src/settings_translation_file.cpp msgid "" @@ -2263,6 +2766,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2325,14 +2836,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "メインメニュー" +msgstr "メインメニューMod管理" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "メインメニュー" +msgstr "メインメニュースクリプト" #: src/settings_translation_file.cpp msgid "" @@ -2349,21 +2858,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2382,6 +2921,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "マップ生成名" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2395,27 +2938,142 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "ワールドタイプ" +msgstr "マップ生成のデバグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "マップ生成フラグ" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "ワールドタイプ" +msgid "Mapgen flat cave width" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "視差遮蔽マッピング" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "視差遮蔽マッピング" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "マップ生成フラグ" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "マップ生成フラグ" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" +msgstr "マップ生成名" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" msgstr "ワールドタイプ" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" +msgid "Mapgen v5 cave width" msgstr "ワールドタイプ" #: src/settings_translation_file.cpp @@ -2439,7 +3097,6 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" msgstr "ワールドタイプ" @@ -2500,10 +3157,14 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" msgstr "ワールドタイプ" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "ワールドタイプ" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2552,6 +3213,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2645,7 +3318,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "" +msgstr "ファイルダウンロード (例: Modのダウンロード)の最大経過時間。" #: src/settings_translation_file.cpp msgid "Maximum users" @@ -2656,7 +3329,6 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" msgstr "メニュー" @@ -2672,6 +3344,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2689,16 +3365,8 @@ msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "バンプマッピング" +msgstr "ミップマッピング" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2764,7 +3432,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "ネットワーク" #: src/settings_translation_file.cpp msgid "" @@ -2772,10 +3440,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2789,14 +3453,21 @@ msgid "Noclip key" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" msgstr "ノードをハイライト" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2838,36 +3509,26 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "視差遮蔽マッピング" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" msgstr "視差遮蔽マッピング" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" msgstr "視差遮蔽マッピング" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" msgstr "視差遮蔽マッピング" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" msgstr "視差遮蔽マッピング" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "視差遮蔽マッピング" +msgstr "視差遮蔽マッピングモード" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" msgstr "視差遮蔽マッピング" @@ -2890,13 +3551,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "名前が長過ぎます。" +msgstr "プレイヤ名" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2913,20 +3573,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "テクスチャ読み込み中..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2948,12 +3599,15 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" msgstr "視野範囲変更" @@ -2970,14 +3624,29 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "右メニュー" +msgstr "右キー" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3005,25 +3674,41 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "画面高" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "画面幅" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Snapshot" +msgstr "スクリーンショット" #: src/settings_translation_file.cpp msgid "Screenshot folder" msgstr "" #: src/settings_translation_file.cpp -msgid "Security" +#, fuzzy +msgid "Screenshot format" +msgstr "スクリーンショット" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "スクリーンショット" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "セキュリティ" + #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" msgstr "" @@ -3034,51 +3719,43 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "ノード選択線の色" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "ノード選択線の幅" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "シングルプレイ開始" +msgstr "サーバ / シングルプレイヤー" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "サーバー" +msgstr "サーバURL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "サーバーのポート" +msgstr "サーバアドレス" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "サーバーのポート" +msgstr "サーバポート" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "サーバー" +msgstr "サーバ名" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "サーバーのポート" +msgstr "サーバポート" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "公開サーバーリスト" +msgstr "サーバ一覧URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "公開サーバーリスト" +msgstr "サーバ一覧ファイル" #: src/settings_translation_file.cpp msgid "" @@ -3104,10 +3781,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "シェーダー" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3123,6 +3796,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3134,13 +3811,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" -msgstr "滑らかな光" +msgstr "滑らかな照明" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3153,13 +3833,12 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "スニーク" +msgstr "スニークキー" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "サウンド" #: src/settings_translation_file.cpp msgid "" @@ -3174,7 +3853,6 @@ msgid "Static spawnpoint" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." msgstr "ノーマルマップの生成" @@ -3186,20 +3864,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "テクスチャ" +msgid "Terrain Height" +msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "テクスチャパス" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3241,6 +3941,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3276,9 +3980,8 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "トリリニアフィルタ" +msgstr "トリリニアフィルタリング" #: src/settings_translation_file.cpp msgid "" @@ -3320,9 +4023,8 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "キー入力待ち" +msgstr "使用キー" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." @@ -3333,16 +4035,35 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "以前の開発者" +msgstr "Mod開発に便利。" #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3351,12 +4072,18 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "ビデオドライバ" #: src/settings_translation_file.cpp msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3366,69 +4093,64 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "音量" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "揺れる葉" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "歩く速度" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "テクスチャを設定中..." #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "水位" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "ワールドの水面の高さです。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "揺れる葉" +msgstr "揺れるノード" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "揺れる葉" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "揺れる草花" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "揺れる水" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "揺れる水" +msgstr "水の揺れる高さ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "揺れる水" +msgstr "水の揺れる丈" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "揺れる水" +msgstr "水の揺れる速度" #: src/settings_translation_file.cpp msgid "" @@ -3465,128 +4187,143 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"どこでマップ生成を停止するかの設定です。\n" +"注意:\n" +"- 最大で31000です(これ以上に設定しても効果はありません)。\n" +"- マップ生成は80x80x80ノードのグループで動作します (5x5x5マップブロッ" +"ク)。\n" +"- このグループは原点から-32、-32ノードのオフセットがあります。\n" +"- グループはmap_generation_limit内で生成されたものに限ります。" #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." msgstr "" +"Freetypeフォントを利用するかどうかの設定です。Freetypeをサポートするビルドで" +"ある必要があります。" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" +"ノードのテクスチャのアニメーションをマップブロックごとに非同期にするかどうか" +"の設定です。" #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"視界の範囲に関わらずクライアントにプレイヤーを表示するかどうかの設定です。\n" +"非推奨です。player_transfer_distance instead設定を利用してください。" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "他のプレイヤーを殺すことができるかどうかの設定です。" #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"(Luaが)クラッシュした際にクライアントに再接続を要求するかどうかの設定です。\n" +"サーバが自動で再起動されるように設定されているならばtrueに設定してください。" #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "可視領域の端に霧を表示するかどうかの設定です。" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"クライアントのデバッグ情報を表示するかどうかの設定です(F5を押すのと同じ効" +"果)。" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "ウィンドウ幅の初期値。" #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "ノードを選択した際に表示される線の幅です。" #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"ワールドを保存するディレクトリです(全てのワールドはここに保存されます)。\n" +"メインメニューから開始する場合必要ありません。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Y of flat ground." +msgstr "フラットマップの地面の高さ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Y of upper limit of large pseudorandom caves." +msgstr "大きい擬似ランダム洞窟の高さ(Y)の上限。" #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "cURLファイルダウンロードタイムアウト" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "cURLパラレル制限" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURLタイムアウト" -#~ msgid "Rendering:" -#~ msgstr "レンダリング:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "ドライバーを変更するためMinetestを再起動します" - -#~ msgid " MB/s" -#~ msgstr " MB/秒" - -#~ msgid " KB/s" -#~ msgstr " KB/秒" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "タッチのしきい値(ピクセル)" - -#~ msgid "Touch free target" -#~ msgstr "タッチ位置を自由にする" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "シェーダーを有効にするにはOpenGLを使用する必要があります。" - -#~ msgid "Texturing:" -#~ msgstr "テクスチャリング:" - -#~ msgid "Simple Leaves" -#~ msgstr "シンプルな葉" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "メニューの大きさとして設定されている数値: " +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "テクスチャ読み込み中..." #~ msgid "Reset singleplayer world" #~ msgstr "シングルプレイヤーのワールドをリセット" -#~ msgid "Opaque Water" -#~ msgstr "不透明な水" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "メニューの大きさとして設定されている数値: " -#~ msgid "Opaque Leaves" -#~ msgstr "不透明な葉" +#~ msgid "Touch free target" +#~ msgstr "タッチ位置を自由にする" + +#~ msgid " KB/s" +#~ msgstr " KB/秒" + +#~ msgid " MB/s" +#~ msgstr " MB/秒" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "ドライバーを変更するためMinetestを再起動します" + +#~ msgid "Rendering:" +#~ msgstr "レンダリング:" + +#~ msgid "If enabled, " +#~ msgstr "有効化の場合 " + +#~ msgid "If disabled " +#~ msgstr "無効化の場合 " #~ msgid "No!!!" #~ msgstr "いいえ!!!" -#~ msgid "No Mipmap" -#~ msgstr "ミップマップ無し" +#~ msgid "Generate Normalmaps" +#~ msgstr "ノーマルマップの生成" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "異方性フィルタ" +#~ msgid "Public Serverlist" +#~ msgstr "公開サーバ一覧" -#~ msgid "Mipmap" -#~ msgstr "ミップマップ" - -#~ msgid "Fancy Leaves" -#~ msgstr "綺麗な葉" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "シングルプレイヤーのワールドをリセットしてよろしいですか?" - -#~ msgid "Antialiasing:" -#~ msgstr "アンチエイリアス:" - -#~ msgid "8x" -#~ msgstr "8倍" - -#~ msgid "4x" -#~ msgstr "4倍" - -#~ msgid "2x" -#~ msgstr "2倍" +#~ msgid "No of course not!" +#~ msgstr "いいえ!" diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po index 9a7ffaa5..522433c1 100644 --- a/po/jbo/minetest.po +++ b/po/jbo/minetest.po @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-08-15 16:30+0200\n" -"Last-Translator: Wuzzy \n" -"Language-Team: Lojban \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-08 17:39+0000\n" +"Last-Translator: senpi \n" +"Language-Team: Lojban " +"\n" "Language: jbo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" @@ -25,7 +25,7 @@ msgstr "" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "lo selsrera cu pu fasnu:" #: builtin/fstk/ui.lua #, fuzzy @@ -43,7 +43,7 @@ msgstr "samjongau" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "le samse'u cu pu cpedu lo nu samjongau" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,11 +51,11 @@ msgstr ".i ca'o samymo'i" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "le ve judrnporte favatcini na mapti" #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "le samci'ejudri cu jitro lo du'u ve judrnporte favytcini li $1" #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " @@ -74,8 +74,10 @@ msgid "We support protocol versions between version $1 and $2." msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "fitytoltu'i" @@ -114,8 +116,8 @@ msgstr "" msgid "Mod:" msgstr "" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "rejgau" @@ -175,6 +177,12 @@ msgstr "" msgid "Are you sure you want to delete \"$1\"?" msgstr ".i xu do je'u djica lo nu vimcu la'o gy.$1.gy." +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "vimcu" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "" @@ -183,22 +191,10 @@ msgstr "" msgid "Modmgr: invalid modpath \"$1\"" msgstr "" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "nasai go'i" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "go'i" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr ".i xu do djica lo nu vimcu lo munje be me'e zoi gy.$1.gy." -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "na go'i" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "fitytu'i" @@ -207,6 +203,94 @@ msgstr "fitytu'i" msgid "Rename Modpack:" msgstr "" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Disabled" +msgstr "selpli" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Enabled" +msgstr "selpli" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -298,10 +382,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -323,7 +403,8 @@ msgid "Uninstall selected modpack" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "lo samjudri jo'u judrnporte" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -342,19 +423,19 @@ msgstr "le nu finti kelci" msgid "Damage enabled" msgstr "" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "vimcu" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "lo cmene .e lo lerpoijaspu" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" +msgid "Favorite" msgstr "" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "lo cmene .e lo lerpoijaspu" + #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -377,7 +458,7 @@ msgstr "le nu finti kelci" msgid "Enable Damage" msgstr "" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "lo cmene .e lo lerpoijaspu" @@ -415,88 +496,173 @@ msgid "Start Game" msgstr "cfari fa lo nu kelci" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "le bliku dilnu" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr ".i xu do je'u djica lo nu kraga'igau le do za'e pavykelci munje" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "lo puvyrelyli'iju'e" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "lo puvrmipmepi" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "selpli" +msgid "Connected Glass" +msgstr "lo jorne blaci" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "lo tolkli pezli" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap" +msgstr "lo puvrmipmepi" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "lo puvrmipmepi .e lo puvytolmanfyju'e" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "na go'i" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "selpli" +msgid "No Mipmap" +msgstr "lo puvrmipmepi" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +#, fuzzy +msgid "Node Highlighting" +msgstr "lo xutla se gusni" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "lo xutla se gusni" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Games" +#, fuzzy +msgid "Normal Mapping" +msgstr "lo puvrmipmepi" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "lo tolkli pezli" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "lo tolkli djacu" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Select path" -msgstr "" +#, fuzzy +msgid "Particles" +msgstr "lo kantu" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "lo ti'orkemsamtci" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Simple Leaves" +msgstr "lo sampu pezli" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Smooth Lighting" +msgstr "lo xutla se gusni" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "lo puvrmipmepi" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Trilinear Filter" +msgstr "lo puvycibli'iju'e" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "lo melbi pezli" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "lo melbi pezli" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "lo melbi pezli" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "go'i" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -522,10 +688,6 @@ msgstr "pa kelci" msgid "No information available" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -550,10 +712,6 @@ msgstr ".i ca'o samymo'i lo me la'o gy.node.gy." msgid "Initializing nodes..." msgstr ".i ca'o samymo'i lo me la'o gy.node.gy." -#: src/client.cpp -msgid "Item textures..." -msgstr ".i ca'o samymo'i le dacti ke tengu datnyvei" - #: src/client.cpp msgid "Loading textures..." msgstr ".i ca'o samymo'i le tengu datnyvei" @@ -685,10 +843,6 @@ msgstr "" msgid "Node definitions..." msgstr ".i ca'o samymo'i tu'a lo me la'o gy.node.gy." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "" - #: src/game.cpp msgid "Resolving address..." msgstr ".i ca'o troci lo nu facki lo samjudri" @@ -709,14 +863,18 @@ msgstr "" msgid "You died." msgstr ".i do pu morsi" +#: src/game.cpp src/guiFormSpecMenu.cpp +#, fuzzy +msgid "ok" +msgstr "je'e" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -#, fuzzy -msgid "ok" -msgstr "je'e" +msgid "Proceed" +msgstr "" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1126,6 +1284,15 @@ msgstr "la'o gy.X Button 2.gy." msgid "Zoom" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1149,7 +1316,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1174,6 +1342,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1205,6 +1381,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1213,6 +1393,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1228,6 +1412,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1241,10 +1429,18 @@ msgstr "" msgid "Backward key" msgstr "za'i ti'a muvdu" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1279,6 +1475,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1288,6 +1500,29 @@ msgstr "samta'a" msgid "Chat toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1346,6 +1581,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1398,14 +1639,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1493,6 +1758,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1515,6 +1788,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1545,8 +1825,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "selpli" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1560,10 +1841,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1594,6 +1871,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1606,6 +1887,10 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "Enables minimap." msgstr "" @@ -1676,7 +1961,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1693,6 +1978,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1749,6 +2042,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1802,6 +2099,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1809,9 +2110,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1822,6 +2127,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1834,6 +2143,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1847,7 +2160,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1872,6 +2185,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1891,20 +2208,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "If disabled " +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "selpli" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1961,6 +2281,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -1978,6 +2302,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -1989,7 +2348,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2003,7 +2362,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2200,6 +2559,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2223,6 +2590,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2309,21 +2684,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2342,6 +2747,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2362,6 +2771,118 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2374,6 +2895,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2458,6 +2983,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2506,6 +3035,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2625,6 +3166,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2641,13 +3186,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2725,10 +3263,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2745,10 +3279,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2789,10 +3331,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2836,7 +3374,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2858,20 +3396,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr ".i ca'o samymo'i le tengu datnyvei" - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2893,6 +3422,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2923,6 +3456,22 @@ msgstr "za'i ri'u muvdu" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -2964,6 +3513,21 @@ msgstr "" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3047,10 +3611,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "lo ti'orkemsamtci" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3066,6 +3626,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3076,6 +3640,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3083,7 +3651,7 @@ msgstr "lo xutla se gusni" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3128,19 +3696,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3182,6 +3773,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3282,7 +3877,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3297,6 +3912,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3306,11 +3927,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3318,13 +3935,22 @@ msgstr "" msgid "Volume" msgstr "lo ni sance " +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr ".i ca'o samymo'i le dacti ke tengu datnyvei" #: src/settings_translation_file.cpp msgid "Water level" @@ -3434,6 +4060,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3444,6 +4082,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3456,23 +4102,19 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Simple Leaves" -#~ msgstr "lo sampu pezli" +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr ".i ca'o samymo'i le tengu datnyvei" #~ msgid "Reset singleplayer world" #~ msgstr "kraga'igau le za'e pavykelci munje" -#~ msgid "Opaque Water" -#~ msgstr "lo tolkli djacu" - -#~ msgid "Opaque Leaves" -#~ msgstr "lo tolkli pezli" +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "selpli" #~ msgid "No!!!" #~ msgstr "nasai go'i" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "lo puvrmipmepi .e lo puvytolmanfyju'e" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr ".i xu do je'u djica lo nu kraga'igau le do za'e pavykelci munje" +#~ msgid "No of course not!" +#~ msgstr "nasai go'i" diff --git a/po/ko/minetest.po b/po/ko/minetest.po index 007141a8..bf5ba3da 100644 --- a/po/ko/minetest.po +++ b/po/ko/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: 2015-07-08 23:30+0200\n" "Last-Translator: Tae Lim Kook \n" "Language-Team: Korean , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -294,10 +376,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -319,7 +397,7 @@ msgid "Uninstall selected modpack" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +msgid "Address / Port" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -338,17 +416,16 @@ msgstr "" msgid "Damage enabled" msgstr "" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua @@ -373,7 +450,7 @@ msgstr "" msgid "Enable Damage" msgstr "" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "" @@ -410,15 +487,39 @@ msgid "Start Game" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +msgid "3D Clouds" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -426,69 +527,115 @@ msgid "Change keys" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Disabled" +msgid "Connected Glass" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +msgid "Fancy Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Enabled" +msgid "Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +msgid "Mipmap + Aniso. Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Games" +msgid "No" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." +msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." +msgid "No Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." +msgid "Node Highlighting" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " +msgid "Normal Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" +msgid "Opaque Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Select path" +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "Simple Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" msgstr "" #: builtin/mainmenu/tab_simple_main.lua @@ -515,10 +662,6 @@ msgstr "" msgid "No information available" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -543,10 +686,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "" - #: src/client.cpp msgid "Loading textures..." msgstr "" @@ -676,10 +815,6 @@ msgstr "" msgid "Node definitions..." msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "" - #: src/game.cpp msgid "Resolving address..." msgstr "" @@ -700,12 +835,16 @@ msgstr "" msgid "You died." msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" +msgid "Proceed" msgstr "" #: src/guiKeyChangeMenu.cpp @@ -1116,6 +1255,15 @@ msgstr "" msgid "Zoom" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1138,7 +1286,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1163,6 +1312,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1194,6 +1351,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1202,6 +1363,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1217,6 +1382,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1229,10 +1398,18 @@ msgstr "" msgid "Backward key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "" @@ -1265,6 +1442,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Chat key" msgstr "" @@ -1273,6 +1466,29 @@ msgstr "" msgid "Chat toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1327,6 +1543,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp msgid "Command key" msgstr "" @@ -1376,14 +1598,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1470,6 +1716,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1492,6 +1746,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disable anticheat" msgstr "" @@ -1521,7 +1782,7 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " +msgid "Enable VBO" msgstr "" #: src/settings_translation_file.cpp @@ -1536,10 +1797,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1570,6 +1827,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1582,6 +1843,10 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "Enables minimap." msgstr "" @@ -1652,7 +1917,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1669,6 +1934,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1725,6 +1998,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp msgid "Forward key" msgstr "" @@ -1777,6 +2054,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1784,9 +2065,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1797,6 +2082,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1809,6 +2098,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1822,7 +2115,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1847,6 +2140,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1866,18 +2163,22 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "If disabled " +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -msgid "If enabled, " +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." msgstr "" #: src/settings_translation_file.cpp @@ -1935,6 +2236,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp msgid "Inventory key" msgstr "" @@ -1951,6 +2256,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Jump key" msgstr "" @@ -1961,7 +2301,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -1975,7 +2315,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2172,6 +2512,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2194,6 +2542,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2278,21 +2634,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2311,6 +2697,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2331,6 +2721,118 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2343,6 +2845,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2427,6 +2933,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2475,6 +2985,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2594,6 +3116,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2610,13 +3136,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp msgid "Mipmapping" msgstr "" @@ -2693,10 +3212,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2713,10 +3228,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2757,10 +3280,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2804,7 +3323,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2825,22 +3344,14 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" @@ -2860,6 +3371,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2888,6 +3403,22 @@ msgstr "" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -2929,6 +3460,21 @@ msgstr "" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3005,10 +3551,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3024,6 +3566,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3034,13 +3580,17 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3084,19 +3634,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3138,6 +3711,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3236,7 +3813,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3251,6 +3848,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3260,23 +3863,27 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3385,6 +3992,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3395,6 +4014,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" diff --git a/po/ky/minetest.po b/po/ky/minetest.po index 09d16a43..01a5910b 100644 --- a/po/ky/minetest.po +++ b/po/ky/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: 2013-06-01 18:09+0200\n" "Last-Translator: Chynggyz Jumaliev \n" "Language-Team: LANGUAGE \n" @@ -73,8 +73,10 @@ msgid "We support protocol versions between version $1 and $2." msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Жокко чыгаруу" @@ -117,8 +119,8 @@ msgstr "" msgid "Mod:" msgstr "" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Сактоо" @@ -179,6 +181,12 @@ msgstr "" msgid "Are you sure you want to delete \"$1\"?" msgstr "" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Өчүрүү" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "" @@ -187,23 +195,11 @@ msgstr "" msgid "Modmgr: invalid modpath \"$1\"" msgstr "" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Ооба" - #: builtin/mainmenu/dlg_delete_world.lua #, fuzzy msgid "Delete World \"$1\"?" msgstr "Дүйнөнү өчүрүү" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Жок" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Кабыл алуу" @@ -212,6 +208,96 @@ msgstr "Кабыл алуу" msgid "Rename Modpack:" msgstr "" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Disabled" +msgstr "Баарын өчүрүү" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Enabled" +msgstr "күйгүзүлгөн" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Games" +msgstr "Оюн" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Select path" +msgstr "Тандоо" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -304,10 +390,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -331,7 +413,7 @@ msgstr "" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" +msgid "Address / Port" msgstr "Дареги/порту" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -352,20 +434,20 @@ msgstr "Жаратуу режими" msgid "Damage enabled" msgstr "күйгүзүлгөн" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Өчүрүү" - -#: builtin/mainmenu/tab_multiplayer.lua +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy -msgid "Name / Password :" -msgstr "Аты/сырсөзү" +msgid "Del. Favorite" +msgstr "Тандалмалар:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy -msgid "Public Serverlist" -msgstr "Жалпылык серверлердин тизмеси:" +msgid "Favorite" +msgstr "Тандалмалар:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Аты/сырсөзү" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -390,7 +472,7 @@ msgstr "Жаратуу режими" msgid "Enable Damage" msgstr "Убалды күйгүзүү" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Аты/сырсөзү" @@ -428,90 +510,179 @@ msgid "Start Game" msgstr "Оюнду баштоо/туташуу" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "3D-булуттар" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Ырастоолор" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Бир кишилик" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Экисызык чыпкалоосу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Mip-текстуралоо" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Баскычтарды өзгөртүү" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Баарын өчүрүү" +msgid "Connected Glass" +msgstr "Туташуу" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Күңүрт суу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap" +msgstr "Mip-текстуралоо" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Жок" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Filter" +msgstr "Анизатропия чыпкалоосу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Mipmap" +msgstr "Mip-текстуралоо" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Тегиз жарык" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Тегиз жарык" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "күйгүзүлгөн" +msgid "Normal Mapping" +msgstr "Mip-текстуралоо" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +#, fuzzy +msgid "Opaque Leaves" +msgstr "Күңүрт суу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Opaque Water" +msgstr "Күңүрт суу" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "Оюн" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Тандоо" +msgid "Particles" +msgstr "Баарын күйгүзүү" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Ырастоолор" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Көлөкөлөгүчтөр" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#, fuzzy +msgid "Simple Leaves" +msgstr "Күңүрт суу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Smooth Lighting" +msgstr "Тегиз жарык" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-текстуралоо" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Trilinear Filter" +msgstr "Үчсызык чыпкалоосу" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Кооз бактар" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Кооз бактар" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Кооз бактар" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ооба" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -540,10 +711,6 @@ msgstr "Бир кишилик" msgid "No information available" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -569,10 +736,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "Буюм текстуралары..." - #: src/client.cpp #, fuzzy msgid "Loading textures..." @@ -720,10 +883,6 @@ msgstr "" msgid "Node definitions..." msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Улантуу" - #: src/game.cpp msgid "Resolving address..." msgstr "Дареги чечилүүдө..." @@ -745,13 +904,17 @@ msgstr "Үн көлөмү" msgid "You died." msgstr "Сиз өлдүңүз." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Proceed" +msgstr "Улантуу" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1162,6 +1325,15 @@ msgstr "" msgid "Zoom" msgstr "Масштаб" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1185,7 +1357,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1210,6 +1383,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1241,6 +1422,10 @@ msgstr "" msgid "Advanced" msgstr "Кошумча" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1249,6 +1434,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1265,6 +1454,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1278,10 +1471,18 @@ msgstr "" msgid "Backward key" msgstr "Артка" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1318,6 +1519,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1328,6 +1545,29 @@ msgstr "Баскычтарды өзгөртүү" msgid "Chat toggle key" msgstr "Баскычтарды өзгөртүү" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1386,6 +1626,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1442,14 +1688,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1538,6 +1808,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1560,6 +1838,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1590,8 +1875,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Баарын күйгүзүү" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1605,10 +1891,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1639,6 +1921,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1651,6 +1937,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Убалды күйгүзүү" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1721,7 +2012,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1738,6 +2029,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1795,6 +2094,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1848,6 +2151,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1855,9 +2162,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1868,6 +2179,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1880,6 +2195,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1893,7 +2212,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1918,6 +2237,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1937,21 +2260,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Баарын өчүрүү" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "күйгүзүлгөн" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2009,6 +2334,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2026,6 +2355,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2037,7 +2401,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2051,7 +2415,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2248,6 +2612,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2271,6 +2643,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2357,21 +2737,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2390,6 +2800,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2410,6 +2824,118 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2422,6 +2948,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2506,6 +3036,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2554,6 +3088,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2674,6 +3220,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2690,13 +3240,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2774,10 +3317,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2794,10 +3333,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2838,10 +3385,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2885,7 +3428,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2907,20 +3450,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Жүктөлүүдө..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2942,6 +3476,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2971,6 +3509,22 @@ msgstr "Оң меню" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3013,6 +3567,23 @@ msgstr "Тез сүрөт" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Тез сүрөт" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Тез сүрөт" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3092,10 +3663,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Көлөкөлөгүчтөр" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3111,6 +3678,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3121,6 +3692,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3128,7 +3703,7 @@ msgstr "Тегиз жарык" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3173,19 +3748,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3227,6 +3825,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3327,7 +3929,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3342,6 +3964,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3351,11 +3979,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3363,13 +3987,22 @@ msgstr "" msgid "Volume" msgstr "Үн көлөмү" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Буюм текстуралары..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3478,6 +4111,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3488,6 +4133,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3501,19 +4154,54 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Game Name" -#~ msgstr "Оюн" - -#~ msgid "Favorites:" -#~ msgstr "Тандалмалар:" +#~ msgid "Preload inventory textures" +#~ msgstr "Жүктөлүүдө..." #, fuzzy -#~ msgid "Password" -#~ msgstr "Эски сырсөз" +#~ msgid "Downloading" +#~ msgstr "Ылдый" -#, fuzzy -#~ msgid "Finite Liquid" -#~ msgstr "Чектүү суюктук" +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу" + +#~ msgid "is required by:" +#~ msgstr "талап кылынганы:" + +#~ msgid "Configuration saved. " +#~ msgstr "Конфигурация сакталды. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Эскертүү: Туура эмес конфигурация. " + +#~ msgid "Show Public" +#~ msgstr "Жалпылыкты көрсөтүү" + +#~ msgid "Show Favorites" +#~ msgstr "Тандалмаларды көрсөтүү" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз." + +#~ msgid "Create world" +#~ msgstr "Дүйнөнү жаратуу" + +#~ msgid "Address required." +#~ msgstr "Дареги талап кылынат." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок" + +#~ msgid "Files to be deleted" +#~ msgstr "Өчүрүлө турган файлдар" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок" #~ msgid "" #~ "Default Controls:\n" @@ -3540,60 +4228,26 @@ msgstr "" #~ "- ESC: бул меню\n" #~ "- T: маек\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок" - -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок" - -#~ msgid "Files to be deleted" -#~ msgstr "Өчүрүлө турган файлдар" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок" - -#~ msgid "Address required." -#~ msgstr "Дареги талап кылынат." - -#~ msgid "Create world" -#~ msgstr "Дүйнөнү жаратуу" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз." - -#~ msgid "Show Favorites" -#~ msgstr "Тандалмаларды көрсөтүү" - -#~ msgid "Show Public" -#~ msgstr "Жалпылыкты көрсөтүү" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Эскертүү: Туура эмес конфигурация. " - -#~ msgid "Configuration saved. " -#~ msgstr "Конфигурация сакталды. " - -#~ msgid "is required by:" -#~ msgstr "талап кылынганы:" - -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу" +#, fuzzy +#~ msgid "Finite Liquid" +#~ msgstr "Чектүү суюктук" #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Ылдый" +#~ msgid "Password" +#~ msgstr "Эски сырсөз" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Бир кишилик" +#~ msgid "Game Name" +#~ msgstr "Оюн" #, fuzzy -#~ msgid "Opaque Water" -#~ msgstr "Күңүрт суу" +#~ msgid "If enabled, " +#~ msgstr "күйгүзүлгөн" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Күңүрт суу" +#~ msgid "If disabled " +#~ msgstr "Баарын өчүрүү" + +#, fuzzy +#~ msgid "Public Serverlist" +#~ msgstr "Жалпылык серверлердин тизмеси:" diff --git a/po/lt/minetest.po b/po/lt/minetest.po index 6e424815..9818d29d 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -7,28 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2013-12-11 19:23+0200\n" -"Last-Translator: Jonas Kriaučiūnas \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2015-11-19 05:14+0000\n" +"Last-Translator: Liudas Ališauskas \n" +"Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 1.7-dev\n" +"X-Generator: Weblate 2.5-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Klaida įvyko Lua scenarijuje, tokiame kaip papildinys:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Įvyko klaida:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Pagrindinis meniu" @@ -37,13 +37,12 @@ msgid "Ok" msgstr "Gerai" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Jungtis" +msgstr "Prisijungti iš naujo" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Serveris paprašė prisijungti iš naujo:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,11 +50,11 @@ msgstr "Įkeliama..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Neatitinka protokolo versija. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Serveris reikalauja naudoti versijos $1 protokolą. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " @@ -64,6 +63,8 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Pabandykite dar kart įjungti viešą serverių sąrašą ir patikrinkite savo " +"interneto ryšį." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." @@ -74,8 +75,10 @@ msgid "We support protocol versions between version $1 and $2." msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Atsisakyti" @@ -100,6 +103,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Nepavyko įjungti papildinio „$1“, nes jis turi neleistų rašmenų. Tik " +"rašmenys [a-z0-9_] yra leidžiami." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -113,8 +118,8 @@ msgstr "Slėpti papild. pakų turinį" msgid "Mod:" msgstr "Papildinys:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Įrašyti" @@ -136,11 +141,11 @@ msgstr "Sukurti" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Atsisiųskite sub žaidimą, tokį kaip minetest_game, iš minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Atsisiųsti vieną iš minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -148,20 +153,19 @@ msgstr "Žaidimas" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "Žemėlapių generavimas" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" -msgstr "" +msgstr "Nepateiktas joks pasaulio pavadinimas, arba nepasirinktas žaidimas" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Seed" msgstr "Sėkla" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Dėmesio: Minimalus kūrimo bandymas yra skirtas vystytojams." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -169,38 +173,31 @@ msgstr "Pasaulio pavadinimas" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Neturite įdiegę sub žaidimų." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "Ar tikrai norite ištrinti „$1“?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Ištrinti" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "" +msgstr "Papildtvrk: nepavyko ištrinti „$1“" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Taip" +msgstr "Papildtvrk: netinkamas papildinio kelias „$1“" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Ištrinti pasaulį „$1“?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Ne" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp -#, fuzzy msgid "Accept" msgstr "Priimti" @@ -208,11 +205,101 @@ msgstr "Priimti" msgid "Rename Modpack:" msgstr "Pervadinti papildinių paką:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Disabled" +msgstr "Išjungti papildinį" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Enabled" +msgstr "įjungtas" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Žaidimai" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Papildiniai" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" +"\n" +"Papildinio diegimas: nepalaikomas failo tipas „$1“, arba sugadintas archyvas" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -220,23 +307,25 @@ msgstr "Nepavyko įdiegti $1 į $2" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" -msgstr "" +msgstr "Įdiegti papildinį: failas: „$1“" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "" +msgstr "Papildinio diegimas: nepavyksta rasti tikro pavadinimo skirto: $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" +"Papildinio diegimas: nepavyksta rasti tinkamo aplanko pavadinimo papildinio " +"paketui $1" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Užverti parduotuvę" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Atsiunčiama $1, prašome palaukti..." #: builtin/mainmenu/store.lua msgid "Install" @@ -244,28 +333,27 @@ msgstr "Įdiegti" #: builtin/mainmenu/store.lua msgid "Page $1 of $2" -msgstr "" +msgstr "Puslapis $1 iš $2" #: builtin/mainmenu/store.lua msgid "Rating" -msgstr "" +msgstr "Įvertinimas" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "" +msgstr "Ieškoti" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Pasaulio pavadinimas" +msgstr "Trumpas pavadinimas:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" -msgstr "" +msgstr "Sėkmingai įdiegta:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "" +msgstr "Nerikiuota" #: builtin/mainmenu/store.lua msgid "re-Install" @@ -285,12 +373,11 @@ msgstr "Padėkos" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Ankstesni bendradarbiai" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Pagrindiniai kūrėjai" +msgstr "Ankstesni pagrindiniai kūrėjai" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -300,10 +387,6 @@ msgstr "Įdiegti papildiniai:" msgid "Mod information:" msgstr "Papildinio informacija:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Papildiniai" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Papildinio aprašymas nepateiktas" @@ -326,8 +409,8 @@ msgstr "Pašalinti pasirinktą papildinį" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "Adresas/Prievadas" +msgid "Address / Port" +msgstr "Adresas / Prievadas :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -338,37 +421,35 @@ msgid "Connect" msgstr "Jungtis" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Kūrybinė veiksena" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "įjungtas" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Ištrinti" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Vardas/slaptažodis" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Viešų serverių sąrašas" +msgstr "Žalojimas įjungtas" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "Mėgiami:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Mėgiami:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Vardas / Slaptažodis :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "įjungtas" +msgstr "PvP įjungtas" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Susieti adresą" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -376,7 +457,6 @@ msgstr "Konfigūruoti" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "Creative Mode" msgstr "Kūrybinė veiksena" @@ -385,7 +465,7 @@ msgstr "Kūrybinė veiksena" msgid "Enable Damage" msgstr "Leisti sužeidimus" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Vardas/slaptažodis" @@ -395,11 +475,11 @@ msgstr "Naujas" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "No world created or selected!" -msgstr "" +msgstr "Nesukurtas ar pasirinktas joks pasaulis!" #: builtin/mainmenu/tab_server.lua msgid "Port" -msgstr "" +msgstr "Prievadas" #: builtin/mainmenu/tab_server.lua msgid "Public" @@ -422,15 +502,42 @@ msgid "Start Game" msgstr "Pradėti žaidimą" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "Trimačiai debesys" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Nustatymai" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Atstatyti vieno žaidėjo pasaulį" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -439,86 +546,135 @@ msgstr "Nustatyti klavišus" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Išjungti papildinį" +msgid "Connected Glass" +msgstr "Jungtis" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Nepermatomi lapai" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Ne" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "įjungtas" +msgid "Node Highlighting" +msgstr "Apšvietimo efektai" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +#, fuzzy +msgid "Node Outlining" +msgstr "Apšvietimo efektai" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Joks" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Žaidimai" +msgid "Opaque Leaves" +msgstr "Nepermatomi lapai" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "Opaque Water" +msgstr "Nepermatomas vanduo" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Paralaksinė okliuzija" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Select path" -msgstr "" +#, fuzzy +msgid "Particles" +msgstr "Įjungti visus" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Nustatymai" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Šešėliavimai" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#, fuzzy +msgid "Simple Leaves" +msgstr "Nepermatomi lapai" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Smooth Lighting" +msgstr "Apšvietimo efektai" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." +msgid "Touchthreshold (px)" msgstr "" +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Nepermatomi lapai" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Taip" + #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Konfigūruoti" +msgstr "Konfigūruoti papildinius" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "Pagrindinis meniu" +msgstr "Pagrindinis" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Žaisti vienam" +msgstr "Atstatyti vieno žaidėjo pasaulį" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -530,61 +686,51 @@ msgstr "Žaisti vienam" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" -msgstr "" - -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" +msgstr "Nėra pasiekiamos informacijos" #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" -msgstr "" +msgstr "Pasirinkite tekstūros paketą:" #: builtin/mainmenu/tab_texturepacks.lua msgid "Texturepacks" -msgstr "" +msgstr "Tekstūrų paketai" #: src/client.cpp msgid "Connection timed out." -msgstr "" +msgstr "Baigėsi prijungimo laikas." #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "Atlikta!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Inicijuojami mazgai" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Inicijuojami mazgai..." #: src/client.cpp -msgid "Item textures..." -msgstr "" - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "Įkeliama..." +msgstr "Įkeliamos tekstūros..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "Ieškoma adreso..." +msgstr "Perstatomi šešėliavimai..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "Ryšio klaida (baigėsi prijungimo laikas?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "Nepavyko rasti ar įkelti žaidimo „" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "Klaidingi žaidimo nustatymai." #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -593,27 +739,29 @@ msgstr "Pagrindinis meniu" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." msgstr "" +"Nepasirinktas joks pasaulis ir nepateiktas joks adresas. Nėra ką daryti." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Žaidėjo vardas per ilgas." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "Pateiktas pasaulio kelias neegzistuoja: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "reikia_atsarginio_šrifto" #: src/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +"Patikrinkite debug.txt dėl papildomos informacijos." #: src/game.cpp -#, fuzzy msgid "Change Keys" msgstr "Nustatyti klavišus" @@ -630,12 +778,10 @@ msgid "Continue" msgstr "Tęsti" #: src/game.cpp -#, fuzzy msgid "Creating client..." msgstr "Kuriamas klientas..." #: src/game.cpp -#, fuzzy msgid "Creating server..." msgstr "Kuriamas serveris...." @@ -653,6 +799,17 @@ msgid "" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" +"Numatytas valdymas:\n" +"- WASD: judėti\n" +"- Tarpas: šokti/lipti\n" +"- Lyg2: leistis/eiti žemyn\n" +"- Q: išmesti elementą\n" +"- I: inventorius\n" +"- Pelė: sukti/žiūrėti\n" +"- Pelės kairys: kasti/smugiuoti\n" +"- Pelės dešinys: padėti/naudoti\n" +"- Pelės ratukas: pasirinkti elementą\n" +"- T: kalbėtis\n" #: src/game.cpp msgid "" @@ -669,6 +826,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Numatytas valdymas:\n" +"Nematomi meniu:\n" +"- vienas palietimas: mygtukas aktyvuoti\n" +"- dvigubas palietimas: padėti/naudoti\n" +"- slinkti pirštu: žvalgytis aplink\n" +"Meniu/Inventorius matomi:\n" +"- dvigubas palietimas (išorėje):\n" +" -->uždaryti\n" +"- liesti rietuvę, liesti angą:\n" +" --> judinti rietuvę\n" +"- liesti&tempti, liesti antru pirštu\n" +" --> padėti vieną elementą į angą\n" #: src/game.cpp msgid "Exit to Menu" @@ -680,28 +849,23 @@ msgstr "Išeiti iš žaidimo" #: src/game.cpp msgid "Item definitions..." -msgstr "" +msgstr "Elemento apibrėžimai..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/game.cpp msgid "Media..." -msgstr "" +msgstr "Medija..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." -msgstr "" - -#: src/game.cpp src/guiFormSpecMenu.cpp -#, fuzzy -msgid "Proceed" -msgstr "Tęsti" +msgstr "Mazgo apibrėžimai..." #: src/game.cpp msgid "Resolving address..." @@ -713,27 +877,31 @@ msgstr "Prisikelti" #: src/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "Išjungiama..." #: src/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "Garso lygis" #: src/game.cpp msgid "You died." msgstr "Jūs numirėte." -#: src/guiFormSpecMenu.cpp -msgid "Enter " -msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "gerai" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Enter " +msgstr "Įvesti" + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "Vykdyti" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" -msgstr "" +msgstr "„Naudoti“ = kopti žemyn" #: src/guiKeyChangeMenu.cpp msgid "Backward" @@ -749,11 +917,11 @@ msgstr "Komanda" #: src/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "Pultas" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "" +msgstr "Du kart paliesti „šokti“, kad įjungti skrydį" #: src/guiKeyChangeMenu.cpp msgid "Drop" @@ -777,7 +945,7 @@ msgstr "Klavišas jau naudojamas" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" -msgstr "" +msgstr "Klavišai. (Jei šis meniu sugenda, pašalinkite įrašus iš minetest.conf)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" @@ -785,11 +953,11 @@ msgstr "Kairėn" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "" +msgstr "Spausdinti rietuves" #: src/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "" +msgstr "Intervalo pasirinkimas" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" @@ -797,23 +965,23 @@ msgstr "Dešinėn" #: src/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "Sėlinti" #: src/guiKeyChangeMenu.cpp msgid "Toggle Cinematic" -msgstr "" +msgstr "Įjungti kinematografinį" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "Įjungti greitą" #: src/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "Įjungti skrydį" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "Įjungti noclip" #: src/guiKeyChangeMenu.cpp msgid "Use" @@ -849,11 +1017,11 @@ msgstr "Išeiti" #: src/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "" +msgstr "Garso lygis: " #: src/keycode.cpp msgid "Apps" -msgstr "" +msgstr "Programos" #: src/keycode.cpp msgid "Attn" @@ -861,15 +1029,15 @@ msgstr "" #: src/keycode.cpp msgid "Back" -msgstr "" +msgstr "Atgal" #: src/keycode.cpp msgid "Capital" -msgstr "" +msgstr "Sostinė" #: src/keycode.cpp msgid "Clear" -msgstr "" +msgstr "Išvalyti" #: src/keycode.cpp msgid "Comma" @@ -877,11 +1045,11 @@ msgstr "Kablelis" #: src/keycode.cpp msgid "Control" -msgstr "" +msgstr "Valdymas" #: src/keycode.cpp msgid "Convert" -msgstr "" +msgstr "Konvertuoti" #: src/keycode.cpp msgid "CrSel" @@ -893,15 +1061,15 @@ msgstr "Žemyn" #: src/keycode.cpp msgid "End" -msgstr "" +msgstr "Baigti" #: src/keycode.cpp msgid "Erase OEF" -msgstr "" +msgstr "Ištrinti OEF" #: src/keycode.cpp msgid "Escape" -msgstr "" +msgstr "Atšaukti" #: src/keycode.cpp msgid "ExSel" @@ -913,7 +1081,7 @@ msgstr "Vykdyti" #: src/keycode.cpp msgid "Final" -msgstr "" +msgstr "Galutinis" #: src/keycode.cpp msgid "Help" @@ -921,7 +1089,7 @@ msgstr "Pagalba" #: src/keycode.cpp msgid "Home" -msgstr "" +msgstr "Pradžia" #: src/keycode.cpp msgid "Insert" @@ -929,15 +1097,15 @@ msgstr "Įterpti" #: src/keycode.cpp msgid "Junja" -msgstr "" +msgstr "Junja" #: src/keycode.cpp msgid "Kana" -msgstr "" +msgstr "Kana" #: src/keycode.cpp msgid "Kanji" -msgstr "" +msgstr "Kanji" #: src/keycode.cpp msgid "Left Button" @@ -949,7 +1117,7 @@ msgstr "Kairysis Control" #: src/keycode.cpp msgid "Left Menu" -msgstr "" +msgstr "Kairysis meniu" #: src/keycode.cpp msgid "Left Shift" @@ -957,7 +1125,7 @@ msgstr "Kairysis Shift" #: src/keycode.cpp msgid "Left Windows" -msgstr "" +msgstr "Kairieji langai" #: src/keycode.cpp msgid "Menu" @@ -969,15 +1137,15 @@ msgstr "Vidurinis mygtukas" #: src/keycode.cpp msgid "Minus" -msgstr "" +msgstr "Minus" #: src/keycode.cpp msgid "Mode Change" -msgstr "" +msgstr "Būsenos keitimas" #: src/keycode.cpp msgid "Next" -msgstr "" +msgstr "Kitas" #: src/keycode.cpp msgid "Nonconvert" @@ -985,67 +1153,67 @@ msgstr "" #: src/keycode.cpp msgid "Num Lock" -msgstr "" +msgstr "Num Lock" #: src/keycode.cpp msgid "Numpad *" -msgstr "" +msgstr "SkaitKlav *" #: src/keycode.cpp msgid "Numpad +" -msgstr "" +msgstr "SkaitKlav +" #: src/keycode.cpp msgid "Numpad -" -msgstr "" +msgstr "SkaitKlav -" #: src/keycode.cpp msgid "Numpad /" -msgstr "" +msgstr "SkaitKlav /" #: src/keycode.cpp msgid "Numpad 0" -msgstr "" +msgstr "SkaitKlav 0" #: src/keycode.cpp msgid "Numpad 1" -msgstr "" +msgstr "SkaitKlav 1" #: src/keycode.cpp msgid "Numpad 2" -msgstr "" +msgstr "SkaitKlav 2" #: src/keycode.cpp msgid "Numpad 3" -msgstr "" +msgstr "SkaitKlav 3" #: src/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "SkaitKlav 4" #: src/keycode.cpp msgid "Numpad 5" -msgstr "" +msgstr "SkaitKlav 5" #: src/keycode.cpp msgid "Numpad 6" -msgstr "" +msgstr "SkaitKlav 6" #: src/keycode.cpp msgid "Numpad 7" -msgstr "" +msgstr "SkaitKlav 7" #: src/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "SkaitKlav 8" #: src/keycode.cpp msgid "Numpad 9" -msgstr "" +msgstr "SkaitKlav 9" #: src/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "OEM valymas" #: src/keycode.cpp msgid "PA1" @@ -1053,11 +1221,11 @@ msgstr "" #: src/keycode.cpp msgid "Pause" -msgstr "" +msgstr "Pause" #: src/keycode.cpp msgid "Period" -msgstr "" +msgstr "Periodas" #: src/keycode.cpp msgid "Plus" @@ -1065,15 +1233,15 @@ msgstr "Plius" #: src/keycode.cpp msgid "Print" -msgstr "" +msgstr "Spausdinti" #: src/keycode.cpp msgid "Prior" -msgstr "" +msgstr "Ankstesnis" #: src/keycode.cpp msgid "Return" -msgstr "" +msgstr "Grįžti" #: src/keycode.cpp msgid "Right Button" @@ -1085,7 +1253,7 @@ msgstr "Dešinysis Control" #: src/keycode.cpp msgid "Right Menu" -msgstr "" +msgstr "Dešinysis meniu" #: src/keycode.cpp msgid "Right Shift" @@ -1093,15 +1261,15 @@ msgstr "Dešinysis Shift" #: src/keycode.cpp msgid "Right Windows" -msgstr "" +msgstr "Dešinieji langai" #: src/keycode.cpp msgid "Scroll Lock" -msgstr "" +msgstr "Scroll Lock" #: src/keycode.cpp msgid "Select" -msgstr "" +msgstr "Pasirinkti" #: src/keycode.cpp msgid "Shift" @@ -1109,11 +1277,11 @@ msgstr "Shift (Lyg2)" #: src/keycode.cpp msgid "Sleep" -msgstr "" +msgstr "Užmigdyti" #: src/keycode.cpp msgid "Snapshot" -msgstr "" +msgstr "Užlaikymas" #: src/keycode.cpp msgid "Space" @@ -1121,7 +1289,7 @@ msgstr "Tarpas" #: src/keycode.cpp msgid "Tab" -msgstr "" +msgstr "Tabuliacija" #: src/keycode.cpp msgid "Up" @@ -1129,17 +1297,25 @@ msgstr "Aukštyn" #: src/keycode.cpp msgid "X Button 1" -msgstr "" +msgstr "X mygtukas 1" #: src/keycode.cpp msgid "X Button 2" -msgstr "" +msgstr "X mygtukas 2" #: src/keycode.cpp -#, fuzzy msgid "Zoom" msgstr "Pritraukti" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1163,7 +1339,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1188,6 +1365,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1219,6 +1404,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1227,6 +1416,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1242,6 +1435,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1255,10 +1452,18 @@ msgstr "" msgid "Backward key" msgstr "Atgal" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "" @@ -1292,6 +1497,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1302,6 +1523,29 @@ msgstr "Nustatyti klavišus" msgid "Chat toggle key" msgstr "Nustatyti klavišus" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1360,6 +1604,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1414,14 +1664,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1511,6 +1785,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1533,6 +1815,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disable anticheat" msgstr "" @@ -1562,8 +1851,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Įjungti papildinį" #: src/settings_translation_file.cpp #, fuzzy @@ -1578,10 +1868,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1612,6 +1898,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1624,6 +1914,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Leisti sužeidimus" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1694,7 +1989,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1711,6 +2006,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1767,6 +2070,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1820,6 +2127,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1827,9 +2138,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1840,6 +2155,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Papildiniai" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1852,6 +2172,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1865,7 +2189,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1890,6 +2214,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1909,21 +2237,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Išjungti papildinį" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "įjungtas" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1981,6 +2311,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -1998,6 +2332,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2009,7 +2378,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2023,7 +2392,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2220,6 +2589,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2243,6 +2620,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2329,21 +2714,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2362,6 +2777,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Žemėlapių generavimas" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2382,6 +2802,121 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Žemėlapių generavimas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Žemėlapių generavimas" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Žemėlapių generavimas" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2394,6 +2929,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2478,6 +3017,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2526,6 +3069,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2646,6 +3201,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2662,13 +3221,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp msgid "Mipmapping" msgstr "" @@ -2745,10 +3297,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2765,10 +3313,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2809,10 +3365,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2856,7 +3408,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2878,20 +3430,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Įkeliama..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2913,6 +3456,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2942,6 +3489,22 @@ msgstr "Dešinėn" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -2983,6 +3546,21 @@ msgstr "" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3067,11 +3645,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Shaders" -msgstr "Šešėliai" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3087,6 +3660,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3097,6 +3674,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3104,7 +3685,7 @@ msgstr "Apšvietimo efektai" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3149,19 +3730,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3203,6 +3807,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3303,7 +3911,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3318,6 +3946,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3327,24 +3961,29 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Elemento tekstūros..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3452,6 +4091,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3462,6 +4113,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3474,62 +4133,66 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Game Name" -#~ msgstr "Žaidimo pavadinimas" +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "Įkeliama..." -#~ msgid "GAMES" -#~ msgstr "ŽAIDIMAI" +#~ msgid "Add mod:" +#~ msgstr "Pridėti papildinį:" -#~ msgid "Mods:" -#~ msgstr "Papildiniai:" +#~ msgid "MODS" +#~ msgstr "PAPILDINIAI" -#~ msgid "new game" -#~ msgstr "naujas žaidimas" +#~ msgid "SINGLE PLAYER" +#~ msgstr "VIENAS ŽAIDĖJAS" + +#~ msgid "SETTINGS" +#~ msgstr "NUSTATYMAI" + +#~ msgid "Password" +#~ msgstr "Slaptažodis" + +#~ msgid "Name" +#~ msgstr "Vardas" + +#~ msgid "START SERVER" +#~ msgstr "PALEISTI SERVERĮ" + +#~ msgid "CLIENT" +#~ msgstr "ŽAISTI TINKLE" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Pridėti papildinį" + +#~ msgid "Remove selected mod" +#~ msgstr "Pašalinti pasirinktą papildinį" #, fuzzy #~ msgid "EDIT GAME" #~ msgstr "KEISTI ŽAIDIMĄ" -#~ msgid "Remove selected mod" -#~ msgstr "Pašalinti pasirinktą papildinį" +#~ msgid "new game" +#~ msgstr "naujas žaidimas" -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Pridėti papildinį" +#~ msgid "Mods:" +#~ msgstr "Papildiniai:" -#~ msgid "CLIENT" -#~ msgstr "ŽAISTI TINKLE" +#~ msgid "GAMES" +#~ msgstr "ŽAIDIMAI" -#~ msgid "Favorites:" -#~ msgstr "Mėgiami:" - -#~ msgid "START SERVER" -#~ msgstr "PALEISTI SERVERĮ" - -#~ msgid "Name" -#~ msgstr "Vardas" - -#~ msgid "Password" -#~ msgstr "Slaptažodis" - -#~ msgid "SETTINGS" -#~ msgstr "NUSTATYMAI" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "VIENAS ŽAIDĖJAS" - -#~ msgid "MODS" -#~ msgstr "PAPILDINIAI" - -#~ msgid "Add mod:" -#~ msgstr "Pridėti papildinį:" +#~ msgid "Game Name" +#~ msgstr "Žaidimo pavadinimas" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Žaisti vienam" - -#~ msgid "Opaque Water" -#~ msgstr "Nepermatomas vanduo" +#~ msgid "If enabled, " +#~ msgstr "įjungtas" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Nepermatomas vanduo" +#~ msgid "If disabled " +#~ msgstr "Išjungti papildinį" + +#~ msgid "Public Serverlist" +#~ msgstr "Viešų serverių sąrašas" + +#~ msgid "No of course not!" +#~ msgstr "Ne, tikrai ne!" diff --git a/po/minetest.pot b/po/minetest.pot index f48e7679..ed014c01 100644 --- a/po/minetest.pot +++ b/po/minetest.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,14 +89,16 @@ msgstr "" msgid "Depends:" msgstr "" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "" @@ -171,11 +173,9 @@ msgid "Are you sure you want to delete \"$1\"?" msgstr "" #: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" msgstr "" #: builtin/mainmenu/dlg_delete_mod.lua @@ -190,10 +190,6 @@ msgstr "" msgid "Delete World \"$1\"?" msgstr "" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "" - #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" msgstr "" @@ -202,6 +198,92 @@ msgstr "" msgid "Accept" msgstr "" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" msgstr "" @@ -312,31 +394,26 @@ msgstr "" msgid "Select Mod File:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" +msgid "Address / Port" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" +msgid "Name / Password" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" msgstr "" @@ -383,7 +460,7 @@ msgstr "" msgid "Public" msgstr "" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "" @@ -408,65 +485,107 @@ msgid "Server" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Games" +msgid "Opaque Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +msgid "Simple Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." +msgid "Fancy Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " +msgid "Node Outlining" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " +msgid "Node Highlighting" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." +msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Disabled" +msgid "Bilinear Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Enabled" +msgid "Trilinear Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "No Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." +msgid "Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "8x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Select path" +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -474,15 +593,43 @@ msgid "Change keys" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +msgid "Advanced Settings" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -509,10 +656,6 @@ msgstr "" msgid "Singleplayer" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -545,10 +688,6 @@ msgstr "" msgid "Initializing nodes" msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "" - #: src/client.cpp msgid "Done!" msgstr "" @@ -585,10 +724,6 @@ msgstr "" msgid "needs_fallback_font" msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "" - #: src/game.cpp msgid "You died." msgstr "" @@ -692,6 +827,10 @@ msgstr "" msgid "MiB/s" msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/game.cpp msgid "" "\n" @@ -699,11 +838,11 @@ msgid "" msgstr "" #: src/guiFormSpecMenu.cpp -msgid "Enter " +msgid "Proceed" msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" +msgid "Enter " msgstr "" #: src/guiKeyChangeMenu.cpp @@ -1136,7 +1275,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1146,7 +1285,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1157,7 +1296,7 @@ msgstr "" msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1166,7 +1305,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -1207,7 +1346,9 @@ msgid "Key use for climbing/descending" msgstr "" #: src/settings_translation_file.cpp -msgid "If enabled, " +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." msgstr "" #: src/settings_translation_file.cpp @@ -1223,7 +1364,9 @@ msgid "Always fly and fast" msgstr "" #: src/settings_translation_file.cpp -msgid "If disabled " +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." msgstr "" #: src/settings_translation_file.cpp @@ -1546,7 +1689,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -1557,7 +1700,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -1594,6 +1737,18 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + #: src/settings_translation_file.cpp msgid "Saving map received from server" msgstr "" @@ -1602,6 +1757,10 @@ msgstr "" msgid "Save the map received by the client on disk." msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Connect to external media server" msgstr "" @@ -1644,6 +1803,14 @@ msgstr "" msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable VBO" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fog" msgstr "" @@ -1652,14 +1819,6 @@ msgstr "" msgid "Whether to fog out the end of the visible area." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" - #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -1706,6 +1865,14 @@ msgstr "" msgid "Use 3D cloud look instead of flat." msgstr "" +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Filtering" msgstr "" @@ -1769,18 +1936,6 @@ msgid "" "enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - #: src/settings_translation_file.cpp msgid "FSAA" msgstr "" @@ -1791,10 +1946,6 @@ msgid "" "when set to higher number than 0." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -1802,6 +1953,14 @@ msgid "" "Thy only work with the OpenGL video backend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "Bumpmapping" msgstr "" @@ -1842,10 +2001,6 @@ msgid "" "A higher value results in smoother normal maps." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -1948,17 +2103,6 @@ msgstr "" msgid "Advanced" msgstr "" -#: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp msgid "Maximum FPS" msgstr "" @@ -1978,18 +2122,13 @@ msgid "Maximum FPS when game is paused." msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +"View distance in nodes.\n" +"Min = 20" msgstr "" #: src/settings_translation_file.cpp @@ -1997,7 +2136,7 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "Width component of the initial window size." msgstr "" #: src/settings_translation_file.cpp @@ -2005,7 +2144,7 @@ msgid "Screen height" msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "Height component of the initial window size." msgstr "" #: src/settings_translation_file.cpp @@ -2117,7 +2256,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -2186,14 +2326,6 @@ msgid "" "Useful if there's something to be displayed right or left of hotbar." msgstr "" -#: src/settings_translation_file.cpp -msgid "Node highlighting" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "Mesh cache" msgstr "" @@ -2250,6 +2382,14 @@ msgid "" "set to the nearest valid value." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "Menus" msgstr "" @@ -2379,6 +2519,25 @@ msgstr "" msgid "Path to save screenshots at." msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "DPI" msgstr "" @@ -2646,6 +2805,14 @@ msgid "" "See /privs in game for a full list on your server and mod configuration." msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" msgstr "" @@ -2935,6 +3102,30 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "Ignore world errors" msgstr "" @@ -3021,9 +3212,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -3109,6 +3304,14 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 filler depth noise parameters" msgstr "" @@ -3139,12 +3342,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -3153,7 +3358,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" @@ -3215,11 +3420,17 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" msgstr "" #: src/settings_translation_file.cpp @@ -3266,6 +3477,412 @@ msgstr "" msgid "Mapgen v7 cave2 noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3288,6 +3905,16 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp msgid "Client and Server" msgstr "" diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 89a1c2da..7ae1156e 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" "PO-Revision-Date: 2015-09-20 17:15+0200\n" "Last-Translator: Christian Haug \n" "Language-Team: Norwegian Bokmål , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Games" +msgstr "Spill" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -301,10 +386,6 @@ msgstr "" msgid "Mod information:" msgstr "" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "" @@ -326,7 +407,7 @@ msgid "Uninstall selected modpack" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +msgid "Address / Port" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -347,17 +428,16 @@ msgstr "Opprett" msgid "Damage enabled" msgstr "aktivert" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua @@ -383,7 +463,7 @@ msgstr "" msgid "Enable Damage" msgstr "" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "" @@ -420,15 +500,39 @@ msgid "Start Game" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +msgid "3D Clouds" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" msgstr "" #: builtin/mainmenu/tab_settings.lua @@ -436,74 +540,118 @@ msgid "Change keys" msgstr "" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Deaktiver Alle" +msgid "Connected Glass" +msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Nei" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Normal Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "aktivert" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Games" -msgstr "Spill" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Select path" -msgstr "" +msgid "Particles" +msgstr "Aktiver Alle" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "Simple Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." +msgid "Smooth Lighting" msgstr "" +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ja" + #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" msgstr "" @@ -528,10 +676,6 @@ msgstr "" msgid "No information available" msgstr "" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "" @@ -556,10 +700,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "" - #: src/client.cpp msgid "Loading textures..." msgstr "" @@ -689,10 +829,6 @@ msgstr "" msgid "Node definitions..." msgstr "" -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "" - #: src/game.cpp msgid "Resolving address..." msgstr "" @@ -713,12 +849,16 @@ msgstr "" msgid "You died." msgstr "Du døde." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" +msgid "Proceed" msgstr "" #: src/guiKeyChangeMenu.cpp @@ -1129,6 +1269,15 @@ msgstr "" msgid "Zoom" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1151,7 +1300,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1176,6 +1326,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1207,6 +1365,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1215,6 +1377,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "" @@ -1230,6 +1396,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1242,10 +1412,18 @@ msgstr "" msgid "Backward key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "" @@ -1278,6 +1456,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Chat key" msgstr "" @@ -1286,6 +1480,29 @@ msgstr "" msgid "Chat toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1342,6 +1559,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp msgid "Command key" msgstr "" @@ -1391,14 +1614,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1486,6 +1733,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1508,6 +1763,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disable anticheat" msgstr "" @@ -1537,8 +1799,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Aktiver Alle" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1552,10 +1815,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1586,6 +1845,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1598,6 +1861,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Aktiver Alle" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1668,7 +1936,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1685,6 +1953,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1741,6 +2017,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp msgid "Forward key" msgstr "" @@ -1793,6 +2073,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1800,9 +2084,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1813,6 +2101,10 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1825,6 +2117,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1838,7 +2134,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1863,6 +2159,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1882,21 +2182,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Deaktiver Alle" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "aktivert" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1954,6 +2256,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp msgid "Inventory key" msgstr "" @@ -1970,6 +2276,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Jump key" msgstr "" @@ -1980,7 +2321,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -1994,7 +2335,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2191,6 +2532,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2213,6 +2562,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2297,21 +2654,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2330,6 +2717,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2350,6 +2741,118 @@ msgstr "" msgid "Mapgen flags" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2362,6 +2865,10 @@ msgstr "" msgid "Mapgen v5" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2446,6 +2953,10 @@ msgstr "" msgid "Mapgen v7" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2494,6 +3005,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2613,6 +3136,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2629,13 +3156,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp msgid "Mipmapping" msgstr "" @@ -2712,10 +3232,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2732,10 +3248,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2776,10 +3300,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2823,7 +3343,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2844,22 +3364,14 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Preload inventory textures" -msgstr "" - #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" @@ -2879,6 +3391,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2907,6 +3423,22 @@ msgstr "" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -2948,6 +3480,21 @@ msgstr "" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3024,10 +3571,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3043,6 +3586,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3053,13 +3600,17 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3103,19 +3654,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp msgid "Texture path" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3157,6 +3731,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3255,7 +3833,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3270,6 +3868,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3279,23 +3883,27 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3404,6 +4012,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3414,6 +4034,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3426,16 +4054,11 @@ msgstr "" msgid "cURL timeout" msgstr "" -#, fuzzy -#~ msgid "Game Name" -#~ msgstr "Spill" +#~ msgid "is required by:" +#~ msgstr "trengs av:" -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " -#~ msgstr "" -#~ "Advarsel: Noen modifikasjoner er ikke konfigurert enda. \n" -#~ "De vil bli aktivert som standard når du lagrer konfigurasjonen." +#~ msgid "Configuration saved. " +#~ msgstr "Konfigurasjon lagret. " #~ msgid "" #~ "Warning: Some configured mods are missing.\n" @@ -3444,8 +4067,21 @@ msgstr "" #~ "Advarsel: Noen konfigurerte modifikasjoner mangler. \n" #~ "Instillingene deres vil bli fjernet når du lagrer konfigurasjonen." -#~ msgid "Configuration saved. " -#~ msgstr "Konfigurasjon lagret. " +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Advarsel: Noen modifikasjoner er ikke konfigurert enda. \n" +#~ "De vil bli aktivert som standard når du lagrer konfigurasjonen." -#~ msgid "is required by:" -#~ msgstr "trengs av:" +#, fuzzy +#~ msgid "Game Name" +#~ msgstr "Spill" + +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "aktivert" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Deaktiver Alle" diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 5ffb1c6c..53391715 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -2,33 +2,32 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-06 07:40+0200\n" -"Last-Translator: E. Kastelijn \n" -"Language-Team: Dutch \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-07 00:58+0000\n" +"Last-Translator: Auke Kok \n" +"Language-Team: Dutch " +"\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Er is een fout opgetreden in een Lua script, zoals een mod:" +msgstr "" +"Er is een fout opgetreden in een Lua script (bijvoorbeeld van een mod):" #: builtin/fstk/ui.lua msgid "An error occured:" msgstr "Er is een fout opgetreden:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Hoofdmenu" @@ -37,13 +36,12 @@ msgid "Ok" msgstr "Ok" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Verbinden" +msgstr "Opnieuw verbinding maken" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "De server heeft gevraagd opnieuw verbinding te maken:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,15 +49,15 @@ msgstr "Bezig met laden..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Protocol versie stemt niet overeen. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "De server vereist protocol versie $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "De server ondersteunt protocol versies $1 tot en met $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -69,15 +67,17 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Wij ondersteunen enkel protocol versie $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Wij ondersteunen protocol versies $1 tot en met $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Annuleer" @@ -87,36 +87,38 @@ msgstr "Afhankelijkheden:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" -msgstr "MP uitschakelen" +msgstr "MV uitzetten" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" -msgstr "MP inschakelen" +msgstr "MV aanzetten" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "Alles aan" +msgstr "Alles aanzetten" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Mod \"$1\" kan niet gebruikt worden: de naam bevat ongeldige karakters. " +"Enkel [a-z0-9_] zijn toegestaan." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" -msgstr "Geen std" +msgstr "Verberg std. mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "Verberg mp mods" +msgstr "Verberg MV mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Bewaar" @@ -126,7 +128,7 @@ msgstr "Wereld:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "ingeschakeld" +msgstr "aangeschakeld" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -138,7 +140,7 @@ msgstr "Maak aan" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "Download een sub-game, zoals minetest_game, van minetest.net" +msgstr "Download een sub-spel, zoals minetest_game, van minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -150,7 +152,7 @@ msgstr "Spel" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Kaartgenerator" +msgstr "Wereldgenerator" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -158,12 +160,13 @@ msgstr "Geen wereldnaam opgegeven of geen spel geselecteerd" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" -msgstr "kiemgetal" +msgstr "Kiemgetal" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "" -"Waarschuwing: De minimale ontwikkel test is bedoeld voor ontwikkelaars." +"Waarschuwing: Het minimale ontwikkellaars-test-spel is bedoeld voor " +"ontwikkelaars." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -171,36 +174,30 @@ msgstr "Naam wereld" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "Je heb geen sub-spellen geïnstalleerd." +msgstr "Er zijn geen spellen geïnstalleerd." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Weet je zeker dat je \"$1\" wilt verwijderen?" +msgstr "Weet je zeker dat je mod \"$1\" wilt verwijderen?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Verwijderen" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "Modmgr: kan \"$1\" niet verwijderen" +msgstr "Modmgr: kan mod \"$1\" niet verwijderen" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" -msgstr "Modmgr: onjuist pad \"$1\"" - -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Natuurlijk niet!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Ja" +msgstr "Modbeheer: onjuist pad \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Verwijder wereld \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nee" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Accepteren" @@ -209,6 +206,98 @@ msgstr "Accepteren" msgid "Rename Modpack:" msgstr "Modverzameling hernoemen:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" is geen geldige vlag." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Er is geen beschrijving van deze instelling beschikbaar)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Terug naar instellingen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Bladeren" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Uitgeschakeld" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Aanpassen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Ingeschakeld" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" +"Formaat is 3 getallen, gescheiden door komma's en tussen vierkante haken." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formaat: , , (, , " +"), , , " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Spellen" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Optioneel: de lacunaritie (uit de fractal-meetkunde: een maat voor\n" +"hoeveelheid en grootte van 'gaten') kan aan het einde toegevoegd worden,\n" +"voorafgegaan door een komma." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Geef een lijst van vlaggen, door komma's gescheiden." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Voer een geldig geheel getal in." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Voer een geldig getal in." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Mogelijke waarden zijn: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Standaardwaarde herstellen" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Pad selecteren" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Technische namen weergeven" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "De waarde moet groter zijn dan $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "De waarde moet lager zijn dan $1." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -219,7 +308,7 @@ msgstr "" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" -msgstr "Installeren van $1 in $2 is mislukt" +msgstr "Installeren van mod $1 in $2 is mislukt" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" @@ -227,11 +316,12 @@ msgstr "Mod installeren: bestand: \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "Mod installeren: kan geen echte modnaam vinden voor: $1" +msgstr "Mod installeren: kan de echte modnaam niet vinden voor: $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" -msgstr "Mod installeren: kan geen geschikte map vinden voor modverzameling $1" +msgstr "" +"Mod installeren: kan geen geschikte map-naam vinden voor modverzameling $1" #: builtin/mainmenu/store.lua msgid "Close store" @@ -239,7 +329,7 @@ msgstr "Winkel sluiten" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "$1 aan het downloaden, even wachten..." +msgstr "$1 wordt gedownload, een ogenblik geduld..." #: builtin/mainmenu/store.lua msgid "Install" @@ -251,7 +341,7 @@ msgstr "Pagina $1 van $2" #: builtin/mainmenu/store.lua msgid "Rating" -msgstr "Rang" +msgstr "Waardering" #: builtin/mainmenu/store.lua msgid "Search" @@ -271,11 +361,11 @@ msgstr "Ongesorteerd" #: builtin/mainmenu/store.lua msgid "re-Install" -msgstr "opnieuw installeren" +msgstr "Opnieuw installeren" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "Actieve bijdragers" +msgstr "Andere actieve ontwikkelaars" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" @@ -287,11 +377,11 @@ msgstr "Credits" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "Vroegere bijdragers" +msgstr "Vroegere ontwikkelaars" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "Eerdere hoofdontwikkelaars" +msgstr "Vroegere hoofdontwikkelaars" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -299,15 +389,11 @@ msgstr "Geïnstalleerde Mods:" #: builtin/mainmenu/tab_mods.lua msgid "Mod information:" -msgstr "Mod beschrijving:" - -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mods" +msgstr "Mod-beschrijving:" #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" -msgstr "Geen mod beschrijving aanwezig" +msgstr "Geen mod-beschrijving aanwezig" #: builtin/mainmenu/tab_mods.lua msgid "Rename" @@ -319,19 +405,19 @@ msgstr "Selecteer Modbestand:" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" -msgstr "Geselecteerde mod deinstalleren" +msgstr "Geselecteerde mod deïnstalleren" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "Geselecteerde modpack deinstalleren" +msgstr "Geselecteerde modverzameling deïnstalleren" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "IP-Adres / Poort :" +msgid "Address / Port" +msgstr "Server adres / Poort" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" -msgstr "Client" +msgstr "Cliënt" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" @@ -339,32 +425,31 @@ msgstr "Verbinden" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "Creatieve Modus" +msgstr "Creatieve modus" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "Schade ingeschakeld" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Verwijderen" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Naam / Wachtwoord :" +msgstr "Verwondingen aangeschakeld" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Publieke Serverlijst" +msgid "Del. Favorite" +msgstr "Verwijder Favoriete" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "Favorieten" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Naam / Wachtwoord" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "PvP ingeschakeld" +msgstr "Spelergevechten aangeschakeld" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "Adres" +msgstr "Lokaal server-adres" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -373,16 +458,16 @@ msgstr "Instellingen" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Creative Mode" -msgstr "Creatieve Modus" +msgstr "Creatieve modus" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Enable Damage" -msgstr "Schade inschakelen" +msgstr "Verwondingen inschakelen" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" -msgstr "Naam/Wachtwoord" +msgstr "Naam / Wachtwoord" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "New" @@ -390,7 +475,7 @@ msgstr "Nieuw" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "No world created or selected!" -msgstr "Geen wereldnaam opgegeven of geen spel geselecteerd!" +msgstr "Geen wereldnaam opgegeven of geen wereld aangemaakt!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -414,99 +499,165 @@ msgstr "Serverpoort" #: builtin/mainmenu/tab_server.lua msgid "Start Game" -msgstr "Start Server" +msgstr "Start spel" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D wolken" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Geavanceerde Instellingen" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Weet je zeker dat je je wereld wilt resetten?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Bilineaire Filtering" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "Bumpmapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" -msgstr "Toetsen" +msgstr "Toetsen aanpassen" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "MP uitschakelen" +msgid "Connected Glass" +msgstr "Verbonden Glas" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Mooie bladeren" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "ingeschakeld" +msgid "Mipmap" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Anisotropisch filteren" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Spellen" +msgid "No" +msgstr "Nee" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "Geen Filter" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "Geen Mipmap" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "Node Oplichten" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "Node omstrepen" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Geen" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "Normaal Mappen" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "Ondoorzichtige bladeren" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Selecteren" +msgid "Opaque Water" +msgstr "Ondoorzichtig water" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Parallax occlusie" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Effectdeeltjes" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Instellingen" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Eenvoudige bladeren" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Vloeiende verlichting" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Textuur:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Om schaduwen mogelijk te maken moet OpenGL worden gebruikt." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Toon Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Toetsgrenswaarde (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Tri-Lineare Filtering" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Bewegende bladeren" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Bewegende planten" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Golvend water" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Ja" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" msgstr "Mods configureren" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" msgstr "Hoofdmenu" @@ -516,7 +667,7 @@ msgstr "Start Singleplayer" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" -msgstr "Speel" +msgstr "Spelen" #: builtin/mainmenu/tab_singleplayer.lua msgid "Singleplayer" @@ -526,23 +677,17 @@ msgstr "Singleplayer" msgid "No information available" msgstr "Geen informatie aanwezig" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Selecteer textuurverzameling:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" msgstr "Texturen" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Fout bij verbinden (time out?)" +msgstr "Time-out bij opzetten verbinding." #: src/client.cpp msgid "Done!" @@ -556,17 +701,13 @@ msgstr "Nodes initialiseren" msgid "Initializing nodes..." msgstr "Nodes initialiseren..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Voorwerp texturen..." - #: src/client.cpp msgid "Loading textures..." -msgstr "Bezig met laden van texturen..." +msgstr "Bezig met texturen te laden..." #: src/client.cpp msgid "Rebuilding shaders..." -msgstr "Herbouwen van shaders..." +msgstr "Texturen herbouwen..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -574,11 +715,11 @@ msgstr "Fout bij verbinden (time out?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Kan niet de game laden of vinden \"" +msgstr "Kan het spel niet laden of niet vinden \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "Onjuiste gamespec." +msgstr "Onjuiste spel-spec." #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -586,11 +727,11 @@ msgstr "Hoofdmenu" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "Geen wereld en adres geselecteerd. Niks te doen." +msgstr "Geen wereld geselecteerd en adres opgegeven. Niets te doen." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "Spelernaam te lang." +msgstr "Spelernaam is te lang." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -606,7 +747,7 @@ msgid "" "Check debug.txt for details." msgstr "" "\n" -"Lees debug.txt voor details." +"Kijk in debug.txt voor details." #: src/game.cpp msgid "Change Keys" @@ -626,11 +767,11 @@ msgstr "Verder spelen" #: src/game.cpp msgid "Creating client..." -msgstr "Bezig client te maken..." +msgstr "Bezig cliënt te maken..." #: src/game.cpp msgid "Creating server..." -msgstr "Aanmaken van server..." +msgstr "Bezig server te maken..." #: src/game.cpp msgid "" @@ -653,10 +794,10 @@ msgstr "" "- Q: weggooien\n" "- I: rugzak\n" "- Muis: draaien/kijken\n" -"- L.muisknop: graaf/sla\n" -"- R.muisknop: plaats/gebruik\n" -"- Muiswiel: selecteer\n" -"- T: chat\n" +"- L-muisknop: graaf/sla\n" +"- R-muisknop: plaats/gebruik\n" +"- Muiswiel: selecteer vak\n" +"- T: chatten\n" #: src/game.cpp msgid "" @@ -673,6 +814,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Standaardbesturing:\n" +"Geen menu getoond:\n" +"- enkele tik: activeren\n" +"- dubbele tik: plaats / gebruik\n" +"- vinger schuiven: rondkijken\n" +"Menu of inventaris getoond:\n" +"- dubbele tik buiten menu:\n" +" --> sluiten\n" +"- aanraken stapel of vak:\n" +" --> stapel verplaatsen\n" +"- aanraken & slepen, tik met tweede vinger\n" +" --> plaats enkel object in vak\n" #: src/game.cpp msgid "Exit to Menu" @@ -702,17 +855,13 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "Node definities..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Doorgaan" - #: src/game.cpp msgid "Resolving address..." -msgstr "IP-adres opzoeken..." +msgstr "Server-adres opzoeken..." #: src/game.cpp msgid "Respawn" -msgstr "Herspawnen" +msgstr "Respawn" #: src/game.cpp msgid "Shutting down..." @@ -720,19 +869,23 @@ msgstr "Uitschakelen..." #: src/game.cpp msgid "Sound Volume" -msgstr "Volume" +msgstr "Geluidsvolume" #: src/game.cpp msgid "You died." -msgstr "Je bent gestorven." +msgstr "Je bent dood." + +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "oké" #: src/guiFormSpecMenu.cpp msgid "Enter " -msgstr "" +msgstr "Enter " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "ok" +msgid "Proceed" +msgstr "Doorgaan" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -756,7 +909,7 @@ msgstr "Console" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "2x \"springen\" om te vliegen" +msgstr "2x \"springen\" schakelt vliegen aan/uit" #: src/guiKeyChangeMenu.cpp msgid "Drop" @@ -768,7 +921,7 @@ msgstr "Vooruit" #: src/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "Rugzak" +msgstr "inventaris" #: src/guiKeyChangeMenu.cpp msgid "Jump" @@ -782,7 +935,7 @@ msgstr "Toets is al in gebruik" msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" "Sneltoetsen. (Als dit menu stuk gaat, verwijder dan instellingen uit " -"minetest.conf)." +"minetest.conf)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" @@ -790,11 +943,11 @@ msgstr "Links" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "Print stacks" +msgstr "Print debug-stacks" #: src/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "Range instellen" +msgstr "Zichtbereik" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" @@ -802,12 +955,11 @@ msgstr "Rechts" #: src/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "Kruipen" +msgstr "sluipen" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Snel bewegen aan/uit" +msgstr "Cinematic modus aan/uit" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -827,7 +979,7 @@ msgstr "Gebruiken" #: src/guiKeyChangeMenu.cpp msgid "press key" -msgstr "druk op" +msgstr "druk op toets" #: src/guiPasswordChange.cpp msgid "Change" @@ -847,7 +999,7 @@ msgstr "Huidig wachtwoord" #: src/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "Wachtwoorden zijn niet gelijk!" +msgstr "De wachtwoorden zijn niet gelijk!" #: src/guiVolumeChange.cpp msgid "Exit" @@ -855,7 +1007,7 @@ msgstr "Terug" #: src/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "Volume: " +msgstr "Geluidsvolume: " #: src/keycode.cpp msgid "Apps" @@ -871,7 +1023,7 @@ msgstr "Terug" #: src/keycode.cpp msgid "Capital" -msgstr "Kapitaal" +msgstr "Hoofdletter" #: src/keycode.cpp msgid "Clear" @@ -979,7 +1131,7 @@ msgstr "Min" #: src/keycode.cpp msgid "Mode Change" -msgstr "Modus veranderen" +msgstr "Modus verandering" #: src/keycode.cpp msgid "Next" @@ -1079,7 +1231,7 @@ msgstr "Eerste" #: src/keycode.cpp msgid "Return" -msgstr "Terug" +msgstr "Enter" #: src/keycode.cpp msgid "Right Button" @@ -1143,24 +1295,35 @@ msgstr "X knop 2" #: src/keycode.cpp msgid "Zoom" -msgstr "Zoom" +msgstr "Zoomen" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = parallax occlusie met helling-informatie (sneller).\n" +"1 = 'reliëf mapping' (lanzamer, nauwkeuriger)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "3D wolken" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D modus" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1168,38 +1331,62 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3D ondersteuning.\n" +"Op dit moment ondersteund:\n" +"- none: geen 3D.\n" +"- anaglyph: 3D met de kleuren cyaan en magenta.\n" +"- interlaced: 3D voor polariserend scherm (even/oneven beeldlijnen).\n" +"- topbottom: 3D met horizontaal gedeeld scherm (boven/onder).\n" +"- sidebyside: 3D met vertikaal gedeeld scherm (links/rechts)." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Vooringesteld kiemgetal voor de wereld. Indien leeg, wordt een willekeurige " +"waarde gekozen.\n" +"Wanneer vanuit het hoofdmenu een nieuwe wereld gecreëerd wordt, kan een " +"ander kiemgetal gekozen worden." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Een bericht dat wordt getoond aan alle verbonden spelers als de server " +"crasht." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Een bericht dat wordt getoond aan alle verbonden spelers als de server " +"afgesloten wordt." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Maximaal aantal 'emerge' blokken in de wachtrij" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Versnelling in lucht" + +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "Bereik waarbinnen blokken actief zijn" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "Bereik waarbinnen blok wijzigers actief zijn" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Bereik waarbinnen blokken actief zijn" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Bereik waarbinnen actieve objecten gestuurd worden" #: src/settings_translation_file.cpp msgid "" @@ -1207,39 +1394,54 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Standaard serveradres waarmee verbinding gemaakt moet worden.\n" +"Indien leeg, wordt een lokale server gestart.\n" +"In het hoofdmenu kan een ander adres opgegeven worden." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Aangepaste DPI (dots per inch) instelling voor het scherm, bijv. voor 4k " +"schermen (niet voor X11 of Android)." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Aangepaste gamma voor de licht-tabellen. Lagere waardes zijn helderder.\n" +"Deze instelling wordt enkel gebruikt door de cliënt, en wordt genegeerd door " +"de server." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Geavanceerd" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Hoogte Koudheid" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Zet 'snel' altijd aan bij 'vliegen'" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Ambient occlusion gamma" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Vergroot de valleien" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" -msgstr "Anisotrope Filtering" +msgstr "Anisotropische filtering" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Meldt server aan bij de server-lijst" #: src/settings_translation_file.cpp msgid "" @@ -1247,42 +1449,53 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"URL van de serverlijst om aan te melden.\n" +"Voor het aanmelden van een ipv6 adres bij de minetest serverlijst, gebruik " +"'v6.servers.minetest.net'." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Ingeschatte (X,Y,Z) schaal van fractal in nodes." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Vraag om de verbinding te herstellen na een server-crash" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Meldt de server automatisch aan bij de serverlijst." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" msgstr "Achteruit" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Basishoogte van terrein" + #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Basis" + +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "Standaardvoorrechten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" -msgstr "Bi-Lineaire Filtering" +msgstr "Bi-Lineaire filtering" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Adres" +msgstr "Lokaal server-adres" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Aantal bits per pixel (oftewel: kleurdiepte) in full-screen modus." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Multiplayer" +msgstr "Bouwen op de plaats van de speler" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1290,130 +1503,165 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Vloeiender maken van de camerabeweging" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Vloeiender maken van de camerabeweging (in cinematic modus)" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Toets voor cameraverversing aan/uit" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Grot noise patroon #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Grot noise patroon #2" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "Grot breedte" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Grotten en tunnels vormen bij het kruispunt van twee noise patronen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat key" -msgstr "Toetsen" +msgstr "Chat-toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Toetsen" +msgstr "Toets voor tonen/verbergen chat" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Chunk-grootte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Creatieve Modus" +msgstr "Cinematic modus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Creatieve Modus" +msgstr "Cinematic modus aan/uit toets" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Schoonmaken Transparante texturen" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Cliënt en server" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Klimsnelheid" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Hoogte van de wolken" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Diameter van de wolken" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D wolken" +msgstr "Wolken" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Wolken bestaan enkel op de cliënt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Hoofdmenu" +msgstr "Wolken in het menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Gekleurde mist" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Lijst, door komma's gescheiden, van vertrouwde mods die onveilige functies " +"mogen gebruiken,\n" +"zelfs wanneer mod-beveiliging aan staat (via request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Opdracht" +msgstr "Opdracht-toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Verbonden glas" +msgstr "Verbind glas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Verbinding met de server wordt gemaakt..." +msgstr "Gebruik van externe media-server toestaan" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Verbind glas-nodes met elkaar (indien ondersteund door het type node)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Console" +msgstr "Console-alphawaarde" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Console" +msgstr "Console-kleur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Console" +msgstr "Console-toets" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Continu vooruit lopen" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Speler loopt continu vooruit (wordt enkel gebruikt voor testen)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Besturing" #: src/settings_translation_file.cpp msgid "" @@ -1421,87 +1669,119 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Bepaalt de lengte van de dag/nacht cyclus\n" +"Voorbeeld: 72 = 20min, 360 = 4min, 1 = 24 uur, 0 = de kloktijd (dag, nacht, " +"schemering) verandert niet." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Bepaalt de grootte van woestijnen en stranden in de wereld-generator " +"(mapgen) v6.\n" +"Als 'snowbiomes' aan staat, wordt deze instelling genegeerd." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controleert steilheid/diepte van meer depressies." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controleert steilheid/hoogte van heuvels." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" +"Controleert breedte van tunnels, een kleinere waarde maakt bredere tunnels." #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Crash boodschap" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Draadkruis-alphawaarde" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Draadkruis-alphawaarde. (ondoorzichtigheid; tussen 0 en 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Draadkruis-kleur" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Draadkruis-kleur (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Snelheid bij hurken" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "Scherm DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Schade inschakelen" +msgstr "Verwondingen" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Toets voor aan/uitzetten debug informatie" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Debug logniveau" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Tijdsstaplengte van de server" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Standaardversnelling" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "spel aanpassen" +msgstr "Standaardspel" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Standaardspel bij het maken een nieuwe wereld.\n" +"In het hoofdmenu kan een ander spel geselecteerd worden." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Nieuw wachtwoord" +msgstr "Standaardwachtwoord" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Standaardvoorrechten" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Standaard time-out voor cURL, in milliseconden.\n" +"Wordt alleen gebruikt indien gecompileerd met cURL ingebouwd." #: src/settings_translation_file.cpp msgid "" @@ -1512,88 +1792,100 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Maximale afstand (in blokken van 16 nodes) waarbinnen andere spelers " +"zichtbaar zijn (0 = oneindig ver)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Vertraging bij het tonen van tooltips, in milliseconden." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Gedrag bij gebruik van verouderde Lua API functies" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Diepte waaronder je grote grotten vind." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Diepte waaronder je hele grote grotten vind." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Daalsnelheid" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Beschrijving van de server. Wordt getoond in de server-lijst, en wanneer " +"spelers inloggen." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Textuur-animaties niet synchroniseren" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." msgstr "" +"Gedetailleerde profiling-data voor mods. Nuttig voor mod-ontwikkelaars." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" +msgstr "Gedetailleerde profiling van mods" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Deeltjes aanzetten" +msgstr "Valsspeelbescherming uitschakelen" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Lege wachtwoorden niet toestaan" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Domeinnaam van de server; wordt getoond in de serverlijst." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "2x \"springen\" om te vliegen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "2x \"springen\" om te vliegen" +msgstr "2x \"springen\" schakelt vlieg-modus aan/uit." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Weggooi-toets" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Print wereldgenerator debug informatie." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "VBO aanzetten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Online mod opslagplaats" +msgstr "Veilige modus voor mods aanzetten" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Schakel verwondingen en sterven van spelers aan." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Schakel willkeurige invoer aan (enkel voor testen)." #: src/settings_translation_file.cpp msgid "" @@ -1609,6 +1901,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Zet dit aan om verbindingen van oudere cliënten te weigeren.\n" +"Oudere cliënten zijn compatibel, in de zin dat ze niet crashen als ze " +"verbinding \n" +"maken met nieuwere servers, maar ze ondersteunen wellicht niet alle nieuwere " +"mogelijkheden." #: src/settings_translation_file.cpp msgid "" @@ -1617,6 +1914,11 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Sta het gebruik van een externe media-server toe (indien opgegeven door de " +"server).\n" +"Het gebruik van externe media-servers versnelt het downloaden van media " +"(bijv. texturen) aanzienlijk\n" +"bij het maken van een verbinding met een server." #: src/settings_translation_file.cpp msgid "" @@ -1624,6 +1926,13 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Schakel IPv6 in voor de server. Afhankelijk van de systeemconfiguratie\n" +"kan dit tot gevolg hebben dat enkel IPv6 cliënten verbinding kunnen maken\n" +"Deze instelling wordt genegeerd als een lokaal server-adres ingesteld is." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Schakelt animatie van inventaris items aan." #: src/settings_translation_file.cpp msgid "" @@ -1632,15 +1941,22 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"bumpmapping aanzetten voor texturen. Normalmaps moeten al in de texture pack " +"zitten\n" +"of ze moeten automatisch gegenereerd worden.\n" +"Schaduwen moeten aanstaan." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "Schakelt caching van facedir geroteerde meshes." + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "Schakelt Filmisch Toon Mapping in" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Schade inschakelen" +msgstr "Schakelt de mini-kaart in." #: src/settings_translation_file.cpp msgid "" @@ -1659,71 +1975,84 @@ msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Experimentele optie. Kan bij een waarde groter dan 0 zichtbare\n" +"ruimtes tussen blokken tot gevolg hebben." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS in het pauze-menu" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Loopbeweging bij vallen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Terugval-font" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Terugval-font schaduw" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Terugval-font schaduw alphawaarde" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Terugval-fontgrootte" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Snel toets" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Versnelling in snelle modus" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Snelheid in snelle modus" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Snelle modus" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Snelle beweging toestaan (met de \"gebruiken\" toets).\n" +"Het \"fast\" voorrecht is vereist op de server." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Zichthoek" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Zichthoek in graden." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Bestand in de map 'client/serverlist/' met favoriete servers die getoond " +"worden in de multiplayer tab." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "Filler Diepte" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1734,73 +2063,79 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Geen filter" +msgstr "Filters" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Vast kiemgetal" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Vliegen toets" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Vliegen" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Mist" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Mist aan/uitschakelen toets" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Font pad" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Fontschaduw" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Fontschaduw alphawaarde" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Fontschaduw alphawaarde (ondoorzichtigheid, tussen 0 en 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "Fontschaduw afstand. Indien 0, dan wordt geen schaduw getekend." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Lettergrootte" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "Formaat van screenshots." #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Vooruit" +msgstr "Vooruit toets" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Freetype fonts" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Tot welke afstand blokken gegenereerd worden voor cliënten. In mapblokken " +"(16 nodes)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Tot welke afstand blokken naar cliënten gestuurd worden. In mapblokken (16 " +"nodes)." #: src/settings_translation_file.cpp msgid "" @@ -1809,56 +2144,74 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Volledig scherm" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "BPP bij volledig scherm" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Volledig scherm modus." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "GUI schaalfactor" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "GUI schaal-factor" +msgstr "GUI schalingsfilter" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "GUI schalingsfilter: txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Generiek" #: src/settings_translation_file.cpp msgid "Generate normalmaps" -msgstr "" +msgstr "Genereer normaalmappen" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Wereldgenerator instellingen specified voor generator v6.\n" +"Indien sneeuwgebieden aanstaan, dan worden oerwouden ook aangezet, en wordt " +"de \"jungles\" vlag genegeerd.\n" +"Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +"waarde.\n" +"Zet \"no\" voor een vlag om hem expliciet uit te zetten." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Grafisch" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Zwaartekracht" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP Modules" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "HUD aan/uitschakelen toets" #: src/settings_translation_file.cpp msgid "" @@ -1867,22 +2220,33 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Behandeling van verouderde lua api aanroepen:\n" +"- legacy: (probeer) het oude gedrag na te bootsen (standaard voor een " +"'release' versie).\n" +"- log: boots het oude gedrag na, en log een backtrace van de aanroep " +"(standaard voor een 'debug' versie).\n" +"- error: stop de server bij gebruik van een verouderde aanroep " +"(aanbevolen voor mod ontwikkelaars)." + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "Vertikale aanvangsgroote van het openingsvenster." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Hoogte waarop wolken voorbijdrijven." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "Hoge-nauwkeurigheid FPU" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Home-pagina van de server. Wordt getoond in de serverlijst." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Hoe diep rivieren te maken" #: src/settings_translation_file.cpp msgid "" @@ -1890,76 +2254,106 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Tot op welke afstand van actieve spelers blokken 'actief' zijn. In blokken " +"(van 16 nodes).\n" +"In actieve blokken worden objecten geladen (bijv. dieren die rondlopen) en " +"ABMs uitgevoerd (bijv. groeien van planten)." #: src/settings_translation_file.cpp msgid "" "How many blocks are flying in the wire simultaneously for the whole server." msgstr "" +"Het aantal blokken dat totaal tegelijk onderweg kan zijn, voor de hele " +"server." #: src/settings_translation_file.cpp msgid "How many blocks are flying in the wire simultaneously per client." -msgstr "" +msgstr "Het aantal blokken dat per cliënt tegelijk onderweg kan zijn." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"De tijd die de server wacht voordat een ongebruikt mapblok vergeten wordt.\n" +"Een hogere waarde zorgt voor een vloeiender spelervaring, maar kost meer " +"geheugen." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Hoe breed rivieren te maken" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 server" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6 ondersteuning." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Beperk de FPS tot maximaal deze waarde, zodat geen processor-\n" +"kracht verspild wordt zonder dat het toegevoegde waarde heeft." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "MP uitschakelen" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Indien uitgeschakeld, dan wordt met de \"gebruiken\" toets snel gevlogen " +"wanneer de \"vliegen\" en de \"snel\" modus aanstaan." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Indien deze optie aanstaat, in combinatie met \"vliegen\" modus, dan kan de " +"speler door vaste objecten heenvliegen.\n" +"Dit vereist het \"noclip\" voorrecht op de server." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "ingeschakeld" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Indien aangeschakeld, dan wordt de \"gebruiken\" toets gebruikt voor " +"omlaagklimmen en dalen i.p.v. de \"kruipen\" toets." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Indien aangeschakeld worden speleracties opgeslagen zodat ze teruggerold " +"kunnen worden.\n" +"Deze instelling wordt alleen bij het starten van de server gelezen." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "Valsspeelbescherming uitschakelen in multiplayer modus." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Zorg dat de server niet stopt in geval van ongeldige wereld-data.\n" +"Alleen aan te schakelen indien bekend is wat de consequenties zijn." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" +"Spelers kunnen zich niet aanmelden zonder wachtwoord indien aangeschakeld." #: src/settings_translation_file.cpp msgid "" @@ -1967,68 +2361,127 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Indien aangeschakeld, kan een speler blokken plaatsen op de eigen positie " +"(het niveau van de voeten en van de ogen).\n" +"Dit vergemakkelijkt het werken in nauwe ruimtes." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "" +"Indien aangeschakeld, dan worden spelers altijd op deze locatie geboren." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Wereldfouten negeren" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" msgstr "Spel" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" +"Chat console achtergrond alphawaarde (ondoorzichtigheid, tussen 0 en 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Chat console achtergrondkleur (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Interval voor het opslaan van belangrijke veranderingen in de wereld. In " +"seconden." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "Interval voor het sturen van de kloktijd naar cliënten." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "inventaris items animaties" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "Rugzak" +msgstr "Rugzak toets" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Muibeweging omkeren" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Vertikale muisbeweging omkeren." #: src/settings_translation_file.cpp msgid "Item entity TTL" +msgstr "Bestaansduur van objecten" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" +"Juliaverzameling: Aantal iteraties van de recursieve functie.\n" +"Bepaalt de schaal van de kleinste details." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Juliaverzameling: X-waarde van de 4D vorm.\n" +"Bereik is ongeveer -2 tot 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Juliaverzameling: Y-waarde van de 4D vorm.\n" +"Bereik is ongeveer -2 tot 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Juliaverzameling: Z-waarde van de 4D-vorm.\n" +"Bereik is ongeveer -2 tot 2." + +#: src/settings_translation_file.cpp msgid "Jump key" -msgstr "Springen" +msgstr "Springen toets" #: src/settings_translation_file.cpp msgid "Jumping speed" -msgstr "" +msgstr "Sprinsnelheid" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om oneindige zichtastand aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2036,13 +2489,20 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets voor het weggooien van het geselecteerde object.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om oneindige zichtastand aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2050,6 +2510,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets voor springen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2057,6 +2520,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om snel te bewegen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2064,6 +2530,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de speler achteruit te bewegen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2071,6 +2540,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de speler vooruit te bewegen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2078,6 +2550,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de speler naar links te bewegen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2085,6 +2560,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de speler naar rechts te bewegen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2092,6 +2570,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de chat-console te openen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2099,6 +2580,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om het chat-window te openen om commando's te typen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2106,6 +2590,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om het chat-window te openen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2113,6 +2600,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om het rugzak-window te openen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2120,6 +2610,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om debug-stapels te printen. Gebruikt voor ontwikkeling.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2129,6 +2622,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om te kruipen.\n" +"Wordt ook gebruikt om naar beneden te klimmen en te dalen indien " +"aux1_descends uitstaat.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2136,6 +2634,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om tussen 1e-persoon camera en 3e-persoon camera te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2143,6 +2644,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om screenshot te maken.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2150,6 +2654,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om cinematic modus aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2157,6 +2664,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de mini-kaart aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2164,6 +2674,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om snelle modus aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2171,6 +2684,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om vliegen aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2178,6 +2694,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om 'noclip' modus aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2185,6 +2704,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om camera-verversing aan/uit te schakelen. Enkel gebruikt voor " +"ontwikkeling.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2192,6 +2715,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om debug informatie aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2199,6 +2725,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om de HUD aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2206,6 +2735,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om het tonen van chatberichten aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2213,6 +2745,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om mist aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2220,6 +2755,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om het tonen van de code-profiler aan/uit te schakelen. Gebruikt voor " +"ontwikkeling.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2227,18 +2766,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Toets om oneindige zichtastand aan/uit te schakelen.\n" +"Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "Gebruik de 'gebruiken'-toets voor klimmen en dalen" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Taal" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Grote grotten diepte" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Lava Kenmerken" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Type van bladeren" #: src/settings_translation_file.cpp msgid "" @@ -2247,17 +2797,31 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Type bladeren:\n" +"- Fancy: alle zijden zichtbaar\n" +"- Simple: enkel buitenzijden zichtbaar; special_tiles worden gebruikt " +"indien gedefiniëerd\n" +"- Opaque: geen doorzichtige bladeren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Linker Menu" +msgstr "Toets voor links" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." msgstr "" +"Lengte van server stap, en interval waarin objecten via het netwerk ververst " +"worden." + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "Tijd tussen ABM executie cycli" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "Tijd tussen NodeTimer executie cycli" #: src/settings_translation_file.cpp msgid "" @@ -2270,14 +2834,20 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Hoeveelheid logging die geschreven wordt naar debug.txt:\n" +"- (geen logging)\n" +"- none (enkel berichten zonder gedefiniëerd niveau)\n" +"- error (alles van minstens fout-niveau)- warning (alles van minstens " +"waarschuwings-niveau)- action (alles van minstens actie-niveau)- info " +"(alles van minstens informatie-niveau)- verbose (alles)" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "Emerge-wachtrij voor lezen" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "Emerge-wachtrij voor genereren" #: src/settings_translation_file.cpp msgid "" @@ -2287,328 +2857,542 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"Beperking van aantal parallele HTTP verzoeken. Van toepassing op:\n" +"- Laden van media indien een externe media-server gebruikt wordt.\n" +"- Laden van de serverlijst en server-aankondigingen.\n" +"- Downloads vanuit het hoofdmens (bijv. mods).\n" +"(Alleen van toepassing indien cURL meegecompileerd is)." #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Vloeibaarheid van vloeistoffen" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Vloeistof viscositeit gladmaakfactor" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Vloeistof-verspreiding per stap" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Inkortingstijd vloeistof-wachtrij" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Zinksnelheid in vloeistof" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Vloeistof verspreidingssnelheid in seconden." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Vloeistof verspreidingssnelheid" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Hoofdmenu spelbeheer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Hoofdmenu" +msgstr "Hoofdmenu modbeheer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Hoofdmenu" +msgstr "Hoofdmenu script" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Mist en hemelkleur afhankelijk van tijd van de dag (zonsopkomst/ondergang) " +"en kijkrichting." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" +"Maakt dat DirectX werkt met LuaJIT. Schakel dit uit als het problemen geeft." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Wereld map" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Wereldgenerator instellingen specified voor generator v6.\n" +"Indien sneeuwgebieden aanstaan, dan worden oerwouden ook aangezet, en wordt " +"de \"jungles\" vlag genegeerd.\n" +"Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +"waarde.\n" +"Zet \"no\" voor een vlag om hem expliciet uit te zetten." #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Wereldgenerator instellingen specified voor generator v7.\n" +"\"ridges\" zijn rivieren.\n" +"Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +"waarde.\n" +"Zet \"no\" voor een vlag om hem expliciet uit te zetten." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Wereldgenerator instellingen specified voor generator v6.\n" +"Indien sneeuwgebieden aanstaan, dan worden oerwouden ook aangezet, en wordt " +"de \"jungles\" vlag genegeerd.\n" +"Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +"waarde.\n" +"Zet \"no\" voor een vlag om hem expliciet uit te zetten." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Wereldgenerator instellingen specified voor generator v6.\n" +"Indien sneeuwgebieden aanstaan, dan worden oerwouden ook aangezet, en wordt " +"de \"jungles\" vlag genegeerd.\n" +"Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +"waarde.\n" +"Zet \"no\" voor een vlag om hem expliciet uit te zetten." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Wereld-grens" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Interval voor opslaan wereld" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Max aantal wereldblokken" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Wereldblok vergeet-tijd" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Valleien Wereldgenerator" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Wereldgenerator landschapstemperatuur ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Wereldgenerator landschapsvochtigheidsovergangen ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" -msgstr "" +msgstr "Wereldgenerator landschapsvochtigheid ruisparameters" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Kaartgenerator" +msgstr "Wereldgenerator debug" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Wereldgenerator vlaggen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Vlakke Wereldgenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "Vlakke wereldgenerator grot breedte" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "Vlakke wereldgenerator grotten (1) ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "Vlakke wereldgenerator grotten (2) ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "Fractal wereldgenerator vuldiepte ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Vlakke wereldgenerator vlaggen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Vlakke wereldgenerator grondniveau" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Vlakke wereldgenerator heuvel steilheid" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Vlakke wereldgenerator heuvel grenswaarde" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Vlakke wereldgenerator meer steilheid" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Vlakke wereldgenerator meer grenswaarde" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "Vlakke wereldgenerator grote grotten diepte" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "Vlakke Wereldgenerator basisterrein ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Fractal wereldgenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "Fractal wereldgenerator grot breedte" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "Fractal wereldgenerator grotten (1) ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "Fractal wereldgenerator grotten (2) ruisparameters" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Kaartgenerator" +msgid "Mapgen fractal filler depth noise parameters" +msgstr "Fractal wereldgenerator vuldiepte ruisparameters" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Fractal wereldgenerator vlaggen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Fractal wereldgenerator julia iteraties" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "Fractal wereldgenerator julia w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "Fractal wereldgenerator julia x" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Fractal wereldgenerator julia y" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Fractal wereldgenerator julia z" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Fractal wereldgenerator julia centrum-afstand" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Fractal wereldgenerator julia schaal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Fractal wereldgenerator zeebodem parameters" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Fractal wereldgenerator julia w-doorsnede" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" -msgstr "" +msgstr "Wereldgenerator landschapstemperatuurovergangen ruisparameters" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Kaartgenerator" +msgstr "Wereldgenerator" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Wereldgenerator v5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Kaartgenerator" +msgid "Mapgen v5 cave width" +msgstr "Fractal wereldgenerator julia schaal" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" -msgstr "" +msgstr "Wereldgenerator v5 grot 1 ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave2 noise parameters" -msgstr "" +msgstr "Wereldgenerator v5 grot 2 ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v5 factor noise parameters" -msgstr "" +msgstr "Wereldgenerator v5 ruisparameters factor" #: src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen v5 filler depth noise parameters" -msgstr "" +msgstr "Wereldgenerator v5 vuldiepte ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v5 height noise parameters" -msgstr "" +msgstr "Wereldgenerator v5 hoogte ruisparameters" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Kaartgenerator" +msgstr "Wereldgenerator v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 appelbomen ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "Wereldgenerator v6 strand frequentie" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 strand ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 biome noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 landschap ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 cave noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 grotten ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Wereldgenerator v6 woestijn ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "Wereldgenerator v6 vlaggen" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 hoogte-selectie ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 humidity noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 vochtigheid ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 mud noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 modder ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 steepness noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 steilheid ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain altitude noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 terrein-hoogte ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain base noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 basisterrein ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v6 trees noise parameters" -msgstr "" +msgstr "Wereldgenerator v6 bomen ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7" +msgstr "Wereldgenerator v7" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v7" -msgstr "Kaartgenerator" +msgid "Mapgen v7 cave width" +msgstr "Fractal wereldgenerator julia schaal" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 grotten (1) ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave2 noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 grotten (2) ruisparameters" #: src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen v7 filler depth noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 vuldiepte ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "Wereldgenerator v7 vlaggen" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 hoogte-selectie ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 mount height noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 heuvel-hoogte ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 mountain noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 bergen ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 richel ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge water noise parameters" -msgstr "" +msgstr "Wereldgenerator richel-water ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain altitude noise parameters" -msgstr "" +msgstr "Wereldgenerator v7 terrein-hoogte ruisparameters" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain base noise parameters" +msgstr "Wereldgenerator v7 terrein basis ruisparameters" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 terrain persistation noise parameters" +msgstr "Wereldgenerator v7 terrein-'persist' ruisparameters" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen v7 terrain persistation noise parameters" +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." msgstr "" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Maximale afstand van te genereren blokken" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "Maximale afstand voor te versturen blokken" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." msgstr "" +"Maximaal aantal vloeistof-nodes te verwerken (dwz verspreiden) per server-" +"stap." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "Maximaal extra aantal blokken voor clearobjects" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "Maximaal aantal pakketten per iteratie" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "Maximum FPS" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Maximum FPS als het spel gepauzeerd is." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "Maximaal aantal geforceerd geladen blokken" #: src/settings_translation_file.cpp +#, fuzzy msgid "Maximum hotbar width" -msgstr "" +msgstr "Maximale breedte van de 'hotbar'" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "Maximaal aantal blokken in de wachtrij voor laden/genereren." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximaal aantal blokken in de wachtrij om gegenereerd te worden.\n" +"Laat leeg om een geschikt aantal automatisch te laten berekenen." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"Maximaal aantal blokken in de wachtrij om van disk geladen te worden.\n" +"Laat leeg om een geschikt aantal automatisch te laten berekenen." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "Maximaal aantal geforceerd geladen blokken." #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"Maximaal aantal wereldblokken dat door de cliënt in het geheugen gehouden " +"wordt.\n" +"Gebruik -1 voor een onbeperkt aantal." #: src/settings_translation_file.cpp msgid "" @@ -2616,40 +3400,50 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"Maximaal aantal pakketen dat per server-stap verzonden wordt. Verminder dit " +"aantal\n" +"bij een langzame verbinding, maar niet lager dan het gewenste aantal " +"cliënten\n" +"dat gelijk verbonden kan zijn." #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "Maximaal aantal spelers dat tegelijk verbonden kan zijn." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "Maximaal aantal objecten per block." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"Maximaal gedeelte van het window dat gebruikt mag worden voor de hotbar.\n" +"Dit is nuttig als er iets links of rechts ervan getoond moet worden." #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "Maximaal aantal tegelijk te verzenden blokken per cliënt" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "Maximaal aantal tegelijk te verzenden blokken (totaal)" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." msgstr "" +"Maximale duur voor een download van een bestand (bijv. een mod). In " +"milliseconden." #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Maximaal aantal gebruikers" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "Maximaal aantal objecten per blok" #: src/settings_translation_file.cpp #, fuzzy @@ -2662,34 +3456,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Bericht van de dag" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." +msgstr "Toon bericht aan spelers die verbinding maken." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Mini-kaart" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Mini-kaart toets" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Mini-kaart scan-hoogte" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" +msgstr "Minimale textuur-grootte voor filters" #: src/settings_translation_file.cpp #, fuzzy @@ -2702,49 +3493,58 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "Mod-winkel details URL" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "Mod-winkel download URL" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "Mod-winkel mod-lijst URL" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Vaste-breedte font pad" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Vaste-breedte font grootte" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Muis-gevoeligheid" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Muis-gevoeligheidsfactor." #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Vermenigvuldigingsfactor van loopbeweging bij vallen.\n" +"Bijvoorbeeld: 0 voor geen loopbeweging; 1.0 voor normale loopbeweging; 2.0 " +"voor twee keer grotere loopbeweging." #: src/settings_translation_file.cpp msgid "" "Multiplier for view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"Vermenigvuldigingsfactor van loopbeweging.\n" +"Bijvoorbeeld: 0 voor geen loopbeweging; 1.0 voor normale loopbeweging; 2.0 " +"voor twee keer grotere loopbeweging." #: src/settings_translation_file.cpp msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"Wereldgenerator te gebruiken wanneer een nieuwe wereld gecreëerd wordt.\n" +"Bij het maken van een nieuwe wereld vanuit het hoofdmenu kan een andere " +"generator gekozen worden." #: src/settings_translation_file.cpp msgid "" @@ -2752,46 +3552,60 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"Naam van de speler.\n" +"Voor servers: spelers met deze naam krijgen beheerdersrechten.\n" +"Voor cliënten: standaardspelernaam voor verbindingen met een server\n" +"(in het hoofdmenu kan een andere naam gekozen worden)." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" +"Naam van de server. Wordt getoond in de serverlijst, en wanneer spelers " +"inloggen." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Netwerk" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"Netwerkpoort van de server (UDP).\n" +"Bij starten vanuit het hoofdmenu kan een andere poort opgegeven worden." #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Nieuwe spelers dienen dit wachtwoord op te geven." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip key" -msgstr "" +msgstr "Noclip" #: src/settings_translation_file.cpp #, fuzzy +msgid "Noclip key" +msgstr "Noclip-toets" + +#: src/settings_translation_file.cpp msgid "Node highlighting" -msgstr "Node markering" +msgstr "Oplichtende node" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "NodeTimer interval" +msgstr "Kloktijd verstuur-interval" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +"Ruisparameters voor landschapstemperaturen, -vochtigheid en -overgangen." + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -2803,7 +3617,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "Aantal 'emerge' threads" #: src/settings_translation_file.cpp msgid "" @@ -2813,6 +3627,11 @@ msgid "" "speed greatly\n" "at the cost of slightly buggy caves." msgstr "" +"Aantal 'emerge' threads. Laat dit leeg, of verhoog dit aantal om meerdere " +"threads te\n" +"gebruiken. Dit versnelt de wereldgeneratie op meer-processorsystemen " +"aanzienlijk\n" +"maar het kan de vorm van sommige grotten enigszins verstoren." #: src/settings_translation_file.cpp msgid "" @@ -2820,10 +3639,16 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"Aantal extra blokken (van 16x16x16 nodes) dat door het commando '/" +"clearobjects' tegelijk\n" +"geladen mag worden.\n" +"Dit aantal is een compromis tussen snelheid enerzijds (vanwege de overhead " +"van een sqlite\n" +"transactie), en geheugengebruik anderzijds (4096 = ca. 100MB)." #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "Aantal parallax occlusie iteraties." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." @@ -2834,18 +3659,12 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax occlusie" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" msgstr "Parallax occlusie" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax occlusie" +msgstr "Parallax occlusie schaal" #: src/settings_translation_file.cpp #, fuzzy @@ -2853,14 +3672,12 @@ msgid "Parallax occlusion bias" msgstr "Parallax occlusie" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Parallax occlusie" +msgstr "Parallax occlusie iteraties" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax occlusie" +msgstr "Parallax occlusie modus" #: src/settings_translation_file.cpp #, fuzzy @@ -2869,73 +3686,71 @@ msgstr "Parallax occlusie" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "Pad van TrueType font of bitmap." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Pad waar screenshots bewaard worden." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." msgstr "" +"Pad van de texturen-map. Naar texturen wordt gezocht beginnend bij deze map." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Fysica" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"Speler kan vliegen, zonder invloed van de zwaartekracht.\n" +"De speler moet wel in het bezit zijn van het \"vliegen\" voorrecht." #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Spelernaam te lang." +msgstr "Spelernaam" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Speler verplaatsingsafstand" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "Speler-gevechten" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Bezig met laden van texturen..." +"Netwerk-poort (UDP) waarmee verbinding gemaakt moet worden.In het hoofdmenu " +"kan een andere waarde opgegeven worden." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Voorkom dat mods onveilige commando's uitvoeren, zoals shell commando's." + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." msgstr "" +"Interval waarmee profiler-gegevens geprint worden. 0 = uitzetten. Dit is " +"nuttig voor ontwikkelaars." #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "Profiler aan/uit toets" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "Profilergegevens print interval" #: src/settings_translation_file.cpp msgid "" @@ -2943,52 +3758,72 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"Straal van wolken, in 64-node eenheden.\n" +"Waarden groter dan 26 hebben scherpe wolkenranden tot gevolg." + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Willekeurige invoer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Range instellen" +msgstr "Zichtafstand toets" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "Externe media" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Poort van externe server" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Vervangt het standaard hoofdmenu door een ander." #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Rechter Menu" +msgstr "Toets voor rechts" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" +msgstr "Rechts-klik herhalingsinterval" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" msgstr "" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "Opnemen terugrolgegevens" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Ronde mini-kaart" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "Bewaar de ontvangen wereld lokaal (op de cliënt)." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "Lokaal bewaren van de server-wereld" #: src/settings_translation_file.cpp msgid "" @@ -2998,111 +3833,127 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"Schaal de GUI met een bepaalde factor.\n" +"Er wordt een dichtste-buur-anti-alias filter gebruikt om de GUI te schalen.\n" +"Bij verkleinen worden sommige randen minder duidelijk, en worden\n" +"pixels samengevoegd. Pixels bij randen kunnen vager worden als\n" +"een niet-gehele schaalfactor gebruikt wordt." #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Schermhoogte" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Schermbreedte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "Screenshot" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Map voor screenshots" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Map voor screenshots" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Screenshot" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Veiligheid" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Zie http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Kleur van selectie-randen (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Kleur van selectie-randen" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Breedte van selectie-randen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Start Singleplayer" +msgstr "Server / Singleplayer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "Server URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Serverpoort" +msgstr "Adres van de server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Serverpoort" +msgstr "Omschrijving van de server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Naam van de server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "Serverpoort" +msgstr "Netwerkpoort van de server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Publieke Serverlijst" +msgstr "URL van de publieke serverlijst" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Publieke Serverlijst" +msgstr "Bestand met publieke serverlijst" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Stel de taal in. De systeem-taal wordt gebruikt indien leeg.\n" +"Een herstart is noodzakelijk om de nieuwe taal te activeren." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Bewegende bladeren staan aan indien 'true'.Dit vereist dat 'shaders' ook " +"aanstaan." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"Bewegende planten staan aan indien 'true'Dit vereist dat 'shaders' ook " +"aanstaan." #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shaders" +"Golvend water staat aan indien 'true'Dit vereist dat 'shaders' ook aanstaan." #: src/settings_translation_file.cpp msgid "" @@ -3110,52 +3961,66 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"Shaders maken bijzondere visuele effecten mogelijk, en kunnen op sommige " +"videokaarten ook de snelheid verhogen.\n" +"Alleen mogelijk met OpenGL." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "Vorm van de mini-kaart. Aan = rond, uit = vierkant." #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "Toon debug informatie" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Afsluitbericht van server" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Grootte van chunks die per keer gegenereerd worden door de wereldgenerator " +"in mapblokken (16 nodes)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "Mooie verlichting" +msgstr "Vloeiende verlichting" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Maakt camerabewegingen vloeiender bij het rondkijken.\n" +"Nuttig bij het opnemen van videos." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." msgstr "" +"Maakt camera-rotatie vloeiender in cintematic modus. 0 om uit te zetten." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Maakt camera-rotatie vloeiender. O om uit te zetten." #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Kruipen" +msgstr "Kruipen toets" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Geluid" #: src/settings_translation_file.cpp msgid "" @@ -3164,10 +4029,15 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"URL waar de cliënt media kan ophalen, in plaats van deze over UDP\n" +"van de server te ontvangen.\n" +"$filenaam moet via cURL beschikbaar zijn met adres $remote_media$filename\n" +"(remote_media moet dus eindigen in een slash ('/')).\n" +"Bestanden die niet gevonden worden, worden op de normale manier opgehaald." #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Vast geboortepunt" #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -3179,37 +4049,62 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Strict protocol checking" +msgstr "Stricte protocolcontrole" + +#: src/settings_translation_file.cpp +msgid "Support older servers" msgstr "" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" +msgstr "Sqlite synchrone modus" + +#: src/settings_translation_file.cpp +msgid "Terrain Height" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Texturen" +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Pad van texturen" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "Het netwerk-adres waar de server op verbindingen wacht." #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"De voorrechten standaard gegund aan nieuwe spelers.\n" +"Gebruik het server-commando '/privs' in het spel voor een volledige lijst\n" +"van beschikbare voorrechten op de server." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Het Irrlicht backend voor renderen." #: src/settings_translation_file.cpp msgid "" @@ -3225,15 +4120,25 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" +"Het aantal seconden dat de vloeistof-verspreidingswachtrij mag groeien\n" +"terwijl die al te lang is. Bij overschrijding van deze tijd worden oude " +"items\n" +"uit de rij verwijderd. Gebruik 0 om dit uit te zetten." #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." msgstr "" +"De tijd in seconden tussen herhaalde rechts-klikken als de rechter muisknop " +"ingedrukt gehouden wordt." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." +msgstr "Dit font wordt gebruikt voor bepaalde talen." + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" msgstr "" #: src/settings_translation_file.cpp @@ -3241,18 +4146,22 @@ msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"De tijd in seconden dat weggegooide of gevallen objecten bestaan.\n" +"Gebruik -1 voor een onbeperkte bestaansduur." #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "Kloktijd verstuur-interval" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "Tijdsnelheid" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." msgstr "" +"Tijdsduur waarna de cliënt ongebruikte wereldgegevens uit het geheugen " +"verwijdert." #: src/settings_translation_file.cpp msgid "" @@ -3261,17 +4170,20 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"Om vertraging te verminderen worden blokken minder snel verstuurd als een " +"speler aan het bouwen is.\n" +"Deze instelling bepaalt hoelang ze achtergehouden worden nadat een speler " +"een node geplaatst of verwijderd heeft." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "Camera-modus veranderen toets" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Tooltip tijdsduur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Tri-Lineare Filtering" @@ -3281,149 +4193,178 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"Aan = 256\n" +"Uit = 128\n" +"Gebruik dit om de mini-kaart sneller te maken op langzamere machines." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Vertrouwde mods" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "URL voor de serverlijst in de multiplayer tab." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Onbeperkte speler zichtbaarheidsafstand" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "Vergeet ongebruikte server gegevens" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Toon 3D wolken in plaats van platte wolken." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Toon wolken in de achtergrond van het hoofdmenu." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" +msgstr "Gebruik anisotropische filtering voor texturen getoond onder een hoek." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Gebruik bi-lineaire filtering bij het schalen van texturen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "druk op" +msgstr "Gebruiken toets" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." msgstr "" +"Gebruik mip-mapping om texturen te schalen. Kan een snelheidsverbetering " +"geven." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Gebruik tri-lineaire filtering om texturen te schalen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Eerdere hoofdontwikkelaars" +msgstr "Nuttig voor mod-ontwikkelaars." #: src/settings_translation_file.cpp msgid "V-Sync" +msgstr "V-Sync" + +#: src/settings_translation_file.cpp +msgid "VBO" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "Vertikale scherm-synchronisatie." #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Video driver" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "Loopbeweging" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "Toets voor verkleinen zichtafstand" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" +msgstr "Toets voor vergroten zichtafstand" #: src/settings_translation_file.cpp #, fuzzy +msgid "Viewing range" +msgstr "Maximale zichtafstand" + +#: src/settings_translation_file.cpp msgid "Volume" -msgstr "Volume" +msgstr "Geluidsniveau" #: src/settings_translation_file.cpp #, fuzzy -msgid "Walking speed" -msgstr "Bewegende bladeren" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Juliaverzameling: W-coördinaat van de 3D doorsnede van de 4D vorm.\n" +"Bereik is ongeveer -2 tot 2." #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Loopsnelheid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Water Features" +msgstr "Waterniveau" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Waterniveau" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "Waterniveau van de wereld." #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Bewegende bladeren" +msgstr "Bewegende nodes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "Bewegende bladeren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "Bewegende planten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Golvend water" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Golvend water" +msgstr "Golfhoogte van water" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Golvend water" +msgstr "Golflengte van water" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Golvend water" +msgstr "Golfsnelheid van water" #: src/settings_translation_file.cpp msgid "" @@ -3431,6 +4372,10 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"Als gui_scaling_filter aan staat worden alle GUI-plaatjes\n" +"softwarematig gefilterd. Sommige plaatjes worden wel direct\n" +"in hardware gegenereerd (bijv. render-to-texture voor nodes\n" +"in de rugzak)." #: src/settings_translation_file.cpp msgid "" @@ -3450,6 +4395,16 @@ msgid "" "have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" "enabled." msgstr "" +"Als bi-lineaire, tri-lineaire of anisotropische filters gebruikt worden, " +"dan\n" +"kunnen lage-resolutie texturen vaag worden. Verhoog hun resolutie dmv\n" +"naaste-buur-interpolatie zodat de scherpte behouden blijft. Deze optie\n" +"bepaalt de minimale textuurgroote na het verhogen van de resolutie. Hogere\n" +"waarden geven een scherper beeld, maar kosten meer geheugen. Het is " +"aanbevolen\n" +"machten van 2 te gebruiken. Een waarde groter dan 1 heeft wellicht geen " +"zichtbaar\n" +"effect indien bi-lineaire, tri-lineaire of anisotropische niet aan staan." #: src/settings_translation_file.cpp msgid "" @@ -3460,146 +4415,303 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Grenzen van de wereldgenerator.\n" +"- Maximale waarde: 31000 (hogere waarden worden niet gehonoreerd).\n" +"- De wereld wordt gegenereerd per gebied van 80x80x80 nodes (5x5x5 " +"mapblokken).\n" +"- Het centrum-gebied begint op coördinaten (-32, -32, -32).\n" +"- Enkel groepen die vallen binnen map_generation_limit worden gegenereerd" #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." -msgstr "" +msgstr "Gebruik freetype fonts. Dit vereist dat freetype ingecompileerd is." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "" +msgstr "Node-animaties in wereldblokken niet synchroniseren." #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"Geef de locatie van spelers door aan cliënten ongeacht de afstand.\n" +"Verouderd. Gebruik 'player_transfer_distance'." #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Maak het mogelijk dat spelers elkaar kunnen verwonden en doden." #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Verzoek de cliënten om na een servercrash automatisch opnieuw te verbinden.\n" +"Zet dit aan als de server na een crash automatisch herstart." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." msgstr "" +"Maak het einde van het zichtbereik mistig, zodat het einde niet opvalt." #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"Laat debug informatie zien in de cliënt (heeft hetzelfde effect als de F5 " +"toets)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Width component of the initial window size." +msgstr "Horizontale aanvangsgroote van het window." #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "Breedte van de lijnen om een geselecteerde node." #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Wereld-map (alle informatie over de wereld staat in deze map).\n" +"Deze instelling is niet nodig als de server vanuit het hoofdmenu wordt " +"gestart." + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "timeout voor cURL download" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "Maximaal parallellisme in cURL" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL timeout" -#~ msgid "Rendering:" -#~ msgstr "Rendering:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Herstart minetest om de driver te activeren" - -#~ msgid "Game Name" -#~ msgstr "Spel" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Kan mod \"$1\" niet naar spel \"$2\" kopiëren" - -#~ msgid "GAMES" -#~ msgstr "SPELLEN" - -#~ msgid "Mods:" -#~ msgstr "Mods:" - -#~ msgid "new game" -#~ msgstr "nieuw spel" - -#~ msgid "EDIT GAME" -#~ msgstr "SPEL AANPASSEN" - -#~ msgid "Remove selected mod" -#~ msgstr "Geselecteerde mod verwijderen" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Mod toevoegen" - -#~ msgid "CLIENT" -#~ msgstr "CLIENT" - -#~ msgid "Favorites:" -#~ msgstr "Favorieten:" - -#~ msgid "START SERVER" -#~ msgstr "START SERVER" - -#~ msgid "Name" -#~ msgstr "Naam" - -#~ msgid "Password" -#~ msgstr "Wachtwoord" - -#~ msgid "SETTINGS" -#~ msgstr "INSTELLINGEN" - -#~ msgid "Preload item visuals" -#~ msgstr "Voorwerpen vooraf laden" - -#~ msgid "Finite Liquid" -#~ msgstr "Eindige vloeistoffen" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "SINGLEPLAYER" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "TEXTUREN" - -#~ msgid "MODS" -#~ msgstr "MODS" - -#~ msgid "Add mod:" -#~ msgstr "Mod toevoegen:" - -#~ msgid "Local install" -#~ msgstr "Plaatselijk installeren" +#~ msgid "Item textures..." +#~ msgstr "Voorwerp-texturen..." #~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." #~ msgstr "" -#~ "Let op: Nog niet alle mods zijn geconfigueerd. \n" -#~ "De mods zullen automatisch worden ingeschakeld als je de configuratie " -#~ "bewaard. " +#~ "Maak de wateroppervlakte iets lager, zodat het niet de hele node vult.\n" +#~ "Dit is niet echt geoptimaliseerd, en vloeiende belichting van de\n" +#~ "wateroppervlakte werkt niet als dit is aangeschakeld." + +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "Laat geselecteerde nodes oplichten (schakelt selectie-randen uit)." #~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " +#~ "Julia set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes." #~ msgstr "" -#~ "LEt op: Sommige ingestelde mods zijn vermist.\n" -#~ "Hun instellingen worden verwijderd als je de configuratie opslaat. " +#~ "Juliaverzameling: (X,Y,X) afstanden van wereld-centrum.\n" +#~ "Bereik is ongeveer -2 tot 2. Vermenigvuldig met j_scale voor de afstand " +#~ "in nodes." + +#~ msgid "" +#~ "Julia set: W value determining the 4D shape.\n" +#~ "Range roughly -2 to 2." +#~ msgstr "" +#~ "Juliaverzameling: W-waarde van de 4D vorm.\n" +#~ "Bereik is ongeveer -2 tot 2." + +#~ msgid "" +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Toets voor het verkleinen van de zichtafstand. Dit verandert de minimale " +#~ "zichtafstand.\n" +#~ "Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Toets voor het vergroten van de zichtafstand. Dit verandert de minimale " +#~ "zichtafstand.\n" +#~ "Zie http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Mandelbrot set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by m_scale for offsets in nodes." +#~ msgstr "" +#~ "Mandelbrot verzameling: (X,Y,Z) afstanden vanaf wereld-centrum.\n" +#~ " Bereik is ongeveer -2 tot 2. Vermenigvuldig met m_scale voor de afstand " +#~ "in nodes." + +#~ msgid "Mandelbrot set: Approximate (X,Y,Z) scales in nodes." +#~ msgstr "Mandelbrot verzameling: (X,Y,Z) schaal, in nodes (bij benadering)." + +#~ msgid "" +#~ "Mandelbrot set: Iterations of the recursive function.\n" +#~ "Controls scale of finest detail." +#~ msgstr "" +#~ "Mandelbrot verzameling: Aantal iteraties van de recursieve functie.\n" +#~ "Bepaalt de schaal van de kleinste details." + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen fractal.\n" +#~ "'julia' selects a julia set to be generated instead of a mandelbrot set.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Wereldgeneratie instellingen voor de fractal generator.\n" +#~ "'julia' selecterd een julia-verzameling in plaats van een mandebrot-" +#~ "verzameling.\n" +#~ "Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +#~ "waarde.\n" +#~ "Zet \"no\" voor een vlag om hem expliciet uit te zetten." + +#~ msgid "Mapgen fractal mandelbrot iterations" +#~ msgstr "Fractal wereldgenerator mandelbrot iteraties" + +#~ msgid "Mapgen fractal mandelbrot offset" +#~ msgstr "Fractal wereldgenerator mandelbrot centrum-afstand" + +#~ msgid "Mapgen fractal mandelbrot scale" +#~ msgstr "Fractal wereldgenerator mandelbrot schaal" + +#~ msgid "Mapgen fractal mandelbrot slice w" +#~ msgstr "Fractal wereldgenerator mandelbrot w-doorsnede" + +#~ msgid "" +#~ "Maximum distance above water level for player spawn.\n" +#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n" +#~ "Smaller values may result in a suitable spawn point not being found,\n" +#~ "resulting in a spawn at (0, 0, 0) possibly buried underground." +#~ msgstr "" +#~ "Maximum hoogte boven waterniveau waar een speler geboren wordt.\n" +#~ "Bij hogere waarden zullen de plaatsen dichter bij (x = 0, z = 0) liggen.\n" +#~ "Bij lagere waarden kan het zijn dat een geschikte plek niet gevonden " +#~ "wordt,\n" +#~ "in dat geval wordt de speler geboren op (0, 0, 0), mogelijk onder de " +#~ "grond." + +#~ msgid "" +#~ "Minimum wanted FPS.\n" +#~ "The amount of rendered stuff is dynamically set according to this. and " +#~ "viewing range min and max." +#~ msgstr "" +#~ "Minimaal gewenste FPS.\n" +#~ "De hoeveelheid gerenderd materiaal wordt aangepast afhankelijk van deze " +#~ "waarde, en van de min en max zichtafstanden." + +#~ msgid "New style water" +#~ msgstr "Nieuw water" + +#~ msgid "" +#~ "Pre-generate all item visuals used in the inventory.\n" +#~ "This increases startup time, but runs smoother in-game.\n" +#~ "The generated textures can easily exceed your VRAM, causing artifacts in " +#~ "the inventory." +#~ msgstr "" +#~ "Genereer beelden van objecten in de rugzak vooraf.\n" +#~ "De start-tijd wordt hierdoor langer, maar het spel wordt vloeiender.\n" +#~ "Dit kost veel geheugen op de videokaart. Als die onvoldoende geheugen " +#~ "heeft kan dit resulteren in vreemde effecten." + +#~ msgid "Preload inventory textures" +#~ msgstr "Laad rugzak-texturen vooraf" + +#~ msgid "Vertical initial window size." +#~ msgstr "Aanvangshoogte van het window." + +#~ msgid "Vertical spawn range" +#~ msgstr "Vertikaal geboortegebied" + +#~ msgid "Viewing range minimum" +#~ msgstr "Minimale zichtafstand" + +#~ msgid "Wanted FPS" +#~ msgstr "Gewenste FPS" + +#~ msgid "Reset singleplayer world" +#~ msgstr "Reset Singleplayer wereld" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Schaal-factor toegepast op menu elementen: " + +#, fuzzy +#~ msgid "Downloading" +#~ msgstr "Downloaden" + +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "" +#~ "Linkermuisknop: Verplaats alle items. Rechtermuisknop: Verplaats één item" + +#~ msgid "is required by:" +#~ msgstr "is benodigd voor:" + +#~ msgid "Configuration saved. " +#~ msgstr "Instellingen bewaard. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Waarschuwing: Instellingen niet consistent. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Kan geen nieuwe wereld aanmaken: de naam bevat onjuiste tekens" + +#~ msgid "Show Public" +#~ msgstr "Publieke server" + +#~ msgid "Show Favorites" +#~ msgstr "Favourieten" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Laat het adres leeg om een lokale server te starten." + +#~ msgid "Create world" +#~ msgstr "Maak wereld aan" + +#~ msgid "Address required." +#~ msgstr "IP-adres nodig." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Kan niets verwijderen: Geen wereld geselecteerd" + +#~ msgid "Files to be deleted" +#~ msgstr "Deze bestanden worden verwijderd" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Kan geen wereld aanmaken: Geen games gevonden" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Kan instellingen niet aanpassen: Niets geselecteerd" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Niet alle bestanden zijn verwijderd" #~ msgid "" #~ "Default Controls:\n" @@ -3626,91 +4738,131 @@ msgstr "" #~ "- ESC: Menu\n" #~ "- T: Chat\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Niet alle bestanden zijn verwijderd" - -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Kan instellingen niet aanpassen: Niets geselecteerd" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Kan geen wereld aanmaken: Geen games gevonden" - -#~ msgid "Files to be deleted" -#~ msgstr "Deze bestanden worden verwijderd" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Kan niets verwijderen: Geen wereld geselecteerd" - -#~ msgid "Address required." -#~ msgstr "IP-adres nodig." - -#~ msgid "Create world" -#~ msgstr "Maak wereld aan" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Laat het adres leeg om een lokale server te starten." - -#~ msgid "Show Favorites" -#~ msgstr "Favourieten" - -#~ msgid "Show Public" -#~ msgstr "Publieke server" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Kan geen nieuwe wereld aanmaken: de naam bevat onjuiste tekens" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Waarschuwing: Instellingen niet consistent. " - -#~ msgid "Configuration saved. " -#~ msgstr "Instellingen bewaard. " - -#~ msgid "is required by:" -#~ msgstr "is benodigd voor:" - -#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " #~ msgstr "" -#~ "Linkermuisknop: Verplaats alle items. Rechtermuisknop: Verplaats één item" +#~ "LEt op: Sommige ingestelde mods zijn vermist.\n" +#~ "Hun instellingen worden verwijderd als je de configuratie opslaat. " + +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Let op: Nog niet alle mods zijn geconfigueerd. \n" +#~ "De mods zullen automatisch worden ingeschakeld als je de configuratie " +#~ "bewaard. " + +#~ msgid "Local install" +#~ msgstr "Plaatselijk installeren" + +#~ msgid "Add mod:" +#~ msgstr "Mod toevoegen:" + +#~ msgid "MODS" +#~ msgstr "MODS" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "TEXTUREN" + +#~ msgid "SINGLE PLAYER" +#~ msgstr "SINGLEPLAYER" + +#~ msgid "Finite Liquid" +#~ msgstr "Eindige vloeistoffen" + +#~ msgid "Preload item visuals" +#~ msgstr "Voorwerpen vooraf laden" + +#~ msgid "SETTINGS" +#~ msgstr "INSTELLINGEN" + +#~ msgid "Password" +#~ msgstr "Wachtwoord" + +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgid "START SERVER" +#~ msgstr "START SERVER" + +#~ msgid "CLIENT" +#~ msgstr "CLIENT" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Mod toevoegen" + +#~ msgid "Remove selected mod" +#~ msgstr "Geselecteerde mod verwijderen" + +#~ msgid "EDIT GAME" +#~ msgstr "SPEL AANPASSEN" + +#~ msgid "new game" +#~ msgstr "nieuw spel" + +#~ msgid "Mods:" +#~ msgstr "Mods:" + +#~ msgid "GAMES" +#~ msgstr "SPELLEN" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Kan mod \"$1\" niet naar spel \"$2\" kopiëren" + +#~ msgid "Game Name" +#~ msgstr "Spel" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Herstart minetest om de driver te activeren" + +#~ msgid "Rendering:" +#~ msgstr "Rendering:" #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Downloaden" +#~ msgid "If enabled, " +#~ msgstr "ingeschakeld" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Om schaduwen mogelijk te maken moet OpenGL worden gebruikt." +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "MP uitschakelen" -#~ msgid "Texturing:" -#~ msgstr "Textuur:" +#~ msgid "" +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Wereldgenerator instellingen specified voor generator v7.\n" +#~ "\"ridges\" zijn rivieren.\n" +#~ "Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +#~ "waarde.\n" +#~ "Zet \"no\" voor een vlag om hem expliciet uit te zetten." -#~ msgid "Simple Leaves" -#~ msgstr "Eenvoudige bladeren" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Schaal-factor toegepast op menu elementen: " - -#~ msgid "Reset singleplayer world" -#~ msgstr "Reset Singleplayer wereld" - -#~ msgid "Opaque Water" -#~ msgstr "Ondoorzichtig water" - -#~ msgid "Opaque Leaves" -#~ msgstr "Ondoorzichtige bladeren" +#, fuzzy +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "Algemene wereldgenerator instellingen.\n" +#~ "Vlaggen die niet in de lijst van vlaggen staan, behouden hun standaard-" +#~ "waarde.\n" +#~ "Zet \"no\" voor een vlag om hem expliciet uit te zetten.\n" +#~ "'trees' en 'flat' zijn enkel van toepassing in mgv6." #~ msgid "No!!!" #~ msgstr "Nee!!!" -#~ msgid "No Mipmap" -#~ msgstr "Geen Mipmap" +#~ msgid "Public Serverlist" +#~ msgstr "Publieke Serverlijst" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap + Anisotropisch filteren" - -#~ msgid "Mipmap" -#~ msgstr "Mipmap" - -#~ msgid "Fancy Leaves" -#~ msgstr "Mooie bladeren" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Weet je zeker dat je je wereld wilt resetten?" +#~ msgid "No of course not!" +#~ msgstr "Nee, natuurlijk niet!" diff --git a/po/pl/minetest.po b/po/pl/minetest.po index 672f9a21..ea404e32 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -7,28 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2013-10-08 21:22+0200\n" -"Last-Translator: Maciej Kasatkin \n" -"Language-Team: Polish <>\n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-03-24 19:38+0000\n" +"Last-Translator: red-001 \n" +"Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 1.7-dev\n" +"X-Generator: Weblate 2.6-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Wystąpił błąd w skrypcie modyfikacji:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Wystąpił błąd:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Menu główne" @@ -37,13 +37,12 @@ msgid "Ok" msgstr "OK" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Połącz" +msgstr "Połącz ponownie" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Serwer zażądał ponownego połączenia:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -51,31 +50,34 @@ msgstr "Ładowanie..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Niezgodne wersje protokołów. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Serwer narzuca wersję protokołu $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Serwer wspiera wersje protokołu od $1 do $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Spróbuj włączyć ponownie publiczną listę serwerów i sprawdź połączenie." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Wspieramy tylko protokół w wersji $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Wspieramy protokół w wersji od $1 do $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Anuluj" @@ -84,14 +86,12 @@ msgid "Depends:" msgstr "Zależy od:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable MP" -msgstr "Wyłącz wszystkie" +msgstr "Wyłącz MP" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable MP" -msgstr "Włącz wszystkie" +msgstr "Włącz MP" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -102,6 +102,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Nie można włączyć moda \"$1\" gdyż nazwa zawiera niedozwolone znaki. " +"Dozwolone są znaki [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -109,14 +111,14 @@ msgstr "Ukryj Grę" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "" +msgstr "Ukryj zawartość MP" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Zapisz" @@ -138,11 +140,11 @@ msgstr "Utwórz" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Ściągnij podgrę, taką jak minetest_game, z minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Ściągninj z minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -158,11 +160,11 @@ msgstr "Nie podano nazwy świata lub nie wybrano gry" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" -msgstr "" +msgstr "Ziarno" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Ostrzeżenie: Gra minimalna jest przeznaczona dla dewelperów." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -170,12 +172,18 @@ msgstr "Nazwa świata" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Nie masz zainstalowanych żadnych podgier." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Na pewno usunąć \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Usuń" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: nie można usunąć \"$1\"" @@ -184,38 +192,113 @@ msgstr "Modmgr: nie można usunąć \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: nieprawidłowy katalog \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Oczywiście, że nie!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Tak" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Usunąć świat \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nie" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" -msgstr "Accept" +msgstr "Zaakceptuj" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" msgstr "Zmień nazwe Paczki Modów:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" nie jest poprawną flagą." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Brak opisu ustawienia)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Wróć do ekranu ustawień" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Przeglądaj" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Wyłączone" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Edytuj" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Włączone" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Składnia to 3 liczby oddzielone przecinkami i w nawiasach." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Składnia: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Gry" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mody" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Wprowadź listę flag oddzielonych przecinkami." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Wprowadź poprawną liczbę całkowitą." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Wprowadź poprawną liczbę." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Możliwe wartości: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Przywróć domyślne" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Wybierz ścieżkę" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Pokaż nazwy ustawień" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Wartość musi być większa od $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Wartość musi być mniejsza od $1." + #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Instalacja moda: nieznany typ pliku \"$1\"" +"Instalacja moda: nieznany typ pliku \"$1\" lub archiwum uszkodzone" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -236,11 +319,11 @@ msgstr "" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Zamknij sklep" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Ściąganie $1, czekaj..." #: builtin/mainmenu/store.lua msgid "Install" @@ -256,20 +339,19 @@ msgstr "Ocena" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "" +msgstr "Szukaj" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Nazwa świata" +msgstr "Nazwa świata:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" -msgstr "" +msgstr "Udana instalacja:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "" +msgstr "Nieposortowane" #: builtin/mainmenu/store.lua msgid "re-Install" @@ -292,27 +374,20 @@ msgid "Previous Contributors" msgstr "Byli współautorzy" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Twórcy" +msgstr "Poprzedni Główni Twórcy" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" msgstr "Zainstalowane Mody:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Mod information:" -msgstr "Brak informacjii" - -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mody" +msgstr "Informacje o modzie:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "No mod description available" -msgstr "Brak informacjii" +msgstr "Brak informacji o modzie" #: builtin/mainmenu/tab_mods.lua msgid "Rename" @@ -323,18 +398,17 @@ msgid "Select Mod File:" msgstr "Wybierz plik moda:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Uninstall selected mod" -msgstr "Usuń zaznaczony mod" +msgstr "Usuń zaznaczony modyfikację" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "" +msgstr "Usuń zaznaczony modpack" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "Adres/Port" +msgid "Address / Port" +msgstr "Adres / Port :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -345,37 +419,35 @@ msgid "Connect" msgstr "Połącz" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Tryb kreatywny" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "włączone" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Usuń" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Nazwa gracza/Hasło" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Lista publicznych serwerów" +msgstr "Obrażenia włączone" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "Ulubione:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Ulubione:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nazwa gracza / Hasło :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "włączone" +msgstr "PvP włączone" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Przypisz Adres" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -391,7 +463,7 @@ msgstr "Tryb kreatywny" msgid "Enable Damage" msgstr "Włącz obrażenia" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nazwa gracza/Hasło" @@ -400,13 +472,12 @@ msgid "New" msgstr "Nowy" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "No world created or selected!" -msgstr "Nie podano nazwy świata lub nie wybrano gry" +msgstr "Nie stworzono lub nie wybrano świata!" #: builtin/mainmenu/tab_server.lua msgid "Port" -msgstr "" +msgstr "Port" #: builtin/mainmenu/tab_server.lua msgid "Public" @@ -429,104 +500,178 @@ msgid "Start Game" msgstr "Rozpocznij grę/Połącz" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Chmury 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Ustawienia zaawansowane" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Antyaliasing:" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Pojedynczy gracz" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtrowanie dwuliniowe" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Mapowanie wypukłości" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Zmień klawisze" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Wyłącz wszystkie" +msgid "Connected Glass" +msgstr "Szkło połączone" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Ozdobne liście" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmapy" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmapy i Filtr anizotropowe" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Nie" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Filtrowanie wyłączone" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Mip-Mappowanie wyłączone" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "włączone" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Gry" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Node Highlighting" +msgstr "Płynne oświetlenie" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Select" +msgid "Node Outlining" +msgstr "Płynne oświetlenie" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Brak" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Normal Mapping" +msgstr "Mip-Mappowanie" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Nieprzejrzyste liście" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Nieprzejrzysta Woda" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Mapowanie paralaksy" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Włącz Efekty Cząsteczkowe" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Ustawienia" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shadery" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Simple Leaves" +msgstr "Proste Liście" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "Płynne oświetlenie" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Teksturowanie:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-Mappowanie" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Trilinear Filter" +msgstr "Filtrowanie trójliniowe" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Waving Leaves" +msgstr "Ozdobne drzewa" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Ozdobne drzewa" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Ozdobne drzewa" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Tak" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Ustaw" +msgstr "Skonfiguruj mody" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" msgstr "Menu główne" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Pojedynczy gracz" +msgstr "Tryb jednoosobowy" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -540,49 +685,37 @@ msgstr "Pojedynczy gracz" msgid "No information available" msgstr "Brak informacjii" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Wybierz paczkę tekstur:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" msgstr "Paczki tekstur" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Błąd połączenia (brak odpowiedzi?)" +msgstr "Przekroczono limit czasu połączenia." #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "Zrobione!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Initializownie nod" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Initializowanie nod..." #: src/client.cpp -msgid "Item textures..." -msgstr "Tekstury przedmiotów..." - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "Ładowanie..." +msgstr "Ładowanie tekstur..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "Sprawdzanie adresu..." +msgstr "Kompilowanie shaderów..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -606,15 +739,15 @@ msgstr "Nie wybrano świata ani adresu." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Nazwa gracza zbyt długa." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "Podana ścieżka do świata nie istnieje: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "yes" #: src/game.cpp msgid "" @@ -625,7 +758,6 @@ msgstr "" "Sprawdź plik debug.txt by uzyskać więcej informacji." #: src/game.cpp -#, fuzzy msgid "Change Keys" msgstr "Zmień klawisze" @@ -646,7 +778,6 @@ msgid "Creating client..." msgstr "Tworzenie klienta..." #: src/game.cpp -#, fuzzy msgid "Creating server..." msgstr "Tworzenie serwera...." @@ -691,6 +822,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Domyślne sterowanie:\n" +"Brak widocznego menu:\n" +"- pojedyncze dotknięcie: aktywacja\n" +"- podwójne dotknięcie: postaw/użyj\n" +"- przejechanie palcem: rozglądanie się\n" +"Menu/Ekwipunek widoczny:\n" +"- potwójne dotknięcie poza menu:\n" +" -->zamknij\n" +"- dotknięcie stacka, dotknięcie slota:\n" +" --> przenieś stack\n" +"- dotknięcie i przeciągnięcie, dotknięcie drugim palcem\n" +" --> umieść pojedynczy item w slocie\n" #: src/game.cpp msgid "Exit to Menu" @@ -706,7 +849,7 @@ msgstr "Definicje przedmiotów..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/game.cpp msgid "Media..." @@ -714,16 +857,12 @@ msgstr "Media..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." msgstr "Definicje nod..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Kontynuuj" - #: src/game.cpp msgid "Resolving address..." msgstr "Sprawdzanie adresu..." @@ -733,7 +872,6 @@ msgid "Respawn" msgstr "Wróć do gry" #: src/game.cpp -#, fuzzy msgid "Shutting down..." msgstr "Wyłączanie..." @@ -745,13 +883,17 @@ msgstr "Głośność" msgid "You died." msgstr "Zginąłeś." -#: src/guiFormSpecMenu.cpp -msgid "Enter " -msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "ok" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Enter " +msgstr "Enter " + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "Kontynuuj" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -824,9 +966,8 @@ msgid "Sneak" msgstr "Skradanie" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Przełącz tryb szybki" +msgstr "Włącz/Wyłącz tryb Cinematic" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -878,7 +1019,7 @@ msgstr "Głośność: " #: src/keycode.cpp msgid "Apps" -msgstr "Apps" +msgstr "Menu" #: src/keycode.cpp msgid "Attn" @@ -917,6 +1058,7 @@ msgid "Down" msgstr "Dół" #: src/keycode.cpp +#, fuzzy msgid "End" msgstr "End" @@ -1164,6 +1306,15 @@ msgstr "X Button 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1171,13 +1322,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "Chmury 3D" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "Modele 3D" #: src/settings_translation_file.cpp msgid "" @@ -1187,7 +1337,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1212,6 +1363,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1243,6 +1402,10 @@ msgstr "" msgid "Advanced" msgstr "Zaawansowane" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1251,6 +1414,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1267,6 +1434,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1280,10 +1451,18 @@ msgstr "" msgid "Backward key" msgstr "Tył" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1304,9 +1483,8 @@ msgid "Build inside player" msgstr "Gra wieloosobowa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "Mip-Mappowanie" +msgstr "Mapowanie wypukłości" #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -1320,6 +1498,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1330,6 +1524,29 @@ msgstr "Zmień klawisze" msgid "Chat toggle key" msgstr "Zmień klawisze" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1388,6 +1605,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1444,14 +1667,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1541,6 +1788,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1563,6 +1818,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1595,8 +1857,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Włącz MP" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1610,10 +1873,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1644,6 +1903,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1656,6 +1919,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Włącz obrażenia" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1726,7 +1994,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1743,6 +2011,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1800,6 +2076,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1853,6 +2133,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1860,9 +2144,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1873,6 +2161,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Mody" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1885,6 +2178,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1898,7 +2195,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1923,6 +2220,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1942,21 +2243,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Wyłącz wszystkie" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "włączone" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2014,6 +2317,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2031,6 +2338,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2042,7 +2384,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2056,7 +2398,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2253,6 +2595,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2276,6 +2626,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2362,21 +2720,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2395,6 +2783,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Generator mapy" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2417,6 +2810,131 @@ msgstr "Generator mapy" msgid "Mapgen flags" msgstr "Generator mapy" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Generator mapy" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Generator mapy" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2431,6 +2949,11 @@ msgstr "Generator mapy" msgid "Mapgen v5" msgstr "Generator mapy" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Generator mapy" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2517,6 +3040,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Generator mapy" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Generator mapy" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2565,6 +3093,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2685,6 +3225,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2701,13 +3245,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2785,10 +3322,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2805,10 +3338,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2849,10 +3390,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2896,7 +3433,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2918,20 +3455,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Ładowanie..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2953,6 +3481,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2983,6 +3515,22 @@ msgstr "Prawy Menu" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3025,6 +3573,23 @@ msgstr "Snapshot" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Snapshot" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Snapshot" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3109,10 +3674,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shadery" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3128,6 +3689,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3138,6 +3703,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3145,7 +3714,7 @@ msgstr "Płynne oświetlenie" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3190,20 +3759,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Paczki tekstur" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3245,6 +3837,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3346,7 +3942,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3361,6 +3977,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3370,11 +3992,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3382,13 +4000,22 @@ msgstr "" msgid "Volume" msgstr "Głośność" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Tekstury przedmiotów..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3497,6 +4124,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3507,6 +4146,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3516,87 +4163,64 @@ msgid "cURL parallel limit" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "cURL timeout" -msgstr "" - -#~ msgid "Game Name" -#~ msgstr "Nazwa Gry" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Kopiowanie moda \"$1\" do gry \"$2\" nie powiodło się" - -#~ msgid "GAMES" -#~ msgstr "GRY" - -#~ msgid "Mods:" -#~ msgstr "Mody:" - -#~ msgid "new game" -#~ msgstr "nowa gra" - -#~ msgid "EDIT GAME" -#~ msgstr "EDYTUJ GRĘ" - -#~ msgid "Remove selected mod" -#~ msgstr "Usuń zaznaczony mod" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<--Dodaj mod" - -#~ msgid "CLIENT" -#~ msgstr "KLIENT" - -#~ msgid "Favorites:" -#~ msgstr "Ulubione:" - -#~ msgid "START SERVER" -#~ msgstr "URUCHOM SERWER" - -#~ msgid "Name" -#~ msgstr "Nazwa" - -#~ msgid "Password" -#~ msgstr "Hasło" - -#~ msgid "SETTINGS" -#~ msgstr "USTAWIENIA" - -#~ msgid "Preload item visuals" -#~ msgstr "Ładuj obrazy przedmiotów" - -#~ msgid "Finite Liquid" -#~ msgstr "Realistyczne ciecze" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "TRYB JEDNOOSOBOWY" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "PACZKI TEKSTUR" - -#~ msgid "MODS" -#~ msgstr "MODY" +msgstr "Limit czasu cURL" #, fuzzy -#~ msgid "Add mod:" -#~ msgstr "<<--Dodaj mod" +#~ msgid "Preload inventory textures" +#~ msgstr "Ładowanie..." #, fuzzy -#~ msgid "Local install" -#~ msgstr "Instaluj" +#~ msgid "Downloading" +#~ msgstr "Ściągnij" -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ msgid "Left click: Move all items, Right click: Move single item" #~ msgstr "" -#~ "Uwaga: Niektóre z modyfikacji nie zostały jeszcze skonfigurowane.\n" -#~ "Zostaną domyślnie włączone gdy zapiszesz konfigurację. " +#~ "Lewy przycisk myszy: przenieś wszystkie przedmioty, Prawy przycisk myszy: " +#~ "przenieś pojedynczy przedmiot" -#~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " -#~ msgstr "" -#~ "Ostrzeżenie: Niektóre z modyfikacji nie zostały znalezione.\n" -#~ "Ich ustawienia zostaną usunięte gdy zapiszesz konfigurację. " +#~ msgid "is required by:" +#~ msgstr "wymagane przez:" + +#~ msgid "Configuration saved. " +#~ msgstr "Konfiguracja zapisana. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Ostrzeżenie: Plik konfiguracyjny niespójny. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Nie można stworzyć świata: Nazwa zawiera niedozwolone znaki" + +#~ msgid "Show Public" +#~ msgstr "Pokaż publiczne" + +#~ msgid "Show Favorites" +#~ msgstr "Pokaż ulubione" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Pozostaw pole adresu puste, by uruchomić serwer lokalny." + +#~ msgid "Create world" +#~ msgstr "Stwórz świat" + +#~ msgid "Address required." +#~ msgstr "Wymagany adres." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Nie można skasować świata: nic nie zaznaczono" + +#~ msgid "Files to be deleted" +#~ msgstr "Pliki do skasowania" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Nie można utworzyć świata: Nie znaleziono żadnego trybu gry" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Nie można skonfigurować świata: Nic nie zaznaczono" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Nie udało się skasować wszystkich plików świata" #~ msgid "" #~ "Default Controls:\n" @@ -3623,64 +4247,98 @@ msgstr "" #~ "- ESC: to menu\n" #~ "- T: czat\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Nie udało się skasować wszystkich plików świata" - -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Nie można skonfigurować świata: Nic nie zaznaczono" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Nie można utworzyć świata: Nie znaleziono żadnego trybu gry" - -#~ msgid "Files to be deleted" -#~ msgstr "Pliki do skasowania" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Nie można skasować świata: nic nie zaznaczono" - -#~ msgid "Address required." -#~ msgstr "Wymagany adres." - -#~ msgid "Create world" -#~ msgstr "Stwórz świat" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Pozostaw pole adresu puste, by uruchomić serwer lokalny." - -#~ msgid "Show Favorites" -#~ msgstr "Pokaż ulubione" - -#~ msgid "Show Public" -#~ msgstr "Pokaż publiczne" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Nie można stworzyć świata: Nazwa zawiera niedozwolone znaki" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Ostrzeżenie: Plik konfiguracyjny niespójny. " - -#~ msgid "Configuration saved. " -#~ msgstr "Konfiguracja zapisana. " - -#~ msgid "is required by:" -#~ msgstr "wymagane przez:" - -#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " #~ msgstr "" -#~ "Lewy przycisk myszy: przenieś wszystkie przedmioty, Prawy przycisk myszy: " -#~ "przenieś pojedynczy przedmiot" +#~ "Ostrzeżenie: Niektóre z modyfikacji nie zostały znalezione.\n" +#~ "Ich ustawienia zostaną usunięte gdy zapiszesz konfigurację. " + +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Uwaga: Niektóre z modyfikacji nie zostały jeszcze skonfigurowane.\n" +#~ "Zostaną domyślnie włączone gdy zapiszesz konfigurację. " #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Ściągnij" +#~ msgid "Local install" +#~ msgstr "Instaluj" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Pojedynczy gracz" +#~ msgid "Add mod:" +#~ msgstr "<<--Dodaj mod" -#~ msgid "Opaque Water" -#~ msgstr "Nieprzeźroczysta woda" +#~ msgid "MODS" +#~ msgstr "MODY" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "PACZKI TEKSTUR" + +#~ msgid "SINGLE PLAYER" +#~ msgstr "TRYB JEDNOOSOBOWY" + +#~ msgid "Finite Liquid" +#~ msgstr "Realistyczne ciecze" + +#~ msgid "Preload item visuals" +#~ msgstr "Ładuj obrazy przedmiotów" + +#~ msgid "SETTINGS" +#~ msgstr "USTAWIENIA" + +#~ msgid "Password" +#~ msgstr "Hasło" + +#~ msgid "Name" +#~ msgstr "Nazwa" + +#~ msgid "START SERVER" +#~ msgstr "URUCHOM SERWER" + +#~ msgid "CLIENT" +#~ msgstr "KLIENT" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<--Dodaj mod" + +#~ msgid "Remove selected mod" +#~ msgstr "Usuń zaznaczony mod" + +#~ msgid "EDIT GAME" +#~ msgstr "EDYTUJ GRĘ" + +#~ msgid "new game" +#~ msgstr "nowa gra" + +#~ msgid "Mods:" +#~ msgstr "Mody:" + +#~ msgid "GAMES" +#~ msgstr "GRY" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Kopiowanie moda \"$1\" do gry \"$2\" nie powiodło się" + +#~ msgid "Game Name" +#~ msgstr "Nazwa Gry" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Nieprzeźroczysta woda" +#~ msgid "If enabled, " +#~ msgstr "włączone" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Wyłącz wszystkie" + +#~ msgid "No!!!" +#~ msgstr "Nie!!" + +#~ msgid "Generate Normalmaps" +#~ msgstr "Generuj mapy normalnych" + +#~ msgid "Public Serverlist" +#~ msgstr "Lista publicznych serwerów" + +#~ msgid "No of course not!" +#~ msgstr "Oczywiście, że nie!" diff --git a/po/pt/minetest.po b/po/pt/minetest.po index 037aa80f..4bdd22ee 100644 --- a/po/pt/minetest.po +++ b/po/pt/minetest.po @@ -7,42 +7,41 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2014-01-06 01:45+0200\n" -"Last-Translator: João Farias \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-04-01 00:21+0000\n" +"Last-Translator: Fernando Reis \n" +"Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 1.7-dev\n" +"X-Generator: Weblate 2.6-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Ocorreu um erro num script Lua, como por exemplo num extra:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Ocorreu um erro:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" -msgstr "Menu Principal" +msgstr "Menu principal" #: builtin/fstk/ui.lua builtin/mainmenu/store.lua msgid "Ok" msgstr "Ok" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Ligar" +msgstr "Reconectar" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "O servidor solicitou uma reconexão:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -50,31 +49,35 @@ msgstr "A carregar..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Versão do protocolo não coincide. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "O servidor requere o protocolo versão $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Servidor suporta versões de protocolo entre $1 e $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Tente recarregar a lista de servidores públicos e verificar a sua ligação à " +"internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Nós suportamos apenas o protocolo versão $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Nós suportamos as versões de protocolo entre $1 e $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Cancelar" @@ -83,25 +86,24 @@ msgid "Depends:" msgstr "Depende de:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable MP" -msgstr "Desativar Tudo" +msgstr "Desativar MP (mod pack)" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable MP" -msgstr "Ativar Tudo" +msgstr "Ativar MP (mod pack)" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable all" -msgstr "Ativar Tudo" +msgstr "Ativar tudo" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Falha ao ativar mod \"$1\" porque contém caracteres inválidos. Apenas " +"caracteres de \"a\" até \"z\" e algarismos de 0 até 9 são permitidos." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -109,14 +111,14 @@ msgstr "Esconder Jogo" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide mp content" -msgstr "" +msgstr "Ocultar conteúdo do pacote" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Extra:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Guardar" @@ -138,11 +140,11 @@ msgstr "Criar" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Descarregue um jogo, como o minetest_game, do sítio minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Descarregue um do sítio minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -158,11 +160,13 @@ msgstr "Mundo sem nome ou nenhum jogo selecionado" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" -msgstr "" +msgstr "Semente aleatória" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "" +"Aviso: O jogo \"minimal development test\" destina-se apenas a " +"desenvolvedores." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -170,12 +174,18 @@ msgstr "Nome do Mundo" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Você não tem nenhum jogo instalado." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Tem a certeza que pertende eliminar \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Eliminar" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Mensagem de Extra: falhou a eliminação de \"$1\"" @@ -184,22 +194,10 @@ msgstr "Mensagem de Extra: falhou a eliminação de \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Mensagem de extra: caminho inválido \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Não, é claro que não!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Sim" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Eliminar Mundo \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Não" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Aceitar" @@ -208,14 +206,103 @@ msgstr "Aceitar" msgid "Rename Modpack:" msgstr "Renomear Pacote de Extras:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" não é uma flag válida." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Descrição de configuração não fornecida)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Voltar para as configurações" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Navegar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Desativado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Editar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Ativado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "O formato é de 3 números separados por vírgulas dentro de paréntesis." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formato: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Jogos" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Extras" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Opcionalmente a lacunaridade pode ser adicionada com uma vírgula na frente." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Por favor, introduza uma lista de flags separadas por vírgulas." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Por favor insira um inteiro válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Por favor, insira um número válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Os valores possíveis são: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Restaurar valores por defeito" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Selecionar diretório" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Mostrar nomes técnicos" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "O valor deve ser maior do que $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "O valor deve ser menor do que $1." + #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Instalar Extra: tipo de ficheiro desconhecido \"$1\"" +"Instalação de extra: o tipo de arquivo \"$1\" não é suportado ou o arquivo " +"está corrompido" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -227,19 +314,21 @@ msgstr "Instalar Extra: ficheiro: \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" -msgstr "" +msgstr "Instalação de extra: nome real de extra não encontrado para: $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" +"Instalação de extra: não foi possível encontrar o nome adequado da pasta " +"para o pacote de extras $1" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Fechar repositório de extras" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Descarregando $1, por favor aguarde..." #: builtin/mainmenu/store.lua msgid "Install" @@ -255,20 +344,19 @@ msgstr "Classificação" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "" +msgstr "Procurar" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Nome do Mundo" +msgstr "Nome curto:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" -msgstr "" +msgstr "Instalado com sucesso:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "" +msgstr "Não ordenado" #: builtin/mainmenu/store.lua msgid "re-Install" @@ -276,11 +364,11 @@ msgstr "re-Instalar" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "Contribuintes Ativos" +msgstr "Contribuidores Ativos" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "Desenvolvedores Chave" +msgstr "Desenvolvedores Principais" #: builtin/mainmenu/tab_credits.lua msgid "Credits" @@ -288,30 +376,23 @@ msgstr "Créditos" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "Antigos Contribuintes" +msgstr "Antigos Contribuidores" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Desenvolvedores Chave" +msgstr "Desenvolvedores Chave Antigos" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" msgstr "Extras Instalados:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Mod information:" -msgstr "Sem informação" - -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Extras" +msgstr "Informação do extra:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "No mod description available" -msgstr "Sem informação" +msgstr "Nenhuma descrição disponível do extra" #: builtin/mainmenu/tab_mods.lua msgid "Rename" @@ -322,18 +403,17 @@ msgid "Select Mod File:" msgstr "Seleccionar ficheiro de Extra:" #: builtin/mainmenu/tab_mods.lua -#, fuzzy msgid "Uninstall selected mod" -msgstr "Remover extra selecionado" +msgstr "Desinstalar extra selecionado" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "Desinstalar mode selecionado" +msgstr "Desinstalar pacote de extras selecionado" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "Endereço/Porta" +msgid "Address / Port" +msgstr "Endereço / Porta :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -344,37 +424,35 @@ msgid "Connect" msgstr "Ligar" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Modo Criativo" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "ativo" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Eliminar" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Nome/Senha" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Lista de Servidores Públicos" +msgstr "Dano ativado" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "Favoritos:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Favoritos:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nome / Senha :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "ativo" +msgstr "PvP activado" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Endereço Bind" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -390,7 +468,7 @@ msgstr "Modo Criativo" msgid "Enable Damage" msgstr "Ativar Dano" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nome/Senha" @@ -399,13 +477,12 @@ msgid "New" msgstr "Novo" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "No world created or selected!" -msgstr "Mundo sem nome ou nenhum jogo selecionado" +msgstr "Nenhum mundo criado ou selecionado!" #: builtin/mainmenu/tab_server.lua msgid "Port" -msgstr "" +msgstr "Porta" #: builtin/mainmenu/tab_server.lua msgid "Public" @@ -428,104 +505,172 @@ msgid "Start Game" msgstr "Jogar" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Nuvens 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Antisserrilhamento:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Tem a certeza que deseja reiniciar o seu mundo?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtro bi-linear" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bump mapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Mudar teclas" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Desativar Tudo" +msgid "Connected Glass" +msgstr "Vidro conectado" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Folhas detalhadas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mapa MIP" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mapa MIP + Filtro Anisotrópico" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Não" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Sem Filtro" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Sem mapa MIP" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Destaque dos Cubos" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "ativo" +msgid "Node Outlining" +msgstr "Destaque dos Cubos" -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Jogos" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Nenhum" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Seleccionar" +msgid "Normal Mapping" +msgstr "Mapeamento de tons" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Folhas Opacas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Água Opaca" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Oclusão de paralaxe" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Ativar Partículas" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Definições" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Sombras" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Folhas simples" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Iluminação Suave" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturização:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Para ativar os sombreadores é necessário usar o driver OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Mapeamento de tons" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Nível de sensibilidade ao toque (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtro tri-linear" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Folhas ondulantes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Plantas ondulantes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Água ondulante" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Sim" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Configurar" +msgstr "Configurar extras" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "Menu Principal" +msgstr "Principal" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Um Jogador" +msgstr "Iniciar jogo solo" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -539,49 +684,37 @@ msgstr "Um Jogador" msgid "No information available" msgstr "Sem informação" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Selecione um pacote de texturas:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" -msgstr "Pacotes de Texturas" +msgstr "Pacotes texturas" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Erro de conexão (excedeu tempo?)" +msgstr "Erro de ligação (tempo excedido)." #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "Terminado!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Inicializando cubos" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Inicializando cubos..." #: src/client.cpp -msgid "Item textures..." -msgstr "Texturas dos items..." - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "A carregar..." +msgstr "A carregar texturas..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "A resolver endereço..." +msgstr "Reconstruindo sombreadores..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -606,15 +739,15 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Nome de jogador demasiado longo." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "O caminho fornecido não existe: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "yes" #: src/game.cpp msgid "" @@ -625,7 +758,6 @@ msgstr "" "Consulte debug.txt para mais detalhes." #: src/game.cpp -#, fuzzy msgid "Change Keys" msgstr "Mudar teclas" @@ -646,7 +778,6 @@ msgid "Creating client..." msgstr "A criar cliente..." #: src/game.cpp -#, fuzzy msgid "Creating server..." msgstr "A criar servidor..." @@ -691,6 +822,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Controles por defeito:\n" +"Se não há nenhum menu visível:\n" +"- Um toque: ativa botão\n" +"- Duplo toque: colocar/usar\n" +"- Deslizar dedo: Olhar em redor\n" +"Se menu/inventário visível:\n" +"- Duplo toque: (fora do menu/inventário):\n" +" -->fechar\n" +"- Tocar Item e depois tocar num compartimento:\n" +" --> mover item\n" +"- Tocar e arrastar, e depois tocar com o 2º dedo\n" +" --> Coloca apenas um item no compartimento\n" #: src/game.cpp msgid "Exit to Menu" @@ -706,7 +849,7 @@ msgstr "Definições dos Itens..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KB/s" #: src/game.cpp msgid "Media..." @@ -714,15 +857,11 @@ msgstr "Dados..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." -msgstr "" - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Continuar" +msgstr "Definindo cubos..." #: src/game.cpp msgid "Resolving address..." @@ -733,7 +872,6 @@ msgid "Respawn" msgstr "Reaparecer" #: src/game.cpp -#, fuzzy msgid "Shutting down..." msgstr "A desligar..." @@ -745,13 +883,17 @@ msgstr "Volume do som" msgid "You died." msgstr "Morreste." -#: src/guiFormSpecMenu.cpp -msgid "Enter " -msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "ok" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Enter " +msgstr "Enter " + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "Continuar" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -822,9 +964,8 @@ msgid "Sneak" msgstr "Agachar" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Ativar/Desativar correr" +msgstr "Ativar/Desativar câmera cinemática" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -888,7 +1029,7 @@ msgstr "Voltar" #: src/keycode.cpp msgid "Capital" -msgstr "Capital" +msgstr "Caps Lock" #: src/keycode.cpp msgid "Clear" @@ -908,7 +1049,7 @@ msgstr "Converter" #: src/keycode.cpp msgid "CrSel" -msgstr "CrSel" +msgstr "Tecla CrSel" #: src/keycode.cpp msgid "Down" @@ -916,7 +1057,7 @@ msgstr "Baixo" #: src/keycode.cpp msgid "End" -msgstr "End" +msgstr "Tecla End" #: src/keycode.cpp msgid "Erase OEF" @@ -928,7 +1069,7 @@ msgstr "ESC" #: src/keycode.cpp msgid "ExSel" -msgstr "ExSel" +msgstr "Tecla ExSel" #: src/keycode.cpp msgid "Execute" @@ -936,7 +1077,7 @@ msgstr "Executar" #: src/keycode.cpp msgid "Final" -msgstr "Final" +msgstr "Tecla Final" #: src/keycode.cpp msgid "Help" @@ -952,15 +1093,15 @@ msgstr "Insert" #: src/keycode.cpp msgid "Junja" -msgstr "Junja" +msgstr "Tecla Junja" #: src/keycode.cpp msgid "Kana" -msgstr "Kana" +msgstr "Tecla Kana" #: src/keycode.cpp msgid "Kanji" -msgstr "Kanji" +msgstr "Tecla Kanji" #: src/keycode.cpp msgid "Left Button" @@ -968,7 +1109,7 @@ msgstr "Botão Esquerdo" #: src/keycode.cpp msgid "Left Control" -msgstr "Control Esq" +msgstr "Control Esquerdo" #: src/keycode.cpp msgid "Left Menu" @@ -980,7 +1121,7 @@ msgstr "Shift Esquerdo" #: src/keycode.cpp msgid "Left Windows" -msgstr "WINDOWS Esq." +msgstr "Tecla WINDOWS esquerda" #: src/keycode.cpp msgid "Menu" @@ -988,7 +1129,7 @@ msgstr "Menu" #: src/keycode.cpp msgid "Middle Button" -msgstr "Roda do Rato" +msgstr "Botão Central do Rato" #: src/keycode.cpp msgid "Minus" @@ -996,7 +1137,7 @@ msgstr "Menos" #: src/keycode.cpp msgid "Mode Change" -msgstr "Mode Change" +msgstr "Tecla Mode Change" #: src/keycode.cpp msgid "Next" @@ -1012,59 +1153,59 @@ msgstr "Num Lock" #: src/keycode.cpp msgid "Numpad *" -msgstr "Numpad *" +msgstr "Tecla numérica *" #: src/keycode.cpp msgid "Numpad +" -msgstr "Numpad +" +msgstr "Tecla numérica +" #: src/keycode.cpp msgid "Numpad -" -msgstr "Numpad -" +msgstr "Tecla numérica -" #: src/keycode.cpp msgid "Numpad /" -msgstr "Numpad /" +msgstr "Tecla numérica /" #: src/keycode.cpp msgid "Numpad 0" -msgstr "Numpad 0" +msgstr "Tecla numérica 0" #: src/keycode.cpp msgid "Numpad 1" -msgstr "Numpad 1" +msgstr "Tecla numérica 1" #: src/keycode.cpp msgid "Numpad 2" -msgstr "Numpad 2" +msgstr "Tecla numérica 2" #: src/keycode.cpp msgid "Numpad 3" -msgstr "Numpad 3" +msgstr "Tecla numérica 3" #: src/keycode.cpp msgid "Numpad 4" -msgstr "Numpad 4" +msgstr "Tecla numérica 4" #: src/keycode.cpp msgid "Numpad 5" -msgstr "Numpad 5" +msgstr "Tecla numérica 5" #: src/keycode.cpp msgid "Numpad 6" -msgstr "Numpad 6" +msgstr "Tecla numérica 6" #: src/keycode.cpp msgid "Numpad 7" -msgstr "Numpad 7" +msgstr "Tecla numérica 7" #: src/keycode.cpp msgid "Numpad 8" -msgstr "Numpad 8" +msgstr "Tecla numérica 8" #: src/keycode.cpp msgid "Numpad 9" -msgstr "Numpad 9" +msgstr "Tecla numérica 9" #: src/keycode.cpp msgid "OEM Clear" @@ -1072,7 +1213,7 @@ msgstr "Limpar OEM" #: src/keycode.cpp msgid "PA1" -msgstr "PAL" +msgstr "PA1" #: src/keycode.cpp msgid "Pause" @@ -1088,7 +1229,7 @@ msgstr "Mais" #: src/keycode.cpp msgid "Print" -msgstr "Print" +msgstr "Tecla Print Screen" #: src/keycode.cpp msgid "Prior" @@ -1116,7 +1257,7 @@ msgstr "Shift Direito" #: src/keycode.cpp msgid "Right Windows" -msgstr "WINDOWS Dir." +msgstr "Tecla WINDOWS direita" #: src/keycode.cpp msgid "Scroll Lock" @@ -1162,20 +1303,37 @@ msgstr "Botão X 2" msgid "Zoom" msgstr "Zoom" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"Deslocamento (X,Y,Z) do fractal a partir do centro do mundo em unidades " +"'escala'.\n" +"Usado para obter uma área de nascimento apropriada, próxima de (0, 0).\n" +"Valores por defeito apropriados para conjunto de Mandelbrot, necessitam ser " +"adaptados para conjunto de Julia.\n" +"Intervalos aproximadamente entre -2 e 2. Multiplicar por 'escala' para " +"deslocamento em cubos." + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = oclusão paralaxe com dados de inclinação (mais rápido).\n" +"1 = mapeamento de relevo (mais lento, mais preciso)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "Nuvens 3D" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "Modo 3D" #: src/settings_translation_file.cpp msgid "" @@ -1185,38 +1343,62 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Suporte 3D.\n" +"Modos atualmente suportados:\n" +"- none: Nenhum efeito 3D.\n" +"- anaglyph: Sistema de cor Ciano/Magenta (Óculos 3D azul vermelho).\n" +"- interlaced: Sistema interlaçado (Óculos com lentes polarizadas).\n" +"- topbottom: Ecrã dividido em dois: uma em cima e outro em baixo.\n" +"- sidebyside: Ecrã dividido em dois: lado a lado." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Semente aleatória para gerar um novo mundo (em branco para deixar o " +"computador escolher).\n" +"Será anulada quando for criado um outro novo mundo no menu principal." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Mensagem a ser mostrada a todos os clientes do servidor quando ele bloqueia." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Uma mensagem para ser mostrada a todos os clientes quando o servidor se " +"desliga." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limite absoluto da fila de espera emergente" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Aceleração no ar" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Distância de ativação de blocos" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Distância de ativação de blocos" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Distância de ativação de blocos" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Distância de ativação de objectos" #: src/settings_translation_file.cpp msgid "" @@ -1224,39 +1406,55 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Endereço para conexão.\n" +"Deixe em branco para iniciar um servidor local.\n" +"Note que o campo de endereço no menu principal sobrescreve esta configuração." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Ajustar configuração de dpi ao seu ecrã (não aplicável a X11/Android) e.g. " +"para ecrãs 4K." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Ajusta a correção gama nas tabelas de luminosidade. Valores mais baixos " +"resultam \n" +"em imagem mais clara. Configuração somente para o cliente e ignorada pelo " +"servidor." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Avançado" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Altitude de frio extremo" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Sempre voar e correr" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Gama de oclusão de ambiente" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Amplia os vales" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" -msgstr "Filtro Anisotrópico" +msgstr "Filtro anisotrópico" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Anunciar servidor" #: src/settings_translation_file.cpp msgid "" @@ -1264,174 +1462,243 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Anunciar a esta lista de servidores.\n" +"Se quiser anunciar o seu endereço IPv6, use serverlist_url = v6.servers." +"minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Aproxima escala (X,Y,Z) do fractal em cubos." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Pedir para reconectar após de bloqueio de sistema" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Informar automáticamente a lista de servidores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Recuar" +msgstr "Tecla para andar para trás" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Altura base do terreno" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Básico" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "Privilégios por defeito" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" -msgstr "Filtro Bi-Linear" +msgstr "Filtro bi-linear" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "A resolver endereço..." +msgstr "Endereço de bind" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Bits por pixel (profundidade de cor) no modo de ecrã inteiro." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Vários jogadores" +msgstr "Construir com o jogador dentro do cubo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "Mip-Mapping" +msgstr "Bump mapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Suavização da camera" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Suavização da câmera no modo cinematográfico" #: src/settings_translation_file.cpp msgid "Camera update toggle key" +msgstr "Tecla para ativar/desativar atualização da câmera" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Ruído para cavernas #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Ruído para cavernas #2" + +#: src/settings_translation_file.cpp +msgid "Cave width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Chat key" -msgstr "Mudar teclas" +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Cavernas e túneis formam-se na interseção entre os dois ruídos" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Tecla de conversação" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Mudar teclas" +msgstr "Tecla mostra/esconde conversação" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Escolha entre 18 fractais resultantes de 9 fórmulas\n" +"1 = Conjunto de mandelbrot \"Roundy\" 4D.\n" +"2 = Conjunto de julia \"Roundy\" 4D.\n" +"3 = Conjunto de mandelbrot \"Squarry\" 4D.\n" +"4 = Conjunto de julia \"Squarry\" 4D.\n" +"5 = Conjunto de mandelbrot \"Mandy Cousin\" 4D.\n" +"6 = Conjunto de julia \"Mandy Cousin\" 4D.\n" +"7 = Conjunto de mandelbrot \"Variation\" 4D.\n" +"8 = Conjunto de julia \"Variation\" 4D.\n" +"9 = Conjunto de mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n" +"10 = Conjunto de julia \"Mandelbrot/Mandelbar\" 3D.\n" +"11 = Conjunto de mandelbrot \"Árvore de natal\" 3D.\n" +"12 = Conjunto de julia \"Árvore de natal\" 3D..\n" +"13 = Conjunto de mandelbrot \"Bulbo de Mandelbrot\" 3D.\n" +"14 = Conjunto de julia \"Bulbo de Mandelbrot\" 3D.\n" +"15 = Conjunto de mandelbrot \"Bulbo de Mandelbrot Cosseno\" 3D.\n" +"16 = Conjunto de julia \"Bulbo de Mandelbrot Cosseno\" 3D.\n" +"17 = Conjunto de mandelbrot \"Bulbo de Mandelbrot\" 4D.\n" +"18 = Conjunto de julia \"Bulbo de Mandelbrot\" 4D." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Dimensão das parcelas" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Modo Criativo" +msgstr "Modo cinematográfico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Modo Criativo" +msgstr "Tecla para modo cinematográfico" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Limpar texturas transparentes" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Cliente e servidor" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Velocidade de escalada" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Altura das nuvens" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Raio das nuvens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Nuvens 3D" +msgstr "Nuvens" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "As nuvens são um efeito do lado do cliente." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menu Principal" +msgstr "Nuvens no menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Névoa colorida" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Lista separada por vírgulas de extras de confiança que podem utilizar " +"funções inseguras \n" +"mesmo quando a segurança de extras está ativada (via " +"request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Lista separada por vírgulas de extras que podem usar APIs de requisição " +"HTTP, \n" +"que lhes permitem enviar e descarregar dados para/da internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Comando" +msgstr "Tecla de comando" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Ligar" +msgstr "Vidro conectado" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "A conectar ao servidor..." +msgstr "Conectar a servidor media externo" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Conecta o vidro se suportado pelo cubo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Consola" +msgstr "Opacidade da consola" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Consola" +msgstr "Cor da consola" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Consola" +msgstr "Tecla da consola" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Avançar continuamente" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Avanço contínuo (apenas usado para testes)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "Controles" #: src/settings_translation_file.cpp msgid "" @@ -1439,179 +1706,230 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Controla a duração do ciclo dia/noite.\n" +"Exemplos: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = O tempo pára e permanece " +"inalterado." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Controla o tamanho dos desertos e das praias no gerador de mapa v6.\n" +"Quando o bioma de neve está ativado 'mgv6_freq_desert' é ignorado." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controla a inclinação/profundidade dos lagos." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controla a inclinação/altura das colinas." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Mensagem de erro" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Cria lagos de lava imprevisíveis nas cavernas, o que pode \n" +"dificultar a mineração. Zero desativa-os por completo. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Cria lagos de água imprevisíveis nas cavernas, o que pode \n" +"dificultar a mineração. Zero desativa-os por completo. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Opacidade do cursor" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Opacidade do cursor (entre 0 e 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Cor do cursor" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Cor do cursor (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Velocidade a agachar" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Ativar Dano" +msgstr "Ativar dano" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Tecla para alternar modo de depuração" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Nível de log de depuração" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Intervalo de atualização do servidor" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Aceleração por defeito" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "editar jogo" +msgstr "Jogo por defeito" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Jogo por defeito aquando da criação de um mundo novo.\n" +"É anulado quando o mundo é criado através do menu principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Senha Nova" +msgstr "Senha por defeito" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Privilégios por defeito" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Tempo limite por defeito para cURL, em milissegundos.\n" +"Só tem efeito se compilado com cURL." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Define nível de amostragem de textura.\n" +"Um valor mais alto resulta em mapas normais mais suaves." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Define distância máxima de transferência de jogadores em blocos (0 = " +"ilimitado)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Latência de apresentação de dicas de ferramentas, em milissegundos." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Tratamento de API Lua obsoleto" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Profundidade a partir da qual você encontrará grandes cavernas." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Profundidade a partir da qual você encontrará caves massivas." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Velocidade de descida" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Descrição do servidor, a ser exibida quando jogadores se conectam e na lista " +"de servidores." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Dessincroniza animação de blocos" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." msgstr "" +"Dados de perfil detalhados do extra. Útil para desenvolvedores de extras." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Dados de perfil detalhados do extra" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Determina a forma do terreno\n" +"Os 3 números entre '[' e ']' controlam a escala do\n" +"terreno, os 3 números devem ser idênticos." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Ativar Partículas" +msgstr "Desativar anti-batota" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Não permitir senhas vazias" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Nome de domínio do servidor, para ser mostrado na lista de servidores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo" +msgstr "Carregue duas vezes em saltar para voar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo" +msgstr "Carregar duas vezes em saltar ativa/desativa o vôo." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tecla para largar item" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Mostrar informações de depuração do gerador de mapa." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Ativar VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Repositório Online de Mods" +msgstr "Ativar segurança de extras" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Ativar dano e morte dos jogadores." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Ativa a entrada de comandos aleatória (apenas usado para testes)." #: src/settings_translation_file.cpp msgid "" @@ -1627,6 +1945,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Ativar para impedir a conexão de clientes antigos.\n" +"Clientes antigos são compatíveis no sentido em que não bloquearão quando " +"conectam \n" +"a servidores recentes, mas poderão não suportar todos as funcionalidades " +"esperadas." #: src/settings_translation_file.cpp msgid "" @@ -1642,6 +1965,14 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Ativar/desativar a execução de um servidor IPv6. Um servidor IPv6 pode \n" +"estar restringido a clientes com IPv6, dependendo da configuração do " +"sistema.\n" +"Ignorado se bind_address estiver definido." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Ativa animação de itens no inventário." #: src/settings_translation_file.cpp msgid "" @@ -1656,9 +1987,12 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Ativa mapeamento de tons fílmico" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Ativar Dano" +msgstr "Ativa mini-mapa." #: src/settings_translation_file.cpp msgid "" @@ -1671,76 +2005,90 @@ msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Ativa mapeamento de oclusão de paralaxe.\n" +"Requer sombreadores ativados." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Opção experimental, pode causar espaços visíveis entre blocos\n" +"quando definido com num úmero superior a 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS em menu de pausa" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA (Antialiasing de ecrã inteiro)" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Cair balançando" #: src/settings_translation_file.cpp msgid "Fallback font" -msgstr "" +msgstr "Fonte alternativa" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Sombra da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Canal de opacidade sombra da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Tamanho da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Tecla de correr" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Aceleração no modo rápido" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Velocidade no modo rápido" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Modo rápido" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Campo de visão" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Campo de visão em graus." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Ficheiro na pasta client/serverlist/ que contém os seus servidores favoritos " +"mostrados na separador Multi-jogador." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Mapeamento de tom fílmico" #: src/settings_translation_file.cpp msgid "" @@ -1751,45 +2099,44 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Filtro Anisotrópico" +msgstr "Filtros" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Semente aleatória do mapa fixa" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Tecla de voar" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Voar" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Nevoeiro" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Tecla de ativar/desativar nevoeiro" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Caminho para ficheiro fonte" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Sombra da fonte" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Opacidade da sombra da fonte" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Opacidade da sombra da fonte (entre 0 e 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." @@ -1797,60 +2144,72 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Font size" +msgstr "Tamanho da fonte" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Avançar" +msgstr "Tecla para avançar" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Fontes FreeType" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"Distância máxima de geração de blocos para clientes, em mapblocks (16^3 " +"cubos)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"Distância máxima de envio de blocos para clientes, em mapblocks (16^3 cubos)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"Distância máxima de envio de dados sobre objectos para clientes, em " +"mapblocks (16^3 cubos)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Ecrã inteiro" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "BPP em ecrã inteiro" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Modo de ecrã inteiro." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Escala do interface gráfico" #: src/settings_translation_file.cpp msgid "GUI scaling filter" -msgstr "" +msgstr "Filtro de redimensionamento do interface gráfico" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtro txr2img de redimensionamento do interface gráfico" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gama" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Geral" #: src/settings_translation_file.cpp msgid "Generate normalmaps" @@ -1859,18 +2218,26 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Gráficos" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravidade" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "Extras HTTP" #: src/settings_translation_file.cpp msgid "HUD toggle key" @@ -1883,22 +2250,31 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Tratamento de chamadas ao API Lua obsoletas:\n" +"- legacy: (tenta) imitar o comportamento antigo (por defeito em versão de " +"lançamento).\n" +"- log: imita e regista no log (por defeito em versão de depuração).\n" +"- error: aborta (sugerido para desenvolvedores de extras)." + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "Altura da janela inicial." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Altitude das nuvens." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "FPU de alta precisão" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Página web do servidor, a ser exibido na lista de servidores." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Quão profundos são os rios" #: src/settings_translation_file.cpp msgid "" @@ -1906,6 +2282,8 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Dimensão da área de blocos mantida ativa, em mapblocks (16^3 cubos).\n" +"Em blocos ativos objetos são carregados e ABMs são executados." #: src/settings_translation_file.cpp msgid "" @@ -1922,17 +2300,21 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Quão largos são os rios" + #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "Servidor IPv6" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Suporte IPv6." #: src/settings_translation_file.cpp msgid "" @@ -1941,21 +2323,26 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Desativar Tudo" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Se ativado com o modo de vôo, o jogador é capaz de voar através de cubos " +"sólidos.\n" +"Isto requer o privilégio \"noclip\" no servidor." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "ativo" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1965,7 +2352,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "Se ativado, desativa prevenção de fraude no modo mult-ijogador." #: src/settings_translation_file.cpp msgid "" @@ -1975,7 +2362,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." -msgstr "" +msgstr "Se ativado, novos jogadores não podem entrar com uma senha vazia." #: src/settings_translation_file.cpp msgid "" @@ -1983,6 +2370,9 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Se ativado, você pode colocar blocos na posição (pés + nível dos olhos) onde " +"você está.\n" +"Isto é útil quando se trabalha com nodeboxes em pequenas áreas." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -1990,12 +2380,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Ignorar erros do mundo" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Jogo" +msgstr "No jogo" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -2003,7 +2392,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Côr de fundo da consola de conversação (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." @@ -2014,26 +2403,76 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "Animações dos itens do inventário" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "Inventário" +msgstr "Tecla de inventário" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Inverter rato" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Inverte o movimento vertical do rato." #: src/settings_translation_file.cpp msgid "Item entity TTL" +msgstr "Tempo de vida de itens largados" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas fractal Julia: Componente W da constante hypercomplexa que determina " +"a forma.\n" +"Não tem efeito em fractais 3D.\n" +"Valor varia sensivelmente entre -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas fractal Julia: Componente X da constante hypercomplexa que determina " +"a forma.\n" +"Valor varia sensivelmente entre -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas fractal Julia: Componente Y da constante hypercomplexa que determina " +"a forma.\n" +"Valor varia sensivelmente entre -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas fractal Julia: Componente Z da constante hypercomplexa que determina " +"a forma.\n" +"Valor varia sensivelmente entre -2 e 2." + +#: src/settings_translation_file.cpp msgid "Jump key" -msgstr "Saltar" +msgstr "Tecla de saltar" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -2041,7 +2480,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2055,7 +2494,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2087,6 +2526,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador para a frente.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2094,6 +2536,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador para a esquerda.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2136,6 +2581,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para imprimir pilhas de depuração. Usado para o desenvolvimento.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2173,6 +2621,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição do mini-mapa.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2208,6 +2659,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição de informações de depuração.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2253,9 +2707,17 @@ msgid "Language" msgstr "" #: src/settings_translation_file.cpp -msgid "Leaves style" +msgid "Large cave depth" msgstr "" +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Características da lava" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "Estilo de folhas" + #: src/settings_translation_file.cpp msgid "" "Leaves style:\n" @@ -2263,11 +2725,14 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Estilo de folhas:\n" +"- Fancy: todas as faces visíveis\n" +"- Simple: apenas faces externas, se definidos special_tiles são usados\n" +"- Opaque: desativa transparência" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Menu Esquerdo" +msgstr "Tecla para a esquerda" #: src/settings_translation_file.cpp msgid "" @@ -2275,6 +2740,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2286,6 +2759,14 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Nível de registo log a ser guardado em debug.txt:\n" +"- (nada registado)\n" +"- none (mensagens sem nível de log)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -2337,14 +2818,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menu Principal" +msgstr "Menu principal do gestor de extras" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menu Principal" +msgstr "Menu principal de scripts" #: src/settings_translation_file.cpp msgid "" @@ -2361,21 +2840,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2394,6 +2903,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Vales do mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2407,28 +2920,144 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Geração de Mapa" +msgstr "Depuração do gerador de mapa" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Flags do mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Gerador de mapa plano" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Geração de Mapa" +msgid "Mapgen flat cave width" +msgstr "Limite de lagos no gerador de mapa plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Flags do gerador de mapa plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Nível do terreno para o gerador de mapa plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Inclinação dos lagos no gerador de mapa plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Limite de lagos no gerador de mapa plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Gerador de mapa fractal" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "W do corte do gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "Parâmetros de ruído caverna1 no gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "Parâmetros de ruído caverna2 no gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" +"Parâmetros de ruído da profundidade de enchimento no gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "Fractal do gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "Iterações no gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "W do gerador de mapa fractal Julia" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "X do gerador de mapa fractal Julia" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Y do gerador de mapa fractal Julia" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Z do gerador de mapa fractal Julia" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "Deslocamento do gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "Escala do gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Parâmetros de ruído do fundo do mar no gerador de mapa fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "W do corte do gerador de mapa fractal" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Geração de Mapa" +msgstr "Nome do gerador de mapa" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Gerador de mapa V5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Geração de Mapa" +msgid "Mapgen v5 cave width" +msgstr "Gerador de mapa V5" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2451,9 +3080,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Geração de Mapa" +msgstr "Gerador de mapa V6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2512,9 +3140,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Geração de Mapa" +msgstr "Gerador de mapa V7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Gerador de mapa V7" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2564,6 +3196,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2668,9 +3312,8 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menu" +msgstr "Opções para menus" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -2685,32 +3328,28 @@ msgid "Message of the day displayed to players connecting." msgstr "" #: src/settings_translation_file.cpp -msgid "Minimap" +msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "Mini-mapa" + #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Tecla mini-mapa" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Altura de varredura do mini-mapa" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip-Mapping" +msgstr "Mapeamento MIP" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2784,13 +3423,9 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Novos jogadores precisam de introduzir esta senha." #: src/settings_translation_file.cpp msgid "Noclip" @@ -2802,12 +3437,20 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Node highlighting" +msgstr "Destacando cubos" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" msgstr "" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2838,43 +3481,39 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "Número de iterações de oclusão de paralaxe." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" +msgstr "Enviesamento do efeito de oclusão de paralaxe, normalmente escala/2." #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" +msgstr "Escala do efeito de oclusão de paralaxe." #: src/settings_translation_file.cpp msgid "Parallax occlusion" -msgstr "" +msgstr "Oclusão de paralaxe" #: src/settings_translation_file.cpp msgid "Parallax occlusion Scale" -msgstr "" +msgstr "Escala de oclusão paralaxe" #: src/settings_translation_file.cpp msgid "Parallax occlusion bias" -msgstr "" +msgstr "Enviesamento de oclusão paralaxe" #: src/settings_translation_file.cpp msgid "Parallax occlusion iterations" -msgstr "" +msgstr "Iterações de oclusão paralaxe" #: src/settings_translation_file.cpp msgid "Parallax occlusion mode" -msgstr "" +msgstr "Modo de oclusão paralaxe" #: src/settings_translation_file.cpp msgid "Parallax occlusion strength" -msgstr "" +msgstr "Força da oclusão paralaxe" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." @@ -2895,7 +3534,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2917,20 +3556,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "A carregar..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2951,15 +3581,20 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"Raio da área de nuvens indicado em número de 64 cubos de nuvem.\n" +"Valores superiores a 26 produzem arestas acentuadas nos cantos das nuvens." + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "Eleva o terreno para fazer vales em torno dos rios" #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Seleccionar Distância" +msgstr "Tecla para modo de visão ilimitado" #: src/settings_translation_file.cpp msgid "Remote media" @@ -2974,21 +3609,36 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Menu Direito" +msgstr "Tecla para a direita" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "Ruído para rios -- rios ocorrem em valores próximos de zero" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "Mini-map redondo" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." @@ -3006,6 +3656,11 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"Redimensiona interface gráfico por um valor especificado pelo \n" +"utilizador. Usa um filtro antisserrilhamento através de interpolação \n" +"por vizinho mais próximo. Isto vai alisar algumas das arestas e \n" +"misturar pixels quando reduzir a dimensão, com o custo de borrar \n" +"alguns pixels das arestas quando o valor não é inteiro." #: src/settings_translation_file.cpp msgid "Screen height" @@ -3016,14 +3671,30 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Screenshot" +msgstr "Captura de ecrã" #: src/settings_translation_file.cpp msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Captura de ecrã" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Captura de ecrã" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3045,44 +3716,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Um Jogador" +msgstr "Servidor / Um jogador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Servidor" +msgstr "URL do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Porta" +msgstr "Endereço do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Porta" +msgstr "Descrição do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Servidor" +msgstr "Nome do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "Porta" +msgstr "Porta do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Lista de Servidores Públicos" +msgstr "URL da lista de servidores" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Lista de Servidores Públicos" +msgstr "Ficheiro da lista de servidores" #: src/settings_translation_file.cpp msgid "" @@ -3095,6 +3758,8 @@ msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Com o valor TRUE, folhas ondulantes são ativadas.\n" +"Necessita de shaders para estar ativo." #: src/settings_translation_file.cpp msgid "" @@ -3108,10 +3773,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Sombras" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3121,10 +3782,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "Formato do mini-mapa. Ativado = redondo, desativado = quadrado." #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "Mostrar informação de depuração" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp @@ -3136,15 +3801,19 @@ msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Dimensão da parcela a ser gerada por mapgen, em mapblocks (16^3 cubos)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "Iluminação Suave" +msgstr "Iluminação suave" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3157,9 +3826,8 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Agachar" +msgstr "Tecla para agachar" #: src/settings_translation_file.cpp msgid "Sound" @@ -3189,20 +3857,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Pacotes de Texturas" +msgid "Terrain Height" +msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Caminho para a pasta de texturas" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3244,11 +3934,17 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Durabilidade em segundos de objectos largados.\n" +"Definir como -1 para desativar funcionalidade." #: src/settings_translation_file.cpp msgid "Time send interval" @@ -3269,6 +3965,9 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"Para reduzir a latência, a transferência de blocos é abrandada quando um " +"jogador está \n" +"a construir. Isto determina o quanto é abrandado após a colocação de um cubo." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" @@ -3279,9 +3978,8 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" -msgstr "Filtro Tri-Linear" +msgstr "Filtro tri-linear" #: src/settings_translation_file.cpp msgid "" @@ -3289,6 +3987,9 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"Útil para fazer o mini-mapa mais fluido em computadores mais lentos." #: src/settings_translation_file.cpp msgid "Trusted mods" @@ -3296,7 +3997,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "URL da lista de servidores exibida no separador multi-jogador." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -3323,29 +4024,47 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "pressione a tecla" +msgstr "Tecla de usar" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." -msgstr "" +msgstr "Usa mapeamento MIP para escalar texturas. Pode melhorar performance." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Desenvolvedores Chave" +msgstr "Útil para desenvolvedores de extras." #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3360,6 +4079,14 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" +"Distância de visualização, em cubos.\n" +"Mínimo é 20" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3369,25 +4096,28 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Volume do som" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Water Features" +msgstr "Características da água" #: src/settings_translation_file.cpp msgid "Water level" @@ -3399,12 +4129,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving Nodes" -msgstr "" +msgstr "Cubos Ondulantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Árvores Melhoradas" +msgstr "Folhas ondulantes" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -3432,6 +4161,9 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"Quando gui_scaling_filter está ativado, todas as imagens do interface \n" +"gráfico são filtradas por software, mas algumas imagens são geradas \n" +"directamente para o hardware (e.g. texturas de cubos no inventário)." #: src/settings_translation_file.cpp msgid "" @@ -3461,6 +4193,14 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"Limite da geração do mapa.\n" +"Note:\n" +"- Limitado a 31000 (valor superior não tem efeito)\n" +"- O gerador funciona em grupos de 80x80x80 cubos (5x5x5 MapBlocks).\n" +"- Esses grupos têm um deslocamento de -32, -32 cubos em relação à " +"origem.\n" +"- Apenas grupos dentro do limite definido por map_generation_limit são " +"gerados" #: src/settings_translation_file.cpp msgid "" @@ -3470,6 +4210,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" +"Determina se animações das texturas dos cubos devem ser dessincronizadas " +"entre mapblocks." #: src/settings_translation_file.cpp msgid "" @@ -3486,6 +4228,10 @@ msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Se deverá pedir ao cliente para se reconectar após um bloqueio de sistema " +"(Lua).\n" +"Defina como TRUE se o seu servidor está configurado para recomeçar " +"automaticamente." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." @@ -3495,10 +4241,24 @@ msgstr "" msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +"Se deve mostrar ao cliente informação de depuração (tem o mesmo efeito que " +"premir F5)." + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "Grossura das linhas de selecção à volta dos cubos." #: src/settings_translation_file.cpp msgid "" @@ -3506,6 +4266,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3518,86 +4286,58 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Game Name" -#~ msgstr "Nome do Jogo" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "" -#~ "Mensagem de Jogo: Impossível fazer cópia do extra \"$1\" para o jogo " -#~ "\"$2\"" - -#~ msgid "GAMES" -#~ msgstr "JOGOS" - -#~ msgid "Mods:" -#~ msgstr "Extras:" - -#~ msgid "new game" -#~ msgstr "novo jogo" - -#~ msgid "EDIT GAME" -#~ msgstr "EDITAR JOGO" - -#~ msgid "Remove selected mod" -#~ msgstr "Remover extra selecionado" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Adicionar extra" - -#~ msgid "CLIENT" -#~ msgstr "CLIENTE" - -#~ msgid "Favorites:" -#~ msgstr "Favoritos:" - -#~ msgid "START SERVER" -#~ msgstr "INICIAR SERVIDOR" - -#~ msgid "Name" -#~ msgstr "Nome" - -#~ msgid "Password" -#~ msgstr "Senha" - -#~ msgid "SETTINGS" -#~ msgstr "DEFINIÇÕES" - -#~ msgid "Preload item visuals" -#~ msgstr "Pré-carregamento dos itens" - -#~ msgid "Finite Liquid" -#~ msgstr "Líquido Finito" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "Um Jogador" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "PACOTES DE TEXTURAS" - -#~ msgid "MODS" -#~ msgstr "EXTRAS" +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "A carregar..." #, fuzzy -#~ msgid "Add mod:" -#~ msgstr "<<-- Adicionar extra" +#~ msgid "Downloading" +#~ msgstr "Descarregar" -#, fuzzy -#~ msgid "Local install" -#~ msgstr "Instalar" +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item" -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " -#~ msgstr "" -#~ "Atenção: Alguns mods ainda não estão configurados.\n" -#~ "Eles vão ser ativados por predefinição quando guardar a configuração. " +#~ msgid "is required by:" +#~ msgstr "é necessário pelo:" -#~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " -#~ msgstr "" -#~ "Atenção: Alguns mods configurados estão em falta.\n" -#~ "As suas definições vão ser removidas quando gravar a configuração. " +#~ msgid "Configuration saved. " +#~ msgstr "Configuração gravada. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Atenção: Configuração não compatível. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Não foi possível criar mundo: Nome com caracteres inválidos" + +#~ msgid "Show Public" +#~ msgstr "Mostrar Públicos" + +#~ msgid "Show Favorites" +#~ msgstr "Mostrar Favoritos" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Deixe endereço em branco para iniciar servidor local." + +#~ msgid "Create world" +#~ msgstr "Criar mundo" + +#~ msgid "Address required." +#~ msgstr "Endereço necessário." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Não foi possível eliminar mundo: Nada seleccionado" + +#~ msgid "Files to be deleted" +#~ msgstr "Ficheiros para eliminar" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Não foi possível criar mundo: Não foram detectados jogos" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Não foi possível configurar mundo: Nada seleccionado" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Falhou a remoção de todos os ficheiros dos mundos" #~ msgid "" #~ "Default Controls:\n" @@ -3624,62 +4364,100 @@ msgstr "" #~ "- ESC: Este menu\n" #~ "- T: Chat\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Falhou a remoção de todos os ficheiros dos mundos" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "Atenção: Alguns mods configurados estão em falta.\n" +#~ "As suas definições vão ser removidas quando gravar a configuração. " -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Não foi possível configurar mundo: Nada seleccionado" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Não foi possível criar mundo: Não foram detectados jogos" - -#~ msgid "Files to be deleted" -#~ msgstr "Ficheiros para eliminar" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Não foi possível eliminar mundo: Nada seleccionado" - -#~ msgid "Address required." -#~ msgstr "Endereço necessário." - -#~ msgid "Create world" -#~ msgstr "Criar mundo" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Deixe endereço em branco para iniciar servidor local." - -#~ msgid "Show Favorites" -#~ msgstr "Mostrar Favoritos" - -#~ msgid "Show Public" -#~ msgstr "Mostrar Públicos" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Não foi possível criar mundo: Nome com caracteres inválidos" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Atenção: Configuração não compatível. " - -#~ msgid "Configuration saved. " -#~ msgstr "Configuração gravada. " - -#~ msgid "is required by:" -#~ msgstr "é necessário pelo:" - -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Atenção: Alguns mods ainda não estão configurados.\n" +#~ "Eles vão ser ativados por predefinição quando guardar a configuração. " #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Descarregar" +#~ msgid "Local install" +#~ msgstr "Instalar" #, fuzzy -#~ msgid "Reset singleplayer world" +#~ msgid "Add mod:" +#~ msgstr "<<-- Adicionar extra" + +#~ msgid "MODS" +#~ msgstr "EXTRAS" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "PACOTES DE TEXTURAS" + +#~ msgid "SINGLE PLAYER" #~ msgstr "Um Jogador" -#~ msgid "Opaque Water" -#~ msgstr "Água Opaca" +#~ msgid "Finite Liquid" +#~ msgstr "Líquido Finito" + +#~ msgid "Preload item visuals" +#~ msgstr "Pré-carregamento dos itens" + +#~ msgid "SETTINGS" +#~ msgstr "DEFINIÇÕES" + +#~ msgid "Password" +#~ msgstr "Senha" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "START SERVER" +#~ msgstr "INICIAR SERVIDOR" + +#~ msgid "CLIENT" +#~ msgstr "CLIENTE" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Adicionar extra" + +#~ msgid "Remove selected mod" +#~ msgstr "Remover extra selecionado" + +#~ msgid "EDIT GAME" +#~ msgstr "EDITAR JOGO" + +#~ msgid "new game" +#~ msgstr "novo jogo" + +#~ msgid "Mods:" +#~ msgstr "Extras:" + +#~ msgid "GAMES" +#~ msgstr "JOGOS" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "" +#~ "Mensagem de Jogo: Impossível fazer cópia do extra \"$1\" para o jogo " +#~ "\"$2\"" + +#~ msgid "Game Name" +#~ msgstr "Nome do Jogo" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Água Opaca" +#~ msgid "If enabled, " +#~ msgstr "ativo" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Desativar Tudo" + +#~ msgid "No!!!" +#~ msgstr "Não!!!" + +#~ msgid "Generate Normalmaps" +#~ msgstr "Gerar Normalmaps" + +#~ msgid "Public Serverlist" +#~ msgstr "Lista de Servidores Públicos" + +#~ msgid "No of course not!" +#~ msgstr "Não, é claro que não!" diff --git a/po/pt_BR/minetest.po b/po/pt_BR/minetest.po index b5e5f822..3b345226 100644 --- a/po/pt_BR/minetest.po +++ b/po/pt_BR/minetest.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-10-15 04:11+0200\n" -"Last-Translator: Leonardo \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-03-31 13:45+0000\n" +"Last-Translator: Ian giestas pauli \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 2.6-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Ocorreu um erro no script Lua, como um mod:" +msgstr "Ocorreu um erro no script Lua, assim como em um mod:" #: builtin/fstk/ui.lua msgid "An error occured:" @@ -36,13 +36,12 @@ msgid "Ok" msgstr "Ok" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Conectar" +msgstr "Reconectar" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "O servidor requisitou uma reconexão:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -50,37 +49,41 @@ msgstr "Carregando..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Versão do protocolo incompatível. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "O servidor suporta o protocolo versão $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "O servidor suporta entre as versões $1 e $2 do protocolo. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Tente reabilitar a lista de servidores públicos e checar sua conexão de " +"internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Nós apenas suportamos a versão $1 do protocolo." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Nós suportamos entre as versões $1 e $2 do protocolo." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Cancelar" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua msgid "Depends:" -msgstr "Depende de:" +msgstr "Dependências:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" @@ -88,7 +91,7 @@ msgstr "Desabilitar PMs" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" -msgstr "Habilitar PMs" +msgstr "Habilitar MP" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -99,6 +102,9 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Falha ao carregar mod \"$1\" devido ao fato de seu nome possuir caracteres " +"inválidos. Apenas caracteres de \"a\" até \"z\" e algarísmos de 0 até 9 são " +"permitidos." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -112,8 +118,8 @@ msgstr "Ocultar conteúdo PMs" msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Salvar" @@ -135,11 +141,11 @@ msgstr "Criar" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "" +msgstr "Baixe um subgame, como o minetest_game, do site minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Baixe um do site minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -147,7 +153,7 @@ msgstr "Jogo" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Mapgen" +msgstr "Gerador de mapa" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -161,6 +167,7 @@ msgstr "Seed" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "" +"Aviso: O game \"minimal development test\" apenas serve para desenvolvedores." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -168,12 +175,18 @@ msgstr "Nome do mundo" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "" +msgstr "Você não possui nenhum subgame instalado." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Tem certeza que deseja excluir \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Excluir" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: não foi possível excluir \"$1\"" @@ -182,22 +195,10 @@ msgstr "Modmgr: não foi possível excluir \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: caminho inválido do módulo \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Claro que não!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Sim" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Excluir o mundo \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Não" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Aceitar" @@ -206,14 +207,103 @@ msgstr "Aceitar" msgid "Rename Modpack:" msgstr "Renomear pacote de módulos:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" não é uma flag válida." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Descrição de configuração não fornecida)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Voltar para as configurações" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Navegar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Desabilitado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Editar" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Habilitado" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "O formato é de 3 números separados por vírgulas dentro de colchetes." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Formato: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Jogos" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Módulos" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" +"Opcionalmente essas lacunas podem ser colocados com a vírgula na frente." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Por favor, digite uma lista de flags separadas por vírgulas." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Por favor insira um inteiro válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Por favor, insira um número válido." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Os possíveis valores são: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Restaurar para o padrão" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Selecionar diretório" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Mostrar nomes técnicos" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "O valor deve ser maior que $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "O valor deve ser menor que $1." + #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Instalação de módulo: o tipo de arquivo \"$1\" não é suportado" +"Instalação de módulo: o tipo de arquivo \"$1\" não é suportado ou o arquivo " +"está corrompido" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -236,11 +326,11 @@ msgstr "" #: builtin/mainmenu/store.lua msgid "Close store" -msgstr "" +msgstr "Fechar Mod Store" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "" +msgstr "Baixando $1, por favor aguarde..." #: builtin/mainmenu/store.lua msgid "Install" @@ -256,20 +346,19 @@ msgstr "Classificação" #: builtin/mainmenu/store.lua msgid "Search" -msgstr "" +msgstr "Procurar" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "Nome do mundo" +msgstr "Nome curto:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" -msgstr "" +msgstr "Instalado com sucesso:" #: builtin/mainmenu/store.lua msgid "Unsorted" -msgstr "" +msgstr "Desorganizado" #: builtin/mainmenu/store.lua msgid "re-Install" @@ -292,9 +381,8 @@ msgid "Previous Contributors" msgstr "Colaboradores anteriores" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Desenvolvedores principais" +msgstr "Desenvolvedores principais anteriores" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -304,10 +392,6 @@ msgstr "Módulos instalados:" msgid "Mod information:" msgstr "Informação do módulo:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Módulos" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Nenhuma descrição disponível do módulo" @@ -330,8 +414,8 @@ msgstr "Desinstalar o pacote de módulos selecionado" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "Endereço/Porta" +msgid "Address / Port" +msgstr "Endereço / Porta :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -342,37 +426,35 @@ msgid "Connect" msgstr "Conectar" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Modo criativo" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "habilitado" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Excluir" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "Nome/Senha" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Servidores públicos" +msgstr "Habilitar dano" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "Favoritos:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "Favoritos:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nome / Senha :" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "habilitado" +msgstr "PvP habilitado" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Endereço de Bind" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -388,23 +470,21 @@ msgstr "Modo criativo" msgid "Enable Damage" msgstr "Habilitar dano" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" -msgstr "Nome/Senha" +msgstr "Nome / Senha" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "New" msgstr "Novo" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "No world created or selected!" -msgstr "" -"Não foi fornecido nenhum nome para o mundo ou não foi selecionado nenhum jogo" +msgstr "Nenhum mundo criado ou selecionado!" #: builtin/mainmenu/tab_server.lua msgid "Port" -msgstr "" +msgstr "Porta" #: builtin/mainmenu/tab_server.lua msgid "Public" @@ -427,104 +507,173 @@ msgid "Start Game" msgstr "Iniciar o jogo" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Nuvens 3D" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Você tem certeza que deseja resetar seu mundo?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Filtragem bi-linear" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Bump mapping" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Mudar teclas" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Desabilitar PMs" +msgid "Connected Glass" +msgstr "Vidro conectado" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Folhas com transparência" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmap (filtro)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap + Filtro Anisotrópico" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Não" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Sem filtros" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Sem Mipmapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Destaque nos Blocos" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "habilitado" +msgid "Node Outlining" +msgstr "Destaque nos Blocos" -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Jogos" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Nenhum" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Select" +msgid "Normal Mapping" +msgstr "Tone mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Folhas Opacas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Água opaca" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Oclusão de paralaxe" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Habilitar partículas" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Configurações" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Sombreadores" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Folhas Simples" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Smooth Lighting" +msgstr "Iluminação suave" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Texturização:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Para habilitar os sombreadores é necessário usar o driver OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Tone mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Nível de sensibilidade ao toque (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Filtragem tri-linear" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Folhas Balançam" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Plantas balançam" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Ondas na água" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Sim" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Configurar" +msgstr "Configurar Mods" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "Menu principal" +msgstr "Principal" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Um jogador" +msgstr "Iniciar Um jogador" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -538,49 +687,37 @@ msgstr "Um jogador" msgid "No information available" msgstr "Nenhuma informação disponível" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Selecione o pacote de texturas:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" msgstr "Pacotes de texturas" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Erro de conexão (tempo excedido?)" +msgstr "Erro de conexão (tempo excedido)." #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "Pronto!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Inicializando nodes" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Inicializando nodes..." #: src/client.cpp -msgid "Item textures..." -msgstr "Texturas dos itens..." - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "Carregando..." +msgstr "Carregando texturas..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "Resolvendo os endereços..." +msgstr "Recompilando shaders..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -601,20 +738,19 @@ msgstr "Menu principal" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." msgstr "" -"Nenhum mundo foi selecionado e nenhum endereço fornecido. Não existe nada a " -"ser feito." +"Nenhum mundo foi selecionado e nenhum endereço fornecido. Nada a ser feito." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Seu nome de jogador é muito longo." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "O caminho fornecido não existe: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "necessita_fonte_alternativa" #: src/game.cpp msgid "" @@ -625,7 +761,6 @@ msgstr "" "Verifique o debug.txt para mais detalhes." #: src/game.cpp -#, fuzzy msgid "Change Keys" msgstr "Mudar teclas" @@ -646,7 +781,6 @@ msgid "Creating client..." msgstr "Criando o cliente..." #: src/game.cpp -#, fuzzy msgid "Creating server..." msgstr "Criando o servidor..." @@ -691,6 +825,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Controles:\n" +"Se não há nenhum menu visível:\n" +"- Um toque: ativa botão\n" +"- Duplo toque: place/use\n" +"- Deslizar dedo: Olhar ao redor\n" +"Menu/Inventário visível:\n" +"- Duplo toque: (Fora do menu):\n" +" -->Fechar\n" +"- Tocar Item e depois tocar em um slot:\n" +" --> move item\n" +"- Tocar e arrastar, e depois tocar com o 2º dedo\n" +" --> Coloca apenas um item no slot\n" #: src/game.cpp msgid "Exit to Menu" @@ -702,11 +848,11 @@ msgstr "Sair do Minetest" #: src/game.cpp msgid "Item definitions..." -msgstr "Definições dos itens..." +msgstr "Carregando itens..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KB/s" #: src/game.cpp msgid "Media..." @@ -714,15 +860,11 @@ msgstr "Mídia..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MB/s" #: src/game.cpp msgid "Node definitions..." -msgstr "Definições dos nós..." - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Continuar" +msgstr "Carregando blocos..." #: src/game.cpp msgid "Resolving address..." @@ -733,7 +875,6 @@ msgid "Respawn" msgstr "Reviver" #: src/game.cpp -#, fuzzy msgid "Shutting down..." msgstr "Desligando tudo..." @@ -745,13 +886,17 @@ msgstr "Volume do som" msgid "You died." msgstr "Você morreu." -#: src/guiFormSpecMenu.cpp -msgid "Enter " -msgstr "" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "Ok" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Enter " +msgstr "Entrar " + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "Continuar" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -824,9 +969,8 @@ msgid "Sneak" msgstr "Esgueirar" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Alternar corrida" +msgstr "Alternar modo de câmera cinemática" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -878,11 +1022,11 @@ msgstr "Volume do som: " #: src/keycode.cpp msgid "Apps" -msgstr "Apps" +msgstr "Aplicativos" #: src/keycode.cpp msgid "Attn" -msgstr "Attn" +msgstr "ATTN" #: src/keycode.cpp msgid "Back" @@ -906,11 +1050,11 @@ msgstr "Ctrl" #: src/keycode.cpp msgid "Convert" -msgstr "Convert" +msgstr "Convert (tecla)" #: src/keycode.cpp msgid "CrSel" -msgstr "CrSel" +msgstr "CrSel (tecla)" #: src/keycode.cpp msgid "Down" @@ -918,7 +1062,7 @@ msgstr "Abaixo" #: src/keycode.cpp msgid "End" -msgstr "End" +msgstr "Tecla End" #: src/keycode.cpp msgid "Erase OEF" @@ -930,7 +1074,7 @@ msgstr "Esc" #: src/keycode.cpp msgid "ExSel" -msgstr "ExSel" +msgstr "ExSel (tecla)" #: src/keycode.cpp msgid "Execute" @@ -938,7 +1082,7 @@ msgstr "Executar" #: src/keycode.cpp msgid "Final" -msgstr "Final" +msgstr "Final (tecla)" #: src/keycode.cpp msgid "Help" @@ -954,15 +1098,15 @@ msgstr "Insert" #: src/keycode.cpp msgid "Junja" -msgstr "Junja" +msgstr "Tecla Junja" #: src/keycode.cpp msgid "Kana" -msgstr "Kana" +msgstr "Tecla Kana" #: src/keycode.cpp msgid "Kanji" -msgstr "Kanji" +msgstr "Tecla Kanji" #: src/keycode.cpp msgid "Left Button" @@ -970,19 +1114,19 @@ msgstr "Botão esquerdo" #: src/keycode.cpp msgid "Left Control" -msgstr "Ctrl esq." +msgstr "Ctrl esquerdo" #: src/keycode.cpp msgid "Left Menu" -msgstr "Menu esq." +msgstr "Menu esquerdo" #: src/keycode.cpp msgid "Left Shift" -msgstr "Shift esq." +msgstr "Shift esquerdo" #: src/keycode.cpp msgid "Left Windows" -msgstr "Windows esq." +msgstr "Windows esquerdo" #: src/keycode.cpp msgid "Menu" @@ -998,7 +1142,7 @@ msgstr "Menos" #: src/keycode.cpp msgid "Mode Change" -msgstr "Mode Change" +msgstr "Mode Change (tecla)" #: src/keycode.cpp msgid "Next" @@ -1006,7 +1150,7 @@ msgstr "Page Down" #: src/keycode.cpp msgid "Nonconvert" -msgstr "Nonconvert" +msgstr "Nonconvert (tecla)" #: src/keycode.cpp msgid "Num Lock" @@ -1106,19 +1250,19 @@ msgstr "Botão direito" #: src/keycode.cpp msgid "Right Control" -msgstr "Ctrl dir." +msgstr "Ctrl direito" #: src/keycode.cpp msgid "Right Menu" -msgstr "Menu dir." +msgstr "Menu direito" #: src/keycode.cpp msgid "Right Shift" -msgstr "Shift dir." +msgstr "Shift direito" #: src/keycode.cpp msgid "Right Windows" -msgstr "Windows dir." +msgstr "Windows direito" #: src/keycode.cpp msgid "Scroll Lock" @@ -1126,7 +1270,7 @@ msgstr "Scroll Lock" #: src/keycode.cpp msgid "Select" -msgstr "Select" +msgstr "Tecla Select" #: src/keycode.cpp msgid "Shift" @@ -1134,7 +1278,7 @@ msgstr "Shift" #: src/keycode.cpp msgid "Sleep" -msgstr "Sleep" +msgstr "Tecla Sleep" #: src/keycode.cpp msgid "Snapshot" @@ -1166,18 +1310,28 @@ msgstr "Zoom" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = oclusão paralaxe com dados de inclinação (mais rápido).\n" +"1 = mapeamento de relevo (mais lento, mais preciso)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "Nuvens 3D" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "modo 3D" #: src/settings_translation_file.cpp msgid "" @@ -1187,38 +1341,62 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Suporte 3D.\n" +"Modos atualmente suportados:\n" +"- none: Nenhum efeito 3D.\n" +"- anaglyph: Sistema de cor Ciano/Magenta (Óculos 3D azul vermelho).\n" +"- interlaced: Sistema interlaçado (Óculos com lentes polarizadas).\n" +"- topbottom: Divide a tela em duas: uma em cima e outra em baixo.\n" +"- sidebyside: Divide a tela em duas: lado a lado." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Seed do mundo (deixe em branco para uma seed aleatória).\n" +"Será sobrescrita quando for criada um novo mundo no menu principal." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Uma mensagem para ser mostrada a todos os clientes do seu servidor quando " +"ele travar." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Uma mensagem para ser mostrada a todos os clientes quando o servidor " +"desligar." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limite absoluto de emergir filas" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Aceleração no ar" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Limite para blocos ativos" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Limite para blocos ativos" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Limite para blocos ativos" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Alcance para envio de objetos ativos" #: src/settings_translation_file.cpp msgid "" @@ -1226,39 +1404,54 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Endereço para conexão.\n" +"Deixe em branco para iniciar um servidor local.\n" +"Note que o campo de endereço no menu principal sobrescreve essa configuração." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Ajustar configuração de dpi (profundidade de cor) para sua tela (apenas para " +"quem não usa X11/Android) Ex para telas 4K." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Ajustar a gama de codificação para a tabela de claridade. Os números mais " +"baixos são mais brilhantes.\n" +"Esta configuração é somente para o cliente e é ignorada pelo servidor." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Avançado" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "Frio nas alturas" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Sempre voar e correr" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Gama de oclusão de ambiente" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "Amplia os vales" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "Filtragem anisotrópica" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Anunciar servidor" #: src/settings_translation_file.cpp msgid "" @@ -1266,174 +1459,246 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Anunciar a esta lista de servidores.\n" +"Se você quiser anunciar seu endereço IPv6, use serverlist_url = v6.servers." +"minetest.net." + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Aproxima os valores (X, Y, Z) de escala do fractal em blocos." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Peça para reconectar depois de queda" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Informar lista de servidores automaticamente." + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "Tecla para andar para trás" #: src/settings_translation_file.cpp #, fuzzy -msgid "Backward key" -msgstr "Voltar" +msgid "Base terrain height" +msgstr "Altura da base do terreno" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Básico" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "Privilégios por padrão" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "Filtragem bi-linear" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Resolvendo os endereços..." +msgstr "Endereço de bind" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." msgstr "" +"Bits por pixel (Também conhecido como profundidade de cor) no modo de tela " +"cheia." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Vários jogadores" +msgstr "Construir com o jogador dentro do bloco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "Mipmapping" +msgstr "Bump mapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Suavização da camera" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Suavização da câmera no modo cinematográfico" #: src/settings_translation_file.cpp msgid "Camera update toggle key" +msgstr "Tecla para alternar atualização da câmera" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Ruído nas cavernas #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Ruído nas cavernas #2" + +#: src/settings_translation_file.cpp +msgid "Cave width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Chat key" -msgstr "Mudar teclas" +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" +"Formação de cavernas e túneis na interseção entre dois ruídos diferentes" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Tecla de Chat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Mudar teclas" +msgstr "Tecla comutadora de chat" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"Escolha entre 18 fractais com 9 fórmulas\n" +"1 = Conjunto de mandelbrot \"Roundy\" 4D.\n" +"2 = Conjunto de julia \"Roundy\" 4D.\n" +"3 = Conjunto de mandelbrot \"Squarry\" 4D.\n" +"4 = Conjunto de julia \"Squarry\" 4D.\n" +"5 = Conjunto de mandelbrot \"Mandy Cousin\" 4D.\n" +"6 = Conjunto de julia \"Mandy Cousin\" 4D.\n" +"7 = Conjunto de mandelbrot \"Variation\" 4D.\n" +"8 = Conjunto de julia \"Variation\" 4D.\n" +"9 = Conjunto de mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n" +"10 = Conjunto de julia \"Mandelbrot/Mandelbar\" 3D.\n" +"11 = Conjunto de mandelbrot \"Árvore de natal\" 3D.\n" +"12 = Conjunto de julia \"Árvore de natal\" 3D..\n" +"13 = Conjunto de mandelbrot \"Bulbo de Mandelbrot\" 3D.\n" +"14 = Conjunto de julia \"Bulbo de Mandelbrot\" 3D.\n" +"15 = Conjunto de mandelbrot \"Bulbo de Mandelbrot Cosseno\" 3D.\n" +"16 = Conjunto de julia \"Bulbo de Mandelbrot Cosseno\" 3D.\n" +"17 = Conjunto de mandelbrot \"Bulbo de Mandelbrot\" 4D.\n" +"18 = Conjunto de julia \"Bulbo de Mandelbrot\" 4D." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Tamanho do chunk" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Modo criativo" +msgstr "Modo cinematográfico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Modo criativo" +msgstr "Tecla para modo cinematográfico" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Texturas transparentes limpas" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Cliente e servidor" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Velocidade de subida (em escadas e outros)" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Altura das nuvens" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Espessura das nuvens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "Nuvens 3D" +msgstr "Nuvens" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Conf. das nuvens apenas afetam seu jogo local." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Menu principal" +msgstr "Nuvens no menu" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Névoa colorida" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Lista separada por vírgulas dos mods confiáveis que podem utilizar funções " +"inseguras mesmo quando o a opção de Mod Seguro está ativada (via " +"request_insecure_environment())." + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"Lista de mods, separados por vírgulas, que podem usar APIs de requisição " +"HTTP, que\n" +"os permitem enviar e baixar informações para/da internet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "Comando" +msgstr "Tecla de Comando" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Conectar" +msgstr "Vidro conectado" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Conectando ao servidor..." +msgstr "Conecta ao servidor de mídia externo" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Conecta o vidro se isso for suportado pelo bloco." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Console" +msgstr "Console Alpha" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Console" +msgstr "Cor do console" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Console" +msgstr "Tecla do console" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Para frente continuamente" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "Movimento contínuo para frente (apenas usado para testes)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Ctrl" +msgstr "Controles" #: src/settings_translation_file.cpp msgid "" @@ -1441,185 +1706,238 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Controles da duração do dia.\n" +"Exemplos: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = O tempo para e permanece " +"inalterado." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Controla o tamanho dos desertos e das praias no Mapgen v6.\n" +"Quando \"snowbiomes\" (bioma de neve) está habilitado 'mgv6_freq_desert' é " +"ignorado." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "Controla o esparsamento/profundidade dos lagos." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "Controla o esparsamento/altura das colinas." + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Mensagem de travamento" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"Cria poços de lava randômicos nas cavernas,\n" +"Isso pode dificultar a mineração. Zero desabilita isso. (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"Cria poços de água randômicos nas cavernas,\n" +"Isso pode dificultar a mineração. Zero desabilita isso. (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Alpha do cursor" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Alpha do cursor (o quanto ele é opaco, níveis entre 0 e 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Cor do cursor" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Cor do cursor (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Velocidade para descer" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "dpi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Habilitar dano" +msgstr "Dano" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Tecla para alternar modo de Debug" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Nível de log do Debug" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Passo do servidor dedicado" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Aceleração padrão" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "editar o jogo" +msgstr "Jogo padrão" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Padrões de jogo para quando criar um novo mundo.\n" +"Isso será sobrescrito quando criar um mundo no menu principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Nova senha" +msgstr "Senha padrão" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Privilégios por padrão" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Tempo limite padrão para cURL, indicado em milissegundos.\n" +"Só tem efeito se compilado com cURL." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"Define processo amostral de textura.\n" +"Um valor mais alto resulta em mais suaves mapas normais." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Define a distância máxima de transferência de jogadores em blocos (0 = " +"ilimitado)." #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "Dicas de ferramenta mostrando atraso. indicado em milissegundos." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "Tratamento da API Lua rejeitado" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "Profundidade em que você encontrará cavernas enormes." + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "Profundidade em que você encontrará cavernas enormes." #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Velocidade de descida" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Descrição do servidor, a ser exibida quando os jogadores se se conectarem e " +"na lista de servidores." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "Dessincronizar animação do bloco" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "Dados detalhados do perfil do mod . Útil para desenvolvedores de mods." #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "Perfilamento detalhado do mod" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"Determina a forma do terreno\n" +"Os 3 números entre '[' e ']' controla a escala do\n" +"terreno, os 3 números devem ser idênticos." #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Habilitar partículas" +msgstr "Habilitar Anti-Hack" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Não permitir logar sem senha" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Domínio do servidor, para ser mostrado na lista de servidores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "\"Pular\" duas vezes ativa o voo" +msgstr "\"Pular\" duas vezes ativa o vôo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "\"Pular\" duas vezes ativa o voo" +msgstr "\"Pular\" duas vezes alterna o modo vôo." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Tecla para largar item" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "Mostrar informações de depuração do Mapgen." #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Habilitar VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Repositório de módulos online" +msgstr "Habilitar Mod Security (Segurança nos mods)" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Permitir que os jogadores possam sofrer dano e morrer." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "Habilitar entrada de comandos aleatórios (apenas usado para testes)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"Ativar iluminação suave com oclusão de ambiente simples.\n" +"Desativada para andar rápido ou para visões diferentes." #: src/settings_translation_file.cpp msgid "" @@ -1629,6 +1947,11 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Habilitar recurso de não permitir que jogadores usando versões antigas do " +"cliente possam se conectar.\n" +"Essas versões são compatíveis no sentido de não travar quando conectam a " +"servidores com versões mais atuais, porém eles podem não suportar todos os " +"recursos que você está esperando." #: src/settings_translation_file.cpp msgid "" @@ -1637,6 +1960,10 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Permitir o uso de servidor de mídia remoto (se fornecido pelo servidor).\n" +"Servidores remotos oferecem uma maneira significativamente mais rápida\n" +"para fazer o download de mídia (por exemplo texturas) ao se conectar ao " +"servidor." #: src/settings_translation_file.cpp msgid "" @@ -1644,6 +1971,15 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"Habilitar/desabilitar a execução de um IPv6 do servidor. Um servidor com " +"IPv6 pode \n" +"ser restringido para clientes com IPv6, dependendo da configuração do " +"sistema.\n" +"Ignorado se bind_address estiver definido." + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "Habilita itens animados no inventário." #: src/settings_translation_file.cpp msgid "" @@ -1652,98 +1988,122 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"Ativar texturização bump mapping para texturas. Normalmaps precisam ser " +"fornecidos pelo\n" +"pacote de textura ou a necessidade de ser auto-gerada.\n" +"Requer shaders a serem ativados." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "Ativar armazenamento em cache de direção de face girada das malhas." + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "Habilitar efeito \"filmic tone mapping\"" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Habilitar dano" +msgstr "Habilitar minimapa." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"Ativa geração de normalmap (efeito de relevo) ao voar.\n" +"Requer texturização bump mapping para ser ativado." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"Ativar mapeamento de oclusão de paralaxe.\n" +"Requer shaders a serem ativados." #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"Opção experimental, pode causar espaços visíveis entre blocos\n" +"quando definido como número maior do que 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS em menu de pausa" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA Antialiasing de tela cheia" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "Cair balançando" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "Fonte Alternativa" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "Sombra da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "Alpha da sombra da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Tamanho da fonte alternativa" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Tecla de correr" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Aceleração no modo rápido" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Velocidade no modo rápido" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Modo rápido" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Movimento rápido (use a tecla).\n" +"Isso requer o privilegio \"fast\" no servidor." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Campo de visão" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Campo de visão em graus." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Arquivo na pasta client/serverlist/ que contém seus servidores favoritos, " +"que são mostrados na aba Multiplayer." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "Filmic Tone Mapping" #: src/settings_translation_file.cpp msgid "" @@ -1752,132 +2112,166 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"Texturas filtradas podem misturar valores RGB com os vizinhos totalmente \n" +"transparentes, o qual otimizadores PNG geralmente descartam, por vezes \n" +"resultando em um escuro ou luz para texturas transparentes.\n" +"Aplicar esse filtro para limpar isso no tempo de carregamento da textura." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Filtragem anisotrópica" +msgstr "Filtros" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Semente do mapa fixa" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Tecla de voar" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Voando" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Névoa" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Tecla de comutação de névoa" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Caminho fonte" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Fonte de sombra" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Fonte alpha de sombra" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Fonte alpha de sombra (opacidade, entre 0 e 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "Fonte de compensador de sombra, se 0 então sombra não será desenhada." #: src/settings_translation_file.cpp msgid "Font size" +msgstr "Tamanho da fonte" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Avançar" +msgstr "Tecla para frente" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Fontes Freetype" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"De quão longe blocos são gerados para os clientes, indicado em mapa de " +"blocos (16 nós)." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" +"De quão longe blocos são enviados aos clientes, indicado em mapas de blocos " +"(16 nós)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" +"De quão longe os clientes sabem sobre objetos, indicado em mapas blocos (16 " +"nós)." #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Tela cheia" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "Tela cheia BPP" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Modo tela cheia." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Escala da GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter" -msgstr "" +msgstr "Filtro de escala da GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "Filtro txr2img de escala da GUI" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gama" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "Geral" #: src/settings_translation_file.cpp msgid "Generate normalmaps" -msgstr "" +msgstr "Gerar normalmaps" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Atributos de geração de mapa.\n" +"No Mapgen v6 a flag 'decorations' controla todas as decorações exceto " +"árvores\n" +"e grama do pântano, em todos os outros mapgens essa flag controla todas as " +"decorações.\n" +"Flags que não são especificadas na string da flag não são alteradas por " +"padrão.\n" +"Flags começando com \"no\" (não) são usada para explicitamente desabilitá-" +"las." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Gráficos" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Gravidade" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP mods" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Tecla de comutação HUD" #: src/settings_translation_file.cpp msgid "" @@ -1886,22 +2280,33 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Manipulação para chamadas de API Lua reprovados:\n" +"- legacy: (tentar) imitar o comportamento antigo (padrão para a " +"liberação).\n" +"- log: imitação e log de retraçamento da chamada reprovada (padrão para " +"depuração).\n" +"- error: abortar no uso da chamada reprovada (sugerido para " +"desenvolvedores de mods)." + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "Altura da janela inicial." #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "Altura em que as nuvens ficam aparecendo." #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "FPU de alta precisão" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Pagina principal do servidor, a ser exibido na lista de servidores." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "Quão profundo são os rios" #: src/settings_translation_file.cpp msgid "" @@ -1909,6 +2314,9 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"Quão grande área de blocos estão sujeitos ao material do bloco ativo, " +"indicado em mapas blocos (16 nós).\n" +"Em blocos ativos objetos são carregados e ABMs são executadas." #: src/settings_translation_file.cpp msgid "" @@ -1924,61 +2332,82 @@ msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Quanto o servidor aguardará antes de descarregar mapblocks não utilizados. " +"Um valor mais elevado é mais suave, mas vai usar mais memória RAM." + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "Quão largos serão os rios" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "Protocolo IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "Servidor de IPv6" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "Suporte a IPv6." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Se o FPS for mais elevado do que isso, limitá-lo dormindo\n" +"para não gastar a potência da CPU desnecessariamente." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Desabilitar PMs" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" +"Se tecla \"usar\" estiver desabilitada então ela vai ser usada para voar " +"rápido se modo de voar e rápido estiverem habilitados." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"Se habilitado juntamente com o modo de vôo, o jogador é capaz de voar " +"através de nós de sólidos.\n" +"Isso requer o privilégio \"noclip\" no servidor." #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "habilitado" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" +"Se habilitado, tecla de \"usar\" em vez de \"esgueirar\" servirá para usada " +"descer." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Se habilitado, as ações são registradas para reversão.\n" +"Esta opção só é lido quando o servidor é iniciado." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "Se habilitado, desabilita prevenção de fraude no modo multijogador." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"Se habilitado, dados inválidos do mundo não vão causar o queda do servidor.\n" +"Só habilite isso, se você souber o que está fazendo." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." -msgstr "" +msgstr "Se habilitado, novos jogadores não podem entrar com uma senha vazia." #: src/settings_translation_file.cpp msgid "" @@ -1986,68 +2415,134 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Se habilitado, você pode colocar os blocos na posição (pés + nível dos " +"olhos) onde você está.\n" +"Isto é útil quando se trabalha com nodeboxes em pequenas áreas." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "" +"Se isso for definido, os jogadores vão sempre (re)desovar na posição " +"determinada." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Ignorar erros do mundo" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Jogo" +msgstr "No jogo" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" +"Valor alfa do fundo do console do bate-papo no jogo (opacidade, entre 0 e " +"255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Cor de fundo do Bate-papo no jogo (R,G,B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" +"Intervalo para cada salvamento de alterações importantes no mundo, indicado " +"em segundos." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "Intervalo de envio de hora do dia para os clientes." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "Animações nos itens do inventário" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" msgstr "Inventário" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Mouse invertido" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Inverta o movimento vertical do mouse." #: src/settings_translation_file.cpp msgid "Item entity TTL" +msgstr "Entidade item TTL" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." msgstr "" +"Iterações da função recursiva.\n" +"Controles da escala de detalhes." #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas para conjunto de Julia: Largura da constante hipercomplexa " +"determinando o formato do conjunto.\n" +"Não tem nenhum efeito em fractais 3D.\n" +"Intervalo rugoso entre -2 e 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas para conjunto de Julia: Componente X da constante hipercomplexa " +"determinando o formato do conjunto.\n" +"Intervalo rugoso entre -2 e 2." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas para conjunto de Julia: Componente Y da constante hipercomplexa " +"determinando o formato do conjunto.\n" +"Intervalo rugoso entre -2 e 2." + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"Apenas para conjunto de Julia: Componente Z da constante hipercomplexa " +"determinando o formato do conjunto.\n" +"Intervalo rugoso entre -2 e 2." + +#: src/settings_translation_file.cpp msgid "Jump key" msgstr "Pular" #: src/settings_translation_file.cpp msgid "Jumping speed" -msgstr "" +msgstr "Velocidade de Pulo" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para diminuir o alcance de visão.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2055,13 +2550,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para deixar cair o item atualmente selecionado.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para aumentar o alcance de visão.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2069,6 +2570,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para pular.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2076,6 +2580,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover-se rápido no modo rápido.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2083,6 +2590,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador para trás.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2090,6 +2600,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador para a frente.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2097,6 +2610,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador à esquerda.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2104,6 +2620,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para mover o jogador para a direita.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2111,6 +2630,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para abrir o console do bate-papo.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2118,6 +2640,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para abrir a janela de bate-papo para digitar comandos.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2125,6 +2650,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para abrir a janela de bate-papo.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2132,6 +2660,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para abrir o inventário.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2139,6 +2670,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para imprimir pilhas de depuração. Usado para o desenvolvimento.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2148,6 +2682,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla por esgueirar.\n" +"Também usado para descer e descendente na água se aux1_descends está " +"desativado.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2155,6 +2694,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para comutação entre câmera de primeira e terceira pessoa.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2162,6 +2704,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para tirar fotos da tela.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2169,6 +2714,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar modo cinematográfico.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2176,6 +2724,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Chave para ativar/desativar a exibição do minimapa.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2183,6 +2734,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar o modo rápido.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2190,6 +2744,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para alternar a voar.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2197,6 +2754,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para alternar modo noclip.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2204,6 +2764,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a atualização da câmera. Usado somente para " +"desenvolvimento\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2211,6 +2775,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição de informações de depuração.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2218,6 +2785,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição do HUD.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2225,6 +2795,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição do bate-papo.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2232,6 +2805,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição da névoa.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2239,6 +2815,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para ativar/desativar a exibição do profiler. Usado para o " +"desenvolvimento.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2246,18 +2826,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para alternar o alcance de visão ilimitado.\n" +"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "Tecla usada para descer/esgueirar" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "Linguagem" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "Profundidade de cavernas grandes" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "Coisas relacionadas a Lava" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Estilo de folhas" #: src/settings_translation_file.cpp msgid "" @@ -2266,17 +2857,30 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Folhas de estilo:\n" +"- Fancy: todas as faces visíveis\n" +"- Simple: apenas faces externas, se definidos special_tiles\n" +"- Opaque: desativar transparência" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Menu esq." +msgstr "Tecla para a esquerda" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." msgstr "" +"Comprimento de um tick de servidor e o intervalo no qual os objetos são " +"geralmente atualizados em rede." + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2289,14 +2893,22 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Nível de registro a serem gravados em debug.txt:\n" +"- (nenhum)\n" +"- none (mensagens sem nível de log)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "Limite de filas emerge no disco" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "Limite de filas emerge para gerar" #: src/settings_translation_file.cpp msgid "" @@ -2306,132 +2918,317 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"Limites número de solicitações HTTP paralelas. afeta:\n" +"- Media buscar se servidor usa configuração de remote_media.\n" +"- Download de lista de servidores e anúncio do servidor.\n" +"- Transferências realizadas pelo menu principal (por exemplo gerência de " +"mods).\n" +"Só tem efeito se compilado com cURL." #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "Fluidez líquida" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Suavização do fluido líquido" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Limite de iteração do liquido" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Tempo para limpar a lista de espera para a atualização de líquidos" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "Dissipação em liquido" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Intervalo de atualização de líquido em segundos." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Período de atualização dos Líquidos" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "Menu principal gestor de games" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Menu principal" +msgstr "Menu principal gestor de mods" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Menu principal" +msgstr "Menu principal do script" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Fazer cores de névoa e céu dependerem do dia (amanhecer/pôr do sol) e exibir " +"a direção." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" +msgstr "Faz o DirectX trabalhar com LuaJIT. Desative se causa problemas." #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Diretório do mapa" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Atributos para o gerador de mapas específico para o Mapgen v6.\n" +"Quando biomas de neve estão habilitados, pântanos ficam habilitados e a flag " +"de pântanos é ignorada.\n" +"Flags que não são especificadas na string da flag não são modificadas por " +"padrão.\n" +"Flags começando com \"no\" (não) são usadas para explicitamente desabilitá-" +"las." #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"Atributos de mapgen específicos para Mapgen plano.\n" +"Alguns lagos e colinas são ocasionalmente adicionados num mundo plano.\n" +"Flags que não estão especificadas na string de flags não são modificados a " +"partir do padrão.\n" +"Flags começando com \"no\" (não) são usadas para desativá-los explicitamente." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Atributos para o gerador de mapas específico para o Mapgen v6.\n" +"Quando biomas de neve estão habilitados, pântanos ficam habilitados e a flag " +"de pântanos é ignorada.\n" +"Flags que não são especificadas na string da flag não são modificadas por " +"padrão.\n" +"Flags começando com \"no\" (não) são usadas para explicitamente desabilitá-" +"las." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"Atributos para o gerador de mapas específico para o Mapgen v6.\n" +"Quando biomas de neve estão habilitados, pântanos ficam habilitados e a flag " +"de pântanos é ignorada.\n" +"Flags que não são especificadas na string da flag não são modificadas por " +"padrão.\n" +"Flags começando com \"no\" (não) são usadas para explicitamente desabilitá-" +"las." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Limite de geração de mapa" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Intervalo de salvamento de mapa" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Limite de mapblock" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Timeout de descarregamento do mapblock" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Vales do Mapgen" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Parâmetros de ruído para o calor nos biomas" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Parâmetros de ruído de mistura de umidades nos biomas" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" +msgstr "Parâmetros de ruído para umidade nos biomas" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "Debug do mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Flags do Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Mapgen plano" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Threshold dos lagos no Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Mapgen debug" -msgstr "Mapgen" +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Flags do Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Nível do terreno para o Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Esparsamento das colinas no Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Threshold das colinas no Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Esparsamento de lagos no Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Threshold dos lagos no Mapgen plano" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "Fractal do Mapgen" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Mapgen" +msgid "Mapgen fractal cave width" +msgstr "Componente W da fatia do fractal do Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "Fractal do Mapgen fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "Iterações no fractal do Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "Componente W do fractal Julia no Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "Componente X do fractal julia no Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Componente Y do fractal julia no Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Componente Z do fractal julia no Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "Offset do fractal do Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "Escala no fractal do Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "Componente W da fatia do fractal do Mapgen" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Mapgen" +msgstr "Nome do mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Mapgen versão 5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Mapgen" +msgid "Mapgen v5 cave width" +msgstr "Profundidade de cavernas grandes" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2454,9 +3251,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Mapgen" +msgstr "Mapgen versão 6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2515,9 +3311,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Mapgen" +msgstr "Mapgen versão 7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Profundidade de cavernas grandes" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2567,6 +3367,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2671,9 +3483,8 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Menu" +msgstr "Opções para menus" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -2687,6 +3498,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2704,16 +3519,8 @@ msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mipmapping" +msgstr "Mipmapping (filtro)" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2787,10 +3594,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2807,10 +3610,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2851,10 +3662,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2898,7 +3705,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2920,20 +3727,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Carregando..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2955,14 +3753,17 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Sel. distância" +msgstr "Tecla para modo de visão ilimitado" #: src/settings_translation_file.cpp msgid "Remote media" @@ -2977,14 +3778,29 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Menu dir." +msgstr "Tecla direita" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3019,7 +3835,6 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "Captura de tela" @@ -3027,6 +3842,23 @@ msgstr "Captura de tela" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Captura de tela" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Captura de tela" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3048,44 +3880,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Um jogador" +msgstr "Servidor / Um jogador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Servidor" +msgstr "URL do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Porta do servidor" +msgstr "Endereço do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Porta do servidor" +msgstr "Descrição do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Servidor" +msgstr "Nome do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Porta do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Servidores públicos" +msgstr "URL da lista de servidores" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Servidores públicos" +msgstr "arquivo da lista de servidores" #: src/settings_translation_file.cpp msgid "" @@ -3111,10 +3935,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Sombreadores" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3130,6 +3950,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3141,13 +3965,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "Iluminação suave" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3160,7 +3987,6 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" msgstr "Esgueirar" @@ -3192,20 +4018,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Texture path" msgstr "Pacotes de texturas" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3247,6 +4095,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3282,7 +4134,6 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Filtragem tri-linear" @@ -3326,7 +4177,6 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" msgstr "press. uma tecla" @@ -3339,16 +4189,35 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "Desenvolvedores principais" +msgstr "Útil para desenvolvedores de mods." #: src/settings_translation_file.cpp msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3363,6 +4232,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3372,25 +4247,28 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Volume do som" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Water Features" +msgstr "Coisas relacionadas a Água" #: src/settings_translation_file.cpp msgid "Water level" @@ -3405,9 +4283,8 @@ msgid "Waving Nodes" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Árvores melhores" +msgstr "Balanço das árvores" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -3499,6 +4376,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "Largura da janela inicial." + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3509,6 +4398,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3521,82 +4418,103 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Game Name" -#~ msgstr "Nome do jogo" +#~ msgid "" +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." +#~ msgstr "" +#~ "Habilita recurso permitindo que o nível da água seja um pouco menor, " +#~ "portando não preenche todo o espaço disponível para bloco.\n" +#~ "Note que isso não está bem otimizado e que suavização da iluminação na " +#~ "superfície da água não funciona bem com esse recurso." -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Não foi possível copiar o mod \"$1\" para o jogo \"$2\"" - -#~ msgid "GAMES" -#~ msgstr "JOGOS" - -#~ msgid "Mods:" -#~ msgstr "Módulos:" - -#~ msgid "new game" -#~ msgstr "novo jogo" - -#~ msgid "EDIT GAME" -#~ msgstr "EDITAR JOGO" - -#~ msgid "Remove selected mod" -#~ msgstr "Remover o módulo selecionado" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Adicionar módulo" - -#~ msgid "CLIENT" -#~ msgstr "CLIENTE" - -#~ msgid "Favorites:" -#~ msgstr "Favoritos:" - -#~ msgid "START SERVER" -#~ msgstr "SERVIDOR" - -#~ msgid "Name" -#~ msgstr "Nome" - -#~ msgid "Password" -#~ msgstr "Senha" - -#~ msgid "SETTINGS" -#~ msgstr "CONFIGURAÇÕES" - -#~ msgid "Preload item visuals" -#~ msgstr "Precarga de elementos visuais" - -#~ msgid "Finite Liquid" -#~ msgstr "Líquido finito" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "UM JOGADOR" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "TEXTURAS" - -#~ msgid "MODS" -#~ msgstr "MÓDULOS" - -#~ msgid "Add mod:" -#~ msgstr "Adicionar módulo:" - -#~ msgid "Local install" -#~ msgstr "Instalação local" +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "" +#~ "Habilitar destaque de bloco selecionado (desabilita o modo de destaque " +#~ "selectionbox [Padrão])." #~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ "Julia set: (X,Y,Z) offsets from world centre.\n" +#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes." #~ msgstr "" -#~ "Atenção: Alguns mods ainda não foram configurados.\n" -#~ "E eles serão ativados por padrão, quando você salvar a configuração." +#~ "Julia definido: (X, Y, Z) deslocamentos do centro mundo.\n" +#~ "Variam aproximadamente -2 a 2, multiplique por j_scale para deslocamentos " +#~ "em nós." #~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" #~ msgstr "" -#~ "Atenção: Alguns mods configurados não foram encontrados.\n" -#~ "Suas definições serão removidas quando você salvar a configuração." +#~ "Tecla para diminuir o intervalo de visualização. Modifica o intervalo " +#~ "mínimo de visualização.\n" +#~ "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Tecla para aumentar o intervalo de visualização. Modifica o mínimo " +#~ "intervalo de visualização.\n" +#~ "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "Preload inventory textures" +#~ msgstr "pré-carregando texturas de inventário" + +#, fuzzy +#~ msgid "Downloading" +#~ msgstr "Baixar" + +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "Botão esquerdo: Move todos os itens. Botão direito: Move um item" + +#~ msgid "is required by:" +#~ msgstr "é necessário para:" + +#~ msgid "Configuration saved. " +#~ msgstr "A configuração foi salva. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Atenção: A configuração não está consistente." + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Não foi possível criar o mundo: O nome contém caracteres inválidos" + +#~ msgid "Show Public" +#~ msgstr "Exibir públicos" + +#~ msgid "Show Favorites" +#~ msgstr "Exibir favoritos" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Deixe o endereço em branco para iniciar um servidor local." + +#~ msgid "Create world" +#~ msgstr "Criar o mundo" + +#~ msgid "Address required." +#~ msgstr "É necessário um endereço." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Não foi possível excluir o mundo: Nenhum foi selecionado" + +#~ msgid "Files to be deleted" +#~ msgstr "Arquivos a serem excluídos" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Não foi possivel criar o mundo: Não foi encontrado nenhum jogo" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Não foi possível configurar o mundo: Nada foi selecionado" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Não foi possível excluir todos os arquivos do mundo" #~ msgid "" #~ "Default Controls:\n" @@ -3623,65 +4541,131 @@ msgstr "" #~ "- ESC: este menu\n" #~ "- T: bate-papo\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Não foi possível excluir todos os arquivos do mundo" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "Atenção: Alguns mods configurados não foram encontrados.\n" +#~ "Suas definições serão removidas quando você salvar a configuração." -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Não foi possível configurar o mundo: Nada foi selecionado" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Atenção: Alguns mods ainda não foram configurados.\n" +#~ "E eles serão ativados por padrão, quando você salvar a configuração." -#~ msgid "Cannot create world: No games found" -#~ msgstr "Não foi possivel criar o mundo: Não foi encontrado nenhum jogo" +#~ msgid "Local install" +#~ msgstr "Instalação local" -#~ msgid "Files to be deleted" -#~ msgstr "Arquivos a serem excluídos" +#~ msgid "Add mod:" +#~ msgstr "Adicionar módulo:" -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Não foi possível excluir o mundo: Nenhum foi selecionado" +#~ msgid "MODS" +#~ msgstr "MÓDULOS" -#~ msgid "Address required." -#~ msgstr "É necessário um endereço." +#~ msgid "TEXTURE PACKS" +#~ msgstr "TEXTURAS" -#~ msgid "Create world" -#~ msgstr "Criar o mundo" +#~ msgid "SINGLE PLAYER" +#~ msgstr "UM JOGADOR" -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Deixe o endereço em branco para iniciar um servidor local." +#~ msgid "Finite Liquid" +#~ msgstr "Líquido finito" -#~ msgid "Show Favorites" -#~ msgstr "Exibir favoritos" +#~ msgid "Preload item visuals" +#~ msgstr "Precarga de elementos visuais" -#~ msgid "Show Public" -#~ msgstr "Exibir públicos" +#~ msgid "SETTINGS" +#~ msgstr "CONFIGURAÇÕES" -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Não foi possível criar o mundo: O nome contém caracteres inválidos" +#~ msgid "Password" +#~ msgstr "Senha" -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Atenção: A configuração não está consistente." +#~ msgid "Name" +#~ msgstr "Nome" -#~ msgid "Configuration saved. " -#~ msgstr "A configuração foi salva. " +#~ msgid "START SERVER" +#~ msgstr "SERVIDOR" -#~ msgid "is required by:" -#~ msgstr "é necessário para:" +#~ msgid "CLIENT" +#~ msgstr "CLIENTE" -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "Botão esquerdo: Move todos os itens. Botão direito: Move um item" +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Adicionar módulo" + +#~ msgid "Remove selected mod" +#~ msgstr "Remover o módulo selecionado" + +#~ msgid "EDIT GAME" +#~ msgstr "EDITAR JOGO" + +#~ msgid "new game" +#~ msgstr "novo jogo" + +#~ msgid "Mods:" +#~ msgstr "Módulos:" + +#~ msgid "GAMES" +#~ msgstr "JOGOS" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Não foi possível copiar o mod \"$1\" para o jogo \"$2\"" + +#~ msgid "Game Name" +#~ msgstr "Nome do jogo" #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Baixar" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Para habilitar os sombreadores é necessário usar o driver OpenGL." +#~ msgid "If enabled, " +#~ msgstr "habilitado" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Um jogador" +#~ msgid "If disabled " +#~ msgstr "Desabilitar PMs" -#~ msgid "Opaque Water" -#~ msgstr "Água opaca" +#~ msgid "" +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "Atributos de geração de mapas específicos para o Mapgen v7.\n" +#~ "'ridges' são os rios.\n" +#~ "Flags que não estão especificadas na string da flag não são modificadas " +#~ "por padrão.\n" +#~ "Flags começando com \"no\" são usadas para explicitamente desabilitá-las." -#, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Água opaca" +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "Atributos de mapgen específicos para vales (Mapgen Valleys).\n" +#~ "Flags que não estão especificadas na string de flags não são modificados " +#~ "a partir do padrão.\n" +#~ "Flags começando com \"no\" (não) são usadas para desativá-los " +#~ "explicitamente.\n" +#~ "\"altitude_chill\" torna terrenos de elevada altitude mais frios, o que " +#~ "pode causar algumas falhas nos biomas.\n" +#~ "\"humid_rivers\" modifica a umidade ao redor dos rios e em áreas onde a " +#~ "água tende a ser represada em poças. Pode interferir em biomas que são " +#~ "sensíveis a mudanças." + +#~ msgid "No!!!" +#~ msgstr "Não!!!" + +#~ msgid "Generate Normalmaps" +#~ msgstr "Gerar Normalmaps" + +#~ msgid "Public Serverlist" +#~ msgstr "Lista de servidores públicos" + +#~ msgid "No of course not!" +#~ msgstr "Claro que não!" diff --git a/po/ro/minetest.po b/po/ro/minetest.po index 66dc1885..ac4bf793 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -7,28 +7,29 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2013-12-18 21:44+0200\n" -"Last-Translator: King Artur \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-03-17 15:28+0000\n" +"Last-Translator: Lordmusic Player \n" +"Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 1.7-dev\n" - -#: builtin/fstk/ui.lua -msgid "An error occured in a Lua script, such as a mod:" -msgstr "" - -#: builtin/fstk/ui.lua -msgid "An error occured:" -msgstr "" +"X-Generator: Weblate 2.5\n" #: builtin/fstk/ui.lua #, fuzzy +msgid "An error occured in a Lua script, such as a mod:" +msgstr "A apărut o eroare in un script Lua,ca la un mod :" + +#: builtin/fstk/ui.lua +msgid "An error occured:" +msgstr "A apărut o eroare:" + +#: builtin/fstk/ui.lua msgid "Main menu" msgstr "Meniul Principal" @@ -37,13 +38,12 @@ msgid "Ok" msgstr "Ok" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Conectează" +msgstr "Reconectează-te" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Serverul cere o reconectare :" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -64,6 +64,8 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Încercați să activați lista de servere publică și să vă verificați " +"conexiunea la internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." @@ -74,8 +76,10 @@ msgid "We support protocol versions between version $1 and $2." msgstr "" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Anulează" @@ -113,8 +117,8 @@ msgstr "Ascunde conținutul mp" msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Salvează" @@ -174,6 +178,12 @@ msgstr "" msgid "Are you sure you want to delete \"$1\"?" msgstr "Ești sigur că vrei să ștergi \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Șterge" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: Eroare la ștergerea \"$1\"" @@ -182,22 +192,10 @@ msgstr "Modmgr: Eroare la ștergerea \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: Pacht de mod invalid \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Nu, sigur că nu!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Da" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Ștergi lumea \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Nu" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Acceptă" @@ -206,6 +204,95 @@ msgstr "Acceptă" msgid "Rename Modpack:" msgstr "Redenumiți Pachetul de moduri:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Disabled" +msgstr "Dezactivează MP" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Enabled" +msgstr "activat" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Jocuri" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Moduri" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Select path" +msgstr "Selectează" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua #, fuzzy msgid "" @@ -303,10 +390,6 @@ msgstr "Moduri Instalate:" msgid "Mod information:" msgstr "Informații mod:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Moduri" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Nici o descriere de mod disponibilă" @@ -329,7 +412,7 @@ msgstr "Dezinstalaţi Pachetul de moduri selectat" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" +msgid "Address / Port" msgstr "Adresă/Port" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -350,19 +433,20 @@ msgstr "Modul Creativ" msgid "Damage enabled" msgstr "activat" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Șterge" - -#: builtin/mainmenu/tab_multiplayer.lua +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy -msgid "Name / Password :" -msgstr "Nume/Parolă" +msgid "Del. Favorite" +msgstr "Preferate:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Listă de servere publică" +#, fuzzy +msgid "Favorite" +msgstr "Preferate:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Nume/Parolă" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -387,7 +471,7 @@ msgstr "Modul Creativ" msgid "Enable Damage" msgstr "Activează Daune" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Nume/Parolă" @@ -425,89 +509,178 @@ msgid "Start Game" msgstr "Începe jocul" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "Nori 3D" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Setări" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Singleplayer" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bilinear Filter" +msgstr "Filtrare Biliniară" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Mip Mapping" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Modifică tastele" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Dezactivează MP" +msgid "Connected Glass" +msgstr "Conectează" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Apă opacă" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap" +msgstr "Mip Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Nu" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Filter" +msgstr "Filtru Anizotropic" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Mipmap" +msgstr "Mip Mapping" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Lumină mai bună" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Lumină mai bună" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "activat" +msgid "Normal Mapping" +msgstr "Mip Mapping" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +#, fuzzy +msgid "Opaque Leaves" +msgstr "Apă opacă" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Jocuri" +msgid "Opaque Water" +msgstr "Apă opacă" -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Selectează" +msgid "Particles" +msgstr "Activează tot" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Setări" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Umbră" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +#, fuzzy +msgid "Simple Leaves" +msgstr "Apă opacă" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Smooth Lighting" +msgstr "Lumină mai bună" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Pentru a permite shadere OpenGL trebuie să fie folosite." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Trilinear Filter" +msgstr "Filtrare Triliniară" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Copaci fantezici" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Copaci fantezici" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Copaci fantezici" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Da" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -536,10 +709,6 @@ msgstr "Singleplayer" msgid "No information available" msgstr "Nici o informație disponibilă" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Selectează pachetul de textură:" @@ -566,10 +735,6 @@ msgstr "" msgid "Initializing nodes..." msgstr "" -#: src/client.cpp -msgid "Item textures..." -msgstr "Texturi..." - #: src/client.cpp #, fuzzy msgid "Loading textures..." @@ -610,7 +775,7 @@ msgstr "" #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "lipsă_tip_font" +msgstr "no" #: src/game.cpp msgid "" @@ -716,10 +881,6 @@ msgstr "" msgid "Node definitions..." msgstr "Definițiile Blocurilor..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Continuă" - #: src/game.cpp msgid "Resolving address..." msgstr "Se rezolvă adresa..." @@ -741,13 +902,17 @@ msgstr "Volum Sunet" msgid "You died." msgstr "Ai murit." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Proceed" +msgstr "Continuă" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1159,6 +1324,15 @@ msgstr "X Butonul 2" msgid "Zoom" msgstr "Mărire" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1182,7 +1356,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1207,6 +1382,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1238,6 +1421,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1246,6 +1433,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1262,6 +1453,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1275,10 +1470,18 @@ msgstr "" msgid "Backward key" msgstr "Înapoi" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1314,6 +1517,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1324,6 +1543,29 @@ msgstr "Modifică tastele" msgid "Chat toggle key" msgstr "Modifică tastele" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1382,6 +1624,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1438,14 +1686,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1535,6 +1807,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1557,6 +1837,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1589,8 +1876,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Activează MP" #: src/settings_translation_file.cpp #, fuzzy @@ -1605,10 +1893,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1639,6 +1923,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1651,6 +1939,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Activează Daune" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1722,7 +2015,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1739,6 +2032,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1796,6 +2097,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1849,6 +2154,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "" @@ -1856,9 +2165,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1869,6 +2182,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Moduri" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1881,6 +2199,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1894,7 +2216,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1919,6 +2241,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1938,21 +2264,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Dezactivează MP" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "activat" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2010,6 +2338,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2027,6 +2359,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2038,7 +2405,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2052,7 +2419,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2249,6 +2616,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2272,6 +2647,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2358,21 +2741,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2391,6 +2804,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2413,6 +2831,131 @@ msgstr "Mapgen" msgid "Mapgen flags" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2427,6 +2970,11 @@ msgstr "Mapgen" msgid "Mapgen v5" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2513,6 +3061,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2561,6 +3114,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2681,6 +3246,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2697,13 +3266,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2781,10 +3343,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2801,10 +3359,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2845,10 +3411,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion" msgstr "" @@ -2892,7 +3454,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2914,20 +3476,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Se încarcă..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2949,6 +3502,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2979,6 +3536,22 @@ msgstr "Meniu Drepata" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3021,6 +3594,23 @@ msgstr "PrintScreen" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "PrintScreen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "PrintScreen" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3105,10 +3695,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Umbră" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3124,6 +3710,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3134,6 +3724,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3141,7 +3735,7 @@ msgstr "Lumină mai bună" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3186,20 +3780,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Pachete de tetură" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3241,6 +3858,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3342,7 +3963,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3357,6 +3998,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3366,11 +4013,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3378,13 +4021,22 @@ msgstr "" msgid "Volume" msgstr "Volum Sunet" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Texturi..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3493,6 +4145,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3503,6 +4167,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3515,87 +4187,88 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Game Name" -#~ msgstr "Numele jocului" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Nu se poate copia modul \"$1\" în jocul \"$2\"" - -#~ msgid "GAMES" -#~ msgstr "JOCURI" - -#~ msgid "Mods:" -#~ msgstr "Moduri:" - -#~ msgid "new game" -#~ msgstr "joc nou" - -#~ msgid "EDIT GAME" -#~ msgstr "MODIFICĂ JOCUL" - -#~ msgid "Remove selected mod" -#~ msgstr "Șterge modul selectat" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Adaugă modul" - -#~ msgid "CLIENT" -#~ msgstr "CLIENT" - -#~ msgid "Favorites:" -#~ msgstr "Preferate:" - -#~ msgid "START SERVER" -#~ msgstr "DESCHIDE SERVERUL" - -#~ msgid "Name" -#~ msgstr "Nume" - -#~ msgid "Password" -#~ msgstr "Parolă" - -#~ msgid "SETTINGS" -#~ msgstr "SETĂRI" - -#~ msgid "Preload item visuals" -#~ msgstr "Pre-încarcă imaginile obiectelor" - -#~ msgid "Finite Liquid" -#~ msgstr "Lichid finit" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "SINGLE PLAYER" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "PACHETE DE TEXTURĂ" - -#~ msgid "MODS" -#~ msgstr "MODURI" - -#~ msgid "Add mod:" -#~ msgstr "Adăugaţi mod:" - -#~ msgid "Local install" -#~ msgstr "Instalare locală" - -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "" -#~ "Click stânga: Mută toate obiectele, Click dreapta: Mută un singur obiect" +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "Se încarcă..." #, fuzzy #~ msgid "Downloading" #~ msgstr "Descarcă" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Pentru a permite shadere OpenGL trebuie să fie folosite." +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "" +#~ "Click stânga: Mută toate obiectele, Click dreapta: Mută un singur obiect" + +#~ msgid "Local install" +#~ msgstr "Instalare locală" + +#~ msgid "Add mod:" +#~ msgstr "Adăugaţi mod:" + +#~ msgid "MODS" +#~ msgstr "MODURI" + +#~ msgid "TEXTURE PACKS" +#~ msgstr "PACHETE DE TEXTURĂ" + +#~ msgid "SINGLE PLAYER" +#~ msgstr "SINGLE PLAYER" + +#~ msgid "Finite Liquid" +#~ msgstr "Lichid finit" + +#~ msgid "Preload item visuals" +#~ msgstr "Pre-încarcă imaginile obiectelor" + +#~ msgid "SETTINGS" +#~ msgstr "SETĂRI" + +#~ msgid "Password" +#~ msgstr "Parolă" + +#~ msgid "Name" +#~ msgstr "Nume" + +#~ msgid "START SERVER" +#~ msgstr "DESCHIDE SERVERUL" + +#~ msgid "CLIENT" +#~ msgstr "CLIENT" + +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Adaugă modul" + +#~ msgid "Remove selected mod" +#~ msgstr "Șterge modul selectat" + +#~ msgid "EDIT GAME" +#~ msgstr "MODIFICĂ JOCUL" + +#~ msgid "new game" +#~ msgstr "joc nou" + +#~ msgid "Mods:" +#~ msgstr "Moduri:" + +#~ msgid "GAMES" +#~ msgstr "JOCURI" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Nu se poate copia modul \"$1\" în jocul \"$2\"" + +#~ msgid "Game Name" +#~ msgstr "Numele jocului" #, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "Singleplayer" - -#~ msgid "Opaque Water" -#~ msgstr "Apă opacă" +#~ msgid "If enabled, " +#~ msgstr "activat" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Apă opacă" +#~ msgid "If disabled " +#~ msgstr "Dezactivează MP" + +#~ msgid "Public Serverlist" +#~ msgstr "Listă de servere publică" + +#~ msgid "No of course not!" +#~ msgstr "Nu, sigur că nu!" diff --git a/po/ru/minetest.po b/po/ru/minetest.po index 9d14d7a2..d2819391 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-07 11:49+0200\n" -"Last-Translator: Alex “XShell” Schekoldin \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-04-18 23:08+0000\n" +"Last-Translator: Stas Kies \n" "Language-Team: Russian \n" "Language: ru\n" @@ -18,18 +18,17 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.6-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "Ошибка в скрипте Lua в моде:" +msgstr "Ошибка в скрипте Lua, как например в моде:" #: builtin/fstk/ui.lua msgid "An error occured:" msgstr "Произошла ошибка:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "Главное меню" @@ -38,13 +37,12 @@ msgid "Ok" msgstr "OK" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "Подключиться" +msgstr "Переподключиться" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Сервер запросил переподключение:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -52,15 +50,15 @@ msgstr "Загрузка..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Несоответствие версии протокола. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Сервер обеспечивает соблюдение версии протокола $ 1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Сервер поддерживает версии протокола между $1 и $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -69,15 +67,17 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Поддерживается только протокол версии $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Мы поддерживаем версии протоколов между $1 и $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Отменить" @@ -102,6 +102,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Ошибка при попытке включения мода \"$1\" поскольку он содержит недопустимые " +"символы. Допускается использование символов от Aa-Zz и от 0-9." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -115,8 +117,8 @@ msgstr "Скрыть содержимое модпака" msgid "Mod:" msgstr "Мод:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Сохранить" @@ -162,7 +164,9 @@ msgstr "Сид" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "Внимание: \"Minimal development test\" для разработчиков." +msgstr "" +"Внимание: \"Minimal development test\" в основном предназначен для " +"разработчиков." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -170,12 +174,18 @@ msgstr "Название мира" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "У вас не установлено мини-игр." +msgstr "У вас не установлены мини-игры." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Уверены, что хотите удалить \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Удалить" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: невозможно удалить \"$1\"" @@ -184,22 +194,10 @@ msgstr "Modmgr: невозможно удалить \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: неправильный путь \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Никак нет!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Да" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Удалить мир \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Нет" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Принять" @@ -208,13 +206,101 @@ msgstr "Принять" msgid "Rename Modpack:" msgstr "Переименовать модпак:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" не является валидным флагом." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Отсутствует описание настройки)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Назад к странице Настройки" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Выбрать" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Отключено" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Редактировать" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Включено" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Формат 3 цифры через запятую в скобках." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"Формат: <Смещение>,<Масштаб>, (<По оси X>,<По оси Y>,<По оси Z>), <Зерно>, " +"<Октавы>,<Постоянство>" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Игры" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Моды" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "Опционально лакунарностью могут быть добавлены с ведущей запятой." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Пожалуйста, вводите запятые для разделения списка флагов." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Введите допустимое целое число." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Пожалуйста, введите правильное число." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Возможные значения: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Восстановить по умолчанию" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Выбрать путь" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Отобразить технические названия" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Значение должно быть больше, чем $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Значение должно быть меньше, чем $1." + #: builtin/mainmenu/modmgr.lua msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"Установка мода: неподдерживаемый тип файла \"$1\" или битый архив" +"Установка мода: неподдерживаемый тип файла \"$1\" или повреждённый архив" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -239,7 +325,7 @@ msgstr "Закрыть хранилище" #: builtin/mainmenu/store.lua msgid "Downloading $1, please wait..." -msgstr "Загрузка $1..." +msgstr "Загрузка $1, ждите..." #: builtin/mainmenu/store.lua msgid "Install" @@ -301,13 +387,9 @@ msgstr "Установленные моды:" msgid "Mod information:" msgstr "Описание мода:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Моды" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" -msgstr "Описание к моду отсутствует" +msgstr "Описание мода недоступно" #: builtin/mainmenu/tab_mods.lua msgid "Rename" @@ -315,7 +397,7 @@ msgstr "Переименовать" #: builtin/mainmenu/tab_mods.lua msgid "Select Mod File:" -msgstr "Выберите файл с модом:" +msgstr "Выберите файл мода:" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" @@ -326,7 +408,8 @@ msgid "Uninstall selected modpack" msgstr "Удалить выбранный мод-пак" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "Адрес / Порт:" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -345,18 +428,20 @@ msgstr "Режим творчества" msgid "Damage enabled" msgstr "Разрешить увечья" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Удалить" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Имя / Пароль:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Del. Favorite" +msgstr "Избранное:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Список публичных серверов" +#, fuzzy +msgid "Favorite" +msgstr "Избранное:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Имя / Пароль:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -380,7 +465,7 @@ msgstr "Режим творчества" msgid "Enable Damage" msgstr "Разрешить увечья" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Имя / Пароль" @@ -417,89 +502,162 @@ msgid "Start Game" msgstr "Начать игру" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D облака" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "расширенные настройки" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Сглаживание:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Уверены, что хотите сбросить мир одиночной игры?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Билинейная фильтрация" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Бампмаппинг" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Смена управления" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Отключить мультиплеер" +msgid "Connected Glass" +msgstr "Стёкла без швов" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Красивая листва" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Мипмаппинг" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Мипмаппинг с анизотр. фильтром" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Нет" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Без Фильтров" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Без Мипмаппинга" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "включено" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "Игры" - -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Node Highlighting" +msgstr "Подсветка нод" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Выбор" +msgid "Node Outlining" +msgstr "Подсветка нод" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Ничего" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Normal Mapping" +msgstr "Mip-текстурирование (Мип-маппинг)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Непрозрачная листва" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Непрозрачная вода" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Parallax Occlusion" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Particles" +msgstr "Включить частицы" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Настройки" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Шейдеры" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "Упрощённая листва" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "Мягкое освещение" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Текстурирование:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Для включения шейдеров необходим драйвер OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-текстурирование (Мип-маппинг)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Чувствительность (пк)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Трилинейная фильтрация" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "Покачивание листвы" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Покачивание растений" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Волны на воде" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Да" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -525,10 +683,6 @@ msgstr "Одиночная игра" msgid "No information available" msgstr "Описание отсутствует" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Выберите пакет текстур:" @@ -538,9 +692,8 @@ msgid "Texturepacks" msgstr "Пакеты текстур" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "Ошибка соединения (таймаут?)" +msgstr "Тайм-аут соединения." #: src/client.cpp msgid "Done!" @@ -554,10 +707,6 @@ msgstr "Инициирование нод" msgid "Initializing nodes..." msgstr "Инициирование нод..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Текстуры предметов..." - #: src/client.cpp msgid "Loading textures..." msgstr "Загрузка текстур..." @@ -595,6 +744,7 @@ msgid "Provided world path doesn't exist: " msgstr "По этому пути мира нет: " #: src/fontengine.cpp +#, fuzzy msgid "needs_fallback_font" msgstr "no" @@ -713,10 +863,6 @@ msgstr "МиБ/с" msgid "Node definitions..." msgstr "Описания нод..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Продолжить" - #: src/game.cpp msgid "Resolving address..." msgstr "Получение адреса..." @@ -737,13 +883,17 @@ msgstr "Громкость звука" msgid "You died." msgstr "Вы умерли." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "OK" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Введите " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "OK" +msgid "Proceed" +msgstr "Продолжить" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1157,20 +1307,31 @@ msgstr "Масштаб" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = Параллакс с информацией о наклоне (Быстрее).\n" +"1 = Рельефный маппинг (Медленнее, качественнее)." + +#: src/settings_translation_file.cpp msgid "3D clouds" msgstr "3D облака" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D режим" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1178,38 +1339,60 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"Поддержка 3D.\n" +"Сейчас поддерживаются:\n" +"- none: 3D отключен.\n" +"- anaglyph: голубой/пурпурный цвет в 3D.\n" +"- interlaced: четные/нечетные линии отображают два разных кадра для " +"экранов поддерживающих поляризацию.\n" +"- topbottom: Разделение экрана низ/верх.\n" +"- sidebyside: Разделение экрана право/лево." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Выбранный сид для новой карты, оставьте значение пустым для случайной " +"генерации.\n" +"Будет отменено при создании нового мира, в главном меню." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Сообщение, которое будет отображаться для всех при падении сервера." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Сообщение, которое будет показано всем при отключении сервера." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Абсолютный лимит появляющихся запросов" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Ускорение в воздухе" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "Дальность взаимодействия с блоками" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "Дальность взаимодействия с блоками" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Дальность взаимодействия с блоками" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Дальность отправляемого активного объекта" #: src/settings_translation_file.cpp msgid "" @@ -1217,39 +1400,54 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Адрес, к которому присоединиться.\n" +"Оставьте это поле, чтобы запустить локальный сервер.\n" +"ПРИМЕЧАНИЕ: это поле адреса перезапишет эту настройку в главном меню." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Настройка dpi (плотности точек на дюйм) для вашего экрана (не для X11, " +"только для Android). Например для мониторов с разрешением в 4k." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"Отрегулируйте гамма кодировку для таблиц освещения. Более низкие значения " +"ярче.\n" +"Этот параметр предназначен только для клиента и игнорируется сервером." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Дополнительно" #: src/settings_translation_file.cpp -msgid "Always fly and fast" +msgid "Altitude Chill" msgstr "" +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "Всегда включен полёт и ускорение" + #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" +msgstr "Гамма Ambient occlusion" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" -msgstr "Анизотропная фильтрация" +msgstr "Анизантропная фильтрация" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "О сервере" #: src/settings_translation_file.cpp msgid "" @@ -1257,42 +1455,56 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"Объявите списку сервера.\n" +"Если Вы хотите объявить о своем адресе IPv6, используйте serverlist_url = v6." +"servers.minetest.net." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "Приблизительный (X, Y, Z) масштаб рекурсивных в узлах." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Запрос переподключения после дисконнекта" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "Автоматически добавлять в список серверов." #: src/settings_translation_file.cpp #, fuzzy msgid "Backward key" -msgstr "Назад" +msgstr "клавиша обратно" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "Высота основной местности" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Базовый" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "Стандартные права" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "Билинейная фильтрация" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Адрес" +msgstr "Адрес бинда" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Биты на пиксель (глубина цвета) в полноэкранном режиме." #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Сетевая игра" +msgstr "Разрешить ставить блоки на месте игрока" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1300,77 +1512,112 @@ msgstr "Бампмаппинг" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Сглаживание камеры" #: src/settings_translation_file.cpp +#, fuzzy msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Сглаживание камеры в кинематографическом режиме" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Клавиша переключения обновления камеры" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "Шум пещеры #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "Шум пещеры #2" #: src/settings_translation_file.cpp #, fuzzy +msgid "Cave width" +msgstr "Ширина экрана" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "Пещеры и тоннели формируются на перекрестке этих двух шумов" + +#: src/settings_translation_file.cpp msgid "Chat key" -msgstr "Смена управления" +msgstr "Кнопка чата" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Смена управления" +msgstr "Кнопка переключения чата" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Размер чанка" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Режим творчества" +msgstr "Кинематографический режим" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Режим творчества" +msgstr "Кнопка переключения в кинематографический режим" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "очистить прозрачные структуры" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Клиент и Сервер" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Скорость подъема" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "Высота облаков" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Радиус облаков" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D облака" +msgstr "Облака" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "Облака являются эффектом на стороне клиента." #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Главное меню" +msgstr "Облака в меню" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Цветной туман" #: src/settings_translation_file.cpp msgid "" @@ -1379,38 +1626,38 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Command key" msgstr "Команда" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" msgstr "Стёкла без швов" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Подключение к серверу..." +msgstr "Подключение к внешнему медиасерверу" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Соединяет стекло, если поддерживается нодой." #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" msgstr "Консоль" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Консоль" +msgstr "Цвет в консоли" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "Консоль" +msgstr "Кнопка вызова консоли" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -1421,9 +1668,8 @@ msgid "Continuous forward movement (only used for testing)." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Ctrl" +msgstr "Управление" #: src/settings_translation_file.cpp msgid "" @@ -1431,66 +1677,94 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"Задает длину цикла дня/ночи.\n" +"Примеры: 72 = 20 минут, 360 = 4 минуты, 1 = 24 часа, 0 = время суток не " +"меняется." #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"Задает размеры пустыней и пляжей.\n" +"Когда включены снежные биомы, 'mgv6_freq_desert' игнорируется." + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "Сообщение при падении" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Прозрачность перекрестия" #: src/settings_translation_file.cpp +#, fuzzy msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Прозрачность перекрестия (от 0 (прозрачно) до 255 (непрозрачно))." #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "Цвет перекрестия" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "Цвет перекрестия (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "Скорость спуска" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Разрешить увечья" +msgstr "Урон" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Клавиша переключения показа отладочной информации" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Отладочный уровень" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Шаг выделенного сервера" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Ускорение по умолчанию" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "Редактировать" +msgstr "Стандартная игра" #: src/settings_translation_file.cpp msgid "" @@ -1499,19 +1773,20 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Новый пароль" +msgstr "Стандартный пароль" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Стандартные права" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"Стандартный тайм-аут для cURL, установленный в милисекундах.\n" +"Работает только на сборках с cURL." #: src/settings_translation_file.cpp msgid "" @@ -1528,22 +1803,34 @@ msgid "Delay showing tooltips, stated in milliseconds." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Deprecated Lua API handling" +msgstr "Устаревшее Lua API управление" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." msgstr "" #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "Скорость снижения" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" +"Описание сервера, которое будет показано при входе игрока и в списке " +"серверов." #: src/settings_translation_file.cpp +#, fuzzy msgid "Desynchronize block animation" -msgstr "" +msgstr "Рассинхронизировать анимацию блоков" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." @@ -1554,57 +1841,57 @@ msgid "Detailed mod profiling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Disable anticheat" -msgstr "Включить частицы" +msgstr "Отключить анти-чит" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "Запретить пустой пароль" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "Доменное имя сервера, отображаемое в списке серверов." #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "Двойной прыжок = летать" +msgstr "Полет по двойному прыжку" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Двойной прыжок = летать" +msgstr "Двойное нажатие на прыжок включает режим полёта." #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "Кнопка выброса блока" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgstr "Дамп отладочной информации генератора мира." #: src/settings_translation_file.cpp #, fuzzy +msgid "Enable VBO" +msgstr "Включить мультиплеер" + +#: src/settings_translation_file.cpp msgid "Enable mod security" -msgstr "Онлайн-хранилище модов" +msgstr "Включить защиту модов" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "Включает получение игроками урона и их смерть." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1635,6 +1922,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1649,8 +1940,12 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Включить мини-карту." + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Разрешить увечья" +msgstr "Включить мини-карту." #: src/settings_translation_file.cpp msgid "" @@ -1672,20 +1967,20 @@ msgstr "" #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "FPS во время паузы" #: src/settings_translation_file.cpp +#, fuzzy msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "no" +msgstr "Fallback шрифт" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -1697,43 +1992,56 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "Fallback размер шрифта" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "Клавиша ускорения" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "Ускорение быстрого перемещения" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "Скорость быстрого перемещения" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Быстрое перемещение" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"Быстрое перемещение (с использование клавиши).\n" +"Это требует привилегию \"fast\" на сервере." #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Поле зрения" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Поле зрения в градусах." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"Файл, содержащий ваши любимые серверы, отображаемые на вкладке Multiplayer." + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1744,62 +2052,66 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Без фильтраций" +msgstr "Фильтрация" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Конкретное семя мира" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Кнопка полёта" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Полёт" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Туман" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "Клавиша переключения тумана" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "Путь к шрифту" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Тень шрифта" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Прозрачность тени шрифта" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Прозрачность тени шрифта (непрозрачность от 0 до 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." msgstr "" +"Смещение тени шрифта. Если установленно в 0, то тень не будет отрисовываться." #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Размер шрифта" #: src/settings_translation_file.cpp #, fuzzy +msgid "Format of screenshots." +msgstr "Путь для сохранения скриншотов." + +#: src/settings_translation_file.cpp msgid "Forward key" msgstr "Вперед" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "FreeType шрифты" #: src/settings_translation_file.cpp msgid "" @@ -1819,7 +2131,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Полный экран" #: src/settings_translation_file.cpp msgid "Full screen BPP" @@ -1827,49 +2139,60 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Полноэкранный режим." #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "Масштабирование интерфейса" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "Масштаб интерфейса" +msgstr "Фильтр масштабирования интерфейса" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "txr2img фильтр масштабирования интерфейса" #: src/settings_translation_file.cpp msgid "Gamma" +msgstr "Гамма" + +#: src/settings_translation_file.cpp +msgid "General" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "Генерировать карты нормалей" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Графика" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Гравитация" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Моды" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "Клавиша переключения HUD" #: src/settings_translation_file.cpp msgid "" @@ -1879,6 +2202,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1889,10 +2216,10 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Домашняя страница сервера, отображаемая в списке серверов." #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1918,16 +2245,21 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "IPv6" +msgid "How wide to make rivers" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "IPv6" +msgstr "IPv6" + #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 сервер" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6 поддержка." #: src/settings_translation_file.cpp msgid "" @@ -1936,21 +2268,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Отключить мультиплеер" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "включено" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1971,6 +2305,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" +"Если включено, то новые игроки не смогут подключаться с пустым паролем." #: src/settings_translation_file.cpp msgid "" @@ -1978,68 +2313,111 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Если включено, то вы можете размещать новые блоки на месте игрока.\n" +"Это может быть полезно при строительстве в узких местах." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ignore world errors" -msgstr "" +msgstr "Если установлено, то игроки будут (ре)спавниться в указанной позиции." #: src/settings_translation_file.cpp #, fuzzy +msgid "Ignore world errors" +msgstr "Игнорировать ошибки мира" + +#: src/settings_translation_file.cpp msgid "In-Game" -msgstr "Игра" +msgstr "В игре" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "Прозрачность фона внутриигровой консоли (непрозрачность от 0 до 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "Цвет фона внутриигровой консоли (R, G, B)." #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." -msgstr "" +msgstr "Интервал сохранения важных изменений в мире, установленный в секундах." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." +msgstr "Интервал отправки клиентам сведений о времени дня." + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "Инвентарь" +msgstr "Кнопка открытия инвентаря" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Инвертировать мышь" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Инвертировать мышь по вертикали." #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" +msgstr "Время жизни выброшенной вещи" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "Прыжок" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "Кнопка прыжка" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "Скорость прыжков" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша отключения ограничения зоны видимости.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2047,13 +2425,20 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша выкинуть выбранный предмет.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша отключения ограничения зоны видимости.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2061,13 +2446,20 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша прыжка.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Key for moving fast in fast mode.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша для быстрого перемещения.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2075,6 +2467,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша движения назад.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2082,6 +2477,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша движения вперед.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2089,6 +2487,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша движения влево.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2096,6 +2497,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша движения вправо.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2103,6 +2507,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша открытия чат-консоли.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2110,6 +2517,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша открытия окна чата для ввода комманды.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2117,6 +2527,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша открытия окна чата.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2124,6 +2537,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша открытия инвентаря.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2140,6 +2556,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша красться.\n" +"Также используется для спуска и погружения под воду, если aux1_descends " +"отключена.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2147,6 +2568,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения вида от первого и от третьего лица.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2154,6 +2578,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша снятия скриншота.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2161,6 +2588,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения кинематографического режима.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2168,6 +2598,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения отображения миникарты.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2175,6 +2608,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения режима быстрого перемещения.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2182,6 +2618,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения режима полета.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2189,6 +2628,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения режима проверки столкновений.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2203,6 +2645,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения показа отладочной информации.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2210,6 +2655,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения отображения HUD.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2217,6 +2665,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения отображения чата.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2224,6 +2675,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша переключения отображения тумана.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2238,6 +2692,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Клавиша отключения ограничения зоны видимости.\n" +"Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" @@ -2245,11 +2702,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Language" +msgstr "Язык" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" msgstr "" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Стиль листвы" #: src/settings_translation_file.cpp msgid "" @@ -2258,11 +2723,15 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Стили листвы:\n" +"- Fancy: включена прозрачность, все стороны видны\n" +"- Simple: прозрачность включена, видны только внешние стороны, если " +"используются special_tiles\n" +"- Opaque: прозрачность отключена" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Левая клавиша меню" +msgstr "Кнопка выхода" #: src/settings_translation_file.cpp msgid "" @@ -2270,6 +2739,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2321,7 +2798,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Интервал обновления жидкостей в секундах." #: src/settings_translation_file.cpp msgid "Liquid update tick" @@ -2332,19 +2809,18 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Главное меню" +msgstr "Мод менеджер главного меню" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Главное меню" +msgstr "Скрипт главного меню" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Включить зависимость цвета тумана и облаков от времени суток (рассвет/закат)." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." @@ -2352,25 +2828,55 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map directory" +msgstr "Каталог сохранения карт" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2379,7 +2885,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Интервал сохранения карты" #: src/settings_translation_file.cpp msgid "Mapblock limit" @@ -2389,6 +2895,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Название генератора карты" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2402,28 +2913,154 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Генератор карты" +msgstr "Дебаггинг генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Флаги генератора карты" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "Генератор карты" +msgid "Mapgen flat" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Повторение параллакса" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Повторение параллакса" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Флаги генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Флаги генератора карты" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Генератор карты" +msgstr "Название генератора карты" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Генератор карты версии 5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "Генератор карты" +msgid "Mapgen v5 cave width" +msgstr "Генератор карты версии 5" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2446,9 +3083,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Генератор карты" +msgstr "Генератор карты версии 6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2507,9 +3143,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Генератор карты" +msgstr "Генератор карты версии 7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Генератор карты версии 7" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2559,6 +3199,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2581,11 +3233,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "Максимальный FPS" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Максимальный FPS в режиме паузы." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -2593,7 +3245,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Максимальная ширина хотбара" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." @@ -2656,14 +3308,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Максимальное количество пользователей" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" msgstr "Меню" @@ -2672,40 +3323,39 @@ msgid "Mesh cache" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Message of the day" -msgstr "" +msgstr "Фраза дня" #: src/settings_translation_file.cpp +#, fuzzy msgid "Message of the day displayed to players connecting." +msgstr "Фраза дня отображаемая подключившимся игрокам." + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Миникарта" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Клавиша переключения миникарты" #: src/settings_translation_file.cpp +#, fuzzy msgid "Minimap scan height" -msgstr "" +msgstr "Высота сканирования миникарты" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip-текстурирование" +msgstr "Mip-текстурирование (Мип-маппинг)" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2724,20 +3374,22 @@ msgid "Modstore mods list URL" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Monospace font path" -msgstr "" +msgstr "Путь моноширинного шрифта" #: src/settings_translation_file.cpp +#, fuzzy msgid "Monospace font size" -msgstr "" +msgstr "Размер моноширинного шрифта" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Чувствительность мыши" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "Множитель чувствительности мыши." #: src/settings_translation_file.cpp msgid "" @@ -2752,26 +3404,33 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"Название генератора карты, используемого при создании мира.\n" +"Создание мира из главного меню переопределит это." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Name of the player.\n" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"Имя игрока.\n" +"На сервере клиент с этим именем будет админом.\n" +"Будет переопределено при запуске из главного меню." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." -msgstr "" +msgstr "Имя сервера, отображаемое при входе и в списке серверов." #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Сеть" #: src/settings_translation_file.cpp msgid "" @@ -2780,30 +3439,37 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - -#: src/settings_translation_file.cpp +#, fuzzy msgid "New users need to input this password." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip key" -msgstr "" +msgstr "Новым пользователям нужно вводить этот пароль." #: src/settings_translation_file.cpp #, fuzzy +msgid "Noclip" +msgstr "Отключить столкновения" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Noclip key" +msgstr "Клавиша отключения столкновений" + +#: src/settings_translation_file.cpp msgid "Node highlighting" msgstr "Подсветка нод" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "NodeTimer interval" +msgstr "Интервал отправки" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2845,38 +3511,28 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax Occlusion" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "Parallax Occlusion" +msgstr "Включить параллакс" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "Parallax Occlusion" +msgstr "Масштаб параллакса" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Parallax Occlusion" +msgstr "Смещение параллакса" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Parallax Occlusion" +msgstr "Повторение параллакса" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Parallax Occlusion" +msgstr "Режим параллакса" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "Parallax Occlusion" +msgstr "Сила параллакса" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." @@ -2884,26 +3540,29 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Путь для сохранения скриншотов." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." msgstr "" +"Путь до каталога с текстурами. Все текстуры в первую очередь берутся от сюда." #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Player is able to fly without being affected by gravity.\n" -"This requires the " -msgstr "" +msgstr "Физика" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" +"Игрок может летать без влияния гравитации.\n" +"Это требует привилегии fly на сервере." + +#: src/settings_translation_file.cpp msgid "Player name" -msgstr "Имя игрока слишком длинное." +msgstr "Имя игрока" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2911,7 +3570,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "PvP" #: src/settings_translation_file.cpp msgid "" @@ -2920,20 +3579,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Загрузка текстур..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2956,13 +3606,17 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Random input" +msgid "Raises terrain to make valleys around the rivers" msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "Random input" +msgstr "Случайный ввод" + +#: src/settings_translation_file.cpp msgid "Range select key" -msgstr "Зона видимости" +msgstr "Кнопка настройки дальности видимости" #: src/settings_translation_file.cpp msgid "Remote media" @@ -2970,19 +3624,36 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Удаленный порт" #: src/settings_translation_file.cpp #, fuzzy +msgid "Replaces the default main menu with a custom one." +msgstr "Заменять главное меню на пользовательское." + +#: src/settings_translation_file.cpp msgid "Right key" msgstr "Правая клавиша меню" #: src/settings_translation_file.cpp +#, fuzzy msgid "Rightclick repetition interval" +msgstr "Интервал повторного клика правой кнопкой." + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" msgstr "" #: src/settings_translation_file.cpp @@ -3012,73 +3683,86 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Высота экрана" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Ширина экрана" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Cнимок" +msgstr "Cкриншот" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "Каталог со скриншотами" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Каталог со скриншотами" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Cкриншот" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Security" -msgstr "" +msgstr "Безопасность" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Смотрите http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp +#, fuzzy msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Цвет рамки выделения (R, G, B)." #: src/settings_translation_file.cpp +#, fuzzy msgid "Selection box color" -msgstr "" +msgstr "Цвет выделения" #: src/settings_translation_file.cpp +#, fuzzy msgid "Selection box width" -msgstr "" +msgstr "Ширина рамки выделения" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Начать одиночную игру" +msgstr "Сервер / одиночная игра" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Сервер" +msgstr "URL сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Порт сервера" +msgstr "Адрес сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Порт сервера" +msgstr "Описание сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Сервер" +msgstr "Имя сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Порт сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" msgstr "Список публичных серверов" @@ -3088,57 +3772,82 @@ msgid "Serverlist file" msgstr "Список публичных серверов" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"Установка языка. Оставьте пустым для использования системного языка.\n" +"Требует перезапуска после установки." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"Установка в true включает покачивание листвы.\n" +"Это требует включение шейдеров." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"Установка в true включает покачивание растений.\n" +"Это требует включение шейдеров." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" +"Установка в true включает волны на воде.\n" +"Это требует включение шейдеров." #: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Шейдеры" - -#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Shaders allow advanced visul effects and may increase performance on some " "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"Шейдеры позволяют использовать дополнительные визуальные эффекты и могут " +"увеличить производительность на некоторых видеокартах.\n" +"Они работают только с видео серверной OpenGL." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Show debug info" +msgstr "Показывать отладочную информацию." + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Shutdown message" -msgstr "" +msgstr "Сообщение о выключении" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." msgstr "" +"Размер чанка, генерируемого за один раз, установленный в мапблоках (16 " +"кубиков)." + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -3146,18 +3855,24 @@ msgid "Smooth lighting" msgstr "Мягкое освещение" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"Сглаживать движения камеры при ходьбе и поворотах.\n" +"Это может быть полезно при записи видео." #: src/settings_translation_file.cpp +#, fuzzy msgid "Smooths rotation of camera in cinematic mode. 0 to disable." msgstr "" +"Плавное вращение камеры в кинематографическом режиме. 0 для отключения." #: src/settings_translation_file.cpp +#, fuzzy msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "Плавное вращение камеры. 0 для отключения." #: src/settings_translation_file.cpp #, fuzzy @@ -3165,8 +3880,9 @@ msgid "Sneak key" msgstr "Красться" #: src/settings_translation_file.cpp +#, fuzzy msgid "Sound" -msgstr "" +msgstr "Звук" #: src/settings_translation_file.cpp msgid "" @@ -3177,8 +3893,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Static spawnpoint" -msgstr "" +msgstr "Постоянное место спавна" #: src/settings_translation_file.cpp #, fuzzy @@ -3193,20 +3910,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Пакеты текстур" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3214,10 +3954,13 @@ msgid "The network interface that the server listens on." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"Привилегии, автоматически получаемые новым пользователем.\n" +"Смотрите /privs для получения полного списка привилегий." #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." @@ -3239,32 +3982,45 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." -msgstr "" +msgstr "Задержка в секундах между кликами при зажатой правой кнопке мыши." #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." msgstr "" #: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"Время жизни выброшенных предметов.\n" +"Установите в -1 для отключения этой функции." #: src/settings_translation_file.cpp +#, fuzzy msgid "Time send interval" -msgstr "" +msgstr "Интервал отправки" #: src/settings_translation_file.cpp +#, fuzzy msgid "Time speed" -msgstr "" +msgstr "Скорость хода времени" #: src/settings_translation_file.cpp +#, fuzzy msgid "Timeout for client to remove unused map data from memory." msgstr "" +"Время, после которого клиент удаляет из памяти неиспользуемую информацию о " +"карте." #: src/settings_translation_file.cpp msgid "" @@ -3275,12 +4031,14 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Toggle camera mode key" -msgstr "" +msgstr "Клавиша переключения режима камеры." #: src/settings_translation_file.cpp +#, fuzzy msgid "Tooltip delay" -msgstr "" +msgstr "Задержка подсказки." #: src/settings_translation_file.cpp #, fuzzy @@ -3288,15 +4046,20 @@ msgid "Trilinear filtering" msgstr "Трилинейная фильтрация" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "True = 256\n" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"Полезно для плавной миникарты на медленных машинах." #: src/settings_translation_file.cpp +#, fuzzy msgid "Trusted mods" -msgstr "" +msgstr "Доверенные моды" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -3307,24 +4070,29 @@ msgid "Unlimited player transfer distance" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Unload unused server data" -msgstr "" +msgstr "Выгружать неиспользуемые сервером данные" #: src/settings_translation_file.cpp +#, fuzzy msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Объемные облака вместо плоских." #: src/settings_translation_file.cpp +#, fuzzy msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Анимированные облака в главном меню." #: src/settings_translation_file.cpp +#, fuzzy msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" +msgstr "Использовать анизатропную фильтрацию про взгляде под углом." #: src/settings_translation_file.cpp +#, fuzzy msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "Использовать билинейную фильтрацию для масштабирования текстур." #: src/settings_translation_file.cpp #, fuzzy @@ -3332,12 +4100,16 @@ msgid "Use key" msgstr "нажмите клавишу" #: src/settings_translation_file.cpp +#, fuzzy msgid "Use mip mapping to scale textures. May slightly increase performance." msgstr "" +"Использовать мип-маппинг для масштабирования текстур. Может немного " +"увеличить производительность." #: src/settings_translation_file.cpp +#, fuzzy msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "Использовать трилинейную фильтрацию для масштабировании текстур." #: src/settings_translation_file.cpp #, fuzzy @@ -3345,40 +4117,68 @@ msgid "Useful for mod developers." msgstr "Разработчики в отставке" #: src/settings_translation_file.cpp +#, fuzzy msgid "V-Sync" +msgstr "V-Sync" + +#: src/settings_translation_file.cpp +msgid "VBO" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "Valley Depth" msgstr "" #: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "Vertical screen synchronization." -msgstr "" +msgstr "Вертикальная синхронизация." #: src/settings_translation_file.cpp +#, fuzzy msgid "Video driver" -msgstr "" +msgstr "Видео драйвер." #: src/settings_translation_file.cpp msgid "View bobbing" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy msgid "View range decrease key" -msgstr "" +msgstr "Клавиша уменьшения видимого диапазона." #: src/settings_translation_file.cpp +#, fuzzy msgid "View range increase key" -msgstr "" +msgstr "Клавиша увеличения видимого диапазона." #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" +#, fuzzy +msgid "Viewing range" +msgstr "Максимальная граница дальности отрисовки." #: src/settings_translation_file.cpp #, fuzzy @@ -3386,13 +4186,21 @@ msgid "Volume" msgstr "Громкость звука" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "Покачивание листвы" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "Скорость ходьбы" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Water Features" +msgstr "Текстуры предметов..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3418,24 +4226,20 @@ msgid "Waving plants" msgstr "Покачивание растений" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "Волны на воде" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "Волны на воде" +msgstr "Высота волн на воде" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "Волны на воде" +msgstr "Длина волн на воде" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "Волны на воде" +msgstr "Скорость волн на воде" #: src/settings_translation_file.cpp msgid "" @@ -3489,28 +4293,47 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "Разрешить игрокам сражаться друг с другом." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"Опрашивать клиентов для переподключения после падения.\n" +"Установите это если ваш сервер настроен на автоматический перезапуск." #: src/settings_translation_file.cpp +#, fuzzy msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "Туман на границе видимого пространства." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "Показывать данные отладки (аналогично нажатию F5)." #: src/settings_translation_file.cpp msgid "" -"Whether to show the client debug info (has the same effect as hitting F5)." +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." msgstr "" #: src/settings_translation_file.cpp -msgid "Width of the selectionbox's lines around nodes." +msgid "Width component of the initial window size." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Width of the selectionbox's lines around nodes." +msgstr "Ширина обводки выбранных блоков." + #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" @@ -3518,100 +4341,130 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "cURL file download timeout" +msgid "Y of flat ground." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "cURL file download timeout" +msgstr "cURL тайм-аут загрузки файла" + #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" - -#~ msgid "Rendering:" -#~ msgstr "Рендеринг:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Перезапустите Minetest для принятия изменений" - -#~ msgid "Game Name" -#~ msgstr "Название" - -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "Gamemgr: Не могу скопировать мод \"$1\" в игру \"$2\"" - -#~ msgid "GAMES" -#~ msgstr "ИГРЫ" - -#~ msgid "Mods:" -#~ msgstr "Моды:" - -#~ msgid "new game" -#~ msgstr "Создать игру" - -#~ msgid "EDIT GAME" -#~ msgstr "РЕДАКТИРОВАНИЕ" - -#~ msgid "Remove selected mod" -#~ msgstr "Удалить мод" - -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- Добавить мод" - -#~ msgid "CLIENT" -#~ msgstr "КЛИЕНТ" - -#~ msgid "Favorites:" -#~ msgstr "Избранное:" - -#~ msgid "START SERVER" -#~ msgstr "СЕРВЕР" - -#~ msgid "Name" -#~ msgstr "Имя" - -#~ msgid "Password" -#~ msgstr "Пароль" - -#~ msgid "SETTINGS" -#~ msgstr "НАСТРОЙКИ" - -#~ msgid "Preload item visuals" -#~ msgstr "Предзагрузка изображений" - -#~ msgid "Finite Liquid" -#~ msgstr "Конечные жидкости" - -#~ msgid "SINGLE PLAYER" -#~ msgstr "ОДИНОЧНАЯ ИГРА" - -#~ msgid "TEXTURE PACKS" -#~ msgstr "ПАКЕТЫ ТЕКСТУР" - -#~ msgid "MODS" -#~ msgstr "МОДЫ" - -#~ msgid "Add mod:" -#~ msgstr "Добавить мод:" - -#~ msgid "Local install" -#~ msgstr "Локальная установка" +msgstr "cURL тайм-аут" #~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." #~ msgstr "" -#~ "Предупреждение: Некоторые моды еще не настроены.\n" -#~ "Их стандартные настройки будут установлены, когда вы сохраните " -#~ "конфигурацию. " +#~ "Включите немного более низкую поверхность воды, чтобы она\n" +#~ "не заполняла блок полностью. Учтите, что это не совсем оптимизировано,\n" +#~ "и мягкое освещение на поверхности воды не работает с этим." #~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " +#~ "Key for decreasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" #~ msgstr "" -#~ "Предупреждение: Некоторые моды не найдены.\n" -#~ "Их настройки будут удалены, когда вы сохраните конфигурацию. " +#~ "Клавиша уменьшения видимого диапазона. Изменяет минимальную дальность " +#~ "отображения.\n" +#~ "Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#~ msgid "" +#~ "Key for increasing the viewing range. Modifies the minimum viewing " +#~ "range.\n" +#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" +#~ msgstr "" +#~ "Клавиша Увеличения видимого диапазона. Изменяет минимальную дальность " +#~ "отображения.\n" +#~ "Смотрите http://irrlicht.sourceforge.net/docu/namespaceirr." +#~ "html#a54da2a0e231901735e3da1b0edf72eb3" + +#, fuzzy +#~ msgid "New style water" +#~ msgstr "Новый стиль воды" + +#~ msgid "Preload inventory textures" +#~ msgstr "Предзагрузка текстур..." + +#, fuzzy +#~ msgid "Viewing range minimum" +#~ msgstr "Минимальная граница дальности отрисовки." + +#, fuzzy +#~ msgid "Wanted FPS" +#~ msgstr "Ожидаемый FPS" + +#~ msgid "Reset singleplayer world" +#~ msgstr "Сброс одиночной игры" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Коэффициент масштаба интерфейса: " + +#~ msgid "Touch free target" +#~ msgstr "Свободный выбор цели" + +#, fuzzy +#~ msgid "Downloading" +#~ msgstr "Загрузить" + +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "ЛКМ: Переместить все предметы, ПКМ: Переместить один предмет" + +#~ msgid "is required by:" +#~ msgstr "требуется для:" + +#~ msgid "Configuration saved. " +#~ msgstr "Настройки сохранены. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Предупреждение: Неверная конфигурация. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Невозможно создать мир: Имя содержит недопустимые символы" + +#~ msgid "Show Public" +#~ msgstr "Публичные" + +#~ msgid "Show Favorites" +#~ msgstr "Избранные" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Оставьте адрес пустым для запуска локального сервера." + +#~ msgid "Create world" +#~ msgstr "Создать мир" + +#~ msgid "Address required." +#~ msgstr "Нужно ввести адрес." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Невозможно удалить мир: Ничего не выбрано" + +#~ msgid "Files to be deleted" +#~ msgstr "Следующие файлы будут удалены" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Невозможно создать мир: Ни одной игры не найдено" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Невозможно настроить мир: ничего не выбрано" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Ошибка при удалении файлов мира" #~ msgid "" #~ "Default Controls:\n" @@ -3638,96 +4491,104 @@ msgstr "" #~ "- ESC: это меню\n" #~ "- T: чат\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "Ошибка при удалении файлов мира" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "Предупреждение: Некоторые моды не найдены.\n" +#~ "Их настройки будут удалены, когда вы сохраните конфигурацию. " -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Невозможно настроить мир: ничего не выбрано" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "Предупреждение: Некоторые моды еще не настроены.\n" +#~ "Их стандартные настройки будут установлены, когда вы сохраните " +#~ "конфигурацию. " -#~ msgid "Cannot create world: No games found" -#~ msgstr "Невозможно создать мир: Ни одной игры не найдено" +#~ msgid "Local install" +#~ msgstr "Локальная установка" -#~ msgid "Files to be deleted" -#~ msgstr "Следующие файлы будут удалены" +#~ msgid "Add mod:" +#~ msgstr "Добавить мод:" -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Невозможно удалить мир: Ничего не выбрано" +#~ msgid "MODS" +#~ msgstr "МОДЫ" -#~ msgid "Address required." -#~ msgstr "Нужно ввести адрес." +#~ msgid "TEXTURE PACKS" +#~ msgstr "ПАКЕТЫ ТЕКСТУР" -#~ msgid "Create world" -#~ msgstr "Создать мир" +#~ msgid "SINGLE PLAYER" +#~ msgstr "ОДИНОЧНАЯ ИГРА" -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Оставьте адрес пустым для запуска локального сервера." +#~ msgid "Finite Liquid" +#~ msgstr "Конечные жидкости" -#~ msgid "Show Favorites" -#~ msgstr "Избранные" +#~ msgid "Preload item visuals" +#~ msgstr "Предзагрузка изображений" -#~ msgid "Show Public" -#~ msgstr "Публичные" +#~ msgid "SETTINGS" +#~ msgstr "НАСТРОЙКИ" -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Невозможно создать мир: Имя содержит недопустимые символы" +#~ msgid "Password" +#~ msgstr "Пароль" -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Предупреждение: Неверная конфигурация. " +#~ msgid "Name" +#~ msgstr "Имя" -#~ msgid "Configuration saved. " -#~ msgstr "Настройки сохранены. " +#~ msgid "START SERVER" +#~ msgstr "СЕРВЕР" -#~ msgid "is required by:" -#~ msgstr "требуется для:" +#~ msgid "CLIENT" +#~ msgstr "КЛИЕНТ" -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "ЛКМ: Переместить все предметы, ПКМ: Переместить один предмет" +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- Добавить мод" -#, fuzzy -#~ msgid "Downloading" -#~ msgstr "Загрузить" +#~ msgid "Remove selected mod" +#~ msgstr "Удалить мод" -#~ msgid "Touchthreshold (px)" -#~ msgstr "Чувствительность (пк)" +#~ msgid "EDIT GAME" +#~ msgstr "РЕДАКТИРОВАНИЕ" -#~ msgid "Touch free target" -#~ msgstr "Свободный выбор цели" +#~ msgid "new game" +#~ msgstr "Создать игру" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "Для включения шейдеров необходим драйвер OpenGL." +#~ msgid "Mods:" +#~ msgstr "Моды:" -#~ msgid "Texturing:" -#~ msgstr "Текстурирование:" +#~ msgid "GAMES" +#~ msgstr "ИГРЫ" -#~ msgid "Simple Leaves" -#~ msgstr "Упрощённая листва" +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "Gamemgr: Не могу скопировать мод \"$1\" в игру \"$2\"" -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Коэффициент масштаба интерфейса: " +#~ msgid "Game Name" +#~ msgstr "Название" -#~ msgid "Reset singleplayer world" -#~ msgstr "Сброс одиночной игры" +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Перезапустите Minetest для принятия изменений" -#~ msgid "Opaque Water" -#~ msgstr "Непрозрачная вода" +#~ msgid "Rendering:" +#~ msgstr "Рендеринг:" -#~ msgid "Opaque Leaves" -#~ msgstr "Непрозрачная листва" +#~ msgid "If enabled, " +#~ msgstr "Если включено " + +#~ msgid "If disabled " +#~ msgstr "Если выключено " + +#~ msgid "\"" +#~ msgstr "\"" #~ msgid "No!!!" #~ msgstr "Нет!" -#~ msgid "No Mipmap" -#~ msgstr "Без Мипмаппинга" +#~ msgid "Generate Normalmaps" +#~ msgstr "Генерировать карты нормалей" -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Мипмаппинг с анизотр. фильтром" +#~ msgid "Public Serverlist" +#~ msgstr "Список публичных серверов" -#~ msgid "Mipmap" -#~ msgstr "Мипмаппинг" - -#~ msgid "Fancy Leaves" -#~ msgstr "Красивая листва" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Уверены, что хотите сбросить мир одиночной игры?" +#~ msgid "No of course not!" +#~ msgstr "Нет, конечно нет!" diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 898dda88..b3c063d2 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -6,9 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-07-14 16:48+0200\n" -"Last-Translator: Michal Čihař \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2015-10-27 16:46+0200\n" +"Last-Translator: PilzAdam \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -16,17 +16,17 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5-dev\n" "X-Poedit-Language: Turkish\n" "X-Poedit-Basepath: \n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Lua scriptte bir hata meydana geldi:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "Bir hata oluştu:" #: builtin/fstk/ui.lua #, fuzzy @@ -38,13 +38,12 @@ msgid "Ok" msgstr "Tamam" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" msgstr "Bağlan" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Bu sunucu yeniden bağlanma isteğinde bulundu:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -52,31 +51,35 @@ msgstr "Yükleniyor..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Protokol sürümü uyumsuz. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Sunucu protokol sürümü $1 istiyor. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Bu sunucu $1 ve $2 arası tüm protokol sürümlerini destekler. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Sunucu listesini tekrar etkinleştirmeyi deneyin ve internet bağlantınızı " +"kontrol edin." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Yalnızca $1 protokol sürümü desteklenmektedir." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Yalnızca $1 ve $2 arası protokol sürümleri desteklenmektedir." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Vazgeç" @@ -101,6 +104,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" +"Geçersiz karakterler içerdiği için \"$1\" modu etkinleştirilemiyor. İzin " +"verilen karakterler [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -114,8 +119,8 @@ msgstr "Detayları gizle" msgid "Mod:" msgstr "Eklnt:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Kaydet" @@ -175,6 +180,12 @@ msgstr "Ek bir oyun modu yüklü değil." msgid "Are you sure you want to delete \"$1\"?" msgstr " \"$1\" 'i silmek istediğinizden emin misiniz ?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Sil" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr:\"$1\" dosyası silerken hata" @@ -183,22 +194,10 @@ msgstr "Modmgr:\"$1\" dosyası silerken hata" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: \"$1\" eklenti konumu yanlış" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Elbette hayır!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Evet" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr " \"$1\" dünyasını sil ?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Hayır" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Kabul et" @@ -207,6 +206,93 @@ msgstr "Kabul et" msgid "Rename Modpack:" msgstr "Eklenti paketini yeniden adlandır :" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(Açıklama bilgisi verilmedi)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Seç" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Paketi Kapat" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Düzenle" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Etkinleştirildi" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Oyun" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Eklentiler" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "Select path" +msgstr "Seç" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -288,9 +374,8 @@ msgid "Previous Contributors" msgstr "Katkı sağlayanlar" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Ana geliştiriciler" +msgstr "İlk geliştiriciler" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -300,10 +385,6 @@ msgstr "Yüklenen eklentiler :" msgid "Mod information:" msgstr "Eklenti bilgileri:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Eklentiler" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Eklenti bilgisi yok" @@ -325,7 +406,8 @@ msgid "Uninstall selected modpack" msgstr "Seçilen eklenti paketini sil" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "Adres / Port :" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -344,18 +426,18 @@ msgstr "Yaratıcı mod" msgid "Damage enabled" msgstr "Hasar alma etkin" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Sil" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Kullanıcı Adı / Şifre :" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Çevirimiçi Oyun Listesi" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "Kullanıcı Adı / Şifre :" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -379,7 +461,7 @@ msgstr "Yaratıcı Mod" msgid "Enable Damage" msgstr "Hasarı etkinleştir" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Kullanıcı adı/Şifre" @@ -417,90 +499,174 @@ msgid "Start Game" msgstr "Oyunu Başlat" #: builtin/mainmenu/tab_settings.lua -msgid "\"" +msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" +#, fuzzy +msgid "3D Clouds" +msgstr "3 boyutlu bulutlar" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" +msgid "8x" msgstr "" +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Advanced Settings" +msgstr "Ayarlar" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "Tek kişilik dünyayı sıfırlamak istediğinizden emin misiniz ?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "İki yönlü süzme" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Engebeler" + #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Tuşları değiştir" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "Paketi Kapat" +msgid "Connected Glass" +msgstr "İçiçe geçmiş cam" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" +#, fuzzy +msgid "Fancy Leaves" +msgstr "Şık ağaçlar" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mipmap" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Mipmap + Aniso. Filter" +msgstr "Mipmap Aniso. Süzgeci" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Hayır" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "No Filter" +msgstr "Süzme yok" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Mipmap kapalı" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Highlighting" +msgstr "Nesne seçme göstergesi" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Node Outlining" +msgstr "Nesne seçme göstergesi" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "Etkinleştirildi" - -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Normal Mapping" +msgstr "Mip-Mapping" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "Oyun" +msgid "Opaque Leaves" +msgstr "Şeffaf su" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "Opaque Water" +msgstr "Şeffaf su" -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Parallax Occlusion" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "Seç" +msgid "Particles" +msgstr "Hepsini etkinleştir" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Ayarlar" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +#, fuzzy +msgid "Simple Leaves" +msgstr "Dalgalanan Yapraklar" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +#, fuzzy +msgid "Smooth Lighting" +msgstr "Pürüzsüz ışıklandırma" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Doku:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "OpenGL sürücüleri seçilmeden Shader etkinleştirilemez." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy +msgid "Tone Mapping" +msgstr "Mip-Mapping" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "Touchthreshold (px)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "Üç yönlü süzme" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Leaves" +msgstr "Dalgalanan Yapraklar" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Plants" +msgstr "Dalgalanan Bitkiler" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Waving Water" +msgstr "Dalgalanan Su" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Evet" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -526,10 +692,6 @@ msgstr "Tek Kişilik" msgid "No information available" msgstr "Bilgi yok" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Doku paketi seç :" @@ -556,10 +718,6 @@ msgstr "Nesneler yükleniyor..." msgid "Initializing nodes..." msgstr "Nesneler yükleniyor..." -#: src/client.cpp -msgid "Item textures..." -msgstr "Nesne dokuları ..." - #: src/client.cpp msgid "Loading textures..." msgstr "Dokular yükleniyor..." @@ -598,7 +756,7 @@ msgstr "Belirtilen dünya konumu yok:" #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "no" #: src/game.cpp msgid "" @@ -714,10 +872,6 @@ msgstr "" msgid "Node definitions..." msgstr "Blok tanımlamaları..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Uygula" - #: src/game.cpp msgid "Resolving address..." msgstr "Adres çözümleniyor..." @@ -738,13 +892,17 @@ msgstr "Ses yüksekliği :" msgid "You died." msgstr "Geberdin." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "tamam" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Entrer " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "tamam" +msgid "Proceed" +msgstr "Uygula" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1155,6 +1313,15 @@ msgstr "X Button 2" msgid "Zoom" msgstr "Yakınlaştır" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" @@ -1179,7 +1346,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1204,6 +1372,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1235,6 +1411,10 @@ msgstr "" msgid "Advanced" msgstr "" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1243,6 +1423,10 @@ msgstr "" msgid "Ambient occlusion gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Anisotropic filtering" @@ -1259,6 +1443,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1272,10 +1460,19 @@ msgstr "" msgid "Backward key" msgstr "Geri" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Base terrain height" +msgstr "Dalgalanan Su" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" +#: src/settings_translation_file.cpp +msgid "Basic Privileges" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Bilinear filtering" @@ -1310,6 +1507,22 @@ msgstr "" msgid "Camera update toggle key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Chat key" @@ -1320,6 +1533,29 @@ msgstr "Tuşları değiştir" msgid "Chat toggle key" msgstr "Tuşları değiştir" +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" + #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" @@ -1378,6 +1614,12 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Command key" @@ -1434,14 +1676,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1530,6 +1796,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1552,6 +1826,13 @@ msgstr "" msgid "Detailed mod profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Disable anticheat" @@ -1584,8 +1865,9 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +#, fuzzy +msgid "Enable VBO" +msgstr "Paketi Aç" #: src/settings_translation_file.cpp #, fuzzy @@ -1600,10 +1882,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1634,6 +1912,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1646,6 +1928,11 @@ msgstr "" msgid "Enables caching of facedir rotated meshes." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "Hasarı etkinleştir" + #: src/settings_translation_file.cpp #, fuzzy msgid "Enables minimap." @@ -1717,7 +2004,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1734,6 +2021,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1792,6 +2087,10 @@ msgstr "" msgid "Font size" msgstr "" +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Forward key" @@ -1846,6 +2145,10 @@ msgstr "" msgid "Gamma" msgstr "" +#: src/settings_translation_file.cpp +msgid "General" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Generate normalmaps" @@ -1854,9 +2157,13 @@ msgstr "Normal haritalar oluştur" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -1867,6 +2174,11 @@ msgstr "" msgid "Gravity" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "HTTP Mods" +msgstr "Eklentiler" + #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "" @@ -1879,6 +2191,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1892,7 +2208,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1917,6 +2233,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1936,21 +2256,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Paketi Kapat" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Etkinleştirildi" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2008,6 +2330,10 @@ msgstr "" msgid "Interval of sending time of day to clients." msgstr "" +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Inventory key" @@ -2025,6 +2351,41 @@ msgstr "" msgid "Item entity TTL" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Jump key" @@ -2036,7 +2397,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2050,7 +2411,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2247,6 +2608,14 @@ msgstr "" msgid "Language" msgstr "" +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "" + #: src/settings_translation_file.cpp msgid "Leaves style" msgstr "" @@ -2270,6 +2639,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2356,21 +2733,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2389,6 +2796,11 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen Valleys" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2411,6 +2823,131 @@ msgstr "Mapgen" msgid "Mapgen flags" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat flags" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat ground level" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake steepness" +msgstr "Parallax Occlusion" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen flat lake threshold" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal fractal" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal iterations" +msgstr "Parallax Occlusion" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal offset" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal scale" +msgstr "Mapgen" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal slice w" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" @@ -2425,6 +2962,11 @@ msgstr "Mapgen" msgid "Mapgen v5" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v5 cave width" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" msgstr "" @@ -2511,6 +3053,11 @@ msgstr "" msgid "Mapgen v7" msgstr "Mapgen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "Mapgen" + #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" msgstr "" @@ -2559,6 +3106,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2679,6 +3238,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2695,13 +3258,6 @@ msgstr "" msgid "Minimum texture size for filters" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mipmapping" @@ -2779,10 +3335,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2800,10 +3352,18 @@ msgstr "" msgid "Node highlighting" msgstr "Nesne seçme göstergesi" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2844,10 +3404,6 @@ msgstr "" msgid "Overall scale of parallax occlusion effect." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Parallax Occlusion" - #: src/settings_translation_file.cpp #, fuzzy msgid "Parallax occlusion" @@ -2897,7 +3453,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -2920,20 +3476,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Dokular yükleniyor..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2955,6 +3502,10 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" @@ -2985,6 +3536,22 @@ msgstr "Sağ Menu" msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3027,6 +3594,23 @@ msgstr "Ekran Resmi" msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "Ekran Resmi" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "Ekran Resmi" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3111,10 +3695,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Shaders" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3130,6 +3710,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3140,6 +3724,10 @@ msgid "" "nodes)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Smooth lighting" @@ -3147,7 +3735,7 @@ msgstr "Pürüzsüz ışıklandırma" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3193,20 +3781,43 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" +#: src/settings_translation_file.cpp +msgid "Terrain Height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Texture path" msgstr "Doku paketi" #: src/settings_translation_file.cpp -msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3248,6 +3859,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3349,7 +3964,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3364,6 +3999,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3373,11 +4014,7 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range minimum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp @@ -3385,14 +4022,23 @@ msgstr "" msgid "Volume" msgstr "Ses yüksekliği :" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Walking speed" msgstr "Dalgalanan Yapraklar" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +#, fuzzy +msgid "Water Features" +msgstr "Nesne dokuları ..." #: src/settings_translation_file.cpp msgid "Water level" @@ -3507,6 +4153,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3517,6 +4175,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3529,78 +4195,60 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Rendering:" -#~ msgstr "Kaplama:" - -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "Değişikliklerin etkin olabilmesi için minetesti yeniden başlatın" - -#~ msgid "Numpad " -#~ msgstr "Numpad " - -#~ msgid " MB/s" -#~ msgstr " MB/s" - -#~ msgid " KB/s" -#~ msgstr " KB/s" - -#~ msgid "please wait..." -#~ msgstr "lütfen bekleyin..." - -#~ msgid "Downloading" -#~ msgstr "İndiriliyor" - -#~ msgid "Trilinear Filter" -#~ msgstr "Üç yönlü süzme" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "Touchthreshold (px)" - -#~ msgid "Touch free target" -#~ msgstr "Touch free target" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "OpenGL sürücüleri seçilmeden Shader etkinleştirilemez." - -#~ msgid "Texturing:" -#~ msgstr "Doku:" - #, fuzzy -#~ msgid "Simple Leaves" -#~ msgstr "Dalgalanan Yapraklar" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Ölçeklendirme menülere işlendi:" +#~ msgid "Preload inventory textures" +#~ msgstr "Dokular yükleniyor..." #~ msgid "Reset singleplayer world" #~ msgstr "Tek kişilik oyunu sıfırlayın" -#~ msgid "Opaque Water" -#~ msgstr "Şeffaf su" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Ölçeklendirme menülere işlendi:" + +#~ msgid "Touch free target" +#~ msgstr "Touch free target" + +#~ msgid "Downloading" +#~ msgstr "İndiriliyor" + +#~ msgid "please wait..." +#~ msgstr "lütfen bekleyin..." + +#~ msgid " KB/s" +#~ msgstr " KB/s" + +#~ msgid " MB/s" +#~ msgstr " MB/s" + +#~ msgid "Numpad " +#~ msgstr "Numpad " + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "Değişikliklerin etkin olabilmesi için minetesti yeniden başlatın" + +#~ msgid "Rendering:" +#~ msgstr "Kaplama:" #, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "Şeffaf su" +#~ msgid "If enabled, " +#~ msgstr "Etkinleştirildi" + +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Paketi Kapat" + +#~ msgid "\"" +#~ msgstr "\"" #~ msgid "No!!!" #~ msgstr "Hayır!!!" -#~ msgid "No Mipmap" -#~ msgstr "Mipmap kapalı" - #, fuzzy -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mipmap Aniso. Süzgeci" +#~ msgid "Generate Normalmaps" +#~ msgstr "Normal haritalar oluştur" -#~ msgid "Mipmap" -#~ msgstr "Mipmap" +#~ msgid "Public Serverlist" +#~ msgstr "Çevirimiçi Oyun Listesi" -#, fuzzy -#~ msgid "Fancy Leaves" -#~ msgstr "Şık ağaçlar" - -#~ msgid "Bilinear Filter" -#~ msgstr "İki yönlü süzme" - -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Tek kişilik dünyayı sıfırlamak istediğinizden emin misiniz ?" +#~ msgid "No of course not!" +#~ msgstr "Elbette hayır!" diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 773df14a..4a2101d7 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -7,18 +7,18 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-21 23:18+0200\n" -"Last-Translator: Olexandr \n" -"Language-Team: Ukrainian \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-10 00:06+0000\n" +"Last-Translator: Fixer \n" +"Language-Team: Ukrainian " +"\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.4\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" @@ -42,24 +42,23 @@ msgstr "Повторне підключення" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Сервер запросив перез'єднання:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." msgstr "Завантаження..." #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "Неспівпадіння версій протоколу, сервер: " +msgstr "Версія протоколу не співпадає. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Сервер працює за протоколом версії $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Сервер підтримує версії протоколу між $1 і $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -69,15 +68,17 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Ми підтримуємо тільки протокол версії $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Ми підтримуємо протокол між версіями $1 і $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "Скасувати" @@ -86,12 +87,14 @@ msgid "Depends:" msgstr "Залежить від:" #: builtin/mainmenu/dlg_config_world.lua +#, fuzzy msgid "Disable MP" -msgstr "Вимкнути багатокористувацьку гру" +msgstr "Вимкнути МП" #: builtin/mainmenu/dlg_config_world.lua +#, fuzzy msgid "Enable MP" -msgstr "Увімкнути багатокористувацьку гру" +msgstr "Увімкнути МП" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -102,23 +105,24 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" -"Не вдалося ввімкнути mod \"$1\", бо він містить заборонені символи. " -"Дозволяється використання таких символів: [a-z0-9_]." +"Не вдалося ввімкнути модифікацію \"$1\", тому що вона містить заборонені " +"символи. Дозволяється використання таких символів: [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" msgstr "Приховати гру" #: builtin/mainmenu/dlg_config_world.lua +#, fuzzy msgid "Hide mp content" -msgstr "Приховати контент багатокористувацької гри" +msgstr "Приховати мп контент" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Модифікація:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Зберегти" @@ -128,11 +132,11 @@ msgstr "Світ:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "Увімкнено" +msgstr "увімкнено" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "Світ з такою назвою ( \"$1\") вже існує" +msgstr "Світ з такою назвою \"$1\" вже існує" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -152,7 +156,7 @@ msgstr "Гра" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Генератор карти" +msgstr "Генератор світу" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" @@ -168,7 +172,7 @@ msgstr "Увага: мінімальна тестова версія призн #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "Назва Світу" +msgstr "Назва світу" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." @@ -178,6 +182,12 @@ msgstr "Ви не маєте встановлених ігор." msgid "Are you sure you want to delete \"$1\"?" msgstr "Ви впевнені, що бажаєте видалити \"$1\"?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "Видалити" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Modmgr: не вдалося видалити \"$1\"" @@ -186,29 +196,106 @@ msgstr "Modmgr: не вдалося видалити \"$1\"" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Modmgr: недійсний шлях модифікації \"$1\"" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "Ні, звісно ні!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "Так" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Видалити світ \"$1\"?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "Ні" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "Прийняти" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" +msgstr "Перейменувати збірку модифікацій:" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" не є правильним параметром." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(пояснення відсутнє)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< Назад до Налаштувань" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "Проглянути" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "Вимкнено" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "Правити" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "Увімкнено" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "Формат: 3 номера, відокремлених комами і всередині дужок." + +#: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy +msgid "" +"Format: , , (, , ), , " +", " msgstr "" +"Формат: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "Ігри" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Модифікації" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "Будь-ласка введіть перелік параметрів через кому." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "Будь-ласка введіть дійсне ціле число." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "Будь-ласка введіть дійсний номер." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "Можливі значення: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "Відновити як було" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "Вибрати шлях" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "Показувати технічні назви" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "Значення має бути більше за $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "Значення має бути менше ніж $1." #: builtin/mainmenu/modmgr.lua msgid "" @@ -235,6 +322,8 @@ msgstr "" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" +"Встановлення модифікації: неможливо знайти відповідну назву папки для збірки " +"модифікацій $1" #: builtin/mainmenu/store.lua msgid "Close store" @@ -250,7 +339,7 @@ msgstr "Встановити" #: builtin/mainmenu/store.lua msgid "Page $1 of $2" -msgstr "Сторінка $1 із $2" +msgstr "Сторінка $1 з $2" #: builtin/mainmenu/store.lua msgid "Rating" @@ -262,7 +351,7 @@ msgstr "Пошук" #: builtin/mainmenu/store.lua msgid "Shortname:" -msgstr "Коротке ім'я:" +msgstr "Коротка назва:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" @@ -282,7 +371,7 @@ msgstr "Активні учасники" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "Основні розробники ядра гри" #: builtin/mainmenu/tab_credits.lua msgid "Credits" @@ -290,11 +379,11 @@ msgstr "Подяка" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Колишні учасники" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "Попередні основні розробники ядра" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -304,10 +393,6 @@ msgstr "Встановлені модифікації:" msgid "Mod information:" msgstr "Інформація модифікації:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Модифікації" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Опис модифікації відсутній" @@ -326,11 +411,11 @@ msgstr "Видалити обрану модифікацію" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" -msgstr "" +msgstr "Видалити обрану збірку модифікацій" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" -msgstr "Адреса / Порт :" +msgid "Address / Port" +msgstr "Адреса / Порт" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -342,32 +427,32 @@ msgstr "Під'єднатися" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "Режим творчості" +msgstr "Творчість" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy msgid "Damage enabled" -msgstr "Ушкодження увімкнено" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "Видалити" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "Ім'я / Пароль :" +msgstr "Поранення" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "Список публічних серверів" +msgid "Del. Favorite" +msgstr "Видалити мітку" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "Улюблені" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Ім'я / Пароль" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "PvP увімкнено" +msgstr "Бої увімкнено" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" -msgstr "" +msgstr "Закріпити адресу" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" @@ -376,14 +461,14 @@ msgstr "Налаштувати" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Creative Mode" -msgstr "Режим Створення" +msgstr "Творчість" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Enable Damage" -msgstr "Увімкнути ушкодження" +msgstr "Увімкнути поранення" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "Ім'я/Пароль" @@ -413,110 +498,178 @@ msgstr "Сервер" #: builtin/mainmenu/tab_server.lua msgid "Server Port" -msgstr "" +msgstr "Порт сервера" #: builtin/mainmenu/tab_server.lua msgid "Start Game" msgstr "Почати гру" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "Об'ємні хмари" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "Додаткові налаштування" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "Згладжування:" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Are you sure to reset your singleplayer world?" +msgstr "Ви впевнені, що бажаєте скинути свій світ однокористувацької гри?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Білінійна фільтрація" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "Бамп-маппінг" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" -msgstr "Змінити клавіши" +msgstr "Змінити клавіші" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "Вимкнути багатокористувацьку гру" +msgid "Connected Glass" +msgstr "З'єднане скло" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "Гарні листя" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Enabled" -msgstr "Увімкнено" +msgid "Mipmap" +msgstr "Міпмапи" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Mipmap + Aniso. Filter" +msgstr "Міпмапи і анізотропний фільтр" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Games" -msgstr "Гра" +msgid "No" +msgstr "Ні" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "No Filter" +msgstr "Без фільтрування" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "No Mipmap" +msgstr "Без міпмап" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" +msgid "Node Highlighting" +msgstr "Підсвічувати блок" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" +msgid "Node Outlining" +msgstr "Виділяти блок рамкою" + +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "Нічого" #: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" +msgid "Normal Mapping" +msgstr "Текстурування нормалів" #: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +msgid "Opaque Leaves" +msgstr "Непрозоре листя" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Select path" -msgstr "Обрати" +msgid "Opaque Water" +msgstr "Непрозора вода" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Паралаксова оклюзія" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Часточки" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Налаштування" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "Шейдери" + #: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" +msgid "Simple Leaves" +msgstr "Просте листя" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "Згладжене освітлення" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "Текстурування:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" +"Для того, щоб увімкнути шейдери, потрібно використовувати драйвер OpenGL." + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "Тоновий шейдер" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Trilinear Filter" +msgstr "Трилінійна фільтрація" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Waving Leaves" +msgstr "Коливати листя" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "Коливати квіти" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "Коливати воду" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "Так" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" msgstr "Налаштувати модифікації" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" msgstr "Головне Меню" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "Почати однокористувацьку гру" +msgstr "Почати одиночну гру" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" @@ -530,10 +683,6 @@ msgstr "Одиночна гра" msgid "No information available" msgstr "Інформація відсутня" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "Нічого" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Оберіть набір текстур:" @@ -552,15 +701,11 @@ msgstr "Виконано!" #: src/client.cpp msgid "Initializing nodes" -msgstr "Ініціалізація вузлів" +msgstr "Ініціалізація блоків" #: src/client.cpp msgid "Initializing nodes..." -msgstr "Ініціалізація вузлів..." - -#: src/client.cpp -msgid "Item textures..." -msgstr "Текстура предметів..." +msgstr "Ініціалізація блоків..." #: src/client.cpp msgid "Loading textures..." @@ -568,7 +713,7 @@ msgstr "Завантаження текстур..." #: src/client.cpp msgid "Rebuilding shaders..." -msgstr "Побудова шейдерів..." +msgstr "Перебудова шейдерів..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -579,6 +724,7 @@ msgid "Could not find or load game \"" msgstr "Неможливо знайти або завантажити гру \"" #: src/client/clientlauncher.cpp +#, fuzzy msgid "Invalid gamespec." msgstr "Помилкова конфігурація гри." @@ -592,7 +738,7 @@ msgstr "Жоден світ не вибрано та не надано адре #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "Ім'я гравця надто довге." +msgstr "Ім'я гравця занадто довге." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -648,10 +794,10 @@ msgid "" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" -"Управління за замовчанням:\n" +"Стандартне керування клавішами:\n" "- WASD: рух\n" -"- Space: стрибок/лізти в гору\n" -"- Shift: крастися/лізти в низ\n" +"- Space: стрибок/лізти вгору\n" +"- Shift: крастися/лізти вниз\n" "- Q: кинути предмет\n" "- I: інвентар\n" "- Мишка: поворот/дивитися\n" @@ -675,7 +821,7 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" -"Керування за замовчуванням:\n" +"Стандартне керування дотиком:\n" "Коли меню не відображається:\n" "- один дотик: активувати кнопку\n" "- дотикнутися двічі: встановити/використати\n" @@ -702,23 +848,19 @@ msgstr "Визначення предметів..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "КіБ/сек" #: src/game.cpp msgid "Media..." -msgstr "" +msgstr "Ресурси..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "МіБ/сек" #: src/game.cpp msgid "Node definitions..." -msgstr "" - -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "Далі" +msgstr "Визначення блоків..." #: src/game.cpp msgid "Resolving address..." @@ -726,7 +868,7 @@ msgstr "Отримання адреси..." #: src/game.cpp msgid "Respawn" -msgstr "Народитися" +msgstr "Переродитися" #: src/game.cpp msgid "Shutting down..." @@ -740,16 +882,19 @@ msgstr "Гучність звуку" msgid "You died." msgstr "Ви загинули." +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "гаразд" + #: src/guiFormSpecMenu.cpp msgid "Enter " -msgstr "" +msgstr "Ввід " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "" +msgid "Proceed" +msgstr "Далі" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Use\" = climb down" msgstr "\"Використовувати\" = підніматися в гору" @@ -763,7 +908,7 @@ msgstr "Чат" #: src/guiKeyChangeMenu.cpp msgid "Command" -msgstr "Комманда" +msgstr "Команда" #: src/guiKeyChangeMenu.cpp msgid "Console" @@ -771,7 +916,7 @@ msgstr "Консоль" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "Подвійний \"Стрибок\" щоб полетіти" +msgstr "Двічі доторкніться до \"стрибок\" щоб полетіти" #: src/guiKeyChangeMenu.cpp msgid "Drop" @@ -805,7 +950,7 @@ msgstr "Ліворуч" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" -msgstr "Надрукувати стек" +msgstr "Надрукувати стак" #: src/guiKeyChangeMenu.cpp msgid "Range select" @@ -820,9 +965,8 @@ msgid "Sneak" msgstr "Крастися" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "Переключити швидкий режим" +msgstr "Переключити кінематографічний режим" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -834,7 +978,7 @@ msgstr "Переключити режим польоту" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Переключити режим проходження скрізь стін" +msgstr "Переключити режим проходження крізь стіни" #: src/guiKeyChangeMenu.cpp msgid "Use" @@ -877,12 +1021,10 @@ msgid "Apps" msgstr "Додатки" #: src/keycode.cpp -#, fuzzy msgid "Attn" msgstr "Увага" #: src/keycode.cpp -#, fuzzy msgid "Back" msgstr "Назад" @@ -903,7 +1045,6 @@ msgid "Control" msgstr "Ctrl" #: src/keycode.cpp -#, fuzzy msgid "Convert" msgstr "Конвертувати" @@ -917,21 +1058,19 @@ msgstr "Вниз" #: src/keycode.cpp msgid "End" -msgstr "Кінець" +msgstr "" #: src/keycode.cpp -#, fuzzy msgid "Erase OEF" -msgstr "Erase OEF" +msgstr "" #: src/keycode.cpp msgid "Escape" msgstr "Esc" #: src/keycode.cpp -#, fuzzy msgid "ExSel" -msgstr "ExSel" +msgstr "" #: src/keycode.cpp msgid "Execute" @@ -946,9 +1085,8 @@ msgid "Help" msgstr "Допомога" #: src/keycode.cpp -#, fuzzy msgid "Home" -msgstr "Home" +msgstr "" #: src/keycode.cpp msgid "Insert" @@ -972,7 +1110,7 @@ msgstr "Ліва кнопка" #: src/keycode.cpp msgid "Left Control" -msgstr "Ліва клавіша Control" +msgstr "Ліва клавіша Ctrl" #: src/keycode.cpp msgid "Left Menu" @@ -984,7 +1122,7 @@ msgstr "Ліва клавіша Shift" #: src/keycode.cpp msgid "Left Windows" -msgstr "Ліва клавіша Win (Command)" +msgstr "Ліва клавіша Win" #: src/keycode.cpp msgid "Menu" @@ -1004,12 +1142,11 @@ msgstr "Змінити режим" #: src/keycode.cpp msgid "Next" -msgstr "Page Up" +msgstr "" #: src/keycode.cpp -#, fuzzy msgid "Nonconvert" -msgstr "Не конвертуванно" +msgstr "Не обернено" #: src/keycode.cpp msgid "Num Lock" @@ -1073,7 +1210,7 @@ msgstr "Num 9" #: src/keycode.cpp msgid "OEM Clear" -msgstr "Очистити OEM" +msgstr "" #: src/keycode.cpp msgid "PA1" @@ -1096,21 +1233,22 @@ msgid "Print" msgstr "Print Screen" #: src/keycode.cpp +#, fuzzy msgid "Prior" msgstr "Page Down" #: src/keycode.cpp -#, fuzzy msgid "Return" -msgstr "Enter" +msgstr "Ввід" #: src/keycode.cpp +#, fuzzy msgid "Right Button" msgstr "Права кнопка" #: src/keycode.cpp msgid "Right Control" -msgstr "Права клавіша Control" +msgstr "Права клавіша Ctrl" #: src/keycode.cpp msgid "Right Menu" @@ -1122,7 +1260,7 @@ msgstr "Права клавіша Shift" #: src/keycode.cpp msgid "Right Windows" -msgstr "Права клавіша Win (Command)" +msgstr "Права клавіша Win" #: src/keycode.cpp msgid "Scroll Lock" @@ -1145,9 +1283,8 @@ msgid "Snapshot" msgstr "Знімок" #: src/keycode.cpp -#, fuzzy msgid "Space" -msgstr "Space" +msgstr "Пробіл" #: src/keycode.cpp msgid "Tab" @@ -1172,18 +1309,29 @@ msgstr "Збільшити" #: src/settings_translation_file.cpp msgid "" -"0 = parallax occlusion with slope information (faster).\n" -"1 = relief mapping (slower, more accurate)." +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp #, fuzzy +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" +"0 = технологія \"parallax occlusion\" з інформацією про криві (швидше)\n" +"1 = технологія \"relief mapping\" (повільніше, більш акуратніше)" + +#: src/settings_translation_file.cpp msgid "3D clouds" -msgstr "3D Хмари" +msgstr "Об'ємні хмари" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D режим" #: src/settings_translation_file.cpp msgid "" @@ -1193,7 +1341,8 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" #: src/settings_translation_file.cpp @@ -1218,6 +1367,14 @@ msgstr "" msgid "Acceleration in air" msgstr "" +#: src/settings_translation_file.cpp +msgid "Active Block Management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifier interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Active block range" msgstr "" @@ -1249,6 +1406,10 @@ msgstr "" msgid "Advanced" msgstr "Додатково" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "" + #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "" @@ -1258,7 +1419,10 @@ msgid "Ambient occlusion gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Amplifies the valleys" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "Анізотропна фільтрація" @@ -1273,6 +1437,10 @@ msgid "" "minetest.net." msgstr "" +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "" + #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" @@ -1286,69 +1454,109 @@ msgstr "" msgid "Backward key" msgstr "Назад" +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "" + #: src/settings_translation_file.cpp msgid "Basic" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Basic Privileges" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "Білінійна фільтрація" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Отримання адреси..." +msgstr "Закріплення адреси" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "Мережева гра" +msgstr "Будувати в межах гравця" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "MIP-текстурування" +msgstr "Бамп-маппінг" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Згладжування руху камери" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "Згладжування руху камери у кінорежимі" #: src/settings_translation_file.cpp +#, fuzzy msgid "Camera update toggle key" +msgstr "Клавіша для контролю оновлення камери" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Chat key" -msgstr "Змінити клавіши" +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "Чат" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Змінити клавіши" +msgstr "Чат" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Режим творчості" +msgstr "Кінорежим" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Режим творчості" +msgstr "Кінорежим" #: src/settings_translation_file.cpp msgid "Clean transparent textures" @@ -1371,18 +1579,16 @@ msgid "Cloud radius" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D Хмари" +msgstr "Хмари" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "Головне меню" +msgstr "Хмари в меню" #: src/settings_translation_file.cpp msgid "Colored fog" @@ -1395,36 +1601,36 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Command key" -msgstr "Комманда" +msgstr "Команда" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "Підключитися" +msgstr "З'єднувати скло" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "Підключення до сервера..." +msgstr "Підключення до зовнішнього медіасервера" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Консоль" +msgstr "Консоль (альфа)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "Консоль" +msgstr "Колір консолі" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" msgstr "Консоль" @@ -1437,9 +1643,8 @@ msgid "Continuous forward movement (only used for testing)." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Ctrl" +msgstr "Керування" #: src/settings_translation_file.cpp msgid "" @@ -1450,14 +1655,38 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" + #: src/settings_translation_file.cpp msgid "Crash message" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" + #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "" @@ -1483,9 +1712,8 @@ msgid "DPI" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Увімкнути ушкодження" +msgstr "Поранення" #: src/settings_translation_file.cpp msgid "Debug info toggle key" @@ -1514,13 +1742,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Новий Пароль" +msgstr "Стандартний пароль" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Стандартні права" #: src/settings_translation_file.cpp msgid "" @@ -1546,6 +1773,14 @@ msgstr "" msgid "Deprecated Lua API handling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "Descending speed" msgstr "" @@ -1569,9 +1804,15 @@ msgid "Detailed mod profiling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Disable anticheat" -msgstr "Ввімкнути частки" +msgstr "Вимкнути античіт" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" @@ -1582,14 +1823,12 @@ msgid "Domain name of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "Подвійний \"Стрибок\" щоб полетіти" +msgstr "Подвійний дотик до \"стрибок\" щоб полетіти" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Подвійний \"Стрибок\" щоб полетіти" +msgstr "Подвійний дотик \"стрибок\" вмикає режим польоту." #: src/settings_translation_file.cpp msgid "Drop item key" @@ -1600,8 +1839,8 @@ msgid "Dump the mapgen debug infos." msgstr "" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "Увімкнути VBO" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -1615,10 +1854,6 @@ msgstr "" msgid "Enable random user input (only used for testing)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" @@ -1649,6 +1884,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1662,9 +1901,12 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Увімкнути ушкодження" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1731,7 +1973,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp @@ -1748,6 +1990,14 @@ msgid "" "the Multiplayer Tab." msgstr "" +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" @@ -1757,9 +2007,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Анізотропна фільтрація" +msgstr "Фільтрація" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -1775,7 +2024,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Туман" #: src/settings_translation_file.cpp msgid "Fog toggle key" @@ -1806,9 +2055,12 @@ msgid "Font size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Forward key" -msgstr "Уперед" +msgstr "Вперед" #: src/settings_translation_file.cpp msgid "Freetype fonts" @@ -1832,7 +2084,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Повний екран" #: src/settings_translation_file.cpp msgid "Full screen BPP" @@ -1840,7 +2092,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Повноекранний режим." #: src/settings_translation_file.cpp msgid "GUI scaling" @@ -1860,25 +2112,36 @@ msgid "Gamma" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "General" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Generate normalmaps" -msgstr "Генерувати карти нормалей" +msgstr "Генерувати карти нормалів" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Графіка" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Гравітація" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP Модифікації" #: src/settings_translation_file.cpp msgid "HUD toggle key" @@ -1892,6 +2155,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "" @@ -1905,7 +2172,7 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." +msgid "How deep to make rivers" msgstr "" #: src/settings_translation_file.cpp @@ -1930,6 +2197,10 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -1949,21 +2220,23 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "Вимкнути багатокористувацьку гру" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "Увімкнено" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2001,9 +2274,8 @@ msgid "Ignore world errors" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Гра" +msgstr "У грі" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -2022,7 +2294,10 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Inventory key" msgstr "Інвентар" @@ -2039,7 +2314,41 @@ msgid "Item entity TTL" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Jump key" msgstr "Стрибок" @@ -2049,7 +2358,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2063,7 +2372,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2258,6 +2567,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Language" +msgstr "Мова" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lava Features" msgstr "" #: src/settings_translation_file.cpp @@ -2273,9 +2590,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Ліва клавіша Menu" +msgstr "Ліва клавіша" #: src/settings_translation_file.cpp msgid "" @@ -2283,6 +2599,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2345,14 +2669,12 @@ msgid "Main menu game manager" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "Головне меню" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Головне меню" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -2369,21 +2691,51 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp @@ -2402,6 +2754,10 @@ msgstr "" msgid "Mapblock unload timeout" msgstr "" +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" msgstr "" @@ -2415,28 +2771,140 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Генератор карти" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Генератор карти" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Генератор карти" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v5" -msgstr "Генератор карти" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5 cave width" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2459,9 +2927,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "Генератор карти" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2520,9 +2987,12 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "Генератор карти" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7 cave width" +msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2572,6 +3042,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2676,7 +3158,6 @@ msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" msgstr "Меню" @@ -2692,6 +3173,10 @@ msgstr "" msgid "Message of the day displayed to players connecting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -2709,16 +3194,8 @@ msgid "Minimum texture size for filters" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "MIP-текстурування" +msgstr "Mіп-текстурування" #: src/settings_translation_file.cpp msgid "Mod profiling" @@ -2792,10 +3269,6 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" - #: src/settings_translation_file.cpp msgid "New users need to input this password." msgstr "" @@ -2812,10 +3285,18 @@ msgstr "" msgid "Node highlighting" msgstr "" +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" msgstr "" @@ -2857,38 +3338,28 @@ msgid "Overall scale of parallax occlusion effect." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Оклюзія паралакса" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "Оклюзія паралакса" +msgstr "Паралаксова оклюзія" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "Оклюзія паралакса" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "Оклюзія паралакса" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "Оклюзія паралакса" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "Оклюзія паралакса" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "Оклюзія паралакса" +msgstr "" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." @@ -2909,13 +3380,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "Ім'я гравця надто довге." +msgstr "Ім'я гравця" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -2932,20 +3402,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "Завантаження текстур..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2967,12 +3428,15 @@ msgid "" "corners." msgstr "" +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" msgstr "Вибір діапазону" @@ -2989,14 +3453,29 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Права клавіша Menu" +msgstr "Права клавіша" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" msgstr "" +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "" + #: src/settings_translation_file.cpp msgid "Rollback recording" msgstr "" @@ -3031,14 +3510,28 @@ msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "Знімок" +msgstr "Знімок екрану" #: src/settings_translation_file.cpp msgid "Screenshot folder" msgstr "" +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "Формат знімку" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "Якість знімку" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + #: src/settings_translation_file.cpp msgid "Security" msgstr "" @@ -3060,43 +3553,36 @@ msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Почати однокористувацьку гру" +msgstr "Сервер / Гра" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Сервер" +msgstr "Адреса сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Сервер" +msgstr "Адреса сервера" #: src/settings_translation_file.cpp msgid "Server description" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Сервер" +msgstr "Назва сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "Сервер" +msgstr "Порт сервера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Список публічних серверів" +msgstr "Адреса списку публічних серверів" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Список публічних серверів" +msgstr "Файл списку публічних серверів" #: src/settings_translation_file.cpp msgid "" @@ -3122,10 +3608,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "Шейдери" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3141,6 +3623,10 @@ msgstr "" msgid "Show debug info" msgstr "" +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + #: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -3152,13 +3638,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" -msgstr "Рівне освітлення" +msgstr "Згладжене освітлення" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3171,7 +3660,6 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" msgstr "Крастися" @@ -3192,9 +3680,8 @@ msgid "Static spawnpoint" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Генерувати карти нормалей" +msgstr "" #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -3204,20 +3691,42 @@ msgstr "" msgid "Strict protocol checking" msgstr "" +#: src/settings_translation_file.cpp +msgid "Support older servers" +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "Набори текстур" +msgid "Terrain Height" +msgstr "" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "Шлях до текстури" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" msgstr "" #: src/settings_translation_file.cpp @@ -3259,6 +3768,10 @@ msgstr "" msgid "This font will be used for certain languages." msgstr "" +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Time in seconds for item entity (dropped items) to live.\n" @@ -3294,7 +3807,6 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Трилінійна фільтрація" @@ -3338,9 +3850,8 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "Натисніть клавішу" +msgstr "" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." @@ -3359,7 +3870,27 @@ msgid "V-Sync" msgstr "" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" msgstr "" #: src/settings_translation_file.cpp @@ -3374,6 +3905,12 @@ msgstr "" msgid "View bobbing" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" +msgstr "" + #: src/settings_translation_file.cpp msgid "View range decrease key" msgstr "" @@ -3383,24 +3920,27 @@ msgid "View range increase key" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" +msgid "Viewing range" msgstr "" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "Гучність звуку" +#: src/settings_translation_file.cpp +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" +msgid "Water Features" msgstr "" #: src/settings_translation_file.cpp @@ -3414,12 +3954,11 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy msgid "Waving Nodes" -msgstr "Ініціалізація вузлів" +msgstr "Блоки, що коливаються" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Гарне листя" +msgstr "Листя, що коливається" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -3511,6 +4050,18 @@ msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3521,6 +4072,14 @@ msgid "" "Not needed if starting from the main menu." msgstr "" +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "" + #: src/settings_translation_file.cpp msgid "cURL file download timeout" msgstr "" @@ -3534,98 +4093,98 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Game Name" -#~ msgstr "Гра" +#~ msgid "Preload inventory textures" +#~ msgstr "Завантаження текстур..." -#~ msgid "Favorites:" -#~ msgstr "Улюблені:" +#~ msgid "Reset singleplayer world" +#~ msgstr "Скинути світ однокористувацької гри" + +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "Масштабування елементів меню: " #, fuzzy -#~ msgid "Password" -#~ msgstr "Старий Пароль" - -#~ msgid "Preload item visuals" -#~ msgstr "Попереднє завантаження зображень" - -#, fuzzy -#~ msgid "Finite Liquid" -#~ msgstr "Кінцеві рідини" - -#~ msgid "Failed to delete all world files" -#~ msgstr "Помилка при видаленні файлів світу" - -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "Неможливо налаштувати світ: Нічого не вибрано" - -#~ msgid "Cannot create world: No games found" -#~ msgstr "Неможливо створити світ: Не знайдено жодної гри" - -#~ msgid "Files to be deleted" -#~ msgstr "Файлів, що підлягають видаленню" - -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "Неможливо видалити світ: Нічого не вибрано" - -#~ msgid "Address required." -#~ msgstr "Адреса необхідна." - -#~ msgid "Create world" -#~ msgstr "Створити світ" - -#~ msgid "Leave address blank to start a local server." -#~ msgstr "Залишіть адресу незаповненою для створення локального серверу." - -#~ msgid "Show Favorites" -#~ msgstr "Показати Улюблені" - -#~ msgid "Show Public" -#~ msgstr "Показати Публічні" - -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "Неможливо створити світ: Ім'я містить недопустимі символи" - -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "Попередження: Помилкова конфігурація. " - -#~ msgid "Configuration saved. " -#~ msgstr "Налаштування Збережено. " - -#~ msgid "is required by:" -#~ msgstr "необхідний для:" +#~ msgid "Downloading" +#~ msgstr "Вниз" #~ msgid "Left click: Move all items, Right click: Move single item" #~ msgstr "" #~ "Ліва кнопка миші: Перемістити усі предмети, Права кнопка миші: " #~ "Перемістити один предмет" +#~ msgid "is required by:" +#~ msgstr "необхідний для:" + +#~ msgid "Configuration saved. " +#~ msgstr "Налаштування Збережено. " + +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "Попередження: Помилкова конфігурація. " + +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "Неможливо створити світ: Ім'я містить недопустимі символи" + +#~ msgid "Show Public" +#~ msgstr "Показати Публічні" + +#~ msgid "Show Favorites" +#~ msgstr "Показати Улюблені" + +#~ msgid "Leave address blank to start a local server." +#~ msgstr "Залишіть адресу незаповненою для створення локального серверу." + +#~ msgid "Create world" +#~ msgstr "Створити світ" + +#~ msgid "Address required." +#~ msgstr "Адреса необхідна." + +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "Неможливо видалити світ: Нічого не вибрано" + +#~ msgid "Files to be deleted" +#~ msgstr "Файлів, що підлягають видаленню" + +#~ msgid "Cannot create world: No games found" +#~ msgstr "Неможливо створити світ: Не знайдено жодної гри" + +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "Неможливо налаштувати світ: Нічого не вибрано" + +#~ msgid "Failed to delete all world files" +#~ msgstr "Помилка при видаленні файлів світу" + #, fuzzy -#~ msgid "Downloading" -#~ msgstr "Вниз" +#~ msgid "Finite Liquid" +#~ msgstr "Кінцеві рідини" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "" -#~ "Для того, щоб увімкнути шейдери, потрібно використовувати двайвер OpenGL." +#~ msgid "Preload item visuals" +#~ msgstr "Попереднє завантаження зображень" -#~ msgid "Texturing:" -#~ msgstr "Текстурування:" +#, fuzzy +#~ msgid "Password" +#~ msgstr "Старий Пароль" -#~ msgid "Simple Leaves" -#~ msgstr "Просте листя" +#, fuzzy +#~ msgid "Game Name" +#~ msgstr "Гра" -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "Масштабування елементів меню: " +#, fuzzy +#~ msgid "If enabled, " +#~ msgstr "Увімкнено" -#~ msgid "Reset singleplayer world" -#~ msgstr "Скинути світ однокористувацької гри" - -#~ msgid "Opaque Water" -#~ msgstr "Непрозора вода" - -#~ msgid "Opaque Leaves" -#~ msgstr "Непрозоре листя" +#, fuzzy +#~ msgid "If disabled " +#~ msgstr "Вимкнути багатокористувацьку гру" #~ msgid "No!!!" #~ msgstr "Ні!!!" -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "Ви впевнені, що бажаєте скинути свій світ однокористувацької гри?" +#, fuzzy +#~ msgid "Generate Normalmaps" +#~ msgstr "Генерувати карти нормалей" + +#~ msgid "Public Serverlist" +#~ msgstr "Список публічних серверів" + +#~ msgid "No of course not!" +#~ msgstr "Ні, звісно ні!" diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index dadf8cef..62ebcd21 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -2,32 +2,31 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-04-19 02:00+0800\n" -"Last-Translator: Ang Weijie \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-05-05 19:09+0000\n" +"Last-Translator: Claybiokiller \n" +"Language-Team: Chinese (China) " +"\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 1.7-dev\n" +"X-Generator: Weblate 2.7-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "" +msgstr "Lua 脚本发生错误,如一个 mod:" #: builtin/fstk/ui.lua msgid "An error occured:" -msgstr "" +msgstr "发生了一个错误:" #: builtin/fstk/ui.lua -#, fuzzy msgid "Main menu" msgstr "主菜单" @@ -36,13 +35,12 @@ msgid "Ok" msgstr "确定" #: builtin/fstk/ui.lua -#, fuzzy msgid "Reconnect" -msgstr "连接" +msgstr "重新连接" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "服务器已要求重新连接:" #: builtin/mainmenu/common.lua src/game.cpp msgid "Loading..." @@ -50,37 +48,39 @@ msgstr "载入中..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "协议版本不匹配。 " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "服务器强制协议版本为 $1。 " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "服务器支持协议版本为 $1 至 $2。 " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." -msgstr "" +msgstr "请尝试重新启用公共服务器列表并检查您的网络连接。" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "我们只支持协议版本 $1。" #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "我们支持的协议版本为 $1 至 $2。" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "取消" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua msgid "Depends:" -msgstr "依赖于:" +msgstr "依赖:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" @@ -98,7 +98,7 @@ msgstr "全部启用" msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." -msgstr "" +msgstr "无法启用 MOD \"$1\":含有不支持的字符。允许的字符为 [a-z0-9_]。" #: builtin/mainmenu/dlg_config_world.lua msgid "Hide Game" @@ -110,10 +110,10 @@ msgstr "隐藏MOD包内容" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "MOD:" +msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "保存" @@ -135,11 +135,11 @@ msgstr "创建" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" -msgstr "从minetest.net下载一个游戏,例如:minetest_game" +msgstr "从 minetest.net 下载一个子游戏,例如 minetest_game" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "从minetest.net下载一个" +msgstr "从 minetest.net 下载一个" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -151,7 +151,7 @@ msgstr "地图生成器" #: builtin/mainmenu/dlg_create_world.lua msgid "No worldname given or no game selected" -msgstr "未给定世界名或未选择游戏" +msgstr "未指定世界名或未选择游戏" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" @@ -159,7 +159,7 @@ msgstr "种子" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "警告: 最小化开发测试为开发人员所使用。" +msgstr "警告: 最小化开发测试是为开发者提供。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -167,35 +167,29 @@ msgstr "世界名称" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." -msgstr "你没有安装任何游戏" +msgstr "你没有安装任何子游戏。" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "你确认要删除\"$1\"?" +msgstr "你确认要删除“$1”?" + +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "删除" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" -msgstr "MOD管理器:无法删除“$1“" +msgstr "MOD管理器:无法删除“$1”" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" msgstr "MOD管理器:MOD“$1“路径非法" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "当然不!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "是" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "删除世界“$1”?" - -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "否" +msgstr "删除世界“$1”?" #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" @@ -205,14 +199,101 @@ msgstr "接受" msgid "Rename Modpack:" msgstr "重命名MOD包:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "\"$1\" 不是合法的 flag." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(没有关于此设置的信息)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< 返回设置页面" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "浏览" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "已禁用" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "设置" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "已启用" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "格式: (X, Y, Z)." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"格式: , , (, , ), , " +", " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "游戏" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mod" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "可选附加一逗号起始的孔隙度参数。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "请输入 flag, 多个 flag 以半角逗号分隔." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "请输入一个整数类型." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "请输入一个合法的数字." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "可设置的 flag: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "回复初始设置" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "选择路径" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "显示高级设置" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "这个值必须大于 $1." + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "这个值必须小于 $1." + #: builtin/mainmenu/modmgr.lua -#, fuzzy msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" -"安装MOD:不支持的文件类型“$1“" +"安装MOD:不支持的文件类型“$1“或文件损坏" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" @@ -235,9 +316,8 @@ msgid "Close store" msgstr "关闭商店" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Downloading $1, please wait..." -msgstr "请稍候..." +msgstr "正在下载 $1, 请稍候..." #: builtin/mainmenu/store.lua msgid "Install" @@ -256,9 +336,8 @@ msgid "Search" msgstr "搜索" #: builtin/mainmenu/store.lua -#, fuzzy msgid "Shortname:" -msgstr "短名称" +msgstr "短名称:" #: builtin/mainmenu/store.lua msgid "Successfully installed:" @@ -278,20 +357,19 @@ msgstr "积极贡献者" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "内部开发人员" +msgstr "核心开发者" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "归功" +msgstr "贡献者" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "前贡献者" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "内部开发人员" +msgstr "前核心开发者" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" @@ -301,10 +379,6 @@ msgstr "已安装的MOD:" msgid "Mod information:" msgstr "MOD资料:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "MODS" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "无MOD资料可得" @@ -327,8 +401,8 @@ msgstr "删除选中的MOD包" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy -msgid "Address / Port :" -msgstr "地址/端口" +msgid "Address / Port" +msgstr "地址/端口:" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp msgid "Client" @@ -339,33 +413,31 @@ msgid "Connect" msgstr "连接" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "创造模式" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Damage enabled" -msgstr "启用" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "删除" - -#: builtin/mainmenu/tab_multiplayer.lua -#, fuzzy -msgid "Name / Password :" -msgstr "名字/密码" - -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "公共服务器列表" +msgstr "启用伤害" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy +msgid "Del. Favorite" +msgstr "最爱的服务器:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Favorite" +msgstr "最爱的服务器:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "用户名/密码:" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "启用" +msgstr "启用 PvP" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" @@ -385,7 +457,7 @@ msgstr "创造模式" msgid "Enable Damage" msgstr "开启伤害风险" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "名字/密码" @@ -394,9 +466,8 @@ msgid "New" msgstr "新建" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua -#, fuzzy msgid "No world created or selected!" -msgstr "未给定世界名或未选择游戏" +msgstr "未创建或选择世界!" #: builtin/mainmenu/tab_server.lua msgid "Port" @@ -423,102 +494,170 @@ msgid "Start Game" msgstr "启动游戏" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "两倍" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D 云彩" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "四倍" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "八倍" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "高级设置" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "抗锯齿:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "你确定要重置您的单人世界吗?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "双线性过滤" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "凹凸贴图" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" -msgstr "改变键位设置" +msgstr "更改键位设置" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "连接的玻璃" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "华丽的树叶" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mip 贴图" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mip 贴图 + Aniso 过滤" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "否" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "无过滤" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "无 Mip 贴图" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "节点高亮" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Disabled" -msgstr "禁用MOD包" +msgid "Node Outlining" +msgstr "节点高亮" -#: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "无" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "启用" +msgid "Normal Mapping" +msgstr "一般地图采样" #: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +msgid "Opaque Leaves" +msgstr "不透明的树叶" #: builtin/mainmenu/tab_settings.lua -msgid "Games" -msgstr "游戏" +msgid "Opaque Water" +msgstr "不透明的水" -#: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "视差贴图" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "选择" +msgid "Particles" +msgstr "启用粒子" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "设置" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "着色器" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "简单的树叶" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "平滑光照" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "纹理:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "启用着色器需要使用OpenGL驱动。" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "色调映射" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "触控阈值(像素)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "三线性过滤" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "飘动的树叶" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "摇摆的植物" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "流动的水面" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "是" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "配置MOD" +msgstr "配置 MOD" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "主菜单" +msgstr "主要" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" msgstr "单人游戏" @@ -532,51 +671,39 @@ msgstr "单人游戏" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" -msgstr "无资料可得" - -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "" +msgstr "无信息可用" #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "选择材质包:" #: builtin/mainmenu/tab_texturepacks.lua -#, fuzzy msgid "Texturepacks" msgstr "材质包" #: src/client.cpp -#, fuzzy msgid "Connection timed out." -msgstr "连接出错(超时?)" +msgstr "连接超时。" #: src/client.cpp msgid "Done!" -msgstr "" +msgstr "完成!" #: src/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "初始化节点中" #: src/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "初始化节点..." #: src/client.cpp -msgid "Item textures..." -msgstr "物品材质..." - -#: src/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "载入中..." +msgstr "载入材质..." #: src/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "正在解析地址..." +msgstr "重建渲染器..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -600,11 +727,11 @@ msgstr "没有选择世界或提供地址。未执行操作。" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "玩家的名字太长了" +msgstr "玩家名称太长了。" #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "提供世界地址不存在" +msgstr "提供的世界路径不存在: " #: src/fontengine.cpp msgid "needs_fallback_font" @@ -619,9 +746,8 @@ msgstr "" "查看 debug.txt 以获得详细信息。" #: src/game.cpp -#, fuzzy msgid "Change Keys" -msgstr "改变键位设置" +msgstr "更改键位设置" #: src/game.cpp msgid "Change Password" @@ -640,9 +766,8 @@ msgid "Creating client..." msgstr "正在建立客户端..." #: src/game.cpp -#, fuzzy msgid "Creating server..." -msgstr "正在建立服务器...." +msgstr "建立服务器...." #: src/game.cpp msgid "" @@ -685,6 +810,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"默认控制:\n" +"菜单不可见时:\n" +"- 单击: 激活按钮\n" +"- 双击: 放置/使用\n" +"- 滑动手指: 改变视角\n" +"菜单/物品栏可见时:\n" +"- 双击 (界面区域外):\n" +" --> 关闭\n" +"- 点击物品, 然后点击栏位:\n" +" --> 移动一组物品\n" +"- 点击物品并拖动, 然后另一手指点击\n" +" --> 移动一个物品\n" #: src/game.cpp msgid "Exit to Menu" @@ -700,7 +837,7 @@ msgstr "物品定义..." #: src/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/game.cpp msgid "Media..." @@ -708,16 +845,12 @@ msgstr "媒体..." #: src/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/game.cpp msgid "Node definitions..." msgstr "方块定义..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "继续" - #: src/game.cpp msgid "Resolving address..." msgstr "正在解析地址..." @@ -727,9 +860,8 @@ msgid "Respawn" msgstr "重生" #: src/game.cpp -#, fuzzy msgid "Shutting down..." -msgstr "关闭中......" +msgstr "关闭..." #: src/game.cpp msgid "Sound Volume" @@ -739,14 +871,18 @@ msgstr "音量" msgid "You died." msgstr "你死了。" -#: src/guiFormSpecMenu.cpp -msgid "Enter " -msgstr "输入" - -#: src/guiFormSpecMenu.cpp +#: src/game.cpp src/guiFormSpecMenu.cpp msgid "ok" msgstr "确定" +#: src/guiFormSpecMenu.cpp +msgid "Enter " +msgstr "输入 " + +#: src/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "继续" + #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" msgstr "“使用” = 向下爬" @@ -793,7 +929,7 @@ msgstr "按键已被占用" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" -msgstr "键位配置。(如果这个菜单被弄乱,从minetest.conf中删掉点东西)" +msgstr "键位配置。(如果这个菜单被弄乱,从 minetest.conf 中删掉点东西)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" @@ -816,9 +952,8 @@ msgid "Sneak" msgstr "潜行" #: src/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle Cinematic" -msgstr "切换快速移动模式" +msgstr "切换电影模式" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -882,7 +1017,7 @@ msgstr "退格" #: src/keycode.cpp msgid "Capital" -msgstr "大写" +msgstr "大写锁定键" #: src/keycode.cpp msgid "Clear" @@ -918,7 +1053,7 @@ msgstr "Erase OEF键" #: src/keycode.cpp msgid "Escape" -msgstr "Escape键" +msgstr "Esc键" #: src/keycode.cpp msgid "ExSel" @@ -942,7 +1077,7 @@ msgstr "Home键" #: src/keycode.cpp msgid "Insert" -msgstr "插入" +msgstr "Insert键" #: src/keycode.cpp msgid "Junja" @@ -950,7 +1085,7 @@ msgstr "Junja键" #: src/keycode.cpp msgid "Kana" -msgstr "假名" +msgstr "Kana键" #: src/keycode.cpp msgid "Kanji" @@ -966,7 +1101,7 @@ msgstr "左Control键" #: src/keycode.cpp msgid "Left Menu" -msgstr "左菜单" +msgstr "左菜单键" #: src/keycode.cpp msgid "Left Shift" @@ -974,7 +1109,7 @@ msgstr "左Shift键" #: src/keycode.cpp msgid "Left Windows" -msgstr "左窗口" +msgstr "左Windows键" #: src/keycode.cpp msgid "Menu" @@ -990,7 +1125,7 @@ msgstr "减号" #: src/keycode.cpp msgid "Mode Change" -msgstr "改变模式" +msgstr "更改模式" #: src/keycode.cpp msgid "Next" @@ -998,11 +1133,11 @@ msgstr "下一个" #: src/keycode.cpp msgid "Nonconvert" -msgstr "无变换" +msgstr "无转换" #: src/keycode.cpp msgid "Num Lock" -msgstr "小键盘锁" +msgstr "数字锁定键" #: src/keycode.cpp msgid "Numpad *" @@ -1070,7 +1205,7 @@ msgstr "PA1键" #: src/keycode.cpp msgid "Pause" -msgstr "暂停" +msgstr "Pause键" #: src/keycode.cpp msgid "Period" @@ -1082,7 +1217,7 @@ msgstr "加号" #: src/keycode.cpp msgid "Print" -msgstr "打印" +msgstr "Print键" #: src/keycode.cpp msgid "Prior" @@ -1090,7 +1225,7 @@ msgstr "Prior键" #: src/keycode.cpp msgid "Return" -msgstr "回车" +msgstr "回车键" #: src/keycode.cpp msgid "Right Button" @@ -1102,7 +1237,7 @@ msgstr "右Control键" #: src/keycode.cpp msgid "Right Menu" -msgstr "右菜单" +msgstr "右菜单键" #: src/keycode.cpp msgid "Right Shift" @@ -1110,7 +1245,7 @@ msgstr "右Shift键" #: src/keycode.cpp msgid "Right Windows" -msgstr "右窗口" +msgstr "右Windows键" #: src/keycode.cpp msgid "Scroll Lock" @@ -1118,7 +1253,7 @@ msgstr "Scroll Lock键" #: src/keycode.cpp msgid "Select" -msgstr "选择" +msgstr "选择键" #: src/keycode.cpp msgid "Shift" @@ -1156,21 +1291,34 @@ msgstr "X键2" msgid "Zoom" msgstr "缩放" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"在「比例尺」中分形的 (X,Y,Z) 偏移。\n" +"用于移动适合的低地生成区域靠近 (0, 0)。\n" +"预设值适合曼德尔布罗特集合,若要用于朱利亚集合则必须修改。\n" +"范围大约在 -2 至 2 间。乘以节点的偏移值。" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = 利用梯度信息进行视差遮蔽 (较快).\n" +"1 = 浮雕映射 (较慢, 但准确)." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" -msgstr "三维云彩" +msgstr "3D 云彩" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode" -msgstr "飞行模式" +msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "" @@ -1180,38 +1328,59 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3D 支持。\n" +"目前已支持:\n" +"- 无: 无 3D输出。\n" +"- 浮雕:青红/品红色彩色 3D。\n" +"- 交错:基于偏振屏的奇偶行支持。\n" +"- 顶底:上下分屏。\n" +"- 并列:左右分屏。\n" +"- 翻页:基于 3D 的四重缓冲。" #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"输入新地图的随机种子值,不填则随机生成。\n" +"在主菜单中创建新地图时将被覆盖。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "当服务器挂掉的时候,发送给所有客户端的信息。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "当关闭服务器时,发送给所有客户端的信息。" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "生产队列绝对限制" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "空中加速" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "活动块范围" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "活动块范围" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "活动块范围" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "活动目标发送范围" #: src/settings_translation_file.cpp msgid "" @@ -1219,39 +1388,51 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"服务器连接地址。\n" +"留空则启动一个本地服务器。\n" +"注意,主菜单的地址栏将会覆盖这里的设置。" #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." -msgstr "" +msgstr "为支持4K等屏幕,调节像素点密度(非 X11/Android 环境才有效)。" #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"调整亮度表的伽玛编码。较低的数值会较亮。\n" +"这个设定是给客户端使用的,会被服务器忽略。" #: src/settings_translation_file.cpp msgid "Advanced" msgstr "高级联机设置" +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "海拔寒冷" + #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "保持高速飞行" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "环境闭塞伽马" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "放大山谷" #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "各向异性过滤" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "发布服务器" #: src/settings_translation_file.cpp msgid "" @@ -1259,174 +1440,240 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"发布到此服务器列表。\n" +"如果你想发布你的 IPv6 地址,使用 serverlist_url = v6.servers.minetest.net 。" + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "大约 (X,Y,Z) 的节点分形规模。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "崩溃后询问重新连接" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "自动报告到服务器列表。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "向后" +msgstr "后退键" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "基础地形高度" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "基础" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "默认权限" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "双线性过滤" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "绑定地址" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "全屏模式中的位/像素(又称色彩深度)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Build inside player" -msgstr "多人游戏" +msgstr "建立内部玩家" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "贴图处理" +msgstr "凹凸贴图" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "镜头平滑" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "电影模式下镜头平滑" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "镜头更新切换键" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "洞穴噪音 #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "洞穴噪音 #2" #: src/settings_translation_file.cpp #, fuzzy +msgid "Cave width" +msgstr "屏幕宽度" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "洞穴与隧道由两种噪音的交集形成" + +#: src/settings_translation_file.cpp msgid "Chat key" -msgstr "改变键位设置" +msgstr "聊天键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "改变键位设置" +msgstr "聊天切换键" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"从 9 种公式里选取 18 种分形。\n" +"1 = 4D \"Roundy\" 曼德尔布罗特集.\n" +"2 = 4D \"Roundy\" 朱利亚集.\n" +"3 = 4D \"Squarry\" 曼德尔布罗特集.\n" +"4 = 4D \"Squarry\" 朱利亚集.\n" +"5 = 4D \"Mandy Cousin\" 曼德尔布罗特集.\n" +"6 = 4D \"Mandy Cousin\" 朱利亚集.\n" +"7 = 4D \"Variation\" 曼德尔布罗特集.\n" +"8 = 4D \"Variation\" 朱利亚集.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" 曼德尔布罗特集.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" 朱利亚集.\n" +"11 = 3D \"Christmas Tree\" 曼德尔布罗特集.\n" +"12 = 3D \"Christmas Tree\" 朱利亚集.\n" +"13 = 3D \"Mandelbulb\" 曼德尔布罗特集.\n" +"14 = 3D \"Mandelbulb\" 朱利亚集.\n" +"15 = 3D \"Cosine Mandelbulb\" 曼德尔布罗特集.\n" +"16 = 3D \"Cosine Mandelbulb\" 朱利亚集.\n" +"17 = 4D \"Mandelbulb\" 曼德尔布罗特集.\n" +"18 = 4D \"Mandelbulb\" 朱利亚集." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "块大小" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "创造模式" +msgstr "电影模式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "创造模式" +msgstr "电影模式键" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "干净透明纹理" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "客户端和服务器" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "攀登速度" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "云高度" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "云半径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "三维云彩" +msgstr "云彩" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "云是客户端侧效果。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "主菜单" +msgstr "主菜单显示云彩" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "彩色雾" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"受信任的 Mod 列表,以逗号分隔,其可存取不安全的\n" +"功能,即便 mod 安全性已启用(经由 request_insecure_environment())。" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"以逗号分隔的 mod 清单,让您可以存取 HTTP API,\n" +"其可从互联网上传及下载资料。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "命令" +msgstr "命令键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "连接的玻璃" +msgstr "连接玻璃" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "正在连接服务器..." +msgstr "连接到外部媒体服务器" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "连接玻璃,如果节点支持。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "控制台" +msgstr "控制台透明" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "控制台" +msgstr "控制台颜色" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "控制台" +msgstr "控制台键" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "连续前进" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "连续向前移动(仅用于测试)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Ctrl键" +msgstr "控制" #: src/settings_translation_file.cpp msgid "" @@ -1434,93 +1681,126 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"控制日/夜循环的长度。\n" +"示例:72 = 20分钟,360 = 4分钟,1 = 24小时,0 = 日/夜/一切保持不变。" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"控制在 Mapgen v6 中的沙漠与沙滩大小。\n" +"当 snowbiomes 启用时「mgv6_freq_desert」会被忽略。" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "控制山丘的坡度/高度。" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "崩溃信息" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"在山洞中创建不可预知的熔岩特性。\n" +"这可以使挖掘更加困难。0 表示禁用。 (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "十字透明" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "十字线不透明度(0-255)。" #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "十字颜色" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "十字颜色 (红,绿,蓝)。" #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "蹲伏速度" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "开启伤害风险" +msgstr "伤害" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "调试信息切换键" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "调试日志级别" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "专用服务器步骤" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "默认加速度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "编辑游戏" +msgstr "默认游戏" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"创建新世界时默认游戏。\n" +"从主菜单创建一个新世界时这将被覆盖。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "新密码" +msgstr "默认密码" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "默认权限" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"cURL 的默认超时,单位毫秒。\n" +"仅使用 cURL 编译时有效果。" #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"定义纹理采样步骤。\n" +"数值越高常态贴图越平滑。" #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -1532,21 +1812,29 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" +msgstr "已弃用 Lua API 处理" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." msgstr "" #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "下降速度" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." -msgstr "" +msgstr "服务器描述,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "去同步块动画" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." @@ -1554,65 +1842,66 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Detailed mod profiling" +msgstr "详细 mod 剖析" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "启用粒子效果" +msgstr "禁用反作弊" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "禁止使用空密码" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "服务器域名,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "连按两次“跳”切换飞行模式" +msgstr "双击“跳跃”键飞行" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "连按两次“跳”切换飞行模式" +msgstr "连按两次“跳跃”键切换飞行模式。" #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "丢弃物品键" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "转储地图生成器调试信息。" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "启用 VBO" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "网上MOD库" +msgstr "启用 mod 安全" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "启用玩家受到伤害和死亡。" #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "启用随机用户输入(仅用于测试)。" #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"启用简单环境光闭塞的平滑光照。\n" +"禁用可影响速度和获得不同外观。" #: src/settings_translation_file.cpp msgid "" @@ -1638,6 +1927,10 @@ msgid "" "Ignored if bind_address is set." msgstr "" +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "启用库存物品动画。" + #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " @@ -1651,9 +1944,12 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Enables filmic tone mapping" +msgstr "启用电影基调映射" + +#: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "开启伤害风险" +msgstr "启用小地图。" #: src/settings_translation_file.cpp msgid "" @@ -1666,77 +1962,89 @@ msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"启用视差闭塞映射。\n" +"需要着色器已启用。" #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." -msgstr "" +msgstr "实验性选项,设为大于 0 的数字时可能导致块之间出现可见空间。" #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "暂停菜单 FPS" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "坠落上下摆动" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "yes" +msgstr "后备字体" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "后备字体阴影" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "后备字体阴影透明" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "后备字体大小" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "快速移动键" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "快速移动模式加速度" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "快速移动模式速度" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "快速移动" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"快速移动(通过“使用”键)。\n" +"这需要服务器允许“快速移动”权限。" #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "视界" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "视界程度。" #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"client/serverlist/ 中的文件包含会显示在“多人游戏”选项卡中的您收藏的服务器。" + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "填充深度" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "电影基调映射" #: src/settings_translation_file.cpp msgid "" @@ -1747,63 +2055,65 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "各向异性过滤" +msgstr "过滤" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "固定地图种子" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fly key" -msgstr "飞行模式" +msgstr "飞行键" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "飞行" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "雾" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "雾切换键" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "字体路径" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "字体阴影" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "字体阴影透明度" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "字体阴影不透明度(0-255)。" #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "字体阴影偏移,0 表示不绘制阴影。" #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "字体大小" #: src/settings_translation_file.cpp #, fuzzy +msgid "Format of screenshots." +msgstr "屏幕截图保存位置。" + +#: src/settings_translation_file.cpp msgid "Forward key" -msgstr "向前" +msgstr "前进键" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "FreeType 字体" #: src/settings_translation_file.cpp msgid "" @@ -1823,57 +2133,67 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "全屏" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "全屏 BPP" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "全屏模式。" #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "用户图形界面缩放" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "GUI缩放因子" +msgstr "用户图形界面缩放过滤器" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "用户图形界面缩放过滤器 txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "伽马" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "常规" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" -msgstr "产生法线贴图" +msgstr "生成常规地图" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "图形" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "重力" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP Mod" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "HUD 切换键" #: src/settings_translation_file.cpp msgid "" @@ -1884,20 +2204,24 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Height on which clouds are appearing." +msgid "Height component of the initial window size." msgstr "" +#: src/settings_translation_file.cpp +msgid "Height on which clouds are appearing." +msgstr "云在多高的高度出现。" + #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "高精度 FPU" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "服务器首页,将会显示在服务器列表中。" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "河流有多深" #: src/settings_translation_file.cpp msgid "" @@ -1921,40 +2245,46 @@ msgid "" "Higher value is smoother, but will use more RAM." msgstr "" +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "河流有多宽" + #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 服务器" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6 支持。" #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." -msgstr "" +msgstr "如果 FPS 可以超过此值,限制它以节省 CPU 功耗,因为没有更多好处。" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "禁用MOD包" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "启用" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -1989,12 +2319,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "忽略世界错误" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "游戏" +msgstr "游戏中" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -2013,34 +2342,71 @@ msgid "Interval of sending time of day to clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Inventory items animations" +msgstr "库存物品动画" + +#: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "物品栏" +msgstr "库存键" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "反转鼠标" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "反转垂直鼠标移动。" #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" +msgstr "物品实体 TTL" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "跳" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" +msgid "" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "跳跃键" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "跳跃速度" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2054,7 +2420,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" @@ -2245,15 +2611,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "攀登/降落的键" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "语言" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "巨大洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "熔岩特性" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "树叶风格" #: src/settings_translation_file.cpp msgid "" @@ -2264,9 +2638,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "左菜单" +msgstr "左方向键" #: src/settings_translation_file.cpp msgid "" @@ -2274,6 +2647,14 @@ msgid "" "updated over network." msgstr "" +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Level of logging to be written to debug.txt:\n" @@ -2288,11 +2669,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "磁盘上的生产队列限制" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "要生成的生产队列绝对限制" #: src/settings_translation_file.cpp msgid "" @@ -2305,45 +2686,43 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "液体流动性" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "液体流动性平滑" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "液体循环最大" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "液体队列清除时间" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "液体下沉" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "液体更新间隔,单位秒。" #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "液体更新单次" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "主菜单游戏管理器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "主菜单" +msgstr "主菜单 mode 管理器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "主菜单" +msgstr "主菜单脚本" #: src/settings_translation_file.cpp msgid "" @@ -2356,42 +2735,76 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map directory" +msgstr "地图目录" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." msgstr "" #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "地图生成限制" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "地图保存间隔" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "地图块限制" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "地图块卸载超时" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "地图生成器山谷" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" @@ -2406,28 +2819,143 @@ msgid "Mapgen biome humidity noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "地图生成器" +msgstr "地图生成器调试" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "地图生成器标志" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "地图生成器平面" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "地图生成器" +msgid "Mapgen flat cave width" +msgstr "地图生成器平面阈值" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "地图生成器平面标志" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "地图生成器平地级别" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "地图生成器平面山丘坡度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "地图生成器平面山丘阈值" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "地图生成器平面湖坡度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "地图生成器平面阈值" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "地图生成器分形" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "地图生成器分形片 w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "地图生成器分形分形" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "地图生成器分形迭代" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "地图生成器分形 julia w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "地图生成器分形 julia x" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "地图生成器分形 julia y" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "地图生成器分形 julia z" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "地图生成器分形偏移" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "地图生成器分形规模" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "地图生成器分形片 w" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "地图生成器" +msgstr "地图生成器名称" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "地图生成器 v5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "地图生成器" +msgid "Mapgen v5 cave width" +msgstr "巨大洞穴深度" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" @@ -2450,9 +2978,8 @@ msgid "Mapgen v5 height noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "地图生成器" +msgstr "地图生成器 v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" @@ -2460,7 +2987,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "地图生成器 v6 沙滩频率" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" @@ -2476,11 +3003,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "地图生成器 v6 沙漠频率" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "地图生成器 v6 标志" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" @@ -2511,9 +3038,13 @@ msgid "Mapgen v6 trees noise parameters" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v7" -msgstr "地图生成器" +msgstr "地图生成器 v7" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen v7 cave width" +msgstr "巨大洞穴深度" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" @@ -2529,7 +3060,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "地图生成器 v7 标志" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" @@ -2563,6 +3094,18 @@ msgstr "" msgid "Mapgen v7 terrain persistation noise parameters" msgstr "" +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "巨大洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "巨大洞穴噪音" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "" + #: src/settings_translation_file.cpp msgid "Max block generate distance" msgstr "" @@ -2581,23 +3124,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "每次迭代最大包" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "最大 FPS" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "游戏暂停时最高 FPS。" #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "最大强制载入块" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "最大快捷栏宽度" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." @@ -2617,7 +3160,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "强制载入地图块最大数量。" #: src/settings_translation_file.cpp msgid "" @@ -2660,88 +3203,83 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "最大用户" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" msgstr "菜单" #: src/settings_translation_file.cpp msgid "Mesh cache" -msgstr "" +msgstr "Mesh 缓存" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "今日消息" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." msgstr "" #: src/settings_translation_file.cpp -msgid "Minimap" +msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "小地图" + #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "小地图键" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "小地图扫描高度" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" +msgstr "纹理过滤器最小大小" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "贴图处理" +msgstr "Mip 贴图处理" #: src/settings_translation_file.cpp msgid "Mod profiling" -msgstr "" +msgstr "Mod 剖析" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "Mod 存储详情 URL" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "Mod 存储下载 URL" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "Mod 存储的 Mod 列表 URL" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "等宽字体路径" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "等宽字体大小" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "鼠标灵敏度" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "鼠标灵敏度倍数。" #: src/settings_translation_file.cpp msgid "" @@ -2767,57 +3305,67 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"玩家名称。\n" +"当运行服务器时,用此名称连接的客户端是管理员。\n" +"从主菜单开始时,此项将被覆盖。" #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." -msgstr "" +msgstr "服务器名称,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "网络" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"监听网络端口 (UDP)。\n" +"从主菜单开始时此值将被覆盖。" #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "新用户需要输入此密码。" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "无剪辑" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "无剪辑键" #: src/settings_translation_file.cpp msgid "Node highlighting" -msgstr "" +msgstr "节点高亮" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "NodeTimer interval" +msgstr "发送间隔时间" #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." msgstr "" +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "噪声" + #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "" +msgstr "一般地图采样" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "" +msgstr "一般地图强度" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "生产线程数" #: src/settings_translation_file.cpp msgid "" @@ -2837,7 +3385,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "视差闭塞迭代数。" #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." @@ -2845,49 +3393,39 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" +msgstr "视差闭塞效果的总体比例。" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "视差贴图" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" -msgstr "视差贴图" +msgstr "视差贴图闭塞" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "视差贴图" +msgstr "视差贴图闭塞比例" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "视差贴图" +msgstr "视差贴图闭塞偏移" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "视差贴图" +msgstr "视差贴图闭塞迭代" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "视差贴图" +msgstr "视差贴图闭塞模式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "视差贴图" +msgstr "视差贴图闭塞强度" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "TrueType 字体或位图的路径。" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "屏幕截图保存位置。" #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." @@ -2900,21 +3438,20 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "玩家的名字太长了" +msgstr "玩家名称" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "玩家转移距离" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "玩家对战玩家" #: src/settings_translation_file.cpp msgid "" @@ -2923,20 +3460,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." +msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "载入中..." - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp @@ -2945,11 +3473,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "剖析器切换键" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "剖析印出间隔" #: src/settings_translation_file.cpp msgid "" @@ -2959,42 +3487,60 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Random input" +msgid "Raises terrain to make valleys around the rivers" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Random input" +msgstr "随机输入" + +#: src/settings_translation_file.cpp msgid "Range select key" -msgstr "选择范围" +msgstr "范围选择键" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "远程媒体" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "远程端口" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "右菜单" +msgstr "右方向键" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" +msgstr "右击重复间隔" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "河流深度" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "河流噪音" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "河流大小" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" msgstr "" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "回滚记录" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "圆形小地图" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." @@ -3002,7 +3548,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "保存从服务器收到的地图" #: src/settings_translation_file.cpp msgid "" @@ -3015,24 +3561,40 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "屏幕高度" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "屏幕宽度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "快照" +msgstr "截图" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "截图文件夹" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "截图文件夹" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "截图" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "安全" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" @@ -3044,51 +3606,43 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "选择框颜色" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "选择框宽度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "单人游戏" +msgstr "服务器 / 单人游戏" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "服务器" +msgstr "服务器 URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "服务器端口" +msgstr "服务器地址" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "服务器端口" +msgstr "服务器描述" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "服务器" +msgstr "服务器名称" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "服务器端口" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "公共服务器列表" +msgstr "服务器列表 URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "公共服务器列表" +msgstr "服务器列表文件" #: src/settings_translation_file.cpp msgid "" @@ -3114,10 +3668,6 @@ msgid "" "Requires shaders to be enabled." msgstr "" -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "着色器" - #: src/settings_translation_file.cpp msgid "" "Shaders allow advanced visul effects and may increase performance on some " @@ -3131,11 +3681,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "显示调试信息" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "关机消息" #: src/settings_translation_file.cpp msgid "" @@ -3144,13 +3698,16 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy +msgid "Slope and fill work together to modify the heights" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Smooth lighting" msgstr "平滑光照" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" @@ -3163,13 +3720,12 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "潜行" +msgstr "潜行键" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "音效" #: src/settings_translation_file.cpp msgid "" @@ -3181,41 +3737,62 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "静态重生点" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "产生法线贴图" +msgstr "生成的一般地图强度。" #: src/settings_translation_file.cpp msgid "Strength of parallax." -msgstr "" +msgstr "视差强度。" #: src/settings_translation_file.cpp msgid "Strict protocol checking" +msgstr "严格协议检查" + +#: src/settings_translation_file.cpp +msgid "Support older servers" msgstr "" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "同步 SQLite" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "材质包" +msgid "Terrain Height" +msgstr "地形高度" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." msgstr "" #: src/settings_translation_file.cpp -msgid "The network interface that the server listens on." +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." msgstr "" +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "纹理路径" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "泥土深度或其他过滤器" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "服务器监听的网络接口。" + #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" @@ -3224,7 +3801,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Irrlicht 的渲染后端。" #: src/settings_translation_file.cpp msgid "" @@ -3249,6 +3826,10 @@ msgstr "" #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." +msgstr "用于特定语言的字体。" + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" msgstr "" #: src/settings_translation_file.cpp @@ -3259,15 +3840,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "发送间隔时间" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "速度时间" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." -msgstr "" +msgstr "客户端从内存中移除未用地图数据的超时。" #: src/settings_translation_file.cpp msgid "" @@ -3279,14 +3860,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "切换拍照模式键" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "工具提示延迟" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "三线性过滤" @@ -3299,7 +3879,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "可信 MOD" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -3307,15 +3887,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "无限的玩家转移距离" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "卸载未用服务器数据" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "使用 3D 云彩,而不是看起来是平面的。" #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." @@ -3330,9 +3910,8 @@ msgid "Use bilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "按键" +msgstr "使用按键" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." @@ -3343,102 +3922,124 @@ msgid "Use trilinear filtering when scaling textures." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "内部开发人员" +msgstr "适用 MOD 开发者。" #: src/settings_translation_file.cpp msgid "V-Sync" -msgstr "" +msgstr "垂直同步" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." -msgstr "" +msgid "VBO" +msgstr "VBO" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "山谷深度" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "山谷弥漫" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "山谷轮廓" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "山谷坡度" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "山谷 C 标志" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "屏幕垂直同步。" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "视频驱动程序" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "范围摇动" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"节点间可视距离。\n" +"最小 = 20" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "可视范围减小键" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "可视范围增加键" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" +msgid "Viewing range" +msgstr "可视范围" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "音量" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "摇动的叶子" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "步行速度" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "水特性" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "水级别" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "世界水平面级别。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "摇动的叶子" +msgstr "摇动节点" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "摇动的叶子" +msgstr "摇动树叶" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" -msgstr "摇动的植物" +msgstr "摇动植物" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" -msgstr "摇动的水" +msgstr "摇动水" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "摇动的水" +msgstr "摇动水高度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "摇动的水" +msgstr "摇动水长度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "摇动的水" +msgstr "摇动水速度" #: src/settings_translation_file.cpp msgid "" @@ -3500,16 +4101,30 @@ msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"是否在一次 (Lua) 崩溃后询问客户端是否重新连接。\n" +"如果你的服务器设为自动重连,将此项设为真。" #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "是否让雾出现在可视范围末端。" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "是否显示客户端调试信息(与按 F5 的效果相同)。" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." msgstr "" +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "初始化窗口尺寸之宽度组件。" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." msgstr "" @@ -3521,96 +4136,93 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "cURL file download timeout" +msgid "Y of flat ground." +msgstr "平地的 Y。" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." msgstr "" +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "cURL 文件下载超时" + #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "cURL 并发限制" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL 超时" -#~ msgid "Restart minetest for driver change to take effect" -#~ msgstr "重启minetest让驱动变化生效" +#, fuzzy +#~ msgid "Preload inventory textures" +#~ msgstr "载入中..." -#~ msgid "Game Name" -#~ msgstr "游戏名" +#, fuzzy +#~ msgid "Reset singleplayer world" +#~ msgstr "重置单人游戏" -#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" -#~ msgstr "游戏管理: 无法复制MOD“$1”到游戏“$2”" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "菜单元素应用缩放因子" -#~ msgid "GAMES" -#~ msgstr "游戏" +#~ msgid "Touch free target" +#~ msgstr "自由触摸目标" -#~ msgid "Mods:" -#~ msgstr "MODS:" +#, fuzzy +#~ msgid "Downloading" +#~ msgstr "下载中" -#~ msgid "new game" -#~ msgstr "新建游戏" +#~ msgid " KB/s" +#~ msgstr "千字节/秒" -#~ msgid "EDIT GAME" -#~ msgstr "编辑游戏" +#~ msgid " MB/s" +#~ msgstr "兆字节/秒" -#~ msgid "Remove selected mod" -#~ msgstr "删除选中MOD" +#~ msgid "Left click: Move all items, Right click: Move single item" +#~ msgstr "左键:移动所有物品,右键:移动单个物品" -#~ msgid "<<-- Add mod" -#~ msgstr "<<-- 添加MOD" +#~ msgid "is required by:" +#~ msgstr "被需要:" -#~ msgid "CLIENT" -#~ msgstr "客户端" +#~ msgid "Configuration saved. " +#~ msgstr "配置已保存。 " -#~ msgid "Favorites:" -#~ msgstr "最爱的服务器:" +#~ msgid "Warning: Configuration not consistent. " +#~ msgstr "警告:配置不一致。 " -#~ msgid "START SERVER" -#~ msgstr "启动服务器" +#~ msgid "Cannot create world: Name contains invalid characters" +#~ msgstr "无法创建世界:名字包含非法字符" -#~ msgid "Name" -#~ msgstr "名字" +#~ msgid "Show Public" +#~ msgstr "显示公共" -#~ msgid "Password" -#~ msgstr "密码" +#~ msgid "Show Favorites" +#~ msgstr "显示最爱" -#~ msgid "SETTINGS" -#~ msgstr "设置" +#~ msgid "Leave address blank to start a local server." +#~ msgstr "地址栏留空可启动本地服务器。" -#~ msgid "Preload item visuals" -#~ msgstr "预先加载物品图像" +#~ msgid "Create world" +#~ msgstr "创造世界" -#~ msgid "Finite Liquid" -#~ msgstr "液体有限延伸" +#~ msgid "Address required." +#~ msgstr "需要地址。" -#~ msgid "SINGLE PLAYER" -#~ msgstr "单人游戏" +#~ msgid "Cannot delete world: Nothing selected" +#~ msgstr "无法删除世界:没有选择世界" -#~ msgid "TEXTURE PACKS" -#~ msgstr "材质包" +#~ msgid "Files to be deleted" +#~ msgstr "将被删除的文件" -#~ msgid "MODS" -#~ msgstr "MODS" +#~ msgid "Cannot create world: No games found" +#~ msgstr "无法创造世界:未找到游戏模式" -#~ msgid "Add mod:" -#~ msgstr "添加MOD:" +#~ msgid "Cannot configure world: Nothing selected" +#~ msgstr "无法配置世界:没有选择世界" -#~ msgid "Local install" -#~ msgstr "本地安装" - -#~ msgid "" -#~ "Warning: Some mods are not configured yet.\n" -#~ "They will be enabled by default when you save the configuration. " -#~ msgstr "" -#~ "警告:一些MOD仍未设定。\n" -#~ "它们会在你保存配置的时候自动启用。 " - -#~ msgid "" -#~ "Warning: Some configured mods are missing.\n" -#~ "Their setting will be removed when you save the configuration. " -#~ msgstr "" -#~ "警告:缺少一些设定了的MOD。\n" -#~ "它们的设置会在你保存配置的时候被移除。 " +#~ msgid "Failed to delete all world files" +#~ msgstr "无法删除所有该世界的文件" #~ msgid "" #~ "Default Controls:\n" @@ -3638,94 +4250,99 @@ msgstr "" #~ "ESC:菜单\n" #~ "T:聊天\n" -#~ msgid "Failed to delete all world files" -#~ msgstr "无法删除所有该世界的文件" +#~ msgid "" +#~ "Warning: Some configured mods are missing.\n" +#~ "Their setting will be removed when you save the configuration. " +#~ msgstr "" +#~ "警告:缺少一些设定了的MOD。\n" +#~ "它们的设置会在你保存配置的时候被移除。 " -#~ msgid "Cannot configure world: Nothing selected" -#~ msgstr "无法配置世界:没有选择世界" +#~ msgid "" +#~ "Warning: Some mods are not configured yet.\n" +#~ "They will be enabled by default when you save the configuration. " +#~ msgstr "" +#~ "警告:一些MOD仍未设定。\n" +#~ "它们会在你保存配置的时候自动启用。 " -#~ msgid "Cannot create world: No games found" -#~ msgstr "无法创造世界:未找到游戏模式" +#~ msgid "Local install" +#~ msgstr "本地安装" -#~ msgid "Files to be deleted" -#~ msgstr "将被删除的文件" +#~ msgid "Add mod:" +#~ msgstr "添加MOD:" -#~ msgid "Cannot delete world: Nothing selected" -#~ msgstr "无法删除世界:没有选择世界" +#~ msgid "MODS" +#~ msgstr "MODS" -#~ msgid "Address required." -#~ msgstr "需要地址。" +#~ msgid "TEXTURE PACKS" +#~ msgstr "材质包" -#~ msgid "Create world" -#~ msgstr "创造世界" +#~ msgid "SINGLE PLAYER" +#~ msgstr "单人游戏" -#~ msgid "Leave address blank to start a local server." -#~ msgstr "地址栏留空可启动本地服务器。" +#~ msgid "Finite Liquid" +#~ msgstr "液体有限延伸" -#~ msgid "Show Favorites" -#~ msgstr "显示最爱" +#~ msgid "Preload item visuals" +#~ msgstr "预先加载物品图像" -#~ msgid "Show Public" -#~ msgstr "显示公共" +#~ msgid "SETTINGS" +#~ msgstr "设置" -#~ msgid "Cannot create world: Name contains invalid characters" -#~ msgstr "无法创建世界:名字包含非法字符" +#~ msgid "Password" +#~ msgstr "密码" -#~ msgid "Warning: Configuration not consistent. " -#~ msgstr "警告:配置不一致。 " +#~ msgid "Name" +#~ msgstr "名字" -#~ msgid "Configuration saved. " -#~ msgstr "配置已保存。 " +#~ msgid "START SERVER" +#~ msgstr "启动服务器" -#~ msgid "is required by:" -#~ msgstr "被需要:" +#~ msgid "CLIENT" +#~ msgstr "客户端" -#~ msgid "Left click: Move all items, Right click: Move single item" -#~ msgstr "左键:移动所有物品,右键:移动单个物品" +#~ msgid "<<-- Add mod" +#~ msgstr "<<-- 添加MOD" -#~ msgid " MB/s" -#~ msgstr "兆字节/秒" +#~ msgid "Remove selected mod" +#~ msgstr "删除选中MOD" -#~ msgid " KB/s" -#~ msgstr "千字节/秒" +#~ msgid "EDIT GAME" +#~ msgstr "编辑游戏" + +#~ msgid "new game" +#~ msgstr "新建游戏" + +#~ msgid "Mods:" +#~ msgstr "MODS:" + +#~ msgid "GAMES" +#~ msgstr "游戏" + +#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\"" +#~ msgstr "游戏管理: 无法复制MOD“$1”到游戏“$2”" + +#~ msgid "Game Name" +#~ msgstr "游戏名" + +#~ msgid "Restart minetest for driver change to take effect" +#~ msgstr "重启minetest让驱动变化生效" #, fuzzy -#~ msgid "Downloading" -#~ msgstr "下载中" - -#~ msgid "Touchthreshold (px)" -#~ msgstr "触控阈值(像素)" - -#~ msgid "Touch free target" -#~ msgstr "自由触摸目标" - -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "启用着色器需要使用OpenGL驱动。" +#~ msgid "If enabled, " +#~ msgstr "启用" #, fuzzy -#~ msgid "Simple Leaves" -#~ msgstr "摇动的叶子" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "菜单元素应用缩放因子" - -#, fuzzy -#~ msgid "Reset singleplayer world" -#~ msgstr "重置单人游戏" - -#~ msgid "Opaque Water" -#~ msgstr "不透明的水" - -#, fuzzy -#~ msgid "Opaque Leaves" -#~ msgstr "不透明的水" +#~ msgid "If disabled " +#~ msgstr "禁用MOD包" #~ msgid "No!!!" #~ msgstr "不!!!" -#, fuzzy -#~ msgid "Fancy Leaves" -#~ msgstr "花式树" +#~ msgid "Generate Normalmaps" +#~ msgstr "生成一般地图" -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "你确定要重置您的单人世界吗?" +#~ msgid "Public Serverlist" +#~ msgstr "公共服务器列表" + +#~ msgid "No of course not!" +#~ msgstr "当然不!" diff --git a/po/zh_TW/minetest.po b/po/zh_TW/minetest.po index 9503dc65..abe574c9 100644 --- a/po/zh_TW/minetest.po +++ b/po/zh_TW/minetest.po @@ -2,14 +2,14 @@ # Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER # This file is distributed under the same license as the minetest package. # Automatically generated, 2015. -# +# Jeff Huang , 2016. msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-24 20:28+0200\n" -"PO-Revision-Date: 2015-09-17 12:48+0200\n" -"Last-Translator: Jeff Huang \n" +"POT-Creation-Date: 2016-05-05 16:13+0200\n" +"PO-Revision-Date: 2016-03-05 14:43+0000\n" +"Last-Translator: Jeff Huang \n" "Language-Team: Chinese (Taiwan) \n" "Language: zh_TW\n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5-dev\n" #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" -msgstr "在 Lua 指令稿中發生錯誤,像是 mod:" +msgstr "在 Lua 指令稿中發生錯誤,如 mod:" #: builtin/fstk/ui.lua msgid "An error occured:" @@ -48,17 +48,16 @@ msgid "Loading..." msgstr "正在載入..." #: builtin/mainmenu/common.lua -#, fuzzy msgid "Protocol version mismatch. " -msgstr "協定版本不符合,伺服器 " +msgstr "協定版本不符合。 " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "伺服器強制協定版本 $1。 " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "伺服器支援協定版本 $1 到 $2 " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -66,15 +65,17 @@ msgstr "嘗試重新啟用公共伺服器清單並檢查您的網際網路連線 #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "我們只支援協定版本 $1。" #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "我們支援協定版本 $1 到 $2。" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_rename_modpack.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp src/keycode.cpp +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp +#: src/keycode.cpp msgid "Cancel" msgstr "取消" @@ -114,8 +115,8 @@ msgstr "隱藏 mp 內容" msgid "Mod:" msgstr "Mod:" -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_settings.lua -#: src/guiKeyChangeMenu.cpp +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "儲存" @@ -175,6 +176,12 @@ msgstr "您沒有安裝子遊戲。" msgid "Are you sure you want to delete \"$1\"?" msgstr "您確定您要刪除「$1」嗎?" +#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua +#: src/keycode.cpp +msgid "Delete" +msgstr "刪除" + #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Mod 管理員:刪除「$1」失敗" @@ -183,22 +190,10 @@ msgstr "Mod 管理員:刪除「$1」失敗" msgid "Modmgr: invalid modpath \"$1\"" msgstr "Mod 管理員:無效的 mod 路徑「$1」" -#: builtin/mainmenu/dlg_delete_mod.lua -msgid "No of course not!" -msgstr "不,絕對不是!" - -#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua -msgid "Yes" -msgstr "是" - #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "刪除世界「$1」?" -#: builtin/mainmenu/dlg_delete_world.lua -msgid "No" -msgstr "否" - #: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp msgid "Accept" msgstr "接受" @@ -207,6 +202,94 @@ msgstr "接受" msgid "Rename Modpack:" msgstr "重新命名 Mod 包:" +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "\"$1\" is not a valid flag." +msgstr "「$1」不是一個有效的旗標。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "(這個設定沒有描述可用)" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "< 回到設定頁面" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "瀏覽" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "已停用" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "編輯" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "已啟用" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Format is 3 numbers separated by commas and inside brackets." +msgstr "格式為 3 個在括號內的以逗號分離的數字。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "" +"Format: , , (, , ), , " +", " +msgstr "" +"格式:<偏移>, <尺寸>, (<寬度 X>, <寬度 Y>, <寬度 Z>), <種子>, <八進位>, <持續" +"性>" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "遊戲" + +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua +msgid "Mods" +msgstr "Mods" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Optionally the lacunarity can be appended with a leading comma." +msgstr "選擇性的空隙度可以以一個逗號開頭附加。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a comma seperated list of flags." +msgstr "請輸入逗號以分離各項旗標。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "請輸入有效的整數。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "請輸入有效的數字。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Possible values are: " +msgstr "可能的值為: " + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "恢復預設值" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select path" +msgstr "選取路徑" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "顯示技術名稱" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be greater than $1." +msgstr "值必須大於 $1。" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be lower than $1." +msgstr "值必須低於 $1。" + #: builtin/mainmenu/modmgr.lua msgid "" "\n" @@ -299,10 +382,6 @@ msgstr "已安裝的 Mod:" msgid "Mod information:" msgstr "Mod 資訊:" -#: builtin/mainmenu/tab_mods.lua builtin/mainmenu/tab_settings.lua -msgid "Mods" -msgstr "Mods" - #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "找不到 mod 描述" @@ -324,7 +403,8 @@ msgid "Uninstall selected modpack" msgstr "解除安裝已選取的 mod 包" #: builtin/mainmenu/tab_multiplayer.lua -msgid "Address / Port :" +#, fuzzy +msgid "Address / Port" msgstr "地址/埠:" #: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp @@ -343,18 +423,18 @@ msgstr "創造模式" msgid "Damage enabled" msgstr "已啟用傷害" -#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua -#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp -msgid "Delete" -msgstr "刪除" - -#: builtin/mainmenu/tab_multiplayer.lua -msgid "Name / Password :" -msgstr "名稱/密碼:" +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua -msgid "Public Serverlist" -msgstr "公共伺服器清單" +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy +msgid "Name / Password" +msgstr "名稱/密碼:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -378,7 +458,7 @@ msgstr "創造模式" msgid "Enable Damage" msgstr "啟用傷害" -#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua +#: builtin/mainmenu/tab_server.lua msgid "Name/Password" msgstr "名稱/密碼" @@ -415,90 +495,160 @@ msgid "Start Game" msgstr "開始遊戲" #: builtin/mainmenu/tab_settings.lua -msgid "\"" -msgstr "" +msgid "2x" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua -msgid "(No description of setting given)" -msgstr "" +msgid "3D Clouds" +msgstr "3D 雲朵" #: builtin/mainmenu/tab_settings.lua -msgid "Browse" -msgstr "" +msgid "4x" +msgstr "4x" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "8x" + +#: builtin/mainmenu/tab_settings.lua +msgid "Advanced Settings" +msgstr "進階設定" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "反鋸齒:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "您確定要要重置您的單人遊戲世界嗎?" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "雙線性過濾器" + +#: builtin/mainmenu/tab_settings.lua +#, fuzzy +msgid "Bump Mapping" +msgstr "映射貼圖" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "變更按鍵" #: builtin/mainmenu/tab_settings.lua -#, fuzzy -msgid "Disabled" -msgstr "停用 MP" +msgid "Connected Glass" +msgstr "連接玻璃" #: builtin/mainmenu/tab_settings.lua -msgid "Edit" -msgstr "" +msgid "Fancy Leaves" +msgstr "華麗葉子" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "Mip 貼圖" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "Mip 貼圖 + Aniso. 過濾器" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "否" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "無過濾器" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "無 Mip 貼圖" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "突顯節點" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Enabled" -msgstr "已啟用" +msgid "Node Outlining" +msgstr "突顯節點" -#: builtin/mainmenu/tab_settings.lua -msgid "" -"Format: , , (, , ), , " -", " -msgstr "" +#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua +msgid "None" +msgstr "無" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Games" -msgstr "遊戲" +msgid "Normal Mapping" +msgstr "法線貼圖採樣" #: builtin/mainmenu/tab_settings.lua -msgid "Optionally the lacunarity can be appended with a leading comma." -msgstr "" +msgid "Opaque Leaves" +msgstr "不透明葉子" #: builtin/mainmenu/tab_settings.lua -msgid "Please enter a comma seperated list of flags." -msgstr "" +msgid "Opaque Water" +msgstr "不透明水" -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid integer." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Please enter a valid number." -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Possible values are: " -msgstr "" - -#: builtin/mainmenu/tab_settings.lua -msgid "Restore Default" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "視差遮蔽" #: builtin/mainmenu/tab_settings.lua #, fuzzy -msgid "Select path" -msgstr "選擇" +msgid "Particles" +msgstr "啟用粒子" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "設定" -#: builtin/mainmenu/tab_settings.lua -msgid "Show technical names" -msgstr "" +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "著色器" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be greater than $1." -msgstr "" +msgid "Simple Leaves" +msgstr "簡易葉子" #: builtin/mainmenu/tab_settings.lua -msgid "The value must be lower than $1." -msgstr "" +msgid "Smooth Lighting" +msgstr "平滑光線" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "紋理:" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "要啟用著色器,必須使用 OpenGL 驅動程式。" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "色調映射" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold (px)" +msgstr "碰觸限值(像素)" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "三線性過濾器" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "葉子擺動" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "植物擺動" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Water" +msgstr "波動的水" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "是" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -524,10 +674,6 @@ msgstr "單人遊戲" msgid "No information available" msgstr "不提供資訊" -#: builtin/mainmenu/tab_texturepacks.lua -msgid "None" -msgstr "無" - #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "選取材質包:" @@ -552,10 +698,6 @@ msgstr "正在初始化節點" msgid "Initializing nodes..." msgstr "正在初始化節點..." -#: src/client.cpp -msgid "Item textures..." -msgstr "物品材質..." - #: src/client.cpp msgid "Loading textures..." msgstr "正在載入材質..." @@ -594,7 +736,7 @@ msgstr "提供的世界路徑不存在: " #: src/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "yes" #: src/game.cpp msgid "" @@ -710,10 +852,6 @@ msgstr "MiB/s" msgid "Node definitions..." msgstr "節點定義..." -#: src/game.cpp src/guiFormSpecMenu.cpp -msgid "Proceed" -msgstr "開始" - #: src/game.cpp msgid "Resolving address..." msgstr "正在解析地址……" @@ -734,13 +872,17 @@ msgstr "音量" msgid "You died." msgstr "您已經死亡。" +#: src/game.cpp src/guiFormSpecMenu.cpp +msgid "ok" +msgstr "確定" + #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "輸入 " #: src/guiFormSpecMenu.cpp -msgid "ok" -msgstr "確定" +msgid "Proceed" +msgstr "開始" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" @@ -1150,20 +1292,34 @@ msgstr "X 按鈕 2" msgid "Zoom" msgstr "縮放" +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" +"Used to move a suitable spawn area of low land close to (0, 0).\n" +"The default is suitable for mandelbrot sets, it needs to be edited for julia " +"sets.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" +"在「比例尺」中單位的 (X,Y,Z) 偏移。\n" +"用於移動適合的低地生成區域靠近 (0, 0)。\n" +"預設值適合曼德博集合,若要用於朱利亞集合則必須修改。\n" +"範圍大約在 -2 至 2 間。乘以節點的偏移值。" + #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = 包含斜率資訊的視差遮蔽(較快)。\n" +"1 = 替換貼圖(較慢,較準確)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "3D 雲朵" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "" @@ -1173,38 +1329,59 @@ msgid "" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side." +"- sidebyside: split screen side by side.\n" +"- pageflip: quadbuffer based 3d." msgstr "" +"3D 支援。\n" +"目前已支援:\n" +"- 無:無 3D 輸出。\n" +"- 浮雕:青色/品紅色彩色 3D。\n" +"- 交錯的:基於偏振螢幕的奇/偶行支援。\n" +"- 頂底:將螢幕分離為頂部/底部。\n" +"- 一邊一個:將螢幕分離為一邊一個。\n" +"- 翻頁:基於四重緩衝的 3D。" #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"新地圖的已選取種子,留空則為隨機。\n" +"當在主選單中建立新世界的時候將會被覆寫。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "當伺服器當機時要顯示在所有客戶端上的訊息。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "當伺服器關機時要顯示在所有客戶端上的訊息。" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "發生佇列的絕對限制" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "在空氣中的加速" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Management interval" +msgstr "活動區塊範圍" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Active Block Modifier interval" +msgstr "活動區塊範圍" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "活動區塊範圍" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "活動目標發送範圍" #: src/settings_translation_file.cpp msgid "" @@ -1212,38 +1389,51 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"要連線到的地址。\n" +"把這個留空以啟動本機伺服器。\n" +"注意在主選單中的地址欄會覆寫這個設定。" #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." -msgstr "" +msgstr "調整您螢幕的 DPI 設定(並不只有 X11/Android)例如 4K 螢幕。" #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" +"調整亮度表的伽瑪編碼。較低的數值會較亮。\n" +"這個設定是給客戶端使用的,會被伺服器忽略。" #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "進階" + +#: src/settings_translation_file.cpp +msgid "Altitude Chill" +msgstr "高度寒冷" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "總是啟用飛行與快速" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "環境遮蔽光" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys" +msgstr "放大山谷" #: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "" +msgstr "各向異性過濾" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "公佈伺服器" #: src/settings_translation_file.cpp msgid "" @@ -1251,41 +1441,53 @@ msgid "" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" +"公佈到這個伺服器列表。\n" +"若您想要公佈您的 IPv6 地址,使用 serverlist_url = v6.servers.minetest.net。" + +#: src/settings_translation_file.cpp +msgid "Approximate (X,Y,Z) scale of fractal in nodes." +msgstr "大約 (X,Y,Z) 的節點碎形規模。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "詢問是否在當機後重新連線" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." -msgstr "" +msgstr "自動回報到伺服器列表。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "後退" +msgstr "後退鍵" + +#: src/settings_translation_file.cpp +msgid "Base terrain height" +msgstr "基礎地形高度" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "基礎" #: src/settings_translation_file.cpp #, fuzzy +msgid "Basic Privileges" +msgstr "預設特權" + +#: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "雙線性過濾器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" msgstr "綁定地址" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "全螢幕模式中的位元/像素(又稱色彩深度)。" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "在玩家內構建" #: src/settings_translation_file.cpp msgid "Bumpmapping" @@ -1293,130 +1495,186 @@ msgstr "映射貼圖" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "攝影機平滑" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "在電影模式中攝影機平滑" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "攝影機切換更新按鍵" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "洞穴噪音 #1" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "洞穴噪音 #2" #: src/settings_translation_file.cpp #, fuzzy +msgid "Cave width" +msgstr "螢幕寬度" + +#: src/settings_translation_file.cpp +msgid "Caves and tunnels form at the intersection of the two noises" +msgstr "洞穴與隧道形成兩種噪音的交集" + +#: src/settings_translation_file.cpp msgid "Chat key" -msgstr "變更按鍵" +msgstr "聊天按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "變更按鍵" +msgstr "聊天切換按鍵" + +#: src/settings_translation_file.cpp +msgid "" +"Choice of 18 fractals from 9 formulas.\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." +msgstr "" +"從 9 種公式裡選取 18 種碎形。\n" +"1 = 4D \"Roundy\" mandelbrot set.\n" +"2 = 4D \"Roundy\" julia set.\n" +"3 = 4D \"Squarry\" mandelbrot set.\n" +"4 = 4D \"Squarry\" julia set.\n" +"5 = 4D \"Mandy Cousin\" mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" julia set.\n" +"7 = 4D \"Variation\" mandelbrot set.\n" +"8 = 4D \"Variation\" julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" +"11 = 3D \"Christmas Tree\" mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" julia set.\n" +"13 = 3D \"Mandelbulb\" mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" julia set.\n" +"17 = 4D \"Mandelbulb\" mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" julia set." #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "方塊大小" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "創造模式" +msgstr "電影模式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "創造模式" +msgstr "電影模式按鍵" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "清除透明材質" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "客戶端與伺服器" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "攀爬速度" #: src/settings_translation_file.cpp msgid "Cloud height" -msgstr "" +msgstr "雲朵高度" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "雲朵範圍" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "3D 雲朵" +msgstr "雲朵" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "" +msgstr "雲朵是客戶端的特效。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds in menu" -msgstr "主選單" +msgstr "選單中的雲朵" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "彩色迷霧" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"受信任的 Mod 列表,以逗號分隔,其可存取不安全的\n" +"功能,即便 mod 安全性是(經由 request_insecure_environment())。" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-seperated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" +"以逗號分隔的 mod 清單,讓您可以存取 HTTP API,\n" +"其可從網際網路上傳及下載資料。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Command key" -msgstr "指令" +msgstr "指令按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect glass" -msgstr "連貫的玻璃" +msgstr "連接玻璃" #: src/settings_translation_file.cpp -#, fuzzy msgid "Connect to external media server" -msgstr "正在連線至伺服器..." +msgstr "連線至外部媒體伺服器" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "若節點支援則連接玻璃。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "終端機" +msgstr "終端機 alpha 值" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console color" -msgstr "終端機" +msgstr "終端機顏色" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console key" -msgstr "終端機" +msgstr "終端機按鍵" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "連續前進" #: src/settings_translation_file.cpp msgid "Continuous forward movement (only used for testing)." -msgstr "" +msgstr "連續前進移動(僅供測試使用)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Controls" -msgstr "Control" +msgstr "控制" #: src/settings_translation_file.cpp msgid "" @@ -1424,183 +1682,232 @@ msgid "" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" +"控制日/夜循環的長度。\n" +"範例:72 = 20分鐘,360 = 4分鐘,1 = 24小時,0 = 日/夜/一切保持不變。" #: src/settings_translation_file.cpp msgid "" -"Controls size of deserts and beaches in Mapgen V6.\n" +"Controls size of deserts and beaches in Mapgen v6.\n" "When snowbiomes are enabled 'mgv6_freq_desert' is ignored." msgstr "" +"控制在 Mapgen v6 中的沙漠與沙灘大小。\n" +"當 snowbiomes 啟用時「mgv6_freq_desert」會被忽略。" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "控制湖泊窪地的陡度/深度。" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "控制山丘的陡度/深度。" + +#: src/settings_translation_file.cpp +msgid "Controls width of tunnels, a smaller value creates wider tunnels." +msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" +msgstr "當機訊息" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable lava features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" msgstr "" +"在洞穴中建立無法預測的岩漿功能。\n" +"這些會讓挖礦變得困難。設為零以停用。 (0-10)" + +#: src/settings_translation_file.cpp +msgid "" +"Creates unpredictable water features in caves.\n" +"These can make mining difficult. Zero disables them. (0-10)" +msgstr "" +"在洞穴中建立無法預測的水功能。\n" +"這些會讓挖礦變得困難。設為零以停用。 (0-10)" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "十字 alpha 值" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "十字 alpha 值(不透明,0 至 255間)。" #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "" +msgstr "十字色彩" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "" +msgstr "十字色彩 (R,G,B)。" #: src/settings_translation_file.cpp msgid "Crouch speed" -msgstr "" +msgstr "蹲伏速度" #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "啟用傷害" +msgstr "傷害" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "除錯資訊切換按鍵" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "除錯記錄等級" #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "專用伺服器步驟" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "預設加速" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "預設遊戲" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"當建立新世界時的預設遊戲。\n" +"當從主選單建立世界時將會被覆寫。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "舊密碼" +msgstr "預設密碼" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "預設特權" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" +"cURL 的預設逾時,以毫秒計算。\n" +"只會在與 cURL 一同編譯的情況下才會有影響。" #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" +"定義材質的採樣步驟。\n" +"較高的值會有較平滑的一般地圖。" #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." -msgstr "" +msgstr "定義玩家最大可傳送的距離,以方塊計(0 = 不限制)。" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "" +msgstr "顯示工具提示前的延遲,以毫秒計算。" #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "" +msgstr "不推薦使用 Lua API 處理" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "您會發現大型洞穴的深度。" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find massive caves." +msgstr "您會發現大量洞穴的深度。" #: src/settings_translation_file.cpp msgid "Descending speed" -msgstr "" +msgstr "遞減速度" #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." -msgstr "" +msgstr "伺服器的描述,會在玩家加入時顯示,也會顯示在伺服器列表上。" #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "" +msgstr "異步化方塊動畫" #: src/settings_translation_file.cpp msgid "Detailed mod profile data. Useful for mod developers." -msgstr "" +msgstr "詳細的 mod 檔案資料。對 mod 開發者很有用。" #: src/settings_translation_file.cpp msgid "Detailed mod profiling" -msgstr "" +msgstr "詳細的 mod 檔案" + +#: src/settings_translation_file.cpp +msgid "" +"Determines terrain shape.\n" +"The 3 numbers in brackets control the scale of the\n" +"terrain, the 3 numbers should be identical." +msgstr "" +"決定地形的形狀。\n" +"在括號中的 3 個數字控制著\n" +"地形的規模,那三個數字應該要是相同的。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "啟用粒子" +msgstr "停用反作弊" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "" +msgstr "不允許空密碼" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" +msgstr "伺服器的域名,將會在伺服器列表中顯示。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" -msgstr "輕擊兩次「跳躍」以切換成飛行" +msgstr "輕擊兩次跳躍以飛行" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "輕擊兩次「跳躍」以切換成飛行" +msgstr "輕擊兩次跳躍鍵以切換成飛行模式。" #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "丟棄物品鍵" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." -msgstr "" +msgstr "轉儲 mapgen 的除錯資訊。" #: src/settings_translation_file.cpp -msgid "Enable a bit lower water surface, so it doesn't " -msgstr "" +msgid "Enable VBO" +msgstr "啟用 VBO" #: src/settings_translation_file.cpp msgid "Enable mod security" -msgstr "" +msgstr "啟用 mod 安全性" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." -msgstr "" +msgstr "啟用玩家傷害及瀕死。" #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable selection highlighting for nodes (disables selectionbox)." -msgstr "" +msgstr "啟用隨機使用者輸入(僅供測試使用)。" #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" +"啟用包含簡易環境光遮蔽的平滑光。\n" +"停用以取得速度或不同的外觀。" #: src/settings_translation_file.cpp msgid "" @@ -1610,6 +1917,9 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"啟用以讓舊的客戶端無法連線。\n" +"較舊的客戶端在這個意義上相容,它們不會在連線至\n" +"新伺服器時當掉,但它們可能會不支援一些您預期會有的新功能。" #: src/settings_translation_file.cpp msgid "" @@ -1618,6 +1928,9 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"啟用遠端媒體伺服器的使用(若由伺服器提供的話)。\n" +"當連線到伺服器時,遠端伺服器提供了一個\n" +"顯著較快的下載媒體(如材質)的方式。" #: src/settings_translation_file.cpp msgid "" @@ -1625,6 +1938,13 @@ msgid "" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" +"啟用/停用執行 IPv6 伺服器。IPv6 伺服器可能會限制只有\n" +"IPv6 客戶端才能連線,取決於系統設定。\n" +"當 bind_address 被設定時將會被忽略。" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "啟用物品欄物品動畫。" #: src/settings_translation_file.cpp msgid "" @@ -1633,98 +1953,120 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" +"為材質啟用貼圖轉儲。普通地圖需要材質包的支援\n" +"或是自動生成。\n" +"必須啟用著色器。" #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." -msgstr "" +msgstr "啟用面旋轉方向的網格快取。" + +#: src/settings_translation_file.cpp +msgid "Enables filmic tone mapping" +msgstr "啟用電影色調映射" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "啟用傷害" +msgstr "啟用小地圖。" #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" +"啟用忙碌的一般地圖生成(浮雕效果)。\n" +"必須啟用貼圖轉儲。" #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" +"啟用視差遮蔽貼圖。\n" +"必須啟用著色器。" #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" +"實驗性選項,當設定到大於零的值時\n" +"也許會造成在方塊間有視覺空隙。" #: src/settings_translation_file.cpp msgid "FPS in pause menu" -msgstr "" +msgstr "在暫停選單中的 FPS" #: src/settings_translation_file.cpp msgid "FSAA" -msgstr "" +msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Fall bobbing" -msgstr "" +msgstr "墜落上下移動" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font" -msgstr "needs_fallback_font" +msgstr "備用字型" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "" +msgstr "後備字型陰影" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "" +msgstr "後備字型陰影 alpha 值" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "" +msgstr "後備字型大小" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "快速按鍵" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "" +msgstr "快速模式加速" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "" +msgstr "快速模式速度" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "快速移動" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" -"This requires the " +"This requires the \"fast\" privilege on the server." msgstr "" +"快速移動(透過使用鍵)。\n" +"這需要伺服器上的「快速」特權。" #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "視野" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "以度計算的視野。" #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" +"在 客戶端/伺服器清單/ 中的檔案包含了顯示在多人遊戲分頁中您最愛的伺服器。" + +#: src/settings_translation_file.cpp +msgid "Filler Depth" +msgstr "填充深度" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "電影色調映射" #: src/settings_translation_file.cpp msgid "" @@ -1733,134 +2075,157 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" +"已過濾的材質會與完全透明的鄰居混合 RGB 值,\n" +"PNG 最佳化器通常會丟棄,有時候會導致透明材質\n" +"會有黑邊或亮邊。套用這個過濾器以在材質載入時\n" +"清理這些東西。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "無過濾器" +msgstr "過濾器" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "固定的地圖種子" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "飛行按鍵" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "飛行" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "霧" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "" +msgstr "霧切換鍵" #: src/settings_translation_file.cpp msgid "Font path" -msgstr "" +msgstr "字型路徑" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "字型陰影" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "字型陰影 alpha 值" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "字型陰影 alpha(不透明度,介於 0 到 255)。" #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." -msgstr "" +msgstr "字型陰影偏移,若為 0 則陰影將不會被繪製。" #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "字型大小" #: src/settings_translation_file.cpp #, fuzzy +msgid "Format of screenshots." +msgstr "儲存螢幕截圖的路徑。" + +#: src/settings_translation_file.cpp msgid "Forward key" -msgstr "前進" +msgstr "前進鍵" #: src/settings_translation_file.cpp msgid "Freetype fonts" -msgstr "" +msgstr "Freetype 字型" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." -msgstr "" +msgstr "要在客戶端上從多遠的區塊開始生成,以地圖區塊計算(16 個節點)。" #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." -msgstr "" +msgstr "要把多遠的區塊送到客戶端,以地圖區塊計算(16 個節點)。" #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." -msgstr "" +msgstr "客戶端上知道多遠的區塊上的物件,以地圖區塊計算(16 個節點)。" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "全螢幕" #: src/settings_translation_file.cpp msgid "Full screen BPP" -msgstr "" +msgstr "全螢幕 BPP" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "全螢幕模式。" #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "" +msgstr "圖形使用者介面縮放比例" #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI scaling filter" -msgstr "圖形使用者介面縮放係數" +msgstr "圖形使用者介面縮放過濾器" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "" +msgstr "圖形使用者介面縮放比例過濾器 txr2img" #: src/settings_translation_file.cpp msgid "Gamma" -msgstr "" +msgstr "Gamma" + +#: src/settings_translation_file.cpp +msgid "General" +msgstr "一般" #: src/settings_translation_file.cpp -#, fuzzy msgid "Generate normalmaps" msgstr "生成一般地圖" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations.\n" +"The default flags set in the engine are: caves, light, decorations\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"全域地圖產生屬性。\n" +"在 Mapgen v6 中,「decorations」旗標控制所有除了樹木\n" +"與叢林以外的裝飾,在其他所有的 mapgen 中,這個旗標控制所有裝飾。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "圖形" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "重力" + +#: src/settings_translation_file.cpp +msgid "HTTP Mods" +msgstr "HTTP Mod" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "HUD 切換鍵" #: src/settings_translation_file.cpp msgid "" @@ -1869,22 +2234,30 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"處理已棄用的 Lua API 呼叫:\n" +"- 舊式:(嘗試)模仿舊的行為(release 模式預設值)。\n" +"- 紀錄:模仿並記錄已棄用呼叫的反向追蹤(debug 模式預設值)\n" +"- 錯誤:在使用到棄用的呼叫時中止(建議 mod 開發者使用)。" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "初始視窗大小的高度組件。" #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." -msgstr "" +msgstr "雲朵要出現的高度。" #: src/settings_translation_file.cpp msgid "High-precision FPU" -msgstr "" +msgstr "高精度 FPU" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "伺服器的首頁,會在伺服器清單中顯示。" #: src/settings_translation_file.cpp -msgid "Horizontal initial window size." -msgstr "" +msgid "How deep to make rivers" +msgstr "河流多深" #: src/settings_translation_file.cpp msgid "" @@ -1892,76 +2265,94 @@ msgid "" "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" +"活躍的區塊要遵循多大的區域,以地圖區塊(16 個節點)計。\n" +"活動區塊物件將會被載入,而 ABM 會執行。" #: src/settings_translation_file.cpp msgid "" "How many blocks are flying in the wire simultaneously for the whole server." -msgstr "" +msgstr "整個伺服器有多少個區塊同時以線性方式飛行。" #: src/settings_translation_file.cpp msgid "How many blocks are flying in the wire simultaneously per client." -msgstr "" +msgstr "每個客戶端有多少個區塊同時以線性方式飛行。" #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"在取消載入前要有多少未使用的地圖區塊。\n" +"較高的值會較平滑,但會使用更多的記憶體。" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers" +msgstr "河流多寬" #: src/settings_translation_file.cpp msgid "IPv6" -msgstr "" +msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "" +msgstr "IPv6 伺服器" #: src/settings_translation_file.cpp msgid "IPv6 support." -msgstr "" +msgstr "IPv6 支援。" #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"若 FPS 高於此,以休眠的方式限制它\n" +"以避免無謂的浪費 CPU 的電力。" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If disabled " -msgstr "停用 MP" +msgid "" +"If disabled \"use\" key is used to fly fast if both fly and fast mode are " +"enabled." +msgstr "若停用,在飛行與快速模式皆啟用時,「使用」鍵將用於快速飛行。" #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" -"This requires the " +"This requires the \"noclip\" privilege on the server." msgstr "" +"若與飛行模式一同啟用,玩家就可以飛過固體節點。\n" +"這需要在伺服器上的「noclip」特權。" #: src/settings_translation_file.cpp -#, fuzzy -msgid "If enabled, " -msgstr "已啟用" +msgid "" +"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " +"and descending." +msgstr "若啟用,向下爬與下降將使用「使用」鍵而非「潛行」鍵。" #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"若啟用,動作會被記錄以供復原。\n" +"這個選項只會在伺服器啟動時讀取。" #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" +msgstr "若啟用,將會停用在多人遊戲中的防止作弊。" #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" +"若啟用,無效的世界資訊將不會造成伺服器關機。\n" +"只在您知道您在幹嘛時才啟用這個選項。" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." -msgstr "" +msgstr "若啟用,新玩家將無法以空密碼加入。" #: src/settings_translation_file.cpp msgid "" @@ -1969,68 +2360,123 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"若啟用,您可以在您站立的位置(腳與眼睛的高度)放置方塊。當在小區域裡與節點盒" +"一同工作時非常有用。" #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." -msgstr "" +msgstr "如果設定了這個,玩家將會總是在指定的位置重生。" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "忽略世界錯誤" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "遊戲" +msgstr "遊戲中" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." -msgstr "" +msgstr "遊戲內聊天視窗背景 alpha 值(不透明度,介於 0 到 255 間)。" #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "" +msgstr "遊戲內聊天視窗背景顏色 (R,G,B)。" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." -msgstr "" +msgstr "儲存世界中的重要變更的間隔,以秒計。" #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "" +msgstr "發送當日時間至客戶端的間隔。" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "物品欄物品動畫" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "物品欄" +msgstr "物品欄按鍵" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "滑鼠反相" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "反轉滑鼠移動的方向。" #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Jump key" -msgstr "跳躍" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" -msgstr "" +msgstr "物品主體 TTL" #: src/settings_translation_file.cpp msgid "" -"Key for decreasing the viewing range. Modifies the minimum viewing range.\n" +"Iterations of the recursive function.\n" +"Controls the amount of fine detail." +msgstr "" +"遞迴函數的迭代。\n" +"控制細節的品質。" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: W component of hypercomplex constant determining julia " +"shape.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"僅朱利亞集合:可交換超複數的 W 元素決定了 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範圍約在 -2 至 2 間。" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: X component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"僅朱利亞集合:可交換超複數的 X 元素決定了 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範圍約在 -2 至 2 間。" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Y component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"僅朱利亞集合:可交換超複數的 Y 元素決定了 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範圍約在 -2 至 2 間。" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only: Z component of hypercomplex constant determining julia " +"shape.\n" +"Range roughly -2 to 2." +msgstr "" +"僅朱利亞集合:可交換超複數的 Z 元素決定了 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範圍約在 -2 至 2 間。" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "跳躍鍵" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "跳躍速度" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"降低視野範圍的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2038,13 +2484,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"丟棄目前選定物品的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" -"Key for increasing the viewing range. Modifies the minimum viewing range.\n" +"Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"增加視野範圍的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2052,6 +2504,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"跳躍的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2059,6 +2514,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"在快速模式中快速移動的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2066,6 +2524,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"將玩家往後方移動的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2073,6 +2534,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"將玩家往前方移動的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2080,6 +2544,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"將玩家往左方移動的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2087,6 +2554,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"將玩家往右方移動的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2094,6 +2564,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"開啟聊天視窗的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2101,6 +2574,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"開啟對話視窗以供輸入指令的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2108,6 +2584,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"開啟對話視窗的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2115,6 +2594,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"開啟物品欄的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2122,6 +2604,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"印出除錯堆疊的按鍵。對開發來說很有用。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2131,6 +2616,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"潛行的按鍵。\n" +"若 aux1_ 降低停用時,也會用於向下攀爬與在水中下潛。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2138,6 +2627,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"用來切換第一與第三人稱視角的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2145,6 +2637,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"拍攝螢幕截圖的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2152,6 +2647,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換電影模式的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2159,6 +2657,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示迷你地圖的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2166,6 +2667,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換快速模式的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2173,6 +2677,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換飛行的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2180,6 +2687,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換 noclip 模式的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2187,6 +2697,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換視角更新的按鍵。僅對開發有用。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2194,6 +2707,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示除錯資訊的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2201,6 +2717,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示 HUD 的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2208,6 +2727,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示聊天的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2215,6 +2737,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示霧的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2222,6 +2747,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換顯示輪廓的按鍵。對開發有用。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2229,18 +2757,29 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"切換無限視野的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Key use for climbing/descending" -msgstr "" +msgstr "用於攀爬/下降的按鍵" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "語言" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "大型洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Lava Features" +msgstr "岩漿功能" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "樹葉樣式" #: src/settings_translation_file.cpp msgid "" @@ -2249,16 +2788,27 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"樹葉樣式:\n" +"- 花俏:所有表面均可見\n" +"- 簡單:只有外部表面,若有已定義的 special_tiles,則會使用它\n" +"- 不透明:停用透明度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "左邊選單鍵" +msgstr "左鍵" #: src/settings_translation_file.cpp msgid "" "Length of a server tick and the interval at which objects are generally " "updated over network." +msgstr "伺服器 tick 的長度與相關物件的間隔通常透過網路更新。" + +#: src/settings_translation_file.cpp +msgid "Length of time between ABM execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" msgstr "" #: src/settings_translation_file.cpp @@ -2272,14 +2822,22 @@ msgid "" "- info\n" "- verbose" msgstr "" +"要被寫入到 debug.txt 的紀錄等級:\n" +"- (不記錄)\n" +"- none(無等級的訊息)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" -msgstr "" +msgstr "在磁碟上出現佇列的限制" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "" +msgstr "要生成的出現佇列的限制" #: src/settings_translation_file.cpp msgid "" @@ -2289,328 +2847,521 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"限制平行的 HTTP 請求數量。影響:\n" +"- 媒體擷取,若伺服器使用 remote_media 設定。\n" +"- 伺服器清單下載與伺服器公告。\n" +"- 從主選單下載的東西(例如 mod 管理員)。\n" +"只會在包含 cURL 進行編譯時有影響。" #: src/settings_translation_file.cpp msgid "Liquid fluidity" -msgstr "" +msgstr "液體流動性" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "液體流動平滑" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "液體迴路最大值" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "液體佇列清除時間" #: src/settings_translation_file.cpp msgid "Liquid sink" -msgstr "" +msgstr "液體下沉" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "液體更新間隔,以秒計。" #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "液體更新 tick" #: src/settings_translation_file.cpp msgid "Main menu game manager" -msgstr "" +msgstr "主選單遊戲管理員" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu mod manager" -msgstr "主選單" +msgstr "主選單 mod 管理員" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "主選單" +msgstr "主選單指令稿" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." -msgstr "" +msgstr "讓霧與天空的顏色取決於時間(黎明/日落)與觀看方向。" #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" +msgstr "讓 DirectX 與 LuaJIT 一同運作。若其造成麻煩則請停用。" #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "地圖目錄" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V6.\n" -"When snowbiomes are enabled jungles are enabled and the jungles flag is " -"ignored.\n" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill' makes higher elevations colder, which may cause biome " +"issues.\n" +"'humid_rivers' modifies the humidity around rivers and in areas where water " +"would tend to pool,\n" +"it may interfere with delicately adjusted biomes.\n" +"The default flags set in the engine are: altitude_chill, humid_rivers\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"專用於 Mapgen v6 的地圖生成屬性。\n" +"當 snowbiomes 與叢林都啟用時,叢林旗標會被忽略。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Map generation attributes specific to Mapgen V7.\n" -"'ridges' are the rivers.\n" +"Map generation attributes specific to Mapgen flat.\n" +"Occasional lakes and hills can be added to the flat world.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" -"Flags starting with " +"Flags starting with 'no' are used to explicitly disable them." msgstr "" +"專用於 Mapgen flat 的地圖生成屬性。\n" +"偶而會在平坦的世界中加入湖泊與山丘。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' " +"flag is ignored.\n" +"The default flags set in the engine are: biomeblend, mudflow\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"專用於 Mapgen v6 的地圖生成屬性。\n" +"當 snowbiomes 與叢林都啟用時,叢林旗標會被忽略。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"The 'ridges' flag controls the rivers.\n" +"The default flags set in the engine are: mountains, ridges\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with 'no' are used to explicitly disable them." +msgstr "" +"專用於 Mapgen v6 的地圖生成屬性。\n" +"當 snowbiomes 與叢林都啟用時,叢林旗標會被忽略。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "地圖生成限制" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "地圖儲存間隔" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "地圖區塊限制" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "地圖區塊卸除逾時" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "Mapgen 山谷" #: src/settings_translation_file.cpp msgid "Mapgen biome heat noise parameters" -msgstr "" +msgstr "Mapgen 生物群落 熱 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity blend noise parameters" -msgstr "" +msgstr "Mapgen 生物群落 濕度 混合 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen biome humidity noise parameters" -msgstr "" +msgstr "Mapgen 生物群落 濕度 噪音 參數" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "地圖產生器" +msgstr "Mapgen 除錯" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Mapgen 旗標" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat" +msgstr "Mapgen flat" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen flags" -msgstr "地圖產生器" +msgid "Mapgen flat cave width" +msgstr "Mapgen flat 大型洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave1 noise parameters" +msgstr "Mapgen flat 洞穴1 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat cave2 noise parameters" +msgstr "Mapgen flat 洞穴2 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat filler depth noise parameters" +msgstr "Mapgen flat 填充器 深度 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat flags" +msgstr "Mapgen flat 旗標" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat ground level" +msgstr "Mapgen flat 地面" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill steepness" +msgstr "Mapgen flat 山丘坡度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat hill threshold" +msgstr "Mapgen flat 山丘閾值" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake steepness" +msgstr "Mapgen flat 湖泊坡度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat lake threshold" +msgstr "Mapgen flat 湖泊閾值" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat large cave depth" +msgstr "Mapgen flat 大型洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Mapgen flat terrain noise parameters" +msgstr "Mapgen flat 地形 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal" +msgstr "地圖產生器分形" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Mapgen fractal cave width" +msgstr "Mapgen fractal slice w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave1 noise parameters" +msgstr "Mapgen fractal 洞穴1 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal cave2 noise parameters" +msgstr "Mapgen fractal 洞穴2 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal filler depth noise parameters" +msgstr "Mapgen fractal 填充器 深度 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal fractal" +msgstr "Mapgen fractal fractal" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal iterations" +msgstr "Mapgen fractal 迭代" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia w" +msgstr "Mapgen fractal 朱利亞 w" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia x" +msgstr "Mapgen fractal 朱利亞 x" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia y" +msgstr "Mapgen fractal 朱利亞 y" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal julia z" +msgstr "Mapgen fractal 朱利亞 z" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal offset" +msgstr "Mapgen fractal 偏移" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal scale" +msgstr "Mapgen fractal 規模" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal seabed noise parameters" +msgstr "Mapgen fractal 海床 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen fractal slice w" +msgstr "Mapgen fractal slice w" #: src/settings_translation_file.cpp msgid "Mapgen heat blend noise parameters" -msgstr "" +msgstr "Mapgen 熱 混合 噪音 參數" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "地圖產生器" +msgstr "Mapgen 名稱" + +#: src/settings_translation_file.cpp +msgid "Mapgen v5" +msgstr "Mapgen v5" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v5" -msgstr "地圖產生器" +msgid "Mapgen v5 cave width" +msgstr "Mapgen flat 大型洞穴深度" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave1 noise parameters" -msgstr "" +msgstr "Mapgen v5 洞穴1 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v5 cave2 noise parameters" -msgstr "" +msgstr "Mapgen v5 洞穴2 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v5 factor noise parameters" -msgstr "" +msgstr "Mapgen v5 因子 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v5 filler depth noise parameters" -msgstr "" +msgstr "Mapgen v5 填充器 深度 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v5 height noise parameters" -msgstr "" +msgstr "Mapgen v5 高度 噪音 參數" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen v6" -msgstr "地圖產生器" +msgstr "Mapgen v6" #: src/settings_translation_file.cpp msgid "Mapgen v6 apple trees noise parameters" -msgstr "" +msgstr "Mapgen v6 蘋果樹 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach frequency" -msgstr "" +msgstr "Mapgen v6 海灘頻率" #: src/settings_translation_file.cpp msgid "Mapgen v6 beach noise parameters" -msgstr "" +msgstr "Mapgen v6 海灘 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 biome noise parameters" -msgstr "" +msgstr "Mapgen v6 生物群落 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 cave noise parameters" -msgstr "" +msgstr "Mapgen v6 洞穴 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 desert frequency" -msgstr "" +msgstr "Mapgen v6 沙漠頻率" #: src/settings_translation_file.cpp msgid "Mapgen v6 flags" -msgstr "" +msgstr "Mapgen v6 旗標" #: src/settings_translation_file.cpp msgid "Mapgen v6 height select noise parameters" -msgstr "" +msgstr "Mapgen v6 高度 選擇 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 humidity noise parameters" -msgstr "" +msgstr "Mapgen v6 濕度 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 mud noise parameters" -msgstr "" +msgstr "Mapgen v6 泥土 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 steepness noise parameters" -msgstr "" +msgstr "Mapgen v6 坡度 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain altitude noise parameters" -msgstr "" +msgstr "Mapgen v6 地形 海拔 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 terrain base noise parameters" -msgstr "" +msgstr "Mapgen v6 地形 基礎 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v6 trees noise parameters" -msgstr "" +msgstr "Mapgen v6 樹 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Mapgen v7" +msgstr "地圖產生器 v7" #: src/settings_translation_file.cpp #, fuzzy -msgid "Mapgen v7" -msgstr "地圖產生器" +msgid "Mapgen v7 cave width" +msgstr "Mapgen flat 大型洞穴深度" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave1 noise parameters" -msgstr "" +msgstr "Mapgen v7 洞穴1 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 cave2 noise parameters" -msgstr "" +msgstr "Mapgen v7 洞穴2 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 filler depth noise parameters" -msgstr "" +msgstr "Mapgen v7 填充器 深度 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 flags" -msgstr "" +msgstr "Mapgen v7 旗標" #: src/settings_translation_file.cpp msgid "Mapgen v7 height select noise parameters" -msgstr "" +msgstr "Mapgen v7 高度 選擇 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 mount height noise parameters" -msgstr "" +msgstr "Mapgen v7 坐騎 高度 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 mountain noise parameters" -msgstr "" +msgstr "Mapgen v7 山 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge noise parameters" -msgstr "" +msgstr "Mapgen v7 ridge 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 ridge water noise parameters" -msgstr "" +msgstr "Mapgen v7 ridge 水 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain altitude noise parameters" -msgstr "" +msgstr "Mapgen v7 地形 海拔 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain base noise parameters" -msgstr "" +msgstr "Mapgen v7 地形 基礎 噪音 參數" #: src/settings_translation_file.cpp msgid "Mapgen v7 terrain persistation noise parameters" -msgstr "" +msgstr "Mapgen v7 地形 持久 噪音 參數" + +#: src/settings_translation_file.cpp +msgid "Massive cave depth" +msgstr "大規模洞穴深度" + +#: src/settings_translation_file.cpp +msgid "Massive cave noise" +msgstr "大規模洞穴噪音" + +#: src/settings_translation_file.cpp +msgid "Massive caves form here." +msgstr "這裡的大規模洞穴結構。" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "最大區塊產生距離" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "最大區塊傳送距離" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "最大按步驟處理液體。" #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "最大清晰物件額外區塊" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" -msgstr "" +msgstr "每個迭代最大封包" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "最高 FPS" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "當遊戲暫停時的最高 FPS。" #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "" +msgstr "強制載入區塊的最大值" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "快捷列最大寬度" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "可被放進佇列內等待載入的最大區塊數。" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"可被放進佇列內等待生成的最大區塊數。\n" +"將其設定留空則會自動選擇適當的值。" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"可被放進佇列內等待從檔案載入的最大區塊數。\n" +"將其設定留空則會自動選擇適當的值。" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "" +msgstr "強制載入地圖區塊的最大數量。" #: src/settings_translation_file.cpp msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"要保留在記憶體中的客戶端地圖區塊最大值。\n" +"設定為 -1 則不限制數量。" #: src/settings_translation_file.cpp msgid "" @@ -2618,135 +3369,141 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"每個傳送步驟要傳送的最大封包數,若您的網路連線緩慢\n" +"請試著降低它,但請不要降低到低於兩倍的目標\n" +"客戶端數。" #: src/settings_translation_file.cpp msgid "Maximum number of players that can connect simultaneously." -msgstr "" +msgstr "最大可同時連線的玩家數。" #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "最大靜態儲存於一個區塊中的物件數量。" #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"要用於目前視窗的最大比例,放在快捷列中。\n" +"如果有東西要顯示在快捷列左邊或右邊時很有用。" #: src/settings_translation_file.cpp msgid "Maximum simultaneously blocks send per client" -msgstr "" +msgstr "每個客戶端最大同時傳送區塊數" #: src/settings_translation_file.cpp msgid "Maximum simultaneously bocks send total" -msgstr "" +msgstr "總和最大同時傳送區塊數" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "" +msgstr "檔案下載(例如下載 mod)可花費的最大時間,以毫秒計。" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "最多使用者" #: src/settings_translation_file.cpp msgid "Maxmimum objects per block" -msgstr "" +msgstr "每個區塊最大物件數" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" msgstr "選單" #: src/settings_translation_file.cpp msgid "Mesh cache" -msgstr "" +msgstr "網狀快取" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "每日訊息" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "每日訊息會在玩家連線時顯示。" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "用於突顯物件的方法。" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "迷你地圖" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "迷你地圖按鍵" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "迷你地圖掃描高度" #: src/settings_translation_file.cpp msgid "Minimum texture size for filters" -msgstr "" +msgstr "過濾器的最大材質大小" #: src/settings_translation_file.cpp -msgid "" -"Minimum wanted FPS.\n" -"The amount of rendered stuff is dynamically set according to this. and " -"viewing range min and max." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" msgstr "映射貼圖" #: src/settings_translation_file.cpp msgid "Mod profiling" -msgstr "" +msgstr "Mod 分析器" #: src/settings_translation_file.cpp msgid "Modstore details URL" -msgstr "" +msgstr "Modstore 詳細資訊 URL" #: src/settings_translation_file.cpp msgid "Modstore download URL" -msgstr "" +msgstr "Modstore 下載 URL" #: src/settings_translation_file.cpp msgid "Modstore mods list URL" -msgstr "" +msgstr "Modstore mod 清單 URL" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "等寬字型路徑" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "等寬字型大小" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "滑鼠靈敏度" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "滑鼠靈敏度倍數。" #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"落差晃動的倍數。\n" +"舉例來說:設為 0 就不會有視野晃動;1.0 是一般情況;2.0 為雙倍。" #: src/settings_translation_file.cpp msgid "" "Multiplier for view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"視野晃動的倍數。\n" +"舉例來說:設為 0 就不會有視野晃動;1.0 是一般情況;2.0 為雙倍。" #: src/settings_translation_file.cpp msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this." msgstr "" +"要用來建立新世界的地圖產生器的名稱。\n" +"在主選單中建立世界將會覆蓋它。" #: src/settings_translation_file.cpp msgid "" @@ -2754,58 +3511,67 @@ msgid "" "When running a server, clients connecting with this name are admins.\n" "When starting from the main menu, this is overridden." msgstr "" +"玩家名稱。\n" +"當執行伺服器時,以此名稱連線的客戶端即為管理員。\n" +"當從主選單啟動時,這個將會被覆寫。" #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." -msgstr "" +msgstr "伺服器名稱,當玩家加入時會顯示,也會顯示在伺服器清單中。" #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "網路" #: src/settings_translation_file.cpp msgid "" "Network port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" - -#: src/settings_translation_file.cpp -msgid "New style water" -msgstr "" +"要監聽的網路埠 (UDP)。\n" +"當從主選單啟動時,這個值將會被覆寫。" #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "新使用這需要輸入這個密碼。" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Noclip" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Noclip 按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Node highlighting" msgstr "突顯節點" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "NodeTimer interval" +msgstr "時間傳送間隔" + #: src/settings_translation_file.cpp msgid "Noise parameters for biome API temperature, humidity and biome blend." -msgstr "" +msgstr "噪音參數供生物群落 API 溫度、濕度與生物混合使用。" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "噪音" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "" +msgstr "法線貼圖採樣" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "" +msgstr "法線貼圖強度" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "出現的執行緒數" #: src/settings_translation_file.cpp msgid "" @@ -2815,6 +3581,9 @@ msgid "" "speed greatly\n" "at the cost of slightly buggy caves." msgstr "" +"要使用的出現的執行緒數。讓這個欄位留空,或是增大這個數字\n" +"來使用多執行緒。在多處理器的系統上,這將會大大地改善mapgen 的速度\n" +"在稍有臭蟲的洞穴中的耗費資源。" #: src/settings_translation_file.cpp msgid "" @@ -2822,122 +3591,109 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"可被 /clearobjects 一次載入的額外區塊數量。\n" +"這是與 sqlite 處理耗費的折衷與\n" +"記憶體耗費(根據經驗,4096=100MB)。" #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "" +msgstr "視差遮蔽迭代次數。" #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" +msgstr "視差遮蔽效果的總偏差,通常是規模/2。" #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "" +msgstr "視差遮蔽效果的總規模。" #: src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "視差遮蔽" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion" msgstr "視差遮蔽" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion Scale" -msgstr "視差遮蔽" +msgstr "視差遮蔽係數" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion bias" -msgstr "視差遮蔽" +msgstr "視差遮蔽偏差" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion iterations" -msgstr "視差遮蔽" +msgstr "視差遮蔽迭代" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion mode" -msgstr "視差遮蔽" +msgstr "視差遮蔽模式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion strength" -msgstr "視差遮蔽" +msgstr "視差遮蔽強度" #: src/settings_translation_file.cpp msgid "Path to TrueTypeFont or bitmap." -msgstr "" +msgstr "TrueType 字型或點陣字的路徑。" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "儲存螢幕截圖的路徑。" #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." -msgstr "" +msgstr "材質目錄的路徑。所有材質都會先從這裡搜尋。" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "物理" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" -"This requires the " +"This requires the \"fly\" privilege on the server." msgstr "" +"玩家可以不受重力影響飛行。\n" +"這需要在伺服器上啟用「飛行」特權。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player name" -msgstr "玩家名稱太長。" +msgstr "玩家名稱" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "玩家傳送距離" #: src/settings_translation_file.cpp msgid "Player versus Player" -msgstr "" +msgstr "玩家對玩家" #: src/settings_translation_file.cpp msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Pre-generate all item visuals used in the inventory.\n" -"This increases startup time, but runs smoother in-game.\n" -"The generated textures can easily exceed your VRAM, causing artifacts in the " -"inventory." -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Preload inventory textures" -msgstr "正在載入材質..." +"要連線至的埠 (UDP)。\n" +"注意在主選單中的埠欄位會覆蓋這個設定。" #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "避免 mod 做出不安全的舉動,像是執行 shell 指令等。" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" msgstr "" #: src/settings_translation_file.cpp msgid "Profiler data print interval. 0 = disable. Useful for developers." -msgstr "" +msgstr "分析器資料印出間隔。0 = 停用。對開發者有用。" #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "分析器切換鍵" #: src/settings_translation_file.cpp msgid "Profiling print interval" -msgstr "" +msgstr "分析列印間隔" #: src/settings_translation_file.cpp msgid "" @@ -2945,52 +3701,72 @@ msgid "" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"雲區的半徑,以雲立方體的 64 個節點的數目計算。\n" +"大於 26 的值將會在雲的角落有銳角的產生。" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers" +msgstr "提升地形以讓山谷在河流周圍" #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "隨機輸入" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "選擇範圍" +msgstr "範圍選擇鍵" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +msgstr "遠端媒體" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "遠端埠" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "以自訂選單取代預設主選單。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "右邊選單鍵" +msgstr "右鍵" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "右鍵點擊重覆間隔" + +#: src/settings_translation_file.cpp +msgid "River Depth" +msgstr "河流深度" + +#: src/settings_translation_file.cpp +msgid "River Noise" +msgstr "河流噪音" + +#: src/settings_translation_file.cpp +msgid "River Size" +msgstr "河流大小" + +#: src/settings_translation_file.cpp +msgid "River noise -- rivers occur close to zero" +msgstr "河流噪音 -- 會在接近河流最低點的地方遇到" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "返回記錄" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "" +msgstr "圓形小地圖" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "" +msgstr "由客戶端儲存接收到的地圖到磁碟上。" #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "儲存從伺服器接收到的地圖" #: src/settings_translation_file.cpp msgid "" @@ -3000,111 +3776,128 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"由使用者指定一個值來作為放大圖形使用者介面的比例。\n" +"使用最近相鄰與反鋸齒過濾器以放大圖形使用者介面。\n" +"這將可以讓一些粗糙的邊緣變得較圓滑,並當\n" +"比例縮小時會混合像素,代價是在模糊一些\n" +"邊緣的像素時會以非整數的大小縮放。" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "螢幕高度" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "螢幕寬度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" msgstr "螢幕截圖" #: src/settings_translation_file.cpp msgid "Screenshot folder" +msgstr "螢幕截圖資料夾" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot format" +msgstr "螢幕截圖資料夾" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Screenshot quality" +msgstr "螢幕截圖" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "安全" #: src/settings_translation_file.cpp msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "請見 http://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "邊框顏色 (R,G,B) 選取框。" #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "色彩選取框" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "寬度選取框" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "開始單人遊戲" +msgstr "伺服器/單人遊戲" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "伺服器" +msgstr "伺服器 URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "伺服器埠" +msgstr "伺服器地址" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "伺服器埠" +msgstr "伺服器描述" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "伺服器" +msgstr "伺服器名稱" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "伺服器埠" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "公共伺服器清單" +msgstr "伺服器清單 URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "公共伺服器清單" +msgstr "伺服器清單檔" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"設定語言。留空以使用系統語言。\n" +"變更後必須重新啟動以使其生效。" #: src/settings_translation_file.cpp msgid "" "Set to true enables waving leaves.\n" "Requires shaders to be enabled." msgstr "" +"設定為真以啟用擺動的樹葉。\n" +"必須同時啟用著色器。" #: src/settings_translation_file.cpp msgid "" "Set to true enables waving plants.\n" "Requires shaders to be enabled." msgstr "" +"設定為真以啟用擺動的植物。\n" +"必須同時啟用著色器。" #: src/settings_translation_file.cpp msgid "" "Set to true enables waving water.\n" "Requires shaders to be enabled." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shaders" -msgstr "著色器" +"設定為真以啟用波動的水。\n" +"必須同時啟用著色器。" #: src/settings_translation_file.cpp msgid "" @@ -3112,52 +3905,62 @@ msgid "" "video cards.\n" "Thy only work with the OpenGL video backend." msgstr "" +"著色器讓您可以有進階視覺效果並可能會在某些顯示卡上增強效能。\n" +"這僅在 OpenGL 視訊後端上才能運作。" #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "迷你地圖的形狀。啟用 = 圓形,停用 = 方形。" #: src/settings_translation_file.cpp msgid "Show debug info" +msgstr "顯示除錯資訊" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "關閉訊息" #: src/settings_translation_file.cpp msgid "" "Size of chunks to be generated at once by mapgen, stated in mapblocks (16 " "nodes)." -msgstr "" +msgstr "要由 mapgen 生成的區塊大小,以地圖區塊(16 個節電)。" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights" +msgstr "坡度與填充一同運作來修改高度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "平滑光線" +msgstr "平滑光" #: src/settings_translation_file.cpp msgid "" -"Smooths camera when moving and looking arround.\n" +"Smooths camera when moving and looking around.\n" "Useful for recording videos." msgstr "" +"當移動與東張西望時讓攝影機變流暢。\n" +"對錄影很有用。" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "在電影模式中讓攝影機旋轉變流暢。設為 0 以停用。" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "讓旋轉攝影機時較流暢。設為 0 以停用。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "潛行" +msgstr "潛行按鍵" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "聲音" #: src/settings_translation_file.cpp msgid "" @@ -3166,53 +3969,86 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"客戶端從指定的 URL 而不是使用 UDP 抓取媒體。\n" +"$filename 應該可以透過 cURL 從 $remote_media$filename 存取。\n" +"(當然,remote_media 部份應以斜線結束)。\n" +"沒有在其中的檔案將會以平常的方式抓取。" #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "靜態重生點" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "生成一般地圖" +msgstr "生成之一般地圖的強度。" #: src/settings_translation_file.cpp msgid "Strength of parallax." -msgstr "" +msgstr "視差強度。" #: src/settings_translation_file.cpp msgid "Strict protocol checking" +msgstr "嚴格協議檢查" + +#: src/settings_translation_file.cpp +msgid "Support older servers" msgstr "" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "同步的 SQLite" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Texture path" -msgstr "材質包" +msgid "Terrain Height" +msgstr "地形高度" #: src/settings_translation_file.cpp msgid "" -"The allowed adjustment range for the automatic rendering range adjustment.\n" -"Set this to be equal to viewing range minimum to disable the auto-adjustment " -"algorithm." +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." msgstr "" +"山丘的地形噪音閾值。\n" +"控制山丘覆蓋世界的比例。\n" +"往 0.0 調整一取得較大的比例。" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" +"湖泊的地形噪音閾值。\n" +"控制湖泊覆蓋世界的比例。\n" +"往 0.0 調整一取得較大的比例。" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "材質路徑" + +#: src/settings_translation_file.cpp +msgid "The altitude at which temperature drops by 20C" +msgstr "會降低攝氏 20 度的高度" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other filler" +msgstr "塵土或其他填充物的深度" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "伺服器要監聽的網路介面。" #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"新使用者會自動取得的特權。\n" +"在遊戲中請見 /privs 以取得在您的伺服器上與 mod 設定的完整清單。" #: src/settings_translation_file.cpp msgid "The rendering back-end for Irrlicht." -msgstr "" +msgstr "Irrlicht 的成像後端。" #: src/settings_translation_file.cpp msgid "" @@ -3221,6 +4057,10 @@ msgid "" "setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" "set to the nearest valid value." msgstr "" +"節點環境光遮蔽的強度(暗度)。\n" +"愈低愈暗,愈高愈亮。這個設定的\n" +"值的有效範圍是 0.25 到 4.0 間。如果\n" +"值超出範圍,其將會被設定為最近的有效值。" #: src/settings_translation_file.cpp msgid "" @@ -3228,15 +4068,22 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" +"液體佇列可能會超出處理容量的時間(以秒計)\n" +"超過時將會嘗試透過傾倒舊佇列項目減少其\n" +"大小。將值設為 0 以停用此功能。" #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated right clicks when holding the " "right mouse button." -msgstr "" +msgstr "當按住滑鼠右鍵時,重覆右鍵點選的間隔以秒計。" #: src/settings_translation_file.cpp msgid "This font will be used for certain languages." +msgstr "這個字型將會被用於特定的語言。" + +#: src/settings_translation_file.cpp +msgid "Time in between active block management cycles" msgstr "" #: src/settings_translation_file.cpp @@ -3244,18 +4091,20 @@ msgid "" "Time in seconds for item entity (dropped items) to live.\n" "Setting it to -1 disables the feature." msgstr "" +"物品(丟棄的物品)可以存活多久,以秒計。\n" +"設定其為 -1 以停用這個功能。" #: src/settings_translation_file.cpp msgid "Time send interval" -msgstr "" +msgstr "時間傳送間隔" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "" +msgstr "時間速度" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." -msgstr "" +msgstr "客戶端從記憶體移除未使用的地圖資料的逾時時間。" #: src/settings_translation_file.cpp msgid "" @@ -3264,17 +4113,18 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" +"為了降低延遲,區塊傳送將會在玩家建造東西時減速。\n" +"這將會決定放置或移除節點後減速多久。" #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "" +msgstr "切換攝影機模式按鍵" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "工具提示延遲" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "三線性過濾器" @@ -3284,149 +4134,177 @@ msgid "" "False = 128\n" "Useable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"對於讓迷你地圖在較慢的機器上變得流暢有效。" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "信任的 mod" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" +msgstr "會在多人遊戲分頁中顯示的伺服器清單的 URL。" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "不限制玩家傳送距離" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "" +msgstr "卸除未使用的伺服器資料" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "使用 3D 立體而非扁平的雲朵外觀。" #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "在主選單的背景使用雲朵動畫。" #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" +msgstr "當從某個角度觀看時啟用各向異性過濾。" #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "" +msgstr "當縮放材質時使用雙線性過濾。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Use key" -msgstr "按下按鍵" +msgstr "使用按鍵" #: src/settings_translation_file.cpp msgid "Use mip mapping to scale textures. May slightly increase performance." -msgstr "" +msgstr "使用多重材質貼圖來縮放材質。可能會稍稍地增加效能。" #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "" +msgstr "當縮放材質時使用三線性過濾。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Useful for mod developers." -msgstr "先前的核心開發者" +msgstr "對 mod 開發者很有用。" #: src/settings_translation_file.cpp msgid "V-Sync" -msgstr "" +msgstr "垂直同步" #: src/settings_translation_file.cpp -msgid "Vertical initial window size." -msgstr "" +msgid "VBO" +msgstr "VBO" + +#: src/settings_translation_file.cpp +msgid "Valley Depth" +msgstr "山谷深度" + +#: src/settings_translation_file.cpp +msgid "Valley Fill" +msgstr "山谷填充" + +#: src/settings_translation_file.cpp +msgid "Valley Profile" +msgstr "山谷分析" + +#: src/settings_translation_file.cpp +msgid "Valley Slope" +msgstr "山谷坡度" + +#: src/settings_translation_file.cpp +msgid "Valleys C Flags" +msgstr "山谷 C 旗標" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." -msgstr "" +msgstr "垂直螢幕同步。" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "顯示卡驅動程式" #: src/settings_translation_file.cpp msgid "View bobbing" +msgstr "視野晃動" + +#: src/settings_translation_file.cpp +msgid "" +"View distance in nodes.\n" +"Min = 20" msgstr "" +"以節點數計算的視野距離。\n" +"最小值 = 20" #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "降低視野的按鍵" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "增加視野的按鍵" #: src/settings_translation_file.cpp -msgid "Viewing range maximum" -msgstr "" +msgid "Viewing range" +msgstr "視野" #: src/settings_translation_file.cpp -msgid "Viewing range minimum" -msgstr "" - -#: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" msgstr "音量" #: src/settings_translation_file.cpp -#, fuzzy -msgid "Walking speed" -msgstr "葉子擺動" +msgid "" +"W co-ordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" +"4D 碎形生成的 3D 切片的 W 座標。\n" +"決定了會生成怎樣的 4D 形狀的 3D 切片。\n" +"對 3D 碎形沒有影響。\n" +"範圍約在 -2 至 2 間。" #: src/settings_translation_file.cpp -msgid "Wanted FPS" -msgstr "" +msgid "Walking speed" +msgstr "走路速度" + +#: src/settings_translation_file.cpp +msgid "Water Features" +msgstr "水的特徵" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "水位" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "世界的水面高度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "葉子擺動" +msgstr "擺動節點" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" msgstr "葉子擺動" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving plants" msgstr "植物擺動" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water" msgstr "波動的水" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water height" -msgstr "波動的水" +msgstr "波動的水高度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water length" -msgstr "波動的水" +msgstr "波動的水長度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving water speed" -msgstr "波動的水" +msgstr "波動的水速度" #: src/settings_translation_file.cpp msgid "" @@ -3434,6 +4312,9 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" +"當 gui_scaling_filter 被設定為真時,所有的圖形使用者介面的圖片\n" +"都必須被軟體過濾,但是有一些圖片會被直接生成到\n" +"硬體(例如在物品欄中節點的繪圖至材質)。" #: src/settings_translation_file.cpp msgid "" @@ -3442,6 +4323,10 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "propery support downloading textures back from hardware." msgstr "" +"當 gui_scaling_filter_txr2img 被設定為真,複製這些圖片\n" +"從硬體到軟體以供縮放。當為假時,退回\n" +"至舊的縮放方法,供從硬體下載材質回\n" +"來軟體支援不佳的顯示卡驅動程式使用。" #: src/settings_translation_file.cpp msgid "" @@ -3453,6 +4338,13 @@ msgid "" "have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" "enabled." msgstr "" +"當使用雙線性/三線性/各向異性過濾器時,低解析度材質\n" +"會被模糊,所以會自動將大小縮放至最近的內插值\n" +"以讓像素保持清晰。這會設定最小材質大小\n" +"供放大材質使用;較高的值看起來較銳利,但需要更多的\n" +"記憶體。建議為 2 的次方。將這個值設定高於 1 不會\n" +"有任何視覺效果,除非雙線性/三線性/各向異性過濾\n" +"已啟用。" #: src/settings_translation_file.cpp msgid "" @@ -3463,116 +4355,170 @@ msgid "" "- Those groups have an offset of -32, -32 nodes from the origin.\n" "- Only groups which are within the map_generation_limit are generated" msgstr "" +"地圖產生器要在哪裡停止。\n" +"請注意:\n" +"- 限制為 31000(上面的設定沒有影響)\n" +"- 地圖產生器以 80x80x80 個節點為一組的方式運作(5x5x5 地圖區塊)。\n" +"- 這些群組有 -32 的偏移,從原點偏移 -32 節點。\n" +"- 只有在 map_generation_limit 內的群組會被生成" #: src/settings_translation_file.cpp msgid "" "Whether freetype fonts are used, requires freetype support to be compiled in." -msgstr "" +msgstr "是否使用 freetype 字型,需要將 freetype 支援編譯進來。" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "" +msgstr "是否每個地圖區塊的節點材質動畫可以不同步。" #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" +"玩家是否應該在客戶端無距離限制地顯示。\n" +"已棄用,請用 setting player_transfer_distance 代替。" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "" +msgstr "是否允許玩家傷害並殺害其他人。" #: src/settings_translation_file.cpp msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" +"是否要在 (Lua) 當掉後詢問客戶端是否重新連線。\n" +"如果您的伺服器被設定為會自動重新開啟,將這個設定為真。" #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." -msgstr "" +msgstr "是否將可視區域外模糊。" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "是否顯示客戶端除錯資訊(與按下 F5 有同樣的效果)。" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to support older servers before protocol version 25.\n" +"Enable if you want to connect to 0.4.12 servers and before.\n" +"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n" +"Disabling this option will protect your password better." msgstr "" +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "初始視窗大小的寬度元素。" + #: src/settings_translation_file.cpp msgid "Width of the selectionbox's lines around nodes." -msgstr "" +msgstr "選取框在節點周邊的選取框線。" #: src/settings_translation_file.cpp msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"世界目錄(在世界中的每個東西都儲存在這裡)。\n" +"若從主選單啟動則不需要。" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "扁平地面的 Y。" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large pseudorandom caves." +msgstr "大型偽隨機洞穴的 Y 上限。" #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "cURL 檔案下載逾時" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "cURL 並行限制" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL 逾時" -#~ msgid "To enable shaders the OpenGL driver needs to be used." -#~ msgstr "要啟用著色器,必須使用 OpenGL 驅動程式。" +#~ msgid "" +#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node " +#~ "completely.\n" +#~ "Note that this is not quite optimized and that smooth lighting on the\n" +#~ "water surface doesn't work with this." +#~ msgstr "" +#~ "啟用略低的的水面,所以它就不會完全「填滿」節點。\n" +#~ "注意,這個功能並未最佳化完成,水面的\n" +#~ "柔和光功能無法與此功能一同運作。" -#~ msgid "Touchthreshold (px)" -#~ msgstr "碰觸限值(像素)" +#~ msgid "Enable selection highlighting for nodes (disables selectionbox)." +#~ msgstr "啟用節點選擇突顯(停用選取框)。" -#~ msgid "Touch free target" -#~ msgstr "碰觸自由目標" - -#~ msgid "Scaling factor applied to menu elements: " -#~ msgstr "套用在選單元素的縮放係數: " +#~ msgid "Preload inventory textures" +#~ msgstr "預先載入物品欄材質" #~ msgid "Reset singleplayer world" #~ msgstr "重置單人遊戲世界" -#~ msgid "Antialiasing:" -#~ msgstr "反鋸齒:" +#~ msgid "Scaling factor applied to menu elements: " +#~ msgstr "套用在選單元素的縮放係數: " -#~ msgid "Texturing:" -#~ msgstr "紋理:" +#~ msgid "Touch free target" +#~ msgstr "碰觸自由目標" -#~ msgid "Opaque Water" -#~ msgstr "不透明水" +#~ msgid "If enabled, " +#~ msgstr "若啟用, " + +#~ msgid "If disabled " +#~ msgstr "若停用 " + +#~ msgid "Enable a bit lower water surface, so it doesn't " +#~ msgstr "啟用較低的水面,所以它不會 " + +#~ msgid "\"" +#~ msgstr "\"" + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen v7.\n" +#~ "'ridges' are the rivers.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them." +#~ msgstr "" +#~ "專用於 Mapgen v7 的地圖生成屬性。\n" +#~ "「ridges」為河流。\n" +#~ "未在旗標字串中指定的旗標將不會自預設值修改。\n" +#~ "以「no」開頭的旗標字串將會用於明確的停用它們。" + +#~ msgid "" +#~ "Map generation attributes specific to Mapgen Valleys.\n" +#~ "Flags that are not specified in the flag string are not modified from the " +#~ "default.\n" +#~ "Flags starting with \"no\" are used to explicitly disable them.\n" +#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome " +#~ "issues.\n" +#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where " +#~ "water would tend to pool. It may interfere with delicately adjusted " +#~ "biomes." +#~ msgstr "" +#~ "專用於 Mapgen 山谷的地圖生成屬性。\n" +#~ "未在旗標字串中指定的旗標將不會自預設值修改。\n" +#~ "以「no」開頭的旗標字串將會用於明確的停用它們。\n" +#~ "「altitude_chill」會讓較高的地方更寒冷,可能會造成生物群落的問題。\n" +#~ "「humid_rivers」會修改在河流附近的濕度,在那些區域附近水將會傾向變為一池。" +#~ "這可能會對微妙調整過的生物群落造成干擾。" #~ msgid "No!!!" #~ msgstr "否!!!" -#~ msgid "Are you sure to reset your singleplayer world?" -#~ msgstr "您確定要要重置您的單人遊戲世界嗎?" +#~ msgid "Generate Normalmaps" +#~ msgstr "生成一般地圖" -#~ msgid "8x" -#~ msgstr "8x" +#~ msgid "Public Serverlist" +#~ msgstr "公共伺服器清單" -#~ msgid "4x" -#~ msgstr "4x" - -#~ msgid "2x" -#~ msgstr "2x" - -#~ msgid "Mipmap + Aniso. Filter" -#~ msgstr "Mip 貼圖 + Aniso. 過濾器" - -#~ msgid "Mipmap" -#~ msgstr "Mip 貼圖" - -#~ msgid "No Mipmap" -#~ msgstr "無 Mip 貼圖" - -#~ msgid "Fancy Leaves" -#~ msgstr "華麗葉子" - -#~ msgid "Simple Leaves" -#~ msgstr "簡易葉子" - -#~ msgid "Opaque Leaves" -#~ msgstr "不透明葉子" +#~ msgid "No of course not!" +#~ msgstr "不,絕對不是!" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 55f5d4ad..feca199c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -155,8 +155,23 @@ if(ENABLE_FREETYPE) endif() endif(ENABLE_FREETYPE) - -find_package(Lua REQUIRED) +# LuaJIT +option(ENABLE_LUAJIT "Enable LuaJIT support" TRUE) +set(USE_LUAJIT FALSE) +if(ENABLE_LUAJIT) + find_package(LuaJIT) + if(LUAJIT_FOUND) + set(USE_LUAJIT TRUE) + endif(LUAJIT_FOUND) +else() + message (STATUS "LuaJIT detection disabled! (ENABLE_LUAJIT=0)") +endif() +if(NOT USE_LUAJIT) + message(STATUS "LuaJIT not found, using bundled Lua.") + set(LUA_LIBRARY "lua") + set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src") + add_subdirectory(lua) +endif() find_package(GMP REQUIRED) @@ -333,7 +348,6 @@ add_subdirectory(unittest) add_subdirectory(util) set(common_SRCS - areastore.cpp ban.cpp cavegen.cpp chat.cpp @@ -367,11 +381,13 @@ set(common_SRCS map.cpp mapblock.cpp mapgen.cpp + mapgen_flat.cpp mapgen_fractal.cpp mapgen_singlenode.cpp mapgen_v5.cpp mapgen_v6.cpp mapgen_v7.cpp + mapgen_valleys.cpp mapnode.cpp mapsector.cpp mg_biome.cpp diff --git a/src/ban.cpp b/src/ban.cpp index 57b9f49a..5fa43070 100644 --- a/src/ban.cpp +++ b/src/ban.cpp @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "threading/mutex_auto_lock.h" #include #include -#include "strfnd.h" +#include "util/strfnd.h" #include "util/string.h" #include "log.h" #include "filesys.h" diff --git a/src/camera.cpp b/src/camera.cpp index 0b341359..6893b8cb 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/numeric.h" #include "util/mathconstants.h" #include "constants.h" +#include "fontengine.h" #define CAMERA_OFFSET_STEP 200 @@ -59,13 +60,6 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control, m_fov_x(1.0), m_fov_y(1.0), - m_added_busytime(0), - m_added_frames(0), - m_range_old(0), - m_busytime_old(0), - m_frametime_counter(0), - m_time_per_range(30. / 50), // a sane default of 30ms per 50 nodes of range - m_view_bobbing_anim(0), m_view_bobbing_state(0), m_view_bobbing_speed(0), @@ -81,6 +75,7 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control, { //dstream<getVideoDriver(); // note: making the camera node a child of the player node // would lead to unexpected behaviour, so we don't do that. m_playernode = smgr->addEmptySceneNode(smgr->getRootSceneNode()); @@ -107,9 +102,9 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control, */ m_cache_fall_bobbing_amount = g_settings->getFloat("fall_bobbing_amount"); m_cache_view_bobbing_amount = g_settings->getFloat("view_bobbing_amount"); - m_cache_wanted_fps = g_settings->getFloat("wanted_fps"); m_cache_fov = g_settings->getFloat("fov"); m_cache_view_bobbing = g_settings->getBool("view_bobbing"); + m_nametags.clear(); } Camera::~Camera() @@ -452,8 +447,8 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, m_wieldnode->setColor(player->light_color); - // Render distance feedback loop - updateViewingRange(frametime, busytime); + // Set render distance + updateViewingRange(); // If the player is walking, swimming, or climbing, // view bobbing is enabled and free_move is off, @@ -481,143 +476,16 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, } } -void Camera::updateViewingRange(f32 frametime_in, f32 busytime_in) +void Camera::updateViewingRange() { - if (m_draw_control.range_all) - return; - - m_added_busytime += busytime_in; - m_added_frames += 1; - - m_frametime_counter -= frametime_in; - if (m_frametime_counter > 0) - return; - m_frametime_counter = 0.2; // Same as ClientMap::updateDrawList interval - - /*dstream<getFloat("viewing_range_nodes_max"); - viewing_range_max = MYMAX(viewing_range_min, viewing_range_max); - - // Immediately apply hard limits - if(m_draw_control.wanted_range < viewing_range_min) - m_draw_control.wanted_range = viewing_range_min; - if(m_draw_control.wanted_range > viewing_range_max) - m_draw_control.wanted_range = viewing_range_max; - - // Just so big a value that everything rendered is visible - // Some more allowance than viewing_range_max * BS because of clouds, - // active objects, etc. - if(viewing_range_max < 200*BS) - m_cameranode->setFarValue(200 * BS * 10); - else - m_cameranode->setFarValue(viewing_range_max * BS * 10); - - f32 wanted_fps = m_cache_wanted_fps; - wanted_fps = MYMAX(wanted_fps, 1.0); - f32 wanted_frametime = 1.0 / wanted_fps; - - m_draw_control.wanted_min_range = viewing_range_min; - m_draw_control.wanted_max_blocks = (2.0*m_draw_control.blocks_would_have_drawn)+1; - if (m_draw_control.wanted_max_blocks < 10) - m_draw_control.wanted_max_blocks = 10; - - f32 block_draw_ratio = 1.0; - if (m_draw_control.blocks_would_have_drawn != 0) - { - block_draw_ratio = (f32)m_draw_control.blocks_drawn - / (f32)m_draw_control.blocks_would_have_drawn; - } - - // Calculate the average frametime in the case that all wanted - // blocks had been drawn - f32 frametime = m_added_busytime / m_added_frames / block_draw_ratio; - - m_added_busytime = 0.0; - m_added_frames = 0; - - f32 wanted_frametime_change = wanted_frametime - frametime; - //dstream<<"wanted_frametime_change="<avg("wanted_frametime_change", wanted_frametime_change); - - // If needed frametime change is small, just return - // This value was 0.4 for many months until 2011-10-18 by c55; - if (fabs(wanted_frametime_change) < wanted_frametime*0.33) - { - //dstream<<"ignoring small wanted_frametime_change"<setFarValue(100000.0); return; } - f32 range = m_draw_control.wanted_range; - f32 new_range = range; - - f32 d_range = range - m_range_old; - f32 d_busytime = busytime_in - m_busytime_old; - if (d_range != 0) - { - m_time_per_range = d_busytime / d_range; - } - //dstream<<"time_per_range="<avg("time_per_range", m_time_per_range); - - // The minimum allowed calculated frametime-range derivative: - // Practically this sets the maximum speed of changing the range. - // The lower this value, the higher the maximum changing speed. - // A low value here results in wobbly range (0.001) - // A low value can cause oscillation in very nonlinear time/range curves. - // A high value here results in slow changing range (0.0025) - // SUGG: This could be dynamically adjusted so that when - // the camera is turning, this is lower - //f32 min_time_per_range = 0.0010; // Up to 0.4.7 - f32 min_time_per_range = 0.0005; - if(m_time_per_range < min_time_per_range) - { - m_time_per_range = min_time_per_range; - //dstream<<"m_time_per_range="<getFloat("viewing_range"); + m_draw_control.wanted_range = viewing_range; + m_cameranode->setFarValue((viewing_range < 2000) ? 2000 * BS : viewing_range * BS); } void Camera::setDigging(s32 button) @@ -646,7 +514,7 @@ void Camera::drawWieldedTool(irr::core::matrix4* translation) scene::ICameraSceneNode* cam = m_wieldmgr->getActiveCamera(); cam->setAspectRatio(m_cameranode->getAspectRatio()); cam->setFOV(72.0*M_PI/180.0); - cam->setNearValue(0.1); + cam->setNearValue(10); cam->setFarValue(1000); if (translation != NULL) { @@ -662,3 +530,54 @@ void Camera::drawWieldedTool(irr::core::matrix4* translation) } m_wieldmgr->drawAll(); } + +void Camera::drawNametags() +{ + core::matrix4 trans = m_cameranode->getProjectionMatrix(); + trans *= m_cameranode->getViewMatrix(); + + for (std::list::const_iterator + i = m_nametags.begin(); + i != m_nametags.end(); ++i) { + Nametag *nametag = *i; + if (nametag->nametag_color.getAlpha() == 0) { + // Enforce hiding nametag, + // because if freetype is enabled, a grey + // shadow can remain. + continue; + } + v3f pos = nametag->parent_node->getPosition() + v3f(0.0, 1.1 * BS, 0.0); + f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f }; + trans.multiplyWith1x4Matrix(transformed_pos); + if (transformed_pos[3] > 0) { + core::dimension2d textsize = + g_fontengine->getFont()->getDimension( + utf8_to_wide(nametag->nametag_text).c_str()); + f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : + core::reciprocal(transformed_pos[3]); + v2u32 screensize = m_driver->getScreenSize(); + v2s32 screen_pos; + screen_pos.X = screensize.X * + (0.5 * transformed_pos[0] * zDiv + 0.5) - textsize.Width / 2; + screen_pos.Y = screensize.Y * + (0.5 - transformed_pos[1] * zDiv * 0.5) - textsize.Height / 2; + core::rect size(0, 0, textsize.Width, textsize.Height); + g_fontengine->getFont()->draw(utf8_to_wide(nametag->nametag_text).c_str(), + size + screen_pos, nametag->nametag_color); + } + } +} + +Nametag *Camera::addNametag(scene::ISceneNode *parent_node, + std::string nametag_text, video::SColor nametag_color) +{ + Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color); + m_nametags.push_back(nametag); + return nametag; +} + +void Camera::removeNametag(Nametag *nametag) +{ + m_nametags.remove(nametag); + delete nametag; +} diff --git a/src/camera.h b/src/camera.h index 006f4b3c..ce46c319 100644 --- a/src/camera.h +++ b/src/camera.h @@ -26,6 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/tile.h" #include "util/numeric.h" #include +#include +#include #include "client.h" @@ -34,6 +36,20 @@ struct MapDrawControl; class IGameDef; class WieldMeshSceneNode; +struct Nametag { + Nametag(scene::ISceneNode *a_parent_node, + const std::string &a_nametag_text, + const video::SColor &a_nametag_color): + parent_node(a_parent_node), + nametag_text(a_nametag_text), + nametag_color(a_nametag_color) + { + } + scene::ISceneNode *parent_node; + std::string nametag_text; + video::SColor nametag_color; +}; + enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT}; /* @@ -84,7 +100,7 @@ public: { return m_camera_direction; } - + // Get the camera offset inline v3s16 getOffset() const { @@ -120,8 +136,8 @@ public: void update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_reload_ratio, ClientEnvironment &c_env); - // Render distance feedback loop - void updateViewingRange(f32 frametime_in, f32 busytime_in); + // Update render distance + void updateViewingRange(); // Start digging animation // Pass 0 for left click, 1 for right click @@ -151,6 +167,16 @@ public: return m_camera_mode; } + Nametag *addNametag(scene::ISceneNode *parent_node, + std::string nametag_text, video::SColor nametag_color); + + void removeNametag(Nametag *nametag); + + std::list *getNametags() + { return &m_nametags; } + + void drawNametags(); + private: // Nodes scene::ISceneNode* m_playernode; @@ -162,8 +188,9 @@ private: // draw control MapDrawControl& m_draw_control; - + IGameDef *m_gamedef; + video::IVideoDriver *m_driver; // Absolute camera position v3f m_camera_position; @@ -177,14 +204,6 @@ private: f32 m_fov_x; f32 m_fov_y; - // Stuff for viewing range calculations - f32 m_added_busytime; - s16 m_added_frames; - f32 m_range_old; - f32 m_busytime_old; - f32 m_frametime_counter; - f32 m_time_per_range; - // View bobbing animation frame (0 <= m_view_bobbing_anim < 1) f32 m_view_bobbing_anim; // If 0, view bobbing is off (e.g. player is standing). @@ -211,9 +230,10 @@ private: f32 m_cache_fall_bobbing_amount; f32 m_cache_view_bobbing_amount; - f32 m_cache_wanted_fps; f32 m_cache_fov; bool m_cache_view_bobbing; + + std::list m_nametags; }; #endif diff --git a/src/cavegen.cpp b/src/cavegen.cpp index e0303900..b8abfbca 100644 --- a/src/cavegen.cpp +++ b/src/cavegen.cpp @@ -23,7 +23,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapgen_v5.h" #include "mapgen_v6.h" #include "mapgen_v7.h" -#include "mapgen_fractal.h" #include "cavegen.h" NoiseParams nparams_caveliquids(0, 1, v3f(150.0, 150.0, 150.0), 776, 3, 0.6, 2.0); @@ -32,17 +31,21 @@ NoiseParams nparams_caveliquids(0, 1, v3f(150.0, 150.0, 150.0), 776, 3, 0.6, 2.0 ///////////////////////////////////////// Caves V5 -CaveV5::CaveV5(MapgenV5 *mg, PseudoRandom *ps) +CaveV5::CaveV5(Mapgen *mg, PseudoRandom *ps) { this->mg = mg; this->vm = mg->vm; this->ndef = mg->ndef; this->water_level = mg->water_level; this->ps = ps; - this->c_water_source = mg->c_water_source; - this->c_lava_source = mg->c_lava_source; - this->c_ice = mg->c_ice; + c_water_source = ndef->getId("mapgen_water_source"); + c_lava_source = ndef->getId("mapgen_lava_source"); + c_ice = ndef->getId("mapgen_ice"); this->np_caveliquids = &nparams_caveliquids; + this->ystride = mg->csize.X; + + if (c_ice == CONTENT_IGNORE) + c_ice = CONTENT_AIR; dswitchint = ps->range(1, 14); flooded = ps->range(1, 2) == 2; @@ -150,7 +153,7 @@ void CaveV5::makeTunnel(bool dirswitch) p = orpi + veci + of + rs / 2; if (p.Z >= node_min.Z && p.Z <= node_max.Z && p.X >= node_min.X && p.X <= node_max.X) { - u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X); + u32 index = (p.Z - node_min.Z) * ystride + (p.X - node_min.X); s16 h = mg->heightmap[index]; if (h < p.Y) return; @@ -161,7 +164,7 @@ void CaveV5::makeTunnel(bool dirswitch) p = orpi + of + rs / 2; if (p.Z >= node_min.Z && p.Z <= node_max.Z && p.X >= node_min.X && p.X <= node_max.X) { - u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X); + u32 index = (p.Z - node_min.Z) * ystride + (p.X - node_min.X); s16 h = mg->heightmap[index]; if (h < p.Y) return; @@ -215,7 +218,8 @@ void CaveV5::carveRoute(v3f vec, float f, bool randomize_xz) float nval = NoisePerlin3D(np_caveliquids, startp.X, startp.Y, startp.Z, mg->seed); - MapNode liquidnode = nval < 0.40 ? lavanode : waternode; + MapNode liquidnode = (nval < 0.40 && node_max.Y < MGV5_LAVA_DEPTH) ? + lavanode : waternode; v3f fp = orp + vec * f; fp.X += 0.1 * ps->range(-10, 10); @@ -808,247 +812,3 @@ void CaveV7::carveRoute(v3f vec, float f, bool randomize_xz) } } } - - -///////////////////////////////////////// Caves Fractal - - -CaveFractal::CaveFractal(MapgenFractal *mg, PseudoRandom *ps) -{ - this->mg = mg; - this->vm = mg->vm; - this->ndef = mg->ndef; - this->water_level = mg->water_level; - this->ps = ps; - this->c_water_source = mg->c_water_source; - this->c_lava_source = mg->c_lava_source; - this->c_ice = mg->c_ice; - this->np_caveliquids = &nparams_caveliquids; - - dswitchint = ps->range(1, 14); - flooded = ps->range(1, 2) == 2; - - part_max_length_rs = ps->range(2, 4); - tunnel_routepoints = ps->range(5, ps->range(15, 30)); - min_tunnel_diameter = 5; - max_tunnel_diameter = ps->range(7, ps->range(8, 24)); - - large_cave_is_flat = (ps->range(0, 1) == 0); -} - - -void CaveFractal::makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height) -{ - node_min = nmin; - node_max = nmax; - main_direction = v3f(0, 0, 0); - - // Allowed route area size in nodes - ar = node_max - node_min + v3s16(1, 1, 1); - // Area starting point in nodes - of = node_min; - - // Allow a bit more - //(this should be more than the maximum radius of the tunnel) - s16 insure = 10; - s16 more = MYMAX(MAP_BLOCKSIZE - max_tunnel_diameter / 2 - insure, 1); - ar += v3s16(1,0,1) * more * 2; - of -= v3s16(1,0,1) * more; - - route_y_min = 0; - // Allow half a diameter + 7 over stone surface - route_y_max = -of.Y + max_stone_y + max_tunnel_diameter / 2 + 7; - - // Limit maximum to area - route_y_max = rangelim(route_y_max, 0, ar.Y - 1); - - s16 min = 0; - if (node_min.Y < water_level && node_max.Y > water_level) { - min = water_level - max_tunnel_diameter/3 - of.Y; - route_y_max = water_level + max_tunnel_diameter/3 - of.Y; - } - route_y_min = ps->range(min, min + max_tunnel_diameter); - route_y_min = rangelim(route_y_min, 0, route_y_max); - - s16 route_start_y_min = route_y_min; - s16 route_start_y_max = route_y_max; - - route_start_y_min = rangelim(route_start_y_min, 0, ar.Y - 1); - route_start_y_max = rangelim(route_start_y_max, route_start_y_min, ar.Y - 1); - - // Randomize starting position - orp = v3f( - (float)(ps->next() % ar.X) + 0.5, - (float)(ps->range(route_start_y_min, route_start_y_max)) + 0.5, - (float)(ps->next() % ar.Z) + 0.5 - ); - - // Add generation notify begin event - v3s16 abs_pos(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z); - GenNotifyType notifytype = GENNOTIFY_LARGECAVE_BEGIN; - mg->gennotify.addEvent(notifytype, abs_pos); - - // Generate some tunnel starting from orp - for (u16 j = 0; j < tunnel_routepoints; j++) - makeTunnel(j % dswitchint == 0); - - // Add generation notify end event - abs_pos = v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z); - notifytype = GENNOTIFY_LARGECAVE_END; - mg->gennotify.addEvent(notifytype, abs_pos); -} - - -void CaveFractal::makeTunnel(bool dirswitch) -{ - // Randomize size - s16 min_d = min_tunnel_diameter; - s16 max_d = max_tunnel_diameter; - rs = ps->range(min_d, max_d); - s16 rs_part_max_length_rs = rs * part_max_length_rs; - - v3s16 maxlen; - maxlen = v3s16( - rs_part_max_length_rs, - rs_part_max_length_rs / 2, - rs_part_max_length_rs - ); - - v3f vec; - // Jump downward sometimes - vec = v3f( - (float)(ps->next() % maxlen.X) - (float)maxlen.X / 2, - (float)(ps->next() % maxlen.Y) - (float)maxlen.Y / 2, - (float)(ps->next() % maxlen.Z) - (float)maxlen.Z / 2 - ); - - // Do not make caves that are above ground. - // It is only necessary to check the startpoint and endpoint. - v3s16 orpi(orp.X, orp.Y, orp.Z); - v3s16 veci(vec.X, vec.Y, vec.Z); - v3s16 p; - - p = orpi + veci + of + rs / 2; - if (p.Z >= node_min.Z && p.Z <= node_max.Z && - p.X >= node_min.X && p.X <= node_max.X) { - u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X); - s16 h = mg->heightmap[index]; - if (h < p.Y) - return; - } else if (p.Y > water_level) { - return; // If it's not in our heightmap, use a simple heuristic - } - - p = orpi + of + rs / 2; - if (p.Z >= node_min.Z && p.Z <= node_max.Z && - p.X >= node_min.X && p.X <= node_max.X) { - u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X); - s16 h = mg->heightmap[index]; - if (h < p.Y) - return; - } else if (p.Y > water_level) { - return; - } - - vec += main_direction; - - v3f rp = orp + vec; - if (rp.X < 0) - rp.X = 0; - else if (rp.X >= ar.X) - rp.X = ar.X - 1; - - if (rp.Y < route_y_min) - rp.Y = route_y_min; - else if (rp.Y >= route_y_max) - rp.Y = route_y_max - 1; - - if (rp.Z < 0) - rp.Z = 0; - else if (rp.Z >= ar.Z) - rp.Z = ar.Z - 1; - - vec = rp - orp; - - float veclen = vec.getLength(); - if (veclen < 0.05) - veclen = 1.0; - - // Every second section is rough - bool randomize_xz = (ps->range(1, 2) == 1); - - // Carve routes - for (float f = 0; f < 1.0; f += 1.0 / veclen) - carveRoute(vec, f, randomize_xz); - - orp = rp; -} - - -void CaveFractal::carveRoute(v3f vec, float f, bool randomize_xz) -{ - MapNode airnode(CONTENT_AIR); - MapNode waternode(c_water_source); - MapNode lavanode(c_lava_source); - - v3s16 startp(orp.X, orp.Y, orp.Z); - startp += of; - - float nval = NoisePerlin3D(np_caveliquids, startp.X, - startp.Y, startp.Z, mg->seed); - MapNode liquidnode = (nval < 0.40 && node_max.Y < MGFRACTAL_LAVA_DEPTH) ? - lavanode : waternode; - - v3f fp = orp + vec * f; - fp.X += 0.1 * ps->range(-10, 10); - fp.Z += 0.1 * ps->range(-10, 10); - v3s16 cp(fp.X, fp.Y, fp.Z); - - s16 d0 = -rs/2; - s16 d1 = d0 + rs; - if (randomize_xz) { - d0 += ps->range(-1, 1); - d1 += ps->range(-1, 1); - } - - for (s16 z0 = d0; z0 <= d1; z0++) { - s16 si = rs / 2 - MYMAX(0, abs(z0) - rs / 7 - 1); - for (s16 x0 = -si - ps->range(0,1); x0 <= si - 1 + ps->range(0,1); x0++) { - s16 maxabsxz = MYMAX(abs(x0), abs(z0)); - - s16 si2 = rs / 2 - MYMAX(0, maxabsxz - rs / 7 - 1); - - for (s16 y0 = -si2; y0 <= si2; y0++) { - if (large_cave_is_flat) { - // Make large caves not so tall - if (rs > 7 && abs(y0) >= rs / 3) - continue; - } - - v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0); - p += of; - - if (vm->m_area.contains(p) == false) - continue; - - u32 i = vm->m_area.index(p); - content_t c = vm->m_data[i].getContent(); - if (!ndef->get(c).is_ground_content) - continue; - - int full_ymin = node_min.Y - MAP_BLOCKSIZE; - int full_ymax = node_max.Y + MAP_BLOCKSIZE; - - if (flooded && full_ymin < water_level && - full_ymax > water_level) - vm->m_data[i] = (p.Y <= water_level) ? - waternode : airnode; - else if (flooded && full_ymax < water_level) - vm->m_data[i] = (p.Y < startp.Y - 4) ? - liquidnode : airnode; - else - vm->m_data[i] = airnode; - } - } - } -} diff --git a/src/cavegen.h b/src/cavegen.h index 22ee5804..a1124711 100644 --- a/src/cavegen.h +++ b/src/cavegen.h @@ -21,17 +21,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #define CAVEGEN_HEADER #define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1 +#define MGV5_LAVA_DEPTH -256 #define MGV7_LAVA_DEPTH -256 -#define MGFRACTAL_LAVA_DEPTH -256 class MapgenV5; class MapgenV6; class MapgenV7; -class MapgenFractal; class CaveV5 { public: - MapgenV5 *mg; + Mapgen *mg; MMVManip *vm; INodeDefManager *ndef; @@ -66,9 +65,10 @@ public: content_t c_ice; int water_level; + int ystride; CaveV5() {} - CaveV5(MapgenV5 *mg, PseudoRandom *ps); + CaveV5(Mapgen *mg, PseudoRandom *ps); void makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height); void makeTunnel(bool dirswitch); void carveRoute(v3f vec, float f, bool randomize_xz); @@ -163,49 +163,4 @@ public: void carveRoute(v3f vec, float f, bool randomize_xz); }; -class CaveFractal { -public: - MapgenFractal *mg; - MMVManip *vm; - INodeDefManager *ndef; - - NoiseParams *np_caveliquids; - - s16 min_tunnel_diameter; - s16 max_tunnel_diameter; - u16 tunnel_routepoints; - int dswitchint; - int part_max_length_rs; - - bool large_cave_is_flat; - bool flooded; - - s16 max_stone_y; - v3s16 node_min; - v3s16 node_max; - - v3f orp; // starting point, relative to caved space - v3s16 of; // absolute coordinates of caved space - v3s16 ar; // allowed route area - s16 rs; // tunnel radius size - v3f main_direction; - - s16 route_y_min; - s16 route_y_max; - - PseudoRandom *ps; - - content_t c_water_source; - content_t c_lava_source; - content_t c_ice; - - int water_level; - - CaveFractal() {} - CaveFractal(MapgenFractal *mg, PseudoRandom *ps); - void makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height); - void makeTunnel(bool dirswitch); - void carveRoute(v3f vec, float f, bool randomize_xz); -}; - #endif diff --git a/src/cguittfont/CMakeLists.txt b/src/cguittfont/CMakeLists.txt index 7717a2f9..6cd35f31 100644 --- a/src/cguittfont/CMakeLists.txt +++ b/src/cguittfont/CMakeLists.txt @@ -2,7 +2,7 @@ # Do not add CGUITTFont.cpp to the line below. # xCGUITTFont.cpp is a wrapper file that includes # additional required headers. -add_library(cguittfont xCGUITTFont.cpp) +add_library(cguittfont STATIC xCGUITTFont.cpp) if(FREETYPE_PKGCONFIG_FOUND) set_target_properties(cguittfont diff --git a/src/chat.cpp b/src/chat.cpp index 50391d39..cebe3122 100644 --- a/src/chat.cpp +++ b/src/chat.cpp @@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chat.h" #include "debug.h" -#include "strfnd.h" +#include "util/strfnd.h" #include #include #include "util/string.h" @@ -97,6 +97,8 @@ void ChatBuffer::step(f32 dtime) void ChatBuffer::deleteOldest(u32 count) { + bool at_bottom = (m_scroll == getBottomScrollPos()); + u32 del_unformatted = 0; u32 del_formatted = 0; @@ -120,6 +122,11 @@ void ChatBuffer::deleteOldest(u32 count) m_unformatted.erase(m_unformatted.begin(), m_unformatted.begin() + del_unformatted); m_formatted.erase(m_formatted.begin(), m_formatted.begin() + del_formatted); + + if (at_bottom) + m_scroll = getBottomScrollPos(); + else + scrollAbsolute(m_scroll - del_formatted); } void ChatBuffer::deleteByAge(f32 maxAge) @@ -390,6 +397,7 @@ ChatPrompt::ChatPrompt(std::wstring prompt, u32 history_limit): m_cols(0), m_view(0), m_cursor(0), + m_cursor_len(0), m_nick_completion_start(0), m_nick_completion_end(0) { @@ -417,20 +425,13 @@ void ChatPrompt::input(const std::wstring &str) m_nick_completion_end = 0; } -std::wstring ChatPrompt::submit() +void ChatPrompt::addToHistory(std::wstring line) { - std::wstring line = m_line; - m_line.clear(); if (!line.empty()) m_history.push_back(line); if (m_history.size() > m_history_limit) m_history.erase(m_history.begin()); m_history_index = m_history.size(); - m_view = 0; - m_cursor = 0; - m_nick_completion_start = 0; - m_nick_completion_end = 0; - return line; } void ChatPrompt::clear() @@ -442,13 +443,15 @@ void ChatPrompt::clear() m_nick_completion_end = 0; } -void ChatPrompt::replace(std::wstring line) +std::wstring ChatPrompt::replace(std::wstring line) { + std::wstring old_line = m_line; m_line = line; m_view = m_cursor = line.size(); clampView(); m_nick_completion_start = 0; m_nick_completion_end = 0; + return old_line; } void ChatPrompt::historyPrev() @@ -590,14 +593,12 @@ void ChatPrompt::cursorOperation(CursorOp op, CursorOpDir dir, CursorOpScope sco s32 length = m_line.size(); s32 increment = (dir == CURSOROP_DIR_RIGHT) ? 1 : -1; - if (scope == CURSOROP_SCOPE_CHARACTER) - { + switch (scope) { + case CURSOROP_SCOPE_CHARACTER: new_cursor += increment; - } - else if (scope == CURSOROP_SCOPE_WORD) - { - if (increment > 0) - { + break; + case CURSOROP_SCOPE_WORD: + if (dir == CURSOROP_DIR_RIGHT) { // skip one word to the right while (new_cursor < length && isspace(m_line[new_cursor])) new_cursor++; @@ -605,39 +606,47 @@ void ChatPrompt::cursorOperation(CursorOp op, CursorOpDir dir, CursorOpScope sco new_cursor++; while (new_cursor < length && isspace(m_line[new_cursor])) new_cursor++; - } - else - { + } else { // skip one word to the left while (new_cursor >= 1 && isspace(m_line[new_cursor - 1])) new_cursor--; while (new_cursor >= 1 && !isspace(m_line[new_cursor - 1])) new_cursor--; } - } - else if (scope == CURSOROP_SCOPE_LINE) - { + break; + case CURSOROP_SCOPE_LINE: new_cursor += increment * length; + break; + case CURSOROP_SCOPE_SELECTION: + break; } new_cursor = MYMAX(MYMIN(new_cursor, length), 0); - if (op == CURSOROP_MOVE) - { + switch (op) { + case CURSOROP_MOVE: m_cursor = new_cursor; - } - else if (op == CURSOROP_DELETE) - { - if (new_cursor < old_cursor) - { - m_line.erase(new_cursor, old_cursor - new_cursor); - m_cursor = new_cursor; + m_cursor_len = 0; + break; + case CURSOROP_DELETE: + if (m_cursor_len > 0) { // Delete selected text first + m_line.erase(m_cursor, m_cursor_len); + } else { + m_cursor = MYMIN(new_cursor, old_cursor); + m_line.erase(m_cursor, abs(new_cursor - old_cursor)); } - else if (new_cursor > old_cursor) - { - m_line.erase(old_cursor, new_cursor - old_cursor); - m_cursor = old_cursor; + m_cursor_len = 0; + break; + case CURSOROP_SELECT: + if (scope == CURSOROP_SCOPE_LINE) { + m_cursor = 0; + m_cursor_len = length; + } else { + m_cursor = MYMIN(new_cursor, old_cursor); + m_cursor_len += abs(new_cursor - old_cursor); + m_cursor_len = MYMIN(m_cursor_len, length - m_cursor); } + break; } clampView(); @@ -677,9 +686,12 @@ ChatBackend::~ChatBackend() void ChatBackend::addMessage(std::wstring name, std::wstring text) { + name = unescape_enriched(name); + text = unescape_enriched(text); + // Note: A message may consist of multiple lines, for example the MOTD. WStrfnd fnd(text); - while (!fnd.atend()) + while (!fnd.at_end()) { std::wstring line = fnd.next(L"\n"); m_console_buffer.addLine(name, line); diff --git a/src/chat.h b/src/chat.h index 5d26baf7..db4146d3 100644 --- a/src/chat.h +++ b/src/chat.h @@ -146,14 +146,21 @@ public: void input(wchar_t ch); void input(const std::wstring &str); - // Submit, clear and return current line - std::wstring submit(); + // Add a string to the history + void addToHistory(std::wstring line); + + // Get current line + std::wstring getLine() const { return m_line; } + + // Get section of line that is currently selected + std::wstring getSelection() const + { return m_line.substr(m_cursor, m_cursor_len); } // Clear the current line void clear(); // Replace the current line with the given text - void replace(std::wstring line); + std::wstring replace(std::wstring line); // Select previous command from history void historyPrev(); @@ -169,10 +176,13 @@ public: std::wstring getVisiblePortion() const; // Get cursor position (relative to visible portion). -1 if invalid s32 getVisibleCursorPosition() const; + // Get length of cursor selection + s32 getCursorLength() const { return m_cursor_len; } // Cursor operations enum CursorOp { CURSOROP_MOVE, + CURSOROP_SELECT, CURSOROP_DELETE }; @@ -186,7 +196,8 @@ public: enum CursorOpScope { CURSOROP_SCOPE_CHARACTER, CURSOROP_SCOPE_WORD, - CURSOROP_SCOPE_LINE + CURSOROP_SCOPE_LINE, + CURSOROP_SCOPE_SELECTION }; // Cursor operation @@ -224,6 +235,8 @@ private: s32 m_view; // Cursor (index into m_line) s32 m_cursor; + // Cursor length (length of selected portion of line) + s32 m_cursor_len; // Last nick completion start (index into m_line) s32 m_nick_completion_start; diff --git a/src/client.cpp b/src/client.cpp index 5c04632d..4ffcec6b 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -228,6 +228,7 @@ Client::Client( m_particle_manager(&m_env), m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this), m_device(device), + m_camera(NULL), m_minimap_disabled_by_server(false), m_server_ser_ver(SER_FMT_VER_INVALID), m_proto_ver(0), @@ -235,11 +236,9 @@ Client::Client( m_inventory_updated(false), m_inventory_from_server(NULL), m_inventory_from_server_age(0.0), - m_show_highlighted(false), m_animation_time(0), m_crack_level(-1), m_crack_pos(0,0,0), - m_highlighted_pos(0,0,0), m_map_seed(0), m_password(password), m_chosen_auth_mech(AUTH_MECHANISM_NONE), @@ -265,6 +264,9 @@ Client::Client( m_cache_smooth_lighting = g_settings->getBool("smooth_lighting"); m_cache_enable_shaders = g_settings->getBool("enable_shaders"); + m_cache_use_tangent_vertices = m_cache_enable_shaders && ( + g_settings->getBool("enable_bumpmapping") || + g_settings->getBool("enable_parallax_occlusion")); } void Client::Stop() @@ -384,25 +386,30 @@ void Client::step(float dtime) Player *myplayer = m_env.getLocalPlayer(); FATAL_ERROR_IF(myplayer == NULL, "Local player not found in environment."); - // Send TOSERVER_INIT_LEGACY - // [0] u16 TOSERVER_INIT_LEGACY - // [2] u8 SER_FMT_VER_HIGHEST_READ - // [3] u8[20] player_name - // [23] u8[28] password (new in some version) - // [51] u16 minimum supported network protocol version (added sometime) - // [53] u16 maximum supported network protocol version (added later than the previous one) + u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ? + CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN; - char pName[PLAYERNAME_SIZE]; - char pPassword[PASSWORD_SIZE]; - memset(pName, 0, PLAYERNAME_SIZE * sizeof(char)); - memset(pPassword, 0, PASSWORD_SIZE * sizeof(char)); + if (proto_version_min < 25) { + // Send TOSERVER_INIT_LEGACY + // [0] u16 TOSERVER_INIT_LEGACY + // [2] u8 SER_FMT_VER_HIGHEST_READ + // [3] u8[20] player_name + // [23] u8[28] password (new in some version) + // [51] u16 minimum supported network protocol version (added sometime) + // [53] u16 maximum supported network protocol version (added later than the previous one) - std::string hashed_password = translatePassword(myplayer->getName(), m_password); - snprintf(pName, PLAYERNAME_SIZE, "%s", myplayer->getName()); - snprintf(pPassword, PASSWORD_SIZE, "%s", hashed_password.c_str()); + char pName[PLAYERNAME_SIZE]; + char pPassword[PASSWORD_SIZE]; + memset(pName, 0, PLAYERNAME_SIZE * sizeof(char)); + memset(pPassword, 0, PASSWORD_SIZE * sizeof(char)); - sendLegacyInit(pName, pPassword); - if (LATEST_PROTOCOL_VERSION >= 25) + std::string hashed_password = translate_password(myplayer->getName(), m_password); + snprintf(pName, PLAYERNAME_SIZE, "%s", myplayer->getName()); + snprintf(pPassword, PASSWORD_SIZE, "%s", hashed_password.c_str()); + + sendLegacyInit(pName, pPassword); + } + if (CLIENT_PROTOCOL_VERSION_MAX >= 25) sendInit(myplayer->getName()); } @@ -946,6 +953,7 @@ void Client::interact(u8 action, const PointedThing& pointed) 2: digging completed 3: place block or item (to abovesurface) 4: use item + 5: perform secondary action of item */ NetworkPacket pkt(TOSERVER_INTERACT, 1 + 2 + 0); @@ -1000,10 +1008,13 @@ void Client::sendLegacyInit(const char* playerName, const char* playerPassword) NetworkPacket pkt(TOSERVER_INIT_LEGACY, 1 + PLAYERNAME_SIZE + PASSWORD_SIZE + 2 + 2); + u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ? + CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN; + pkt << (u8) SER_FMT_VER_HIGHEST_READ; pkt.putRawString(playerName,PLAYERNAME_SIZE); pkt.putRawString(playerPassword, PASSWORD_SIZE); - pkt << (u16) CLIENT_PROTOCOL_VERSION_MIN << (u16) CLIENT_PROTOCOL_VERSION_MAX; + pkt << (u16) proto_version_min << (u16) CLIENT_PROTOCOL_VERSION_MAX; Send(&pkt); } @@ -1014,8 +1025,12 @@ void Client::sendInit(const std::string &playerName) // we don't support network compression yet u16 supp_comp_modes = NETPROTO_COMPRESSION_NONE; + + u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ? + CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN; + pkt << (u8) SER_FMT_VER_HIGHEST_READ << (u16) supp_comp_modes; - pkt << (u16) CLIENT_PROTOCOL_VERSION_MIN << (u16) CLIENT_PROTOCOL_VERSION_MAX; + pkt << (u16) proto_version_min << (u16) CLIENT_PROTOCOL_VERSION_MAX; pkt << playerName; Send(&pkt); @@ -1028,18 +1043,14 @@ void Client::startAuth(AuthMechanism chosen_auth_mechanism) switch (chosen_auth_mechanism) { case AUTH_MECHANISM_FIRST_SRP: { // send srp verifier to server + std::string verifier; + std::string salt; + generate_srp_verifier_and_salt(getPlayerName(), m_password, + &verifier, &salt); + NetworkPacket resp_pkt(TOSERVER_FIRST_SRP, 0); - char *salt, *bytes_v; - std::size_t len_salt, len_v; - salt = NULL; - getSRPVerifier(getPlayerName(), m_password, - &salt, &len_salt, &bytes_v, &len_v); - resp_pkt - << std::string((char*)salt, len_salt) - << std::string((char*)bytes_v, len_v) - << (u8)((m_password == "") ? 1 : 0); - free(salt); - free(bytes_v); + resp_pkt << salt << verifier << (u8)((m_password == "") ? 1 : 0); + Send(&resp_pkt); break; } @@ -1048,7 +1059,7 @@ void Client::startAuth(AuthMechanism chosen_auth_mechanism) u8 based_on = 1; if (chosen_auth_mechanism == AUTH_MECHANISM_LEGACY_PASSWORD) { - m_password = translatePassword(getPlayerName(), m_password); + m_password = translate_password(getPlayerName(), m_password); based_on = 0; } @@ -1194,8 +1205,8 @@ void Client::sendChangePassword(const std::string &oldpassword, m_new_password = newpassword; startAuth(choseAuthMech(m_sudo_auth_methods)); } else { - std::string oldpwd = translatePassword(playername, oldpassword); - std::string newpwd = translatePassword(playername, newpassword); + std::string oldpwd = translate_password(playername, oldpassword); + std::string newpwd = translate_password(playername, newpassword); NetworkPacket pkt(TOSERVER_PASSWORD_LEGACY, 2 * PASSWORD_SIZE); @@ -1472,13 +1483,13 @@ ClientActiveObject * Client::getSelectedActiveObject( { ClientActiveObject *obj = objects[i].obj; - core::aabbox3d *selection_box = obj->getSelectionBox(); + aabb3f *selection_box = obj->getSelectionBox(); if(selection_box == NULL) continue; v3f pos = obj->getPosition(); - core::aabbox3d offsetted_box( + aabb3f offsetted_box( selection_box->MinEdge + pos, selection_box->MaxEdge + pos ); @@ -1507,15 +1518,6 @@ int Client::getCrackLevel() return m_crack_level; } -void Client::setHighlighted(v3s16 pos, bool show_highlighted) -{ - m_show_highlighted = show_highlighted; - v3s16 old_highlighted_pos = m_highlighted_pos; - m_highlighted_pos = pos; - addUpdateMeshTaskForNode(old_highlighted_pos, false, true); - addUpdateMeshTaskForNode(m_highlighted_pos, false, true); -} - void Client::setCrack(int level, v3s16 pos) { int old_crack_level = m_crack_level; @@ -1592,7 +1594,8 @@ void Client::addUpdateMeshTask(v3s16 p, bool ack_to_server, bool urgent) Create a task to update the mesh of the block */ - MeshMakeData *data = new MeshMakeData(this, m_cache_enable_shaders); + MeshMakeData *data = new MeshMakeData(this, m_cache_enable_shaders, + m_cache_use_tangent_vertices); { //TimeTaker timer("data fill"); @@ -1600,7 +1603,6 @@ void Client::addUpdateMeshTask(v3s16 p, bool ack_to_server, bool urgent) // Debug: 1-6ms, avg=2ms data->fill(b); data->setCrack(m_crack_level, m_crack_pos); - data->setHighlighted(m_highlighted_pos, m_show_highlighted); data->setSmoothLighting(m_cache_smooth_lighting); } @@ -1772,29 +1774,6 @@ void Client::afterContentReceived(IrrlichtDevice *device) m_nodedef->updateTextures(this, texture_update_progress, &tu_args); delete[] tu_args.text_base; - // Preload item textures and meshes if configured to - if(g_settings->getBool("preload_item_visuals")) - { - verbosestream<<"Updating item textures and meshes"< names = m_itemdef->getAll(); - size_t size = names.size(); - size_t count = 0; - int percent = 0; - for(std::set::const_iterator - i = names.begin(); i != names.end(); ++i) - { - // Asking for these caches the result - m_itemdef->getInventoryTexture(*i, this); - m_itemdef->getWieldMesh(*i, this); - count++; - percent = (count * 100 / size * 0.2) + 80; - draw_load_screen(text, device, guienv, 0, percent); - } - delete[] text; - } - // Start mesh update thread after setting up content definitions infostream<<"- Starting mesh update thread"<get("screenshot_format"); std::string filename; + u32 quality = (u32)g_settings->getS32("screenshot_quality"); + quality = MYMIN(MYMAX(quality, 0), 100) / 100.0 * 255; + // Try to find a unique filename unsigned serial = 0; @@ -1866,7 +1848,7 @@ void Client::makeScreenshot(IrrlichtDevice *device) raw_image->copyTo(image); std::ostringstream sstr; - if (driver->writeImageToFile(image, filename.c_str())) { + if (driver->writeImageToFile(image, filename.c_str(), quality)) { sstr << "Saved screenshot to '" << filename << "'"; } else { sstr << "Failed to save screenshot '" << filename << "'"; diff --git a/src/client.h b/src/client.h index 07fb79dc..cdadb9d3 100644 --- a/src/client.h +++ b/src/client.h @@ -50,6 +50,7 @@ struct PointedThing; class Database; class Mapper; struct MinimapMapblock; +class Camera; struct QueuedMeshUpdate { @@ -456,9 +457,6 @@ public: int getCrackLevel(); void setCrack(int level, v3s16 pos); - void setHighlighted(v3s16 pos, bool show_higlighted); - v3s16 getHighlighted(){ return m_highlighted_pos; } - u16 getHP(); u16 getBreath(); @@ -510,6 +508,12 @@ public: Mapper* getMapper () { return m_mapper; } + void setCamera(Camera* camera) + { m_camera = camera; } + + Camera* getCamera () + { return m_camera; } + bool isMinimapDisabledByServer() { return m_minimap_disabled_by_server; } @@ -592,6 +596,7 @@ private: ParticleManager m_particle_manager; con::Connection m_con; IrrlichtDevice *m_device; + Camera *m_camera; Mapper *m_mapper; bool m_minimap_disabled_by_server; // Server serialization version @@ -609,12 +614,10 @@ private: Inventory *m_inventory_from_server; float m_inventory_from_server_age; PacketCounter m_packetcounter; - bool m_show_highlighted; // Block mesh animation parameters float m_animation_time; int m_crack_level; v3s16 m_crack_pos; - v3s16 m_highlighted_pos; // 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT //s32 m_daynight_i; //u32 m_daynight_ratio; @@ -682,6 +685,7 @@ private: // TODO: Add callback to update these when g_settings changes bool m_cache_smooth_lighting; bool m_cache_enable_shaders; + bool m_cache_use_tangent_vertices; DISABLE_CLASS_COPY(Client); }; diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index dfddef34..404a1631 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -201,6 +201,9 @@ bool ClientLauncher::run(GameParams &game_params, const Settings &cmd_args) bool game_has_run = launch_game(error_message, reconnect_requested, game_params, cmd_args); + // Reset the reconnect_requested flag + reconnect_requested = false; + // If skip_main_menu, we only want to startup once if (skip_main_menu && !first_loop) break; @@ -336,6 +339,7 @@ bool ClientLauncher::launch_game(std::string &error_message, MainMenuData menudata; menudata.address = address; menudata.name = playername; + menudata.password = password; menudata.port = itos(game_params.socket_port); menudata.script_data.errormessage = error_message; menudata.script_data.reconnect_requested = reconnect_requested; @@ -512,6 +516,9 @@ bool ClientLauncher::create_engine_device() u16 bits = g_settings->getU16("fullscreen_bpp"); u16 fsaa = g_settings->getU16("fsaa"); + // stereo buffer required for pageflip stereo + bool stereo_buffer = g_settings->get("3d_mode") == "pageflip"; + // Determine driver video::E_DRIVER_TYPE driverType = video::EDT_OPENGL; std::string driverstring = g_settings->get("video_driver"); @@ -537,9 +544,11 @@ bool ClientLauncher::create_engine_device() params.AntiAlias = fsaa; params.Fullscreen = fullscreen; params.Stencilbuffer = false; + params.Stereobuffer = stereo_buffer; params.Vsync = vsync; params.EventReceiver = receiver; params.HighPrecisionFPU = g_settings->getBool("high_precision_fpu"); + params.ZBufferBits = 24; #ifdef __ANDROID__ params.PrivateData = porting::app_global; params.OGLES2ShaderPath = std::string(porting::path_user + DIR_DELIM + diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 995526ea..ec8c95f0 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -31,7 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mesh.h" #include "log.h" #include "gamedef.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "util/string.h" // for parseColorString() #include "imagefilters.h" #include "guiscalingfilter.h" @@ -553,10 +553,12 @@ static void blit_with_alpha(video::IImage *src, video::IImage *dst, static void blit_with_alpha_overlay(video::IImage *src, video::IImage *dst, v2s32 src_pos, v2s32 dst_pos, v2u32 size); -// Like blit_with_alpha overlay, but uses an int to calculate the ratio -// and modifies any destination pixels that are not fully transparent -static void blit_with_interpolate_overlay(video::IImage *src, video::IImage *dst, - v2s32 src_pos, v2s32 dst_pos, v2u32 size, int ratio); +// Apply a color to an image. Uses an int (0-255) to calculate the ratio. +// If the ratio is 255 or -1 and keep_alpha is true, then it multiples the +// color alpha with the destination alpha. +// Otherwise, any pixels that are not fully transparent get the color alpha. +static void apply_colorize(video::IImage *dst, v2u32 dst_pos, v2u32 size, + video::SColor color, int ratio, bool keep_alpha); // Apply a mask to an image static void apply_mask(video::IImage *mask, video::IImage *dst, @@ -1173,7 +1175,28 @@ bool TextureSource::generateImagePart(std::string part_of_name, core::rect(pos_from, dim), video::SColor(255,255,255,255), NULL);*/ - blit_with_alpha(image, baseimg, pos_from, pos_to, dim); + + core::dimension2d dim_dst = baseimg->getDimension(); + if (dim == dim_dst) { + blit_with_alpha(image, baseimg, pos_from, pos_to, dim); + } else if (dim.Width * dim.Height < dim_dst.Width * dim_dst.Height) { + // Upscale overlying image + video::IImage* scaled_image = m_device->getVideoDriver()-> + createImage(video::ECF_A8R8G8B8, dim_dst); + image->copyToScaling(scaled_image); + + blit_with_alpha(scaled_image, baseimg, pos_from, pos_to, dim_dst); + scaled_image->drop(); + } else { + // Upscale base image + video::IImage* scaled_base = m_device->getVideoDriver()-> + createImage(video::ECF_A8R8G8B8, dim); + baseimg->copyToScaling(scaled_base); + baseimg->drop(); + baseimg = scaled_base; + + blit_with_alpha(image, baseimg, pos_from, pos_to, dim); + } } //cleanup image->drop(); @@ -1242,7 +1265,7 @@ bool TextureSource::generateImagePart(std::string part_of_name, baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); baseimg->fill(video::SColor(0,0,0,0)); } - while (sf.atend() == false) { + while (sf.at_end() == false) { u32 x = stoi(sf.next(",")); u32 y = stoi(sf.next("=")); std::string filename = sf.next(":"); @@ -1329,7 +1352,6 @@ bool TextureSource::generateImagePart(std::string part_of_name, u32 r1 = stoi(sf.next(",")); u32 g1 = stoi(sf.next(",")); u32 b1 = stoi(sf.next("")); - std::string filename = sf.next(""); core::dimension2d dim = baseimg->getDimension(); @@ -1639,27 +1661,17 @@ bool TextureSource::generateImagePart(std::string part_of_name, video::SColor color; int ratio = -1; + bool keep_alpha = false; if (!parseColorString(color_str, color, false)) return false; if (is_number(ratio_str)) ratio = mystoi(ratio_str, 0, 255); + else if (ratio_str == "alpha") + keep_alpha = true; - core::dimension2d dim = baseimg->getDimension(); - video::IImage *img = driver->createImage(video::ECF_A8R8G8B8, dim); - - if (!img) { - errorstream << "generateImagePart(): Could not create image " - << "for part_of_name=\"" << part_of_name - << "\", cancelling." << std::endl; - return false; - } - - img->fill(video::SColor(color)); - // Overlay the colored image - blit_with_interpolate_overlay(img, baseimg, v2s32(0,0), v2s32(0,0), dim, ratio); - img->drop(); + apply_colorize(baseimg, v2u32(0, 0), baseimg->getDimension(), color, ratio, keep_alpha); } else if (str_starts_with(part_of_name, "[applyfiltersformesh")) { @@ -1698,6 +1710,31 @@ bool TextureSource::generateImagePart(std::string part_of_name, } } } + /* + [resize:WxH + Resizes the base image to the given dimensions + */ + else if (str_starts_with(part_of_name, "[resize")) + { + if (baseimg == NULL) { + errorstream << "generateImagePart(): baseimg == NULL " + << "for part_of_name=\""<< part_of_name + << "\", cancelling." << std::endl; + return false; + } + + Strfnd sf(part_of_name); + sf.next(":"); + u32 width = stoi(sf.next("x")); + u32 height = stoi(sf.next("")); + core::dimension2d dim(width, height); + + video::IImage* image = m_device->getVideoDriver()-> + createImage(video::ECF_A8R8G8B8, dim); + baseimg->copyToScaling(image); + baseimg->drop(); + baseimg = image; + } else { errorstream << "generateImagePart(): Invalid " @@ -1756,6 +1793,9 @@ static void blit_with_alpha_overlay(video::IImage *src, video::IImage *dst, } } +// This function has been disabled because it is currently unused. +// Feel free to re-enable if you find it handy. +#if 0 /* Draw an image on top of an another one, using the specified ratio modify all partially-opaque pixels in the destination. @@ -1782,6 +1822,45 @@ static void blit_with_interpolate_overlay(video::IImage *src, video::IImage *dst } } } +#endif + +/* + Apply color to destination +*/ +static void apply_colorize(video::IImage *dst, v2u32 dst_pos, v2u32 size, + video::SColor color, int ratio, bool keep_alpha) +{ + u32 alpha = color.getAlpha(); + video::SColor dst_c; + if ((ratio == -1 && alpha == 255) || ratio == 255) { // full replacement of color + if (keep_alpha) { // replace the color with alpha = dest alpha * color alpha + dst_c = color; + for (u32 y = dst_pos.Y; y < dst_pos.Y + size.Y; y++) + for (u32 x = dst_pos.X; x < dst_pos.X + size.X; x++) { + u32 dst_alpha = dst->getPixel(x, y).getAlpha(); + if (dst_alpha > 0) { + dst_c.setAlpha(dst_alpha * alpha / 255); + dst->setPixel(x, y, dst_c); + } + } + } else { // replace the color including the alpha + for (u32 y = dst_pos.Y; y < dst_pos.Y + size.Y; y++) + for (u32 x = dst_pos.X; x < dst_pos.X + size.X; x++) + if (dst->getPixel(x, y).getAlpha() > 0) + dst->setPixel(x, y, color); + } + } else { // interpolate between the color and destination + float interp = (ratio == -1 ? color.getAlpha() / 255.0f : ratio / 255.0f); + for (u32 y = dst_pos.Y; y < dst_pos.Y + size.Y; y++) + for (u32 x = dst_pos.X; x < dst_pos.X + size.X; x++) { + dst_c = dst->getPixel(x, y); + if (dst_c.getAlpha() > 0) { + dst_c = color.getInterpolated(dst_c, interp); + dst->setPixel(x, y, dst_c); + } + } + } +} /* Apply mask to destination diff --git a/src/client/tile.h b/src/client/tile.h index 7796e801..b7591684 100644 --- a/src/client/tile.h +++ b/src/client/tile.h @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #define TILE_HEADER #include "irrlichttypes.h" -#include "irr_v2d.h" #include "irr_v3d.h" #include #include diff --git a/src/clientiface.cpp b/src/clientiface.cpp index e7f127b8..a3a17d43 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -370,17 +370,21 @@ queue_full_break: void RemoteClient::GotBlock(v3s16 p) { - if(m_blocks_sending.find(p) != m_blocks_sending.end()) - m_blocks_sending.erase(p); - else - { - m_excess_gotblocks++; + if (m_blocks_modified.find(p) == m_blocks_modified.end()) { + if (m_blocks_sending.find(p) != m_blocks_sending.end()) + m_blocks_sending.erase(p); + else + m_excess_gotblocks++; + + m_blocks_sent.insert(p); } - m_blocks_sent.insert(p); } void RemoteClient::SentBlock(v3s16 p) { + if (m_blocks_modified.find(p) != m_blocks_modified.end()) + m_blocks_modified.erase(p); + if(m_blocks_sending.find(p) == m_blocks_sending.end()) m_blocks_sending[p] = 0.0; else @@ -391,22 +395,26 @@ void RemoteClient::SentBlock(v3s16 p) void RemoteClient::SetBlockNotSent(v3s16 p) { m_nearest_unsent_d = 0; + m_nothing_to_send_pause_timer = 0; if(m_blocks_sending.find(p) != m_blocks_sending.end()) m_blocks_sending.erase(p); if(m_blocks_sent.find(p) != m_blocks_sent.end()) m_blocks_sent.erase(p); + m_blocks_modified.insert(p); } void RemoteClient::SetBlocksNotSent(std::map &blocks) { m_nearest_unsent_d = 0; + m_nothing_to_send_pause_timer = 0; for(std::map::iterator i = blocks.begin(); i != blocks.end(); ++i) { v3s16 p = i->first; + m_blocks_modified.insert(p); if(m_blocks_sending.find(p) != m_blocks_sending.end()) m_blocks_sending.erase(p); diff --git a/src/clientiface.h b/src/clientiface.h index 0d2bca19..c0994290 100644 --- a/src/clientiface.h +++ b/src/clientiface.h @@ -322,7 +322,6 @@ public: /* List of active objects that the client knows of. - Value is dummy. */ std::set m_known_objects; @@ -377,7 +376,7 @@ private: - A block is cleared from here when client says it has deleted it from it's memory - Key is position, value is dummy. + List of block positions. No MapBlock* is stored here because the blocks can get deleted. */ std::set m_blocks_sent; @@ -395,6 +394,16 @@ private: */ std::map m_blocks_sending; + /* + Blocks that have been modified since last sending them. + These blocks will not be marked as sent, even if the + client reports it has received them to account for blocks + that are being modified while on the line. + + List of block positions. + */ + std::set m_blocks_modified; + /* Count of excess GotBlocks(). There is an excess amount because the client sometimes diff --git a/src/clientmap.cpp b/src/clientmap.cpp index b865c278..a0a78025 100644 --- a/src/clientmap.cpp +++ b/src/clientmap.cpp @@ -50,7 +50,7 @@ ClientMap::ClientMap( m_camera_direction(0,0,1), m_camera_fov(M_PI) { - m_box = core::aabbox3d(-BS*1000000,-BS*1000000,-BS*1000000, + m_box = aabb3f(-BS*1000000,-BS*1000000,-BS*1000000, BS*1000000,BS*1000000,BS*1000000); /* TODO: Add a callback function so these can be updated when a setting @@ -141,6 +141,33 @@ static bool isOccluded(Map *map, v3s16 p0, v3s16 p1, float step, float stepfac, return false; } +void ClientMap::getBlocksInViewRange(v3s16 cam_pos_nodes, + v3s16 *p_blocks_min, v3s16 *p_blocks_max) +{ + v3s16 box_nodes_d = m_control.wanted_range * v3s16(1, 1, 1); + // Define p_nodes_min/max as v3s32 because 'cam_pos_nodes -/+ box_nodes_d' + // can exceed the range of v3s16 when a large view range is used near the + // world edges. + v3s32 p_nodes_min( + cam_pos_nodes.X - box_nodes_d.X, + cam_pos_nodes.Y - box_nodes_d.Y, + cam_pos_nodes.Z - box_nodes_d.Z); + v3s32 p_nodes_max( + cam_pos_nodes.X + box_nodes_d.X, + cam_pos_nodes.Y + box_nodes_d.Y, + cam_pos_nodes.Z + box_nodes_d.Z); + // Take a fair amount as we will be dropping more out later + // Umm... these additions are a bit strange but they are needed. + *p_blocks_min = v3s16( + p_nodes_min.X / MAP_BLOCKSIZE - 3, + p_nodes_min.Y / MAP_BLOCKSIZE - 3, + p_nodes_min.Z / MAP_BLOCKSIZE - 3); + *p_blocks_max = v3s16( + p_nodes_max.X / MAP_BLOCKSIZE + 1, + p_nodes_max.Y / MAP_BLOCKSIZE + 1, + p_nodes_max.Z / MAP_BLOCKSIZE + 1); +} + void ClientMap::updateDrawList(video::IVideoDriver* driver) { ScopeProfiler sp(g_profiler, "CM::updateDrawList()", SPT_AVG); @@ -148,21 +175,16 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) INodeDefManager *nodemgr = m_gamedef->ndef(); - for(std::map::iterator - i = m_drawlist.begin(); - i != m_drawlist.end(); ++i) - { + for (std::map::iterator i = m_drawlist.begin(); + i != m_drawlist.end(); ++i) { MapBlock *block = i->second; block->refDrop(); } m_drawlist.clear(); - m_camera_mutex.lock(); v3f camera_position = m_camera_position; v3f camera_direction = m_camera_direction; f32 camera_fov = m_camera_fov; - //v3s16 camera_offset = m_camera_offset; - m_camera_mutex.unlock(); // Use a higher fov to accomodate faster camera movements. // Blocks are cropped better when they are drawn. @@ -170,19 +192,9 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) camera_fov *= 1.2; v3s16 cam_pos_nodes = floatToInt(camera_position, BS); - v3s16 box_nodes_d = m_control.wanted_range * v3s16(1,1,1); - v3s16 p_nodes_min = cam_pos_nodes - box_nodes_d; - v3s16 p_nodes_max = cam_pos_nodes + box_nodes_d; - // Take a fair amount as we will be dropping more out later - // Umm... these additions are a bit strange but they are needed. - v3s16 p_blocks_min( - p_nodes_min.X / MAP_BLOCKSIZE - 3, - p_nodes_min.Y / MAP_BLOCKSIZE - 3, - p_nodes_min.Z / MAP_BLOCKSIZE - 3); - v3s16 p_blocks_max( - p_nodes_max.X / MAP_BLOCKSIZE + 1, - p_nodes_max.Y / MAP_BLOCKSIZE + 1, - p_nodes_max.Z / MAP_BLOCKSIZE + 1); + v3s16 p_blocks_min; + v3s16 p_blocks_max; + getBlocksInViewRange(cam_pos_nodes, &p_blocks_min, &p_blocks_max); // Number of blocks in rendering range u32 blocks_in_range = 0; @@ -202,19 +214,14 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) // Distance to farthest drawn block float farthest_drawn = 0; - for(std::map::iterator - si = m_sectors.begin(); - si != m_sectors.end(); ++si) - { + for (std::map::iterator si = m_sectors.begin(); + si != m_sectors.end(); ++si) { MapSector *sector = si->second; v2s16 sp = sector->getPos(); - if(m_control.range_all == false) - { - if(sp.X < p_blocks_min.X - || sp.X > p_blocks_max.X - || sp.Y < p_blocks_min.Z - || sp.Y > p_blocks_max.Z) + if (m_control.range_all == false) { + if (sp.X < p_blocks_min.X || sp.X > p_blocks_max.X || + sp.Y < p_blocks_min.Z || sp.Y > p_blocks_max.Z) continue; } @@ -227,9 +234,8 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) u32 sector_blocks_drawn = 0; - for(MapBlockVect::iterator i = sectorblocks.begin(); - i != sectorblocks.end(); ++i) - { + for (MapBlockVect::iterator i = sectorblocks.begin(); + i != sectorblocks.end(); ++i) { MapBlock *block = *i; /* @@ -241,16 +247,13 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) block->mesh->updateCameraOffset(m_camera_offset); float range = 100000 * BS; - if(m_control.range_all == false) + if (m_control.range_all == false) range = m_control.wanted_range * BS; float d = 0.0; - if(isBlockInSight(block->getPos(), camera_position, - camera_direction, camera_fov, - range, &d) == false) - { + if (!isBlockInSight(block->getPos(), camera_position, + camera_direction, camera_fov, range, &d)) continue; - } // This is ugly (spherical distance limit?) /*if(m_control.range_all == false && @@ -265,7 +268,7 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) { //MutexAutoLock lock(block->mesh_mutex); - if(block->mesh == NULL){ + if (block->mesh == NULL) { blocks_in_range_without_mesh++; continue; } @@ -278,44 +281,41 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) // No occlusion culling when free_move is on and camera is // inside ground bool occlusion_culling_enabled = true; - if(g_settings->getBool("free_move")){ + if (g_settings->getBool("free_move")) { MapNode n = getNodeNoEx(cam_pos_nodes); - if(n.getContent() == CONTENT_IGNORE || + if (n.getContent() == CONTENT_IGNORE || nodemgr->get(n).solidness == 2) occlusion_culling_enabled = false; } v3s16 cpn = block->getPos() * MAP_BLOCKSIZE; - cpn += v3s16(MAP_BLOCKSIZE/2, MAP_BLOCKSIZE/2, MAP_BLOCKSIZE/2); - float step = BS*1; + cpn += v3s16(MAP_BLOCKSIZE / 2, MAP_BLOCKSIZE / 2, MAP_BLOCKSIZE / 2); + float step = BS * 1; float stepfac = 1.1; - float startoff = BS*1; - float endoff = -BS*MAP_BLOCKSIZE*1.42*1.42; - v3s16 spn = cam_pos_nodes + v3s16(0,0,0); - s16 bs2 = MAP_BLOCKSIZE/2 + 1; + float startoff = BS * 1; + float endoff = -BS*MAP_BLOCKSIZE * 1.42 * 1.42; + v3s16 spn = cam_pos_nodes + v3s16(0, 0, 0); + s16 bs2 = MAP_BLOCKSIZE / 2 + 1; u32 needed_count = 1; - if( - occlusion_culling_enabled && - isOccluded(this, spn, cpn + v3s16(0,0,0), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(bs2,bs2,bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(bs2,bs2,-bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(bs2,-bs2,bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(bs2,-bs2,-bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(-bs2,bs2,bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(-bs2,bs2,-bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(-bs2,-bs2,bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) && - isOccluded(this, spn, cpn + v3s16(-bs2,-bs2,-bs2), - step, stepfac, startoff, endoff, needed_count, nodemgr) - ) - { + if (occlusion_culling_enabled && + isOccluded(this, spn, cpn + v3s16(0, 0, 0), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(bs2,bs2,bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(bs2,bs2,-bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(bs2,-bs2,bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(bs2,-bs2,-bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(-bs2,bs2,bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(-bs2,bs2,-bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(-bs2,-bs2,bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr) && + isOccluded(this, spn, cpn + v3s16(-bs2,-bs2,-bs2), + step, stepfac, startoff, endoff, needed_count, nodemgr)) { blocks_occlusion_culled++; continue; } @@ -325,9 +325,9 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) // Limit block count in case of a sudden increase blocks_would_have_drawn++; - if(blocks_drawn >= m_control.wanted_max_blocks - && m_control.range_all == false - && d > m_control.wanted_min_range * BS) + if (blocks_drawn >= m_control.wanted_max_blocks && + !m_control.range_all && + d > m_control.wanted_range * BS) continue; // Add to set @@ -336,12 +336,12 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) sector_blocks_drawn++; blocks_drawn++; - if(d/BS > farthest_drawn) - farthest_drawn = d/BS; + if (d / BS > farthest_drawn) + farthest_drawn = d / BS; } // foreach sectorblocks - if(sector_blocks_drawn != 0) + if (sector_blocks_drawn != 0) m_last_drawn_sectors.insert(sp); } @@ -351,9 +351,9 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver) g_profiler->avg("CM: blocks in range", blocks_in_range); g_profiler->avg("CM: blocks occlusion culled", blocks_occlusion_culled); - if(blocks_in_range != 0) + if (blocks_in_range != 0) g_profiler->avg("CM: blocks in range without mesh (frac)", - (float)blocks_in_range_without_mesh/blocks_in_range); + (float)blocks_in_range_without_mesh / blocks_in_range); g_profiler->avg("CM: blocks drawn", blocks_drawn); g_profiler->avg("CM: farthest drawn", farthest_drawn); g_profiler->avg("CM: wanted max blocks", m_control.wanted_max_blocks); @@ -405,7 +405,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) bool is_transparent_pass = pass == scene::ESNRP_TRANSPARENT; std::string prefix; - if(pass == scene::ESNRP_SOLID) + if (pass == scene::ESNRP_SOLID) prefix = "CM: solid: "; else prefix = "CM: transparent: "; @@ -413,10 +413,8 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) /* This is called two times per frame, reset on the non-transparent one */ - if(pass == scene::ESNRP_SOLID) - { + if (pass == scene::ESNRP_SOLID) m_last_drawn_sectors.clear(); - } /* Get time for measuring timeout. @@ -433,33 +431,18 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) int crack = m_client->getCrackLevel(); u32 daynight_ratio = m_client->getEnv().getDayNightRatio(); - m_camera_mutex.lock(); v3f camera_position = m_camera_position; v3f camera_direction = m_camera_direction; f32 camera_fov = m_camera_fov; - m_camera_mutex.unlock(); /* Get all blocks and draw all visible ones */ v3s16 cam_pos_nodes = floatToInt(camera_position, BS); - - v3s16 box_nodes_d = m_control.wanted_range * v3s16(1,1,1); - - v3s16 p_nodes_min = cam_pos_nodes - box_nodes_d; - v3s16 p_nodes_max = cam_pos_nodes + box_nodes_d; - - // Take a fair amount as we will be dropping more out later - // Umm... these additions are a bit strange but they are needed. - v3s16 p_blocks_min( - p_nodes_min.X / MAP_BLOCKSIZE - 3, - p_nodes_min.Y / MAP_BLOCKSIZE - 3, - p_nodes_min.Z / MAP_BLOCKSIZE - 3); - v3s16 p_blocks_max( - p_nodes_max.X / MAP_BLOCKSIZE + 1, - p_nodes_max.Y / MAP_BLOCKSIZE + 1, - p_nodes_max.Z / MAP_BLOCKSIZE + 1); + v3s16 p_blocks_min; + v3s16 p_blocks_max; + getBlocksInViewRange(cam_pos_nodes, &p_blocks_min, &p_blocks_max); u32 vertex_count = 0; u32 meshbuffer_count = 0; @@ -480,27 +463,22 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) */ { - ScopeProfiler sp(g_profiler, prefix+"drawing blocks", SPT_AVG); + ScopeProfiler sp(g_profiler, prefix + "drawing blocks", SPT_AVG); MeshBufListList drawbufs; - for(std::map::iterator - i = m_drawlist.begin(); - i != m_drawlist.end(); ++i) - { + for (std::map::iterator i = m_drawlist.begin(); + i != m_drawlist.end(); ++i) { MapBlock *block = i->second; // If the mesh of the block happened to get deleted, ignore it - if(block->mesh == NULL) + if (block->mesh == NULL) continue; float d = 0.0; - if(isBlockInSight(block->getPos(), camera_position, - camera_direction, camera_fov, - 100000*BS, &d) == false) - { + if (!isBlockInSight(block->getPos(), camera_position, + camera_direction, camera_fov, 100000 * BS, &d)) continue; - } // Mesh animation { @@ -508,24 +486,17 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) MapBlockMesh *mapBlockMesh = block->mesh; assert(mapBlockMesh); // Pretty random but this should work somewhat nicely - bool faraway = d >= BS*50; + bool faraway = d >= BS * 50; //bool faraway = d >= m_control.wanted_range * BS; - if(mapBlockMesh->isAnimationForced() || - !faraway || - mesh_animate_count_far < (m_control.range_all ? 200 : 50)) - { - bool animated = mapBlockMesh->animate( - faraway, - animation_time, - crack, - daynight_ratio); - if(animated) + if (mapBlockMesh->isAnimationForced() || !faraway || + mesh_animate_count_far < (m_control.range_all ? 200 : 50)) { + bool animated = mapBlockMesh->animate(faraway, animation_time, + crack, daynight_ratio); + if (animated) mesh_animate_count++; - if(animated && faraway) + if (animated && faraway) mesh_animate_count_far++; - } - else - { + } else { mapBlockMesh->decreaseAnimationForceTimer(); } } @@ -543,7 +514,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) assert(mesh); u32 c = mesh->getMeshBufferCount(); - for(u32 i=0; igetMeshBuffer(i); @@ -555,11 +526,10 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) video::IMaterialRenderer* rnd = driver->getMaterialRenderer(material.MaterialType); bool transparent = (rnd && rnd->isTransparent()); - if(transparent == is_transparent_pass) - { - if(buf->getVertexCount() == 0) - errorstream<<"Block ["<getVertexCount() == 0) + errorstream << "Block [" << analyze_block(block) + << "] contains an empty meshbuf" << std::endl; drawbufs.add(buf); } } @@ -569,13 +539,13 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) std::vector &lists = drawbufs.lists; int timecheck_counter = 0; - for(std::vector::iterator i = lists.begin(); + for (std::vector::iterator i = lists.begin(); i != lists.end(); ++i) { timecheck_counter++; - if(timecheck_counter > 50) { + if (timecheck_counter > 50) { timecheck_counter = 0; int time2 = time(0); - if(time2 > time1 + 4) { + if (time2 > time1 + 4) { infostream << "ClientMap::renderMap(): " "Rendering takes ages, returning." << std::endl; @@ -587,7 +557,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) driver->setMaterial(list.m); - for(std::vector::iterator j = list.bufs.begin(); + for (std::vector::iterator j = list.bufs.begin(); j != list.bufs.end(); ++j) { scene::IMeshBuffer *buf = *j; driver->drawMeshBuffer(buf); @@ -599,18 +569,18 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) } // ScopeProfiler // Log only on solid pass because values are the same - if(pass == scene::ESNRP_SOLID){ + if (pass == scene::ESNRP_SOLID) { g_profiler->avg("CM: animated meshes", mesh_animate_count); g_profiler->avg("CM: animated meshes (far)", mesh_animate_count_far); } - g_profiler->avg(prefix+"vertices drawn", vertex_count); - if(blocks_had_pass_meshbuf != 0) - g_profiler->avg(prefix+"meshbuffers per block", - (float)meshbuffer_count / (float)blocks_had_pass_meshbuf); - if(blocks_drawn != 0) - g_profiler->avg(prefix+"empty blocks (frac)", - (float)blocks_without_stuff / blocks_drawn); + g_profiler->avg(prefix + "vertices drawn", vertex_count); + if (blocks_had_pass_meshbuf != 0) + g_profiler->avg(prefix + "meshbuffers per block", + (float)meshbuffer_count / (float)blocks_had_pass_meshbuf); + if (blocks_drawn != 0) + g_profiler->avg(prefix + "empty blocks (frac)", + (float)blocks_without_stuff / blocks_drawn); /*infostream<<"renderMap(): is_transparent_pass="<getSceneNodeRenderPass()); } - virtual const core::aabbox3d& getBoundingBox() const + virtual const aabb3f &getBoundingBox() const { return m_box; } + void getBlocksInViewRange(v3s16 cam_pos_nodes, + v3s16 *p_blocks_min, v3s16 *p_blocks_max); void updateDrawList(video::IVideoDriver* driver); void renderMap(video::IVideoDriver* driver, s32 pass); @@ -141,7 +139,7 @@ public: private: Client *m_client; - core::aabbox3d m_box; + aabb3f m_box; MapDrawControl &m_control; @@ -149,7 +147,6 @@ private: v3f m_camera_direction; f32 m_camera_fov; v3s16 m_camera_offset; - Mutex m_camera_mutex; std::map m_drawlist; diff --git a/src/clientmedia.cpp b/src/clientmedia.cpp index ea11ad23..bca3f67c 100644 --- a/src/clientmedia.cpp +++ b/src/clientmedia.cpp @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., static std::string getMediaCacheDir() { - return porting::path_user + DIR_DELIM + "cache" + DIR_DELIM + "media"; + return porting::path_cache + DIR_DELIM + "media"; } /* diff --git a/src/clientobject.h b/src/clientobject.h index be24e138..3cc7c239 100644 --- a/src/clientobject.h +++ b/src/clientobject.h @@ -56,7 +56,7 @@ public: virtual void updateLight(u8 light_at_pos){} virtual void updateLightNoCheck(u8 light_at_pos){} virtual v3s16 getLightPosition(){return v3s16(0,0,0);} - virtual core::aabbox3d* getSelectionBox(){return NULL;} + virtual aabb3f *getSelectionBox() { return NULL; } virtual bool getCollisionBox(aabb3f *toset){return false;} virtual bool collideWithObjects(){return false;} virtual v3f getPosition(){return v3f(0,0,0);} diff --git a/src/clouds.cpp b/src/clouds.cpp index 29210e2b..82b63b6b 100644 --- a/src/clouds.cpp +++ b/src/clouds.cpp @@ -62,7 +62,7 @@ Clouds::Clouds( g_settings->registerChangedCallback("enable_3d_clouds", &cloud_3d_setting_changed, this); - m_box = core::aabbox3d(-BS*1000000,m_cloud_y-BS,-BS*1000000, + m_box = aabb3f(-BS*1000000,m_cloud_y-BS,-BS*1000000, BS*1000000,m_cloud_y+BS,BS*1000000); } diff --git a/src/clouds.h b/src/clouds.h index 195f48de..9c6b4178 100644 --- a/src/clouds.h +++ b/src/clouds.h @@ -53,7 +53,7 @@ public: virtual void render(); - virtual const core::aabbox3d& getBoundingBox() const + virtual const aabb3f &getBoundingBox() const { return m_box; } @@ -79,7 +79,7 @@ public: void updateCameraOffset(v3s16 camera_offset) { m_camera_offset = camera_offset; - m_box = core::aabbox3d(-BS * 1000000, m_cloud_y - BS - BS * camera_offset.Y, -BS * 1000000, + m_box = aabb3f(-BS * 1000000, m_cloud_y - BS - BS * camera_offset.Y, -BS * 1000000, BS * 1000000, m_cloud_y + BS - BS * camera_offset.Y, BS * 1000000); } @@ -87,7 +87,7 @@ public: private: video::SMaterial m_material; - core::aabbox3d m_box; + aabb3f m_box; s16 m_passed_cloud_y; float m_cloud_y; u16 m_cloud_radius_i; diff --git a/src/collision.cpp b/src/collision.cpp index 2b64547c..74c0c25c 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., // The time after which the collision occurs is stored in dtime. int axisAlignedCollision( const aabb3f &staticbox, const aabb3f &movingbox, - const v3f &speed, f32 d, f32 &dtime) + const v3f &speed, f32 d, f32 *dtime) { //TimeTaker tt("axisAlignedCollision"); @@ -59,13 +59,12 @@ int axisAlignedCollision( if(speed.X > 0) // Check for collision with X- plane { - if(relbox.MaxEdge.X <= d) - { - dtime = - relbox.MaxEdge.X / speed.X; - if((relbox.MinEdge.Y + speed.Y * dtime < ysize) && - (relbox.MaxEdge.Y + speed.Y * dtime > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * dtime < zsize) && - (relbox.MaxEdge.Z + speed.Z * dtime > COLL_ZERO)) + if (relbox.MaxEdge.X <= d) { + *dtime = -relbox.MaxEdge.X / speed.X; + if ((relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && + (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && + (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) return 0; } else if(relbox.MinEdge.X > xsize) @@ -75,13 +74,12 @@ int axisAlignedCollision( } else if(speed.X < 0) // Check for collision with X+ plane { - if(relbox.MinEdge.X >= xsize - d) - { - dtime = (xsize - relbox.MinEdge.X) / speed.X; - if((relbox.MinEdge.Y + speed.Y * dtime < ysize) && - (relbox.MaxEdge.Y + speed.Y * dtime > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * dtime < zsize) && - (relbox.MaxEdge.Z + speed.Z * dtime > COLL_ZERO)) + if (relbox.MinEdge.X >= xsize - d) { + *dtime = (xsize - relbox.MinEdge.X) / speed.X; + if ((relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && + (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && + (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) return 0; } else if(relbox.MaxEdge.X < 0) @@ -94,13 +92,12 @@ int axisAlignedCollision( if(speed.Y > 0) // Check for collision with Y- plane { - if(relbox.MaxEdge.Y <= d) - { - dtime = - relbox.MaxEdge.Y / speed.Y; - if((relbox.MinEdge.X + speed.X * dtime < xsize) && - (relbox.MaxEdge.X + speed.X * dtime > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * dtime < zsize) && - (relbox.MaxEdge.Z + speed.Z * dtime > COLL_ZERO)) + if (relbox.MaxEdge.Y <= d) { + *dtime = -relbox.MaxEdge.Y / speed.Y; + if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && + (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && + (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) return 1; } else if(relbox.MinEdge.Y > ysize) @@ -110,13 +107,12 @@ int axisAlignedCollision( } else if(speed.Y < 0) // Check for collision with Y+ plane { - if(relbox.MinEdge.Y >= ysize - d) - { - dtime = (ysize - relbox.MinEdge.Y) / speed.Y; - if((relbox.MinEdge.X + speed.X * dtime < xsize) && - (relbox.MaxEdge.X + speed.X * dtime > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * dtime < zsize) && - (relbox.MaxEdge.Z + speed.Z * dtime > COLL_ZERO)) + if (relbox.MinEdge.Y >= ysize - d) { + *dtime = (ysize - relbox.MinEdge.Y) / speed.Y; + if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && + (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && + (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) return 1; } else if(relbox.MaxEdge.Y < 0) @@ -129,13 +125,12 @@ int axisAlignedCollision( if(speed.Z > 0) // Check for collision with Z- plane { - if(relbox.MaxEdge.Z <= d) - { - dtime = - relbox.MaxEdge.Z / speed.Z; - if((relbox.MinEdge.X + speed.X * dtime < xsize) && - (relbox.MaxEdge.X + speed.X * dtime > COLL_ZERO) && - (relbox.MinEdge.Y + speed.Y * dtime < ysize) && - (relbox.MaxEdge.Y + speed.Y * dtime > COLL_ZERO)) + if (relbox.MaxEdge.Z <= d) { + *dtime = -relbox.MaxEdge.Z / speed.Z; + if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && + (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && + (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO)) return 2; } //else if(relbox.MinEdge.Z > zsize) @@ -145,13 +140,12 @@ int axisAlignedCollision( } else if(speed.Z < 0) // Check for collision with Z+ plane { - if(relbox.MinEdge.Z >= zsize - d) - { - dtime = (zsize - relbox.MinEdge.Z) / speed.Z; - if((relbox.MinEdge.X + speed.X * dtime < xsize) && - (relbox.MaxEdge.X + speed.X * dtime > COLL_ZERO) && - (relbox.MinEdge.Y + speed.Y * dtime < ysize) && - (relbox.MaxEdge.Y + speed.Y * dtime > COLL_ZERO)) + if (relbox.MinEdge.Z >= zsize - d) { + *dtime = (zsize - relbox.MinEdge.Z) / speed.Z; + if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && + (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && + (relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && + (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO)) return 2; } //else if(relbox.MaxEdge.Z < 0) @@ -191,37 +185,51 @@ bool wouldCollideWithCeiling( return false; } +static inline void getNeighborConnectingFace(v3s16 p, INodeDefManager *nodedef, + Map *map, MapNode n, int v, int *neighbors) +{ + MapNode n2 = map->getNodeNoEx(p); + if (nodedef->nodeboxConnects(n, n2, v)) + *neighbors |= v; +} collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, f32 pos_max_d, const aabb3f &box_0, f32 stepheight, f32 dtime, - v3f &pos_f, v3f &speed_f, - v3f &accel_f,ActiveObject* self, + v3f *pos_f, v3f *speed_f, + v3f accel_f, ActiveObject *self, bool collideWithObjects) { + static bool time_notification_done = false; Map *map = &env->getMap(); //TimeTaker tt("collisionMoveSimple"); - ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG); + ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG); collisionMoveResult result; /* Calculate new velocity */ - if( dtime > 0.5 ) { - warningstream<<"collisionMoveSimple: maximum step interval exceeded, lost movement details!"< 0.5) { + if (!time_notification_done) { + time_notification_done = true; + infostream << "collisionMoveSimple: maximum step interval exceeded," + " lost movement details!"<getLength() == 0) return result; // Limit speed for avoiding hangs - speed_f.Y=rangelim(speed_f.Y,-5000,5000); - speed_f.X=rangelim(speed_f.X,-5000,5000); - speed_f.Z=rangelim(speed_f.Z,-5000,5000); + speed_f->Y = rangelim(speed_f->Y, -5000, 5000); + speed_f->X = rangelim(speed_f->X, -5000, 5000); + speed_f->Z = rangelim(speed_f->Z, -5000, 5000); /* Collect node boxes in movement range @@ -234,10 +242,10 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, std::vector node_positions; { //TimeTaker tt2("collisionMoveSimple collect boxes"); - ScopeProfiler sp(g_profiler, "collisionMoveSimple collect boxes avg", SPT_AVG); + ScopeProfiler sp(g_profiler, "collisionMoveSimple collect boxes avg", SPT_AVG); - v3s16 oldpos_i = floatToInt(pos_f, BS); - v3s16 newpos_i = floatToInt(pos_f + speed_f * dtime, BS); + v3s16 oldpos_i = floatToInt(*pos_f, BS); + v3s16 newpos_i = floatToInt(*pos_f + *speed_f * dtime, BS); s16 min_x = MYMIN(oldpos_i.X, newpos_i.X) + (box_0.MinEdge.X / BS) - 1; s16 min_y = MYMIN(oldpos_i.Y, newpos_i.Y) + (box_0.MinEdge.Y / BS) - 1; s16 min_z = MYMIN(oldpos_i.Z, newpos_i.Z) + (box_0.MinEdge.Z / BS) - 1; @@ -260,12 +268,41 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Object collides into walkable nodes any_position_valid = true; - const ContentFeatures &f = gamedef->getNodeDefManager()->get(n); + INodeDefManager *nodedef = gamedef->getNodeDefManager(); + const ContentFeatures &f = nodedef->get(n); if(f.walkable == false) continue; int n_bouncy_value = itemgroup_get(f.groups, "bouncy"); - std::vector nodeboxes = n.getCollisionBoxes(gamedef->ndef()); + int neighbors = 0; + if (f.drawtype == NDT_NODEBOX && f.node_box.type == NODEBOX_CONNECTED) { + v3s16 p2 = p; + + p2.Y++; + getNeighborConnectingFace(p2, nodedef, map, n, 1, &neighbors); + + p2 = p; + p2.Y--; + getNeighborConnectingFace(p2, nodedef, map, n, 2, &neighbors); + + p2 = p; + p2.Z--; + getNeighborConnectingFace(p2, nodedef, map, n, 4, &neighbors); + + p2 = p; + p2.X--; + getNeighborConnectingFace(p2, nodedef, map, n, 8, &neighbors); + + p2 = p; + p2.Z++; + getNeighborConnectingFace(p2, nodedef, map, n, 16, &neighbors); + + p2 = p; + p2.X++; + getNeighborConnectingFace(p2, nodedef, map, n, 32, &neighbors); + } + std::vector nodeboxes; + n.getCollisionBoxes(gamedef->ndef(), &nodeboxes, neighbors); for(std::vector::iterator i = nodeboxes.begin(); i != nodeboxes.end(); ++i) @@ -295,8 +332,10 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Do not move if world has not loaded yet, since custom node boxes // are not available for collision detection. - if (!any_position_valid) + if (!any_position_valid) { + *speed_f = v3f(0, 0, 0); return result; + } } // tt2 @@ -311,9 +350,9 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, #ifndef SERVER ClientEnvironment *c_env = dynamic_cast(env); if (c_env != 0) { - f32 distance = speed_f.getLength(); + f32 distance = speed_f->getLength(); std::vector clientobjects; - c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects); + c_env->getActiveObjects(*pos_f, distance * 1.5, clientobjects); for (size_t i=0; i < clientobjects.size(); i++) { if ((self == 0) || (self != clientobjects[i].obj)) { objects.push_back((ActiveObject*)clientobjects[i].obj); @@ -325,9 +364,9 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, { ServerEnvironment *s_env = dynamic_cast(env); if (s_env != 0) { - f32 distance = speed_f.getLength(); + f32 distance = speed_f->getLength(); std::vector s_objects; - s_env->getObjectsInsideRadius(s_objects, pos_f, distance * 1.5); + s_env->getObjectsInsideRadius(s_objects, *pos_f, distance * 1.5); for (std::vector::iterator iter = s_objects.begin(); iter != s_objects.end(); ++iter) { ServerActiveObject *current = s_env->getActiveObject(*iter); if ((self == 0) || (self != current)) { @@ -381,23 +420,22 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, while(dtime > BS * 1e-10) { //TimeTaker tt3("collisionMoveSimple dtime loop"); - ScopeProfiler sp(g_profiler, "collisionMoveSimple dtime loop avg", SPT_AVG); + ScopeProfiler sp(g_profiler, "collisionMoveSimple dtime loop avg", SPT_AVG); // Avoid infinite loop loopcount++; if (loopcount >= 100) { warningstream << "collisionMoveSimple: Loop count exceeded, aborting to avoid infiniite loop" << std::endl; - dtime = 0; break; } aabb3f movingbox = box_0; - movingbox.MinEdge += pos_f; - movingbox.MaxEdge += pos_f; + movingbox.MinEdge += *pos_f; + movingbox.MaxEdge += *pos_f; int nearest_collided = -1; f32 nearest_dtime = dtime; - u32 nearest_boxindex = -1; + int nearest_boxindex = -1; /* Go through every nodebox, find nearest collision @@ -410,7 +448,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Find nearest collision of the two boxes (raytracing-like) f32 dtime_tmp; int collided = axisAlignedCollision( - cboxes[boxindex], movingbox, speed_f, d, dtime_tmp); + cboxes[boxindex], movingbox, *speed_f, d, &dtime_tmp); if (collided == -1 || dtime_tmp >= nearest_dtime) continue; @@ -422,7 +460,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, if (nearest_collided == -1) { // No collision with any collision box. - pos_f += speed_f * dtime; + *pos_f += *speed_f * dtime; dtime = 0; // Set to 0 to avoid "infinite" loop due to small FP numbers } else { // Otherwise, a collision occurred. @@ -445,14 +483,14 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Handle negative nearest_dtime (can be caused by the d allowance) if (!step_up) { if (nearest_collided == 0) - pos_f.X += speed_f.X * nearest_dtime; + pos_f->X += speed_f->X * nearest_dtime; if (nearest_collided == 1) - pos_f.Y += speed_f.Y * nearest_dtime; + pos_f->Y += speed_f->Y * nearest_dtime; if (nearest_collided == 2) - pos_f.Z += speed_f.Z * nearest_dtime; + pos_f->Z += speed_f->Z * nearest_dtime; } } else { - pos_f += speed_f * nearest_dtime; + *pos_f += *speed_f * nearest_dtime; dtime -= nearest_dtime; } @@ -468,7 +506,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, info.node_p = node_positions[nearest_boxindex]; info.bouncy = bouncy; - info.old_speed = speed_f; + info.old_speed = *speed_f; // Set the speed component that caused the collision to zero if (step_up) { @@ -476,29 +514,29 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, is_step_up[nearest_boxindex] = true; is_collision = false; } else if(nearest_collided == 0) { // X - if (fabs(speed_f.X) > BS * 3) - speed_f.X *= bounce; + if (fabs(speed_f->X) > BS * 3) + speed_f->X *= bounce; else - speed_f.X = 0; + speed_f->X = 0; result.collides = true; result.collides_xz = true; } else if(nearest_collided == 1) { // Y - if(fabs(speed_f.Y) > BS * 3) - speed_f.Y *= bounce; + if (fabs(speed_f->Y) > BS * 3) + speed_f->Y *= bounce; else - speed_f.Y = 0; + speed_f->Y = 0; result.collides = true; } else if(nearest_collided == 2) { // Z - if (fabs(speed_f.Z) > BS * 3) - speed_f.Z *= bounce; + if (fabs(speed_f->Z) > BS * 3) + speed_f->Z *= bounce; else - speed_f.Z = 0; + speed_f->Z = 0; result.collides = true; result.collides_xz = true; } - info.new_speed = speed_f; + info.new_speed = *speed_f; if (info.new_speed.getDistanceFrom(info.old_speed) < 0.1 * BS) is_collision = false; @@ -512,8 +550,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, Final touches: Check if standing on ground, step up stairs. */ aabb3f box = box_0; - box.MinEdge += pos_f; - box.MaxEdge += pos_f; + box.MinEdge += *pos_f; + box.MaxEdge += *pos_f; for (u32 boxindex = 0; boxindex < cboxes.size(); boxindex++) { const aabb3f& cbox = cboxes[boxindex]; @@ -530,10 +568,10 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, cbox.MaxEdge.Z - d > box.MinEdge.Z && cbox.MinEdge.Z + d < box.MaxEdge.Z) { if (is_step_up[boxindex]) { - pos_f.Y += (cbox.MaxEdge.Y - box.MinEdge.Y); + pos_f->Y += (cbox.MaxEdge.Y - box.MinEdge.Y); box = box_0; - box.MinEdge += pos_f; - box.MaxEdge += pos_f; + box.MinEdge += *pos_f; + box.MaxEdge += *pos_f; } if (fabs(cbox.MaxEdge.Y - box.MinEdge.Y) < 0.15 * BS) { result.touching_ground = true; diff --git a/src/collision.h b/src/collision.h index d1234bef..1ceaba81 100644 --- a/src/collision.h +++ b/src/collision.h @@ -73,8 +73,8 @@ struct collisionMoveResult collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef, f32 pos_max_d, const aabb3f &box_0, f32 stepheight, f32 dtime, - v3f &pos_f, v3f &speed_f, - v3f &accel_f,ActiveObject* self=0, + v3f *pos_f, v3f *speed_f, + v3f accel_f, ActiveObject *self=NULL, bool collideWithObjects=true); // Helper function: @@ -83,7 +83,7 @@ collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef, // dtime receives time until first collision, invalid if -1 is returned int axisAlignedCollision( const aabb3f &staticbox, const aabb3f &movingbox, - const v3f &speed, f32 d, f32 &dtime); + const v3f &speed, f32 d, f32 *dtime); // Helper function: // Checks if moving the movingbox up by the given distance would hit a ceiling. diff --git a/src/content_cao.cpp b/src/content_cao.cpp index 72f6145b..d701e4f7 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -309,7 +309,7 @@ public: void initialize(const std::string &data); - core::aabbox3d* getSelectionBox() + aabb3f *getSelectionBox() {return &m_selection_box;} v3f getPosition() {return m_position;} @@ -319,7 +319,7 @@ public: bool getCollisionBox(aabb3f *toset) { return false; } private: - core::aabbox3d m_selection_box; + aabb3f m_selection_box; scene::IMeshSceneNode *m_node; v3f m_position; std::string m_itemstring; @@ -546,13 +546,14 @@ GenericCAO::GenericCAO(IGameDef *gamedef, ClientEnvironment *env): // m_smgr(NULL), m_irr(NULL), + m_camera(NULL), + m_gamedef(NULL), m_selection_box(-BS/3.,-BS/3.,-BS/3., BS/3.,BS/3.,BS/3.), m_meshnode(NULL), m_animated_meshnode(NULL), m_wield_meshnode(NULL), m_spritenode(NULL), - m_nametag_color(video::SColor(255, 255, 255, 255)), - m_textnode(NULL), + m_nametag(NULL), m_position(v3f(0,10*BS,0)), m_velocity(v3f(0,0,0)), m_acceleration(v3f(0,0,0)), @@ -581,8 +582,11 @@ GenericCAO::GenericCAO(IGameDef *gamedef, ClientEnvironment *env): m_last_light(255), m_is_visible(false) { - if(gamedef == NULL) + if (gamedef == NULL) { ClientActiveObject::registerType(getType(), create); + } else { + m_gamedef = gamedef; + } } bool GenericCAO::getCollisionBox(aabb3f *toset) @@ -668,14 +672,13 @@ void GenericCAO::initialize(const std::string &data) GenericCAO::~GenericCAO() { - if(m_is_player) - { + if (m_is_player) { m_env->removePlayerName(m_name.c_str()); } removeFromScene(true); } -core::aabbox3d* GenericCAO::getSelectionBox() +aabb3f *GenericCAO::getSelectionBox() { if(!m_prop.is_visible || !m_is_visible || m_is_local_player || getParent() != NULL) return NULL; @@ -696,14 +699,15 @@ v3f GenericCAO::getPosition() scene::ISceneNode* GenericCAO::getSceneNode() { - if (m_meshnode) + if (m_meshnode) { return m_meshnode; - if (m_animated_meshnode) + } else if (m_animated_meshnode) { return m_animated_meshnode; - if (m_wield_meshnode) + } else if (m_wield_meshnode) { return m_wield_meshnode; - if (m_spritenode) + } else if (m_spritenode) { return m_spritenode; + } return NULL; } @@ -776,56 +780,47 @@ void GenericCAO::removeFromScene(bool permanent) } } - if(m_meshnode) - { + if (m_meshnode) { m_meshnode->remove(); m_meshnode->drop(); m_meshnode = NULL; - } - if(m_animated_meshnode) - { + } else if (m_animated_meshnode) { m_animated_meshnode->remove(); m_animated_meshnode->drop(); m_animated_meshnode = NULL; - } - if(m_wield_meshnode) - { + } else if (m_wield_meshnode) { m_wield_meshnode->remove(); m_wield_meshnode->drop(); m_wield_meshnode = NULL; - } - if(m_spritenode) - { + } else if (m_spritenode) { m_spritenode->remove(); m_spritenode->drop(); m_spritenode = NULL; } - if (m_textnode) - { - m_textnode->remove(); - m_textnode->drop(); - m_textnode = NULL; + + if (m_nametag) { + m_gamedef->getCamera()->removeNametag(m_nametag); + m_nametag = NULL; } } -void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc, - IrrlichtDevice *irr) +void GenericCAO::addToScene(scene::ISceneManager *smgr, + ITextureSource *tsrc, IrrlichtDevice *irr) { m_smgr = smgr; m_irr = irr; - if (getSceneNode() != NULL) + if (getSceneNode() != NULL) { return; + } m_visuals_expired = false; - if(!m_prop.is_visible) + if (!m_prop.is_visible) { return; + } - //video::IVideoDriver* driver = smgr->getVideoDriver(); - - if(m_prop.visual == "sprite") - { + if (m_prop.visual == "sprite") { infostream<<"GenericCAO::addToScene(): single_sprite"<addBillboardSceneNode( NULL, v2f(1, 1), v3f(0,0,0), -1); @@ -972,19 +967,10 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc, updateTextures(""); scene::ISceneNode *node = getSceneNode(); - if (node && m_is_player && !m_is_local_player) { - // Add a text node for showing the name - gui::IGUIEnvironment* gui = irr->getGUIEnvironment(); - std::wstring wname = utf8_to_wide(m_name); - m_textnode = smgr->addTextSceneNode(gui->getSkin()->getFont(), - wname.c_str(), m_nametag_color, node); - m_textnode->grab(); - m_textnode->setPosition(v3f(0, BS*1.1, 0)); - - // Enforce hiding nametag, - // because if freetype is enabled, a grey - // shadow can remain. - m_textnode->setVisible(m_nametag_color.getAlpha() > 0); + if (node && m_prop.nametag != "" && !m_is_local_player) { + // Add nametag + m_nametag = m_gamedef->getCamera()->addNametag(node, + m_prop.nametag, m_prop.nametag_color); } updateNodePos(); @@ -1186,22 +1172,20 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) if(m_prop.physical) { - core::aabbox3d box = m_prop.collisionbox; + aabb3f box = m_prop.collisionbox; box.MinEdge *= BS; box.MaxEdge *= BS; collisionMoveResult moveresult; f32 pos_max_d = BS*0.125; // Distance per iteration v3f p_pos = m_position; v3f p_velocity = m_velocity; - v3f p_acceleration = m_acceleration; moveresult = collisionMoveSimple(env,env->getGameDef(), pos_max_d, box, m_prop.stepheight, dtime, - p_pos, p_velocity, p_acceleration, + &p_pos, &p_velocity, m_acceleration, this, m_prop.collideWithObjects); // Apply results m_position = p_pos; m_velocity = p_velocity; - m_acceleration = p_acceleration; bool is_end_position = moveresult.collides; pos_translator.update(m_position, is_end_position, dtime); @@ -1261,8 +1245,18 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) if (getParent() == NULL && m_prop.automatic_face_movement_dir && (fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)) { - m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + float optimal_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + m_prop.automatic_face_movement_dir_offset; + float max_rotation_delta = + dtime * m_prop.automatic_face_movement_max_rotation_per_sec; + + if ((m_prop.automatic_face_movement_max_rotation_per_sec > 0) && + (fabs(m_yaw - optimal_yaw) > max_rotation_delta)) { + + m_yaw = optimal_yaw < m_yaw ? m_yaw - max_rotation_delta : m_yaw + max_rotation_delta; + } else { + m_yaw = optimal_yaw; + } updateNodePos(); } } @@ -1594,6 +1588,9 @@ void GenericCAO::processMessage(const std::string &data) m_tx_basepos = m_prop.initial_sprite_basepos; } + if ((m_is_player && !m_is_local_player) && m_prop.nametag == "") + m_prop.nametag = m_name; + expireVisuals(); } else if(cmd == GENERIC_CMD_UPDATE_POSITION) @@ -1772,15 +1769,11 @@ void GenericCAO::processMessage(const std::string &data) m_armor_groups[name] = rating; } } else if (cmd == GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) { + // Deprecated, for backwards compatibility only. readU8(is); // version - m_nametag_color = readARGB8(is); - if (m_textnode != NULL) { - m_textnode->setTextColor(m_nametag_color); - - // Enforce hiding nametag, - // because if freetype is enabled, a grey - // shadow can remain. - m_textnode->setVisible(m_nametag_color.getAlpha() > 0); + m_prop.nametag_color = readARGB8(is); + if (m_nametag != NULL) { + m_nametag->nametag_color = m_prop.nametag_color; } } } diff --git a/src/content_cao.h b/src/content_cao.h index 299d6c73..a166ff49 100644 --- a/src/content_cao.h +++ b/src/content_cao.h @@ -26,6 +26,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "object_properties.h" #include "itemgroup.h" +class Camera; +struct Nametag; + /* SmoothTranslator */ @@ -65,13 +68,14 @@ private: // scene::ISceneManager *m_smgr; IrrlichtDevice *m_irr; - core::aabbox3d m_selection_box; + Camera* m_camera; + IGameDef *m_gamedef; + aabb3f m_selection_box; scene::IMeshSceneNode *m_meshnode; scene::IAnimatedMeshSceneNode *m_animated_meshnode; WieldMeshSceneNode *m_wield_meshnode; scene::IBillboardSceneNode *m_spritenode; - video::SColor m_nametag_color; - scene::ITextSceneNode* m_textnode; + Nametag* m_nametag; v3f m_position; v3f m_velocity; v3f m_acceleration; @@ -128,7 +132,7 @@ public: bool collideWithObjects(); - core::aabbox3d* getSelectionBox(); + aabb3f *getSelectionBox(); v3f getPosition(); @@ -202,6 +206,11 @@ public: float time_from_last_punch=1000000); std::string debugInfoText(); + + std::string infoText() + { + return m_prop.infotext; + } }; diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index 01a06b6c..6a83bd8f 100644 --- a/src/content_mapblock.cpp +++ b/src/content_mapblock.cpp @@ -163,6 +163,14 @@ void makeCuboid(MeshCollector *collector, const aabb3f &box, } } +static inline void getNeighborConnectingFace(v3s16 p, INodeDefManager *nodedef, + MeshMakeData *data, MapNode n, int v, int *neighbors) +{ + MapNode n2 = data->m_vmanip.getNodeNoEx(p); + if (nodedef->nodeboxConnects(n, n2, v)) + *neighbors |= v; +} + /* TODO: Fix alpha blending for special nodes Currently only the last element rendered is blended correct @@ -171,7 +179,6 @@ void mapblock_mesh_generate_special(MeshMakeData *data, MeshCollector &collector) { INodeDefManager *nodedef = data->m_gamedef->ndef(); - ITextureSource *tsrc = data->m_gamedef->tsrc(); scene::ISceneManager* smgr = data->m_gamedef->getSceneManager(); scene::IMeshManipulator* meshmanip = smgr->getMeshManipulator(); @@ -182,11 +189,6 @@ void mapblock_mesh_generate_special(MeshMakeData *data, Some settings */ bool enable_mesh_cache = g_settings->getBool("enable_mesh_cache"); - bool new_style_water = g_settings->getBool("new_style_water"); - - float node_liquid_level = 1.0; - if (new_style_water) - node_liquid_level = 0.85; v3s16 blockpos_nodes = data->m_blockpos*MAP_BLOCKSIZE; @@ -288,35 +290,29 @@ void mapblock_mesh_generate_special(MeshMakeData *data, If our topside is liquid, set upper border of face at upper border of node */ - if(top_is_same_liquid) - { - vertices[2].Pos.Y = 0.5*BS; - vertices[3].Pos.Y = 0.5*BS; - } + if (top_is_same_liquid) { + vertices[2].Pos.Y = 0.5 * BS; + vertices[3].Pos.Y = 0.5 * BS; + } else { /* Otherwise upper position of face is liquid level */ - else - { - vertices[2].Pos.Y = (node_liquid_level-0.5)*BS; - vertices[3].Pos.Y = (node_liquid_level-0.5)*BS; + vertices[2].Pos.Y = 0.5 * BS; + vertices[3].Pos.Y = 0.5 * BS; } /* If neighbor is liquid, lower border of face is liquid level */ - if(neighbor_is_same_liquid) - { - vertices[0].Pos.Y = (node_liquid_level-0.5)*BS; - vertices[1].Pos.Y = (node_liquid_level-0.5)*BS; - } + if (neighbor_is_same_liquid) { + vertices[0].Pos.Y = 0.5 * BS; + vertices[1].Pos.Y = 0.5 * BS; + } else { /* If neighbor is not liquid, lower border of face is lower border of node */ - else - { - vertices[0].Pos.Y = -0.5*BS; - vertices[1].Pos.Y = -0.5*BS; + vertices[0].Pos.Y = -0.5 * BS; + vertices[1].Pos.Y = -0.5 * BS; } for(s32 j=0; j<4; j++) @@ -359,7 +355,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data, video::S3DVertex(-BS/2,0,-BS/2, 0,0,0, c, 0,0), }; - v3f offset(p.X*BS, p.Y*BS + (-0.5+node_liquid_level)*BS, p.Z*BS); + v3f offset(p.X * BS, (p.Y + 0.5) * BS, p.Z * BS); for(s32 i=0; i<4; i++) { vertices[i].Pos += offset; @@ -432,14 +428,14 @@ void mapblock_mesh_generate_special(MeshMakeData *data, content = n2.getContent(); if(n2.getContent() == c_source) - level = (-0.5+node_liquid_level) * BS; + level = 0.5 * BS; else if(n2.getContent() == c_flowing){ u8 liquid_level = (n2.param2&LIQUID_LEVEL_MASK); if (liquid_level <= LIQUID_LEVEL_MAX+1-range) liquid_level = 0; else liquid_level -= (LIQUID_LEVEL_MAX+1-range); - level = (-0.5 + ((float)liquid_level+ 0.5) / (float)range * node_liquid_level) * BS; + level = (-0.5 + ((float)liquid_level + 0.5) / (float)range) * BS; } // Check node above neighbor. @@ -487,7 +483,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data, // Source is always the same height else if(content == c_source) { - cornerlevel = (-0.5+node_liquid_level)*BS; + cornerlevel = 0.5 * BS; valid_count = 1; break; } @@ -1513,7 +1509,38 @@ void mapblock_mesh_generate_special(MeshMakeData *data, v3f pos = intToFloat(p, BS); - std::vector boxes = n.getNodeBoxes(nodedef); + int neighbors = 0; + + // locate possible neighboring nodes to connect to + if (f.node_box.type == NODEBOX_CONNECTED) { + v3s16 p2 = p; + + p2.Y++; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 1, &neighbors); + + p2 = p; + p2.Y--; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 2, &neighbors); + + p2 = p; + p2.Z--; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 4, &neighbors); + + p2 = p; + p2.X--; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 8, &neighbors); + + p2 = p; + p2.Z++; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 16, &neighbors); + + p2 = p; + p2.X++; + getNeighborConnectingFace(blockpos_nodes + p2, nodedef, data, n, 32, &neighbors); + } + + std::vector boxes; + n.getNodeBoxes(nodedef, &boxes, neighbors); for(std::vector::iterator i = boxes.begin(); i != boxes.end(); ++i) @@ -1615,55 +1642,5 @@ void mapblock_mesh_generate_special(MeshMakeData *data, break;} } } - - /* - Caused by incorrect alpha blending, selection mesh needs to be created as - last element to ensure it gets blended correct over nodes with alpha channel - */ - // Create selection mesh - v3s16 p = data->m_highlighted_pos_relative; - if (data->m_show_hud && - (p.X >= 0) && (p.X < MAP_BLOCKSIZE) && - (p.Y >= 0) && (p.Y < MAP_BLOCKSIZE) && - (p.Z >= 0) && (p.Z < MAP_BLOCKSIZE)) { - - MapNode n = data->m_vmanip.getNodeNoEx(blockpos_nodes + p); - if(n.getContent() != CONTENT_AIR) { - // Get selection mesh light level - static const v3s16 dirs[7] = { - v3s16( 0, 0, 0), - v3s16( 0, 1, 0), - v3s16( 0,-1, 0), - v3s16( 1, 0, 0), - v3s16(-1, 0, 0), - v3s16( 0, 0, 1), - v3s16( 0, 0,-1) - }; - - u16 l = 0; - u16 l1 = 0; - for (u8 i = 0; i < 7; i++) { - MapNode n1 = data->m_vmanip.getNodeNoEx(blockpos_nodes + p + dirs[i]); - l1 = getInteriorLight(n1, -4, nodedef); - if (l1 > l) - l = l1; - } - video::SColor c = MapBlock_LightColor(255, l, 0); - data->m_highlight_mesh_color = c; - std::vector boxes = n.getSelectionBoxes(nodedef); - TileSpec h_tile; - h_tile.material_flags |= MATERIAL_FLAG_HIGHLIGHTED; - h_tile.texture = tsrc->getTextureForMesh("halo.png",&h_tile.texture_id); - v3f pos = intToFloat(p, BS); - f32 d = 0.05 * BS; - for (std::vector::iterator i = boxes.begin(); - i != boxes.end(); ++i) { - aabb3f box = *i; - box.MinEdge += v3f(-d, -d, -d) + pos; - box.MaxEdge += v3f(d, d, d) + pos; - makeCuboid(&collector, box, &h_tile, 1, c, NULL); - } - } - } } diff --git a/src/content_sao.cpp b/src/content_sao.cpp index 0fa806c1..53bf3154 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -259,7 +259,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) else { if(m_prop.physical){ - core::aabbox3d box = m_prop.collisionbox; + aabb3f box = m_prop.collisionbox; box.MinEdge *= BS; box.MaxEdge *= BS; collisionMoveResult moveresult; @@ -269,7 +269,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) v3f p_acceleration = m_acceleration; moveresult = collisionMoveSimple(m_env,m_env->getGameDef(), pos_max_d, box, m_prop.stepheight, dtime, - p_pos, p_velocity, p_acceleration, + &p_pos, &p_velocity, p_acceleration, this, m_prop.collideWithObjects); // Apply results @@ -283,8 +283,20 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) } if((m_prop.automatic_face_movement_dir) && - (fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)){ - m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + m_prop.automatic_face_movement_dir_offset; + (fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)) + { + float optimal_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + + m_prop.automatic_face_movement_dir_offset; + float max_rotation_delta = + dtime * m_prop.automatic_face_movement_max_rotation_per_sec; + + if ((m_prop.automatic_face_movement_max_rotation_per_sec > 0) && + (fabs(m_yaw - optimal_yaw) > max_rotation_delta)) { + + m_yaw = optimal_yaw < m_yaw ? m_yaw - max_rotation_delta : m_yaw + max_rotation_delta; + } else { + m_yaw = optimal_yaw; + } } } @@ -757,8 +769,6 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_, m_bone_position_sent(false), m_attachment_parent_id(0), m_attachment_sent(false), - m_nametag_color(video::SColor(255, 255, 255, 255)), - m_nametag_sent(false), // public m_physics_override_speed(1), m_physics_override_jump(1), @@ -776,7 +786,7 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_, m_prop.hp_max = PLAYER_MAX_HP; m_prop.physical = false; m_prop.weight = 75; - m_prop.collisionbox = core::aabbox3d(-1/3.,-1.0,-1/3., 1/3.,1.0,1/3.); + m_prop.collisionbox = aabb3f(-1/3.,-1.0,-1/3., 1/3.,1.0,1/3.); // start of default appearance, this should be overwritten by LUA m_prop.visual = "upright_sprite"; m_prop.visual_size = v2f(1, 2); @@ -857,7 +867,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version) os< getAttachmentChildIds(); ObjectProperties* accessObjectProperties(); void notifyObjectPropertiesModified(); - void setNametagColor(video::SColor color); - video::SColor getNametagColor(); /* Inventory interface @@ -292,7 +290,7 @@ public: private: std::string getPropertyPacket(); - + Player *m_player; u16 m_peer_id; Inventory *m_inventory; @@ -333,8 +331,6 @@ private: v3f m_attachment_rotation; bool m_attachment_sent; - video::SColor m_nametag_color; - bool m_nametag_sent; public: float m_physics_override_speed; @@ -346,4 +342,3 @@ public: }; #endif - diff --git a/src/convert_json.cpp b/src/convert_json.cpp index e03508e2..e548c45f 100644 --- a/src/convert_json.cpp +++ b/src/convert_json.cpp @@ -52,7 +52,13 @@ Json::Value fetchJsonValue(const std::string &url, if (!reader.parse(stream, root)) { errorstream << "URL: " << url << std::endl; errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages(); - errorstream << "data: \"" << fetch_result.data << "\"" << std::endl; + if (fetch_result.data.size() > 100) { + errorstream << "Data (" << fetch_result.data.size() + << " bytes) printed to warningstream." << std::endl; + warningstream << "data: \"" << fetch_result.data << "\"" << std::endl; + } else { + errorstream << "data: \"" << fetch_result.data << "\"" << std::endl; + } return Json::Value(); } diff --git a/src/craftdef.cpp b/src/craftdef.cpp index a39bfb37..d3f1edaf 100644 --- a/src/craftdef.cpp +++ b/src/craftdef.cpp @@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/serialize.h" #include "util/string.h" #include "util/numeric.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "exceptions.h" inline bool isGroupRecipeStr(const std::string &rec_name) @@ -90,7 +90,7 @@ static bool inputItemMatchesRecipe(const std::string &inp_name, all_groups_match = false; break; } - } while (!f.atend()); + } while (!f.at_end()); if (all_groups_match) return true; } @@ -214,7 +214,7 @@ static void craftDecrementOrReplaceInput(CraftInput &input, for (std::vector >::iterator j = pairs.begin(); j != pairs.end(); ++j) { - if (item.name == craftGetItemName(j->first, gamedef)) { + if (inputItemMatchesRecipe(item.name, j->first, gamedef->idef())) { if (item.count == 1) { item.deSerialize(j->second, gamedef->idef()); found_replacement = true; diff --git a/src/database-dummy.cpp b/src/database-dummy.cpp index 2e5de5ed..b38db1fb 100644 --- a/src/database-dummy.cpp +++ b/src/database-dummy.cpp @@ -47,6 +47,7 @@ bool Database_Dummy::deleteBlock(const v3s16 &pos) void Database_Dummy::listAllLoadableBlocks(std::vector &dst) { + dst.reserve(m_database.size()); for (std::map::const_iterator x = m_database.begin(); x != m_database.end(); ++x) { dst.push_back(getIntegerAsBlock(x->first)); diff --git a/src/database-redis.cpp b/src/database-redis.cpp index b15f546b..498e9d39 100644 --- a/src/database-redis.cpp +++ b/src/database-redis.cpp @@ -92,7 +92,7 @@ bool Database_Redis::saveBlock(const v3s16 &pos, const std::string &data) if (reply->type == REDIS_REPLY_ERROR) { warningstream << "saveBlock: saving block " << PP(pos) - << " failed: " << reply->str << std::endl; + << " failed: " << std::string(reply->str, reply->len) << std::endl; freeReplyObject(reply); return false; } @@ -119,7 +119,7 @@ std::string Database_Redis::loadBlock(const v3s16 &pos) return str; } case REDIS_REPLY_ERROR: { - std::string errstr = reply->str; + std::string errstr(reply->str, reply->len); freeReplyObject(reply); errorstream << "loadBlock: loading block " << PP(pos) << " failed: " << errstr << std::endl; @@ -134,7 +134,7 @@ std::string Database_Redis::loadBlock(const v3s16 &pos) } errorstream << "loadBlock: loading block " << PP(pos) << " returned invalid reply type " << reply->type - << ": " << reply->str << std::endl; + << ": " << std::string(reply->str, reply->len) << std::endl; freeReplyObject(reply); throw FileNotGoodException(std::string( "Redis command 'HGET %s %s' gave invalid reply.")); @@ -151,7 +151,7 @@ bool Database_Redis::deleteBlock(const v3s16 &pos) "Redis command 'HDEL %s %s' failed: ") + ctx->errstr); } else if (reply->type == REDIS_REPLY_ERROR) { warningstream << "deleteBlock: deleting block " << PP(pos) - << " failed: " << reply->str << std::endl; + << " failed: " << std::string(reply->str, reply->len) << std::endl; freeReplyObject(reply); return false; } @@ -169,13 +169,16 @@ void Database_Redis::listAllLoadableBlocks(std::vector &dst) } switch (reply->type) { case REDIS_REPLY_ARRAY: + dst.reserve(reply->elements); for (size_t i = 0; i < reply->elements; i++) { assert(reply->element[i]->type == REDIS_REPLY_STRING); dst.push_back(getIntegerAsBlock(stoi64(reply->element[i]->str))); } + break; case REDIS_REPLY_ERROR: throw FileNotGoodException(std::string( - "Failed to get keys from database: ") + reply->str); + "Failed to get keys from database: ") + + std::string(reply->str, reply->len)); } freeReplyObject(reply); } diff --git a/src/database-sqlite3.cpp b/src/database-sqlite3.cpp index da3e2c86..56f937bf 100644 --- a/src/database-sqlite3.cpp +++ b/src/database-sqlite3.cpp @@ -31,31 +31,79 @@ SQLite format specification: #include "filesys.h" #include "exceptions.h" #include "settings.h" +#include "porting.h" #include "util/string.h" #include +// When to print messages when the database is being held locked by another process +// Note: I've seen occasional delays of over 250ms while running minetestmapper. +#define BUSY_INFO_TRESHOLD 100 // Print first informational message after 100ms. +#define BUSY_WARNING_TRESHOLD 250 // Print warning message after 250ms. Lag is increased. +#define BUSY_ERROR_TRESHOLD 1000 // Print error message after 1000ms. Significant lag. +#define BUSY_FATAL_TRESHOLD 3000 // Allow SQLITE_BUSY to be returned, which will cause a minetest crash. +#define BUSY_ERROR_INTERVAL 10000 // Safety net: report again every 10 seconds -#define SQLRES(s, r) \ + +#define SQLRES(s, r, m) \ if ((s) != (r)) { \ - throw FileNotGoodException(std::string(\ - "SQLite3 database error (" \ - __FILE__ ":" TOSTRING(__LINE__) \ - "): ") +\ + throw FileNotGoodException(std::string(m) + ": " +\ sqlite3_errmsg(m_database)); \ } -#define SQLOK(s) SQLRES(s, SQLITE_OK) +#define SQLOK(s, m) SQLRES(s, SQLITE_OK, m) #define PREPARE_STATEMENT(name, query) \ - SQLOK(sqlite3_prepare_v2(m_database, query, -1, &m_stmt_##name, NULL)) + SQLOK(sqlite3_prepare_v2(m_database, query, -1, &m_stmt_##name, NULL),\ + "Failed to prepare query '" query "'") #define FINALIZE_STATEMENT(statement) \ - if (sqlite3_finalize(statement) != SQLITE_OK) { \ - throw FileNotGoodException(std::string( \ - "SQLite3: Failed to finalize " #statement ": ") + \ - sqlite3_errmsg(m_database)); \ + SQLOK(sqlite3_finalize(statement), "Failed to finalize " #statement) + +int Database_SQLite3::busyHandler(void *data, int count) +{ + s64 &first_time = reinterpret_cast(data)[0]; + s64 &prev_time = reinterpret_cast(data)[1]; + s64 cur_time = getTimeMs(); + + if (count == 0) { + first_time = cur_time; + prev_time = first_time; + } else { + while (cur_time < prev_time) + cur_time += s64(1)<<32; } + if (cur_time - first_time < BUSY_INFO_TRESHOLD) { + ; // do nothing + } else if (cur_time - first_time >= BUSY_INFO_TRESHOLD && + prev_time - first_time < BUSY_INFO_TRESHOLD) { + infostream << "SQLite3 database has been locked for " + << cur_time - first_time << " ms." << std::endl; + } else if (cur_time - first_time >= BUSY_WARNING_TRESHOLD && + prev_time - first_time < BUSY_WARNING_TRESHOLD) { + warningstream << "SQLite3 database has been locked for " + << cur_time - first_time << " ms." << std::endl; + } else if (cur_time - first_time >= BUSY_ERROR_TRESHOLD && + prev_time - first_time < BUSY_ERROR_TRESHOLD) { + errorstream << "SQLite3 database has been locked for " + << cur_time - first_time << " ms; this causes lag." << std::endl; + } else if (cur_time - first_time >= BUSY_FATAL_TRESHOLD && + prev_time - first_time < BUSY_FATAL_TRESHOLD) { + errorstream << "SQLite3 database has been locked for " + << cur_time - first_time << " ms - giving up!" << std::endl; + } else if ((cur_time - first_time) / BUSY_ERROR_INTERVAL != + (prev_time - first_time) / BUSY_ERROR_INTERVAL) { + // Safety net: keep reporting every BUSY_ERROR_INTERVAL + errorstream << "SQLite3 database has been locked for " + << (cur_time - first_time) / 1000 << " seconds!" << std::endl; + } + + prev_time = cur_time; + + // Make sqlite transaction fail if delay exceeds BUSY_FATAL_TRESHOLD + return cur_time - first_time < BUSY_FATAL_TRESHOLD; +} + Database_SQLite3::Database_SQLite3(const std::string &savedir) : m_initialized(false), @@ -72,13 +120,15 @@ Database_SQLite3::Database_SQLite3(const std::string &savedir) : void Database_SQLite3::beginSave() { verifyDatabase(); - SQLRES(sqlite3_step(m_stmt_begin), SQLITE_DONE); + SQLRES(sqlite3_step(m_stmt_begin), SQLITE_DONE, + "Failed to start SQLite3 transaction"); sqlite3_reset(m_stmt_begin); } void Database_SQLite3::endSave() { verifyDatabase(); - SQLRES(sqlite3_step(m_stmt_end), SQLITE_DONE); + SQLRES(sqlite3_step(m_stmt_end), SQLITE_DONE, + "Failed to commit SQLite3 transaction"); sqlite3_reset(m_stmt_end); } @@ -99,13 +149,12 @@ void Database_SQLite3::openDatabase() bool needs_create = !fs::PathExists(dbp); - if (sqlite3_open_v2(dbp.c_str(), &m_database, - SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, - NULL) != SQLITE_OK) { - errorstream << "SQLite3 database failed to open: " - << sqlite3_errmsg(m_database) << std::endl; - throw FileNotGoodException("Cannot open database file"); - } + SQLOK(sqlite3_open_v2(dbp.c_str(), &m_database, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL), + std::string("Failed to open SQLite3 database file ") + dbp); + + SQLOK(sqlite3_busy_handler(m_database, Database_SQLite3::busyHandler, + m_busy_handler_data), "Failed to set SQLite3 busy handler"); if (needs_create) { createDatabase(); @@ -113,7 +162,8 @@ void Database_SQLite3::openDatabase() std::string query_str = std::string("PRAGMA synchronous = ") + itos(g_settings->getU16("sqlite_synchronous")); - SQLOK(sqlite3_exec(m_database, query_str.c_str(), NULL, NULL, NULL)); + SQLOK(sqlite3_exec(m_database, query_str.c_str(), NULL, NULL, NULL), + "Failed to modify sqlite3 synchronous mode"); } void Database_SQLite3::verifyDatabase() @@ -140,7 +190,8 @@ void Database_SQLite3::verifyDatabase() inline void Database_SQLite3::bindPos(sqlite3_stmt *stmt, const v3s16 &pos, int index) { - SQLOK(sqlite3_bind_int64(stmt, index, getBlockAsInteger(pos))); + SQLOK(sqlite3_bind_int64(stmt, index, getBlockAsInteger(pos)), + "Internal error: failed to bind query at " __FILE__ ":" TOSTRING(__LINE__)); } bool Database_SQLite3::deleteBlock(const v3s16 &pos) @@ -177,9 +228,10 @@ bool Database_SQLite3::saveBlock(const v3s16 &pos, const std::string &data) #endif bindPos(m_stmt_write, pos); - SQLOK(sqlite3_bind_blob(m_stmt_write, 2, data.data(), data.size(), NULL)); + SQLOK(sqlite3_bind_blob(m_stmt_write, 2, data.data(), data.size(), NULL), + "Internal error: failed to bind query at " __FILE__ ":" TOSTRING(__LINE__)); - SQLRES(sqlite3_step(m_stmt_write), SQLITE_DONE) + SQLRES(sqlite3_step(m_stmt_write), SQLITE_DONE, "Failed to save block") sqlite3_reset(m_stmt_write); return true; @@ -217,7 +269,8 @@ void Database_SQLite3::createDatabase() " `pos` INT PRIMARY KEY,\n" " `data` BLOB\n" ");\n", - NULL, NULL, NULL)); + NULL, NULL, NULL), + "Failed to create database table"); } void Database_SQLite3::listAllLoadableBlocks(std::vector &dst) @@ -239,10 +292,6 @@ Database_SQLite3::~Database_SQLite3() FINALIZE_STATEMENT(m_stmt_end) FINALIZE_STATEMENT(m_stmt_delete) - if (sqlite3_close(m_database) != SQLITE_OK) { - errorstream << "Database_SQLite3::~Database_SQLite3(): " - << "Failed to close database: " - << sqlite3_errmsg(m_database) << std::endl; - } + SQLOK(sqlite3_close(m_database), "Failed to close database"); } diff --git a/src/database-sqlite3.h b/src/database-sqlite3.h index a775742b..04a1825d 100644 --- a/src/database-sqlite3.h +++ b/src/database-sqlite3.h @@ -63,6 +63,10 @@ private: sqlite3_stmt *m_stmt_delete; sqlite3_stmt *m_stmt_begin; sqlite3_stmt *m_stmt_end; + + s64 m_busy_handler_data[2]; + + static int busyHandler(void *data, int count); }; #endif diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 3315f4aa..e8b652c1 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -89,12 +89,9 @@ void set_default_settings(Settings *settings) settings->setDefault("show_debug", "true"); #endif - settings->setDefault("wanted_fps", "30"); settings->setDefault("fps_max", "60"); settings->setDefault("pause_fps_max", "20"); - // A bit more than the server will send around the player, to make fog blend well - settings->setDefault("viewing_range_nodes_max", "240"); - settings->setDefault("viewing_range_nodes_min", "35"); + settings->setDefault("viewing_range", "100"); settings->setDefault("map_generation_limit", "31000"); settings->setDefault("screenW", "800"); settings->setDefault("screenH", "600"); @@ -109,7 +106,6 @@ void set_default_settings(Settings *settings) settings->setDefault("enable_fog", "true"); settings->setDefault("fov", "72"); settings->setDefault("view_bobbing", "true"); - settings->setDefault("new_style_water", "false"); settings->setDefault("leaves_style", "fancy"); settings->setDefault("connected_glass", "false"); settings->setDefault("smooth_lighting", "true"); @@ -127,6 +123,8 @@ void set_default_settings(Settings *settings) settings->setDefault("invert_mouse", "false"); settings->setDefault("enable_clouds", "true"); settings->setDefault("screenshot_path", "."); + settings->setDefault("screenshot_format", "png"); + settings->setDefault("screenshot_quality", "0"); settings->setDefault("view_bobbing_amount", "1.0"); settings->setDefault("fall_bobbing_amount", "0.0"); settings->setDefault("enable_3d_clouds", "true"); @@ -137,7 +135,9 @@ void set_default_settings(Settings *settings) settings->setDefault("console_color", "(0,0,0)"); settings->setDefault("console_alpha", "200"); settings->setDefault("selectionbox_color", "(0,0,0)"); - settings->setDefault("enable_node_highlighting", "false"); + settings->setDefault("selectionbox_width", "2"); + settings->setDefault("inventory_items_animations", "false"); + settings->setDefault("node_highlighting", "box"); settings->setDefault("crosshair_color", "(255,255,255)"); settings->setDefault("crosshair_alpha", "255"); settings->setDefault("hud_scaling", "1.0"); @@ -148,9 +148,9 @@ void set_default_settings(Settings *settings) settings->setDefault("enable_sound", "true"); settings->setDefault("sound_volume", "0.8"); settings->setDefault("desynchronize_mapblock_texture_animation", "true"); - settings->setDefault("selectionbox_width","2"); - settings->setDefault("hud_hotbar_max_width","1.0"); + settings->setDefault("hud_hotbar_max_width", "1.0"); settings->setDefault("enable_local_map_saving", "false"); + settings->setDefault("show_entity_selectionbox", "true"); settings->setDefault("mip_map", "false"); settings->setDefault("anisotropic_filter", "false"); @@ -158,7 +158,7 @@ void set_default_settings(Settings *settings) settings->setDefault("trilinear_filter", "false"); settings->setDefault("texture_clean_transparent", "false"); settings->setDefault("texture_min_size", "64"); - settings->setDefault("preload_item_visuals", "false"); + settings->setDefault("tone_mapping", "false"); settings->setDefault("enable_bumpmapping", "false"); settings->setDefault("enable_parallax_occlusion", "false"); settings->setDefault("generate_normalmaps", "false"); @@ -179,11 +179,14 @@ void set_default_settings(Settings *settings) settings->setDefault("repeat_rightclick_time", "0.25"); settings->setDefault("enable_particles", "true"); settings->setDefault("enable_mesh_cache", "false"); + settings->setDefault("enable_vbo", "true"); settings->setDefault("enable_minimap", "true"); settings->setDefault("minimap_shape_round", "true"); settings->setDefault("minimap_double_scan_height", "true"); + settings->setDefault("send_pre_v25_init", "true"); + settings->setDefault("curl_timeout", "5000"); settings->setDefault("curl_parallel_limit", "8"); settings->setDefault("curl_file_download_timeout", "300000"); @@ -246,7 +249,6 @@ void set_default_settings(Settings *settings) settings->setDefault("default_privs", "interact, shout"); settings->setDefault("player_transfer_distance", "0"); settings->setDefault("enable_pvp", "true"); - settings->setDefault("vertical_spawn_range", "16"); settings->setDefault("disallow_empty_password", "false"); settings->setDefault("disable_anticheat", "false"); settings->setDefault("enable_rollback_recording", "false"); @@ -279,6 +281,9 @@ void set_default_settings(Settings *settings) settings->setDefault("sqlite_synchronous", "2"); settings->setDefault("full_block_send_enable_min_time_from_building", "2.0"); settings->setDefault("dedicated_server_step", "0.1"); + settings->setDefault("active_block_mgmt_interval", "2.0"); + settings->setDefault("abm_interval", "1.0"); + settings->setDefault("nodetimer_interval", "1.0"); settings->setDefault("ignore_world_load_errors", "false"); settings->setDefault("remote_media", ""); settings->setDefault("debug_log_level", "action"); @@ -288,6 +293,7 @@ void set_default_settings(Settings *settings) settings->setDefault("num_emerge_threads", "1"); settings->setDefault("secure.enable_security", "false"); settings->setDefault("secure.trusted_mods", ""); + settings->setDefault("secure.http_mods", ""); // physics stuff settings->setDefault("movement_acceleration_default", "3"); @@ -313,7 +319,6 @@ void set_default_settings(Settings *settings) settings->setDefault("water_level", "1"); settings->setDefault("chunksize", "5"); settings->setDefault("mg_flags", "dungeons"); - settings->setDefault("mgv6_spflags", "jungles, snowbiomes"); // IPv6 settings->setDefault("enable_ipv6", "true"); @@ -335,7 +340,6 @@ void set_default_settings(Settings *settings) settings->setDefault("screenH", "0"); settings->setDefault("enable_shaders", "false"); settings->setDefault("fullscreen", "true"); - settings->setDefault("enable_particles", "false"); settings->setDefault("video_driver", "ogles1"); settings->setDefault("touchtarget", "true"); settings->setDefault("TMPFolder","/sdcard/" PROJECT_NAME_C "/tmp/"); @@ -344,10 +348,19 @@ void set_default_settings(Settings *settings) settings->setDefault("max_simultaneous_block_sends_per_client", "3"); settings->setDefault("emergequeue_limit_diskonly", "8"); settings->setDefault("emergequeue_limit_generate", "8"); - settings->setDefault("preload_item_visuals", "false"); + settings->setDefault("max_block_generate_distance", "3"); + settings->setDefault("enable_3d_clouds", "false"); + settings->setDefault("fps_max", "30"); + settings->setDefault("pause_fps_max", "10"); + settings->setDefault("max_objects_per_block", "20"); + settings->setDefault("sqlite_synchronous", "1"); + settings->setDefault("gui_scaling", "1.1"); + settings->setDefault("server_map_save_interval", "15"); + settings->setDefault("client_mapblock_limit", "500"); + settings->setDefault("active_block_range", "1"); + settings->setDefault("chunksize", "3"); - settings->setDefault("viewing_range_nodes_max", "50"); - settings->setDefault("viewing_range_nodes_min", "20"); + settings->setDefault("viewing_range", "25"); settings->setDefault("inventory_image_hack", "false"); //check for device with small screen diff --git a/src/drawscene.cpp b/src/drawscene.cpp index 509f341d..c6abda4a 100644 --- a/src/drawscene.cpp +++ b/src/drawscene.cpp @@ -31,27 +31,9 @@ typedef enum { EYECOUNT = 2 } paralax_sign; - -void draw_selectionbox(video::IVideoDriver* driver, Hud& hud, - std::vector& hilightboxes, bool show_hud) -{ - static const s16 selectionbox_width = rangelim(g_settings->getS16("selectionbox_width"), 1, 5); - - if (!show_hud) - return; - - video::SMaterial oldmaterial = driver->getMaterial2D(); - video::SMaterial m; - m.Thickness = selectionbox_width; - m.Lighting = false; - driver->setMaterial(m); - hud.drawSelectionBoxes(hilightboxes); - driver->setMaterial(oldmaterial); -} - void draw_anaglyph_3d_mode(Camera& camera, bool show_hud, Hud& hud, - std::vector hilightboxes, video::IVideoDriver* driver, - scene::ISceneManager* smgr, bool draw_wield_tool, Client& client, + video::IVideoDriver* driver, scene::ISceneManager* smgr, + bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv ) { @@ -85,10 +67,8 @@ void draw_anaglyph_3d_mode(Camera& camera, bool show_hud, Hud& hud, camera.getCameraNode()->setTarget(focusPoint); smgr->drawAll(); driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); - if (show_hud) - { - draw_selectionbox(driver, hud, hilightboxes, show_hud); - + if (show_hud) { + hud.drawSelectionMesh(); if (draw_wield_tool) camera.drawWieldedTool(&leftMove); } @@ -115,10 +95,8 @@ void draw_anaglyph_3d_mode(Camera& camera, bool show_hud, Hud& hud, camera.getCameraNode()->setTarget(focusPoint); smgr->drawAll(); driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); - if (show_hud) - { - draw_selectionbox(driver, hud, hilightboxes, show_hud); - + if (show_hud) { + hud.drawSelectionMesh(); if (draw_wield_tool) camera.drawWieldedTool(&rightMove); } @@ -144,16 +122,15 @@ void init_texture(video::IVideoDriver* driver, const v2u32& screensize, irr::video::ECF_A8R8G8B8); } -video::ITexture* draw_image(const v2u32& screensize, - paralax_sign psign, const irr::core::matrix4& startMatrix, - const irr::core::vector3df& focusPoint, bool show_hud, - video::IVideoDriver* driver, Camera& camera, scene::ISceneManager* smgr, - Hud& hud, std::vector& hilightboxes, - bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, - video::SColor skycolor ) +video::ITexture* draw_image(const v2u32 &screensize, + paralax_sign psign, const irr::core::matrix4 &startMatrix, + const irr::core::vector3df &focusPoint, bool show_hud, + video::IVideoDriver *driver, Camera &camera, scene::ISceneManager *smgr, + Hud &hud, bool draw_wield_tool, Client &client, + gui::IGUIEnvironment *guienv, const video::SColor &skycolor) { static video::ITexture* images[2] = { NULL, NULL }; - static v2u32 last_screensize = v2u32(0,0); + static v2u32 last_screensize = v2u32(0, 0); video::ITexture* image = NULL; @@ -187,10 +164,8 @@ video::ITexture* draw_image(const v2u32& screensize, driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); - if (show_hud) - { - draw_selectionbox(driver, hud, hilightboxes, show_hud); - + if (show_hud) { + hud.drawSelectionMesh(); if (draw_wield_tool) camera.drawWieldedTool(&movement); } @@ -220,7 +195,7 @@ video::ITexture* draw_hud(video::IVideoDriver* driver, const v2u32& screensize, hud.drawCrosshair(); hud.drawHotbar(client.getPlayerItem()); hud.drawLuaElements(camera.getOffset()); - + camera.drawNametags(); guienv->drawAll(); } @@ -232,7 +207,7 @@ video::ITexture* draw_hud(video::IVideoDriver* driver, const v2u32& screensize, } void draw_interlaced_3d_mode(Camera& camera, bool show_hud, - Hud& hud, std::vector hilightboxes, video::IVideoDriver* driver, + Hud& hud, video::IVideoDriver* driver, scene::ISceneManager* smgr, const v2u32& screensize, bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, video::SColor skycolor ) @@ -248,7 +223,7 @@ void draw_interlaced_3d_mode(Camera& camera, bool show_hud, /* create left view */ video::ITexture* left_image = draw_image(screensize, LEFT, startMatrix, - focusPoint, show_hud, driver, camera, smgr, hud, hilightboxes, + focusPoint, show_hud, driver, camera, smgr, hud, draw_wield_tool, client, guienv, skycolor); //Right eye... @@ -267,10 +242,8 @@ void draw_interlaced_3d_mode(Camera& camera, bool show_hud, driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); - if (show_hud) - { - draw_selectionbox(driver, hud, hilightboxes, show_hud); - + if (show_hud) { + hud.drawSelectionMesh(); if(draw_wield_tool) camera.drawWieldedTool(&rightMove); } @@ -293,7 +266,7 @@ void draw_interlaced_3d_mode(Camera& camera, bool show_hud, } void draw_sidebyside_3d_mode(Camera& camera, bool show_hud, - Hud& hud, std::vector hilightboxes, video::IVideoDriver* driver, + Hud& hud, video::IVideoDriver* driver, scene::ISceneManager* smgr, const v2u32& screensize, bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, video::SColor skycolor ) @@ -309,12 +282,12 @@ void draw_sidebyside_3d_mode(Camera& camera, bool show_hud, /* create left view */ video::ITexture* left_image = draw_image(screensize, LEFT, startMatrix, - focusPoint, show_hud, driver, camera, smgr, hud, hilightboxes, + focusPoint, show_hud, driver, camera, smgr, hud, draw_wield_tool, client, guienv, skycolor); /* create right view */ video::ITexture* right_image = draw_image(screensize, RIGHT, startMatrix, - focusPoint, show_hud, driver, camera, smgr, hud, hilightboxes, + focusPoint, show_hud, driver, camera, smgr, hud, draw_wield_tool, client, guienv, skycolor); /* create hud overlay */ @@ -349,7 +322,7 @@ void draw_sidebyside_3d_mode(Camera& camera, bool show_hud, } void draw_top_bottom_3d_mode(Camera& camera, bool show_hud, - Hud& hud, std::vector hilightboxes, video::IVideoDriver* driver, + Hud& hud, video::IVideoDriver* driver, scene::ISceneManager* smgr, const v2u32& screensize, bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, video::SColor skycolor ) @@ -365,12 +338,12 @@ void draw_top_bottom_3d_mode(Camera& camera, bool show_hud, /* create left view */ video::ITexture* left_image = draw_image(screensize, LEFT, startMatrix, - focusPoint, show_hud, driver, camera, smgr, hud, hilightboxes, + focusPoint, show_hud, driver, camera, smgr, hud, draw_wield_tool, client, guienv, skycolor); /* create right view */ video::ITexture* right_image = draw_image(screensize, RIGHT, startMatrix, - focusPoint, show_hud, driver, camera, smgr, hud, hilightboxes, + focusPoint, show_hud, driver, camera, smgr, hud, draw_wield_tool, client, guienv, skycolor); /* create hud overlay */ @@ -404,23 +377,100 @@ void draw_top_bottom_3d_mode(Camera& camera, bool show_hud, camera.getCameraNode()->setTarget(oldTarget); } -void draw_plain(Camera& camera, bool show_hud, Hud& hud, - std::vector hilightboxes, video::IVideoDriver* driver, - bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv) +void draw_pageflip_3d_mode(Camera& camera, bool show_hud, + Hud& hud, video::IVideoDriver* driver, + scene::ISceneManager* smgr, const v2u32& screensize, + bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, + video::SColor skycolor) { + /* preserve old setup*/ + irr::core::vector3df oldPosition = camera.getCameraNode()->getPosition(); + irr::core::vector3df oldTarget = camera.getCameraNode()->getTarget(); + + irr::core::matrix4 startMatrix = + camera.getCameraNode()->getAbsoluteTransformation(); + irr::core::vector3df focusPoint = (camera.getCameraNode()->getTarget() + - camera.getCameraNode()->getAbsolutePosition()).setLength(1) + + camera.getCameraNode()->getAbsolutePosition(); + + //Left eye... + driver->setRenderTarget(irr::video::ERT_STEREO_LEFT_BUFFER); + + irr::core::vector3df leftEye; + irr::core::matrix4 leftMove; + leftMove.setTranslation( + irr::core::vector3df(-g_settings->getFloat("3d_paralax_strength"), + 0.0f, 0.0f)); + leftEye = (startMatrix * leftMove).getTranslation(); + + //clear the depth buffer, and color + driver->beginScene(true, true, irr::video::SColor(200, 200, 200, 255)); + camera.getCameraNode()->setPosition(leftEye); + camera.getCameraNode()->setTarget(focusPoint); + smgr->drawAll(); driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); - draw_selectionbox(driver, hud, hilightboxes, show_hud); + if (show_hud) { + hud.drawSelectionMesh(); + if (draw_wield_tool) + camera.drawWieldedTool(&leftMove); + hud.drawHotbar(client.getPlayerItem()); + hud.drawLuaElements(camera.getOffset()); + camera.drawNametags(); + } - if(draw_wield_tool) - camera.drawWieldedTool(); + guienv->drawAll(); + + //Right eye... + driver->setRenderTarget(irr::video::ERT_STEREO_RIGHT_BUFFER); + + irr::core::vector3df rightEye; + irr::core::matrix4 rightMove; + rightMove.setTranslation( + irr::core::vector3df(g_settings->getFloat("3d_paralax_strength"), + 0.0f, 0.0f)); + rightEye = (startMatrix * rightMove).getTranslation(); + + //clear the depth buffer, and color + driver->beginScene(true, true, irr::video::SColor(200, 200, 200, 255)); + camera.getCameraNode()->setPosition(rightEye); + camera.getCameraNode()->setTarget(focusPoint); + smgr->drawAll(); + driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); + + if (show_hud) { + hud.drawSelectionMesh(); + if (draw_wield_tool) + camera.drawWieldedTool(&rightMove); + hud.drawHotbar(client.getPlayerItem()); + hud.drawLuaElements(camera.getOffset()); + camera.drawNametags(); + } + + guienv->drawAll(); + + camera.getCameraNode()->setPosition(oldPosition); + camera.getCameraNode()->setTarget(oldTarget); +} + +void draw_plain(Camera &camera, bool show_hud, Hud &hud, + video::IVideoDriver *driver, bool draw_wield_tool, + Client &client, gui::IGUIEnvironment *guienv) +{ + driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); + if (show_hud) { + hud.drawSelectionMesh(); + if (draw_wield_tool) { + camera.drawWieldedTool(); + } + } } void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr, Camera &camera, Client& client, LocalPlayer *player, Hud &hud, Mapper &mapper, gui::IGUIEnvironment *guienv, - std::vector hilightboxes, const v2u32 &screensize, - video::SColor skycolor, bool show_hud, bool show_minimap) + const v2u32 &screensize, const video::SColor &skycolor, + bool show_hud, bool show_minimap) { TimeTaker timer("smgr"); @@ -444,30 +494,37 @@ void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr, if (draw_mode == "anaglyph") { - draw_anaglyph_3d_mode(camera, show_hud, hud, hilightboxes, driver, + draw_anaglyph_3d_mode(camera, show_hud, hud, driver, smgr, draw_wield_tool, client, guienv); draw_crosshair = false; } else if (draw_mode == "interlaced") { - draw_interlaced_3d_mode(camera, show_hud, hud, hilightboxes, driver, + draw_interlaced_3d_mode(camera, show_hud, hud, driver, smgr, screensize, draw_wield_tool, client, guienv, skycolor); draw_crosshair = false; } else if (draw_mode == "sidebyside") { - draw_sidebyside_3d_mode(camera, show_hud, hud, hilightboxes, driver, + draw_sidebyside_3d_mode(camera, show_hud, hud, driver, smgr, screensize, draw_wield_tool, client, guienv, skycolor); show_hud = false; } else if (draw_mode == "topbottom") { - draw_top_bottom_3d_mode(camera, show_hud, hud, hilightboxes, driver, + draw_top_bottom_3d_mode(camera, show_hud, hud, driver, smgr, screensize, draw_wield_tool, client, guienv, skycolor); show_hud = false; } + else if (draw_mode == "pageflip") + { + draw_pageflip_3d_mode(camera, show_hud, hud, driver, + smgr, screensize, draw_wield_tool, client, guienv, skycolor); + draw_crosshair = false; + show_hud = false; + } else { - draw_plain(camera, show_hud, hud, hilightboxes, driver, + draw_plain(camera, show_hud, hud, driver, draw_wield_tool, client, guienv); } @@ -483,8 +540,11 @@ void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr, { if (draw_crosshair) hud.drawCrosshair(); + hud.drawHotbar(client.getPlayerItem()); hud.drawLuaElements(camera.getOffset()); + camera.drawNametags(); + if (show_minimap) mapper.drawMinimap(); } diff --git a/src/drawscene.h b/src/drawscene.h index 0630f297..364fcd49 100644 --- a/src/drawscene.h +++ b/src/drawscene.h @@ -31,9 +31,9 @@ void draw_load_screen(const std::wstring &text, IrrlichtDevice *device, bool clouds = true); void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr, - Camera &camera, Client &client, LocalPlayer *player, Hud &hud, - Mapper &mapper, gui::IGUIEnvironment *guienv, - std::vector hilightboxes, const v2u32 &screensize, - video::SColor skycolor, bool show_hud, bool show_minimap); + Camera &camera, Client &client, LocalPlayer *player, + Hud &hud, Mapper &mapper, gui::IGUIEnvironment *guienv, + const v2u32 &screensize, const video::SColor &skycolor, + bool show_hud, bool show_minimap); #endif /* DRAWSCENE_H_ */ diff --git a/src/dungeongen.cpp b/src/dungeongen.cpp index 9c6e24a6..5bfc320c 100644 --- a/src/dungeongen.cpp +++ b/src/dungeongen.cpp @@ -44,7 +44,7 @@ DungeonGen::DungeonGen(Mapgen *mapgen, DungeonParams *dparams) this->vm = mapgen->vm; #ifdef DGEN_USE_TORCHES - c_torch = ndef->getId("default:torch"); + c_torch = mg->ndef->getId("default:torch"); #endif if (dparams) { @@ -65,6 +65,11 @@ DungeonGen::DungeonGen(Mapgen *mapgen, DungeonParams *dparams) dp.np_wetness = nparams_dungeon_wetness; dp.np_density = nparams_dungeon_density; } + + // For mapgens using river water + dp.c_river_water = mg->ndef->getId("mapgen_river_water_source"); + if (dp.c_river_water == CONTENT_IGNORE) + dp.c_river_water = mg->ndef->getId("mapgen_water_source"); } @@ -87,7 +92,7 @@ void DungeonGen::generate(u32 bseed, v3s16 nmin, v3s16 nmax) u32 i = vm->m_area.index(nmin.X, y, z); for (s16 x = nmin.X; x <= nmax.X; x++) { content_t c = vm->m_data[i].getContent(); - if (c == CONTENT_AIR || c == dp.c_water) + if (c == CONTENT_AIR || c == dp.c_water || c == dp.c_river_water) vm->m_flags[i] |= VMANIP_FLAG_DUNGEON_PRESERVE; i++; } @@ -389,7 +394,8 @@ void DungeonGen::makeCorridor(v3s16 doorplace, v3s16 doordir, if (partcount != 0) p.Y += make_stairs; - if (vm->m_area.contains(p) && vm->m_area.contains(p + v3s16(0, 1, 0))) { + if (vm->m_area.contains(p) && vm->m_area.contains(p + v3s16(0, 1, 0)) && + vm->m_area.contains(v3s16(p.X - dir.X, p.Y - 1, p.Z - dir.Z))) { if (make_stairs) { makeFill(p + v3s16(-1, -1, -1), dp.holesize + v3s16(2, 3, 2), diff --git a/src/dungeongen.h b/src/dungeongen.h index 4e1201d8..d209dd4b 100644 --- a/src/dungeongen.h +++ b/src/dungeongen.h @@ -40,6 +40,7 @@ int dir_to_facedir(v3s16 d); struct DungeonParams { content_t c_water; + content_t c_river_water; content_t c_cobble; content_t c_moss; content_t c_stair; diff --git a/src/emerge.cpp b/src/emerge.cpp index 392a9d81..93e8f2b3 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -34,10 +34,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "map.h" #include "mapblock.h" +#include "mapgen_flat.h" #include "mapgen_fractal.h" #include "mapgen_v5.h" #include "mapgen_v6.h" #include "mapgen_v7.h" +#include "mapgen_valleys.h" #include "mapgen_singlenode.h" #include "mg_biome.h" #include "mg_ore.h" @@ -105,7 +107,9 @@ MapgenDesc g_reg_mapgens[] = { {"v5", new MapgenFactoryV5, true}, {"v6", new MapgenFactoryV6, true}, {"v7", new MapgenFactoryV7, true}, - {"fractal", new MapgenFactoryFractal, false}, + {"flat", new MapgenFactoryFlat, true}, + {"fractal", new MapgenFactoryFractal, true}, + {"valleys", new MapgenFactoryValleys, true}, {"singlenode", new MapgenFactorySinglenode, false}, }; @@ -288,14 +292,18 @@ bool EmergeManager::enqueueBlockEmergeEx( void *callback_param) { EmergeThread *thread = NULL; + bool entry_already_exists = false; { MutexAutoLock queuelock(m_queue_mutex); if (!pushBlockEmergeData(blockpos, peer_id, flags, - callback, callback_param)) + callback, callback_param, &entry_already_exists)) return false; + if (entry_already_exists) + return true; + thread = getOptimalThread(); thread->pushBlock(blockpos); } @@ -326,6 +334,18 @@ v3s16 EmergeManager::getContainingChunk(v3s16 blockpos, s16 chunksize) } +int EmergeManager::getSpawnLevelAtPoint(v2s16 p) +{ + if (m_mapgens.size() == 0 || !m_mapgens[0]) { + errorstream << "EmergeManager: getSpawnLevelAtPoint() called" + " before mapgen init" << std::endl; + return 0; + } + + return m_mapgens[0]->getSpawnLevelAtPoint(p); +} + + int EmergeManager::getGroundLevelAtPoint(v2s16 p) { if (m_mapgens.size() == 0 || !m_mapgens[0]) { @@ -378,7 +398,8 @@ bool EmergeManager::pushBlockEmergeData( u16 peer_requested, u16 flags, EmergeCompletionCallback callback, - void *callback_param) + void *callback_param, + bool *entry_already_exists) { u16 &count_peer = m_peer_queue_count[peer_requested]; @@ -398,12 +419,12 @@ bool EmergeManager::pushBlockEmergeData( findres = m_blocks_enqueued.insert(std::make_pair(pos, BlockEmergeData())); BlockEmergeData &bedata = findres.first->second; - bool update_existing = !findres.second; + *entry_already_exists = !findres.second; if (callback) bedata.callbacks.push_back(std::make_pair(callback, callback_param)); - if (update_existing) { + if (*entry_already_exists) { bedata.flags |= flags; } else { bedata.flags = flags; diff --git a/src/emerge.h b/src/emerge.h index a143b660..825ac1c0 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -136,6 +136,7 @@ public: // Mapgen helpers methods Biome *getBiomeAtPoint(v3s16 p); + int getSpawnLevelAtPoint(v2s16 p); int getGroundLevelAtPoint(v2s16 p); bool isBlockUnderground(v3s16 blockpos); @@ -159,8 +160,15 @@ private: // Requires m_queue_mutex held EmergeThread *getOptimalThread(); - bool pushBlockEmergeData(v3s16 pos, u16 peer_requested, u16 flags, - EmergeCompletionCallback callback, void *callback_param); + + bool pushBlockEmergeData( + v3s16 pos, + u16 peer_requested, + u16 flags, + EmergeCompletionCallback callback, + void *callback_param, + bool *entry_already_exists); + bool popBlockEmergeData(v3s16 pos, BlockEmergeData *bedata); friend class EmergeThread; diff --git a/src/environment.cpp b/src/environment.cpp index 38316cb3..413bc7ff 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -48,6 +48,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")" +#define LBM_NAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_:" + +// A number that is much smaller than the timeout for particle spawners should/could ever be +#define PARTICLE_SPAWNER_NO_EXPIRY -1024.f + Environment::Environment(): m_time_of_day_speed(0), m_time_of_day(9000), @@ -57,6 +62,9 @@ Environment::Environment(): m_day_night_ratio_override(0.0f) { m_cache_enable_shaders = g_settings->getBool("enable_shaders"); + m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval"); + m_cache_abm_interval = g_settings->getFloat("abm_interval"); + m_cache_nodetimer_interval = g_settings->getFloat("nodetimer_interval"); } Environment::~Environment() @@ -206,6 +214,8 @@ void Environment::setDayNightRatioOverride(bool enable, u32 value) void Environment::setTimeOfDay(u32 time) { MutexAutoLock lock(this->m_time_lock); + if (m_time_of_day > time) + m_day_count++; m_time_of_day = time; m_time_of_day_f = (float)time / 24000.0; } @@ -236,8 +246,10 @@ void Environment::stepTimeOfDay(float dtime) bool sync_f = false; if (units > 0) { // Sync at overflow - if (m_time_of_day + units >= 24000) + if (m_time_of_day + units >= 24000) { sync_f = true; + m_day_count++; + } m_time_of_day = (m_time_of_day + units) % 24000; if (sync_f) m_time_of_day_f = (float)m_time_of_day / 24000.0; @@ -254,6 +266,13 @@ void Environment::stepTimeOfDay(float dtime) } } +u32 Environment::getDayCount() +{ + // Atomic counter + return m_day_count; +} + + /* ABMWithState */ @@ -270,6 +289,223 @@ ABMWithState::ABMWithState(ActiveBlockModifier *abm_): timer = myrand_range(minval, maxval); } +/* + LBMManager +*/ + +void LBMContentMapping::deleteContents() +{ + for (std::vector::iterator it = lbm_list.begin(); + it != lbm_list.end(); ++it) { + delete *it; + } +} + +void LBMContentMapping::addLBM(LoadingBlockModifierDef *lbm_def, IGameDef *gamedef) +{ + // Add the lbm_def to the LBMContentMapping. + // Unknown names get added to the global NameIdMapping. + INodeDefManager *nodedef = gamedef->ndef(); + + lbm_list.push_back(lbm_def); + + for (std::set::const_iterator it = lbm_def->trigger_contents.begin(); + it != lbm_def->trigger_contents.end(); ++it) { + std::set c_ids; + bool found = nodedef->getIds(*it, c_ids); + if (!found) { + content_t c_id = gamedef->allocateUnknownNodeId(*it); + if (c_id == CONTENT_IGNORE) { + // Seems it can't be allocated. + warningstream << "Could not internalize node name \"" << *it + << "\" while loading LBM \"" << lbm_def->name << "\"." << std::endl; + continue; + } + c_ids.insert(c_id); + } + + for (std::set::const_iterator iit = + c_ids.begin(); iit != c_ids.end(); ++iit) { + content_t c_id = *iit; + map[c_id].push_back(lbm_def); + } + } +} + +const std::vector * + LBMContentMapping::lookup(content_t c) const +{ + container_map::const_iterator it = map.find(c); + if (it == map.end()) + return NULL; + // This first dereferences the iterator, returning + // a std::vector + // reference, then we convert it to a pointer. + return &(it->second); +} + +LBMManager::~LBMManager() +{ + for (std::map::iterator it = + m_lbm_defs.begin(); it != m_lbm_defs.end(); ++it) { + delete it->second; + } + for (lbm_lookup_map::iterator it = m_lbm_lookup.begin(); + it != m_lbm_lookup.end(); ++it) { + (it->second).deleteContents(); + } +} + +void LBMManager::addLBMDef(LoadingBlockModifierDef *lbm_def) +{ + // Precondition, in query mode the map isn't used anymore + FATAL_ERROR_IF(m_query_mode == true, + "attempted to modify LBMManager in query mode"); + + if (!string_allowed(lbm_def->name, LBM_NAME_ALLOWED_CHARS)) { + throw ModError("Error adding LBM \"" + lbm_def->name + + "\": Does not follow naming conventions: " + "Only chararacters [a-z0-9_:] are allowed."); + } + + m_lbm_defs[lbm_def->name] = lbm_def; +} + +void LBMManager::loadIntroductionTimes(const std::string ×, + IGameDef *gamedef, u32 now) +{ + m_query_mode = true; + + // name -> time map. + // Storing it in a map first instead of + // handling the stuff directly in the loop + // removes all duplicate entries. + // TODO make this std::unordered_map + std::map introduction_times; + + /* + The introduction times string consists of name~time entries, + with each entry terminated by a semicolon. The time is decimal. + */ + + size_t idx = 0; + size_t idx_new; + while ((idx_new = times.find(";", idx)) != std::string::npos) { + std::string entry = times.substr(idx, idx_new - idx); + std::vector components = str_split(entry, '~'); + if (components.size() != 2) + throw SerializationError("Introduction times entry \"" + + entry + "\" requires exactly one '~'!"); + const std::string &name = components[0]; + u32 time = from_string(components[1]); + introduction_times[name] = time; + idx = idx_new + 1; + } + + // Put stuff from introduction_times into m_lbm_lookup + for (std::map::const_iterator it = introduction_times.begin(); + it != introduction_times.end(); ++it) { + const std::string &name = it->first; + u32 time = it->second; + + std::map::iterator def_it = + m_lbm_defs.find(name); + if (def_it == m_lbm_defs.end()) { + // This seems to be an LBM entry for + // an LBM we haven't loaded. Discard it. + continue; + } + LoadingBlockModifierDef *lbm_def = def_it->second; + if (lbm_def->run_at_every_load) { + // This seems to be an LBM entry for + // an LBM that runs at every load. + // Don't add it just yet. + continue; + } + + m_lbm_lookup[time].addLBM(lbm_def, gamedef); + + // Erase the entry so that we know later + // what elements didn't get put into m_lbm_lookup + m_lbm_defs.erase(name); + } + + // Now also add the elements from m_lbm_defs to m_lbm_lookup + // that weren't added in the previous step. + // They are introduced first time to this world, + // or are run at every load (introducement time hardcoded to U32_MAX). + + LBMContentMapping &lbms_we_introduce_now = m_lbm_lookup[now]; + LBMContentMapping &lbms_running_always = m_lbm_lookup[U32_MAX]; + + for (std::map::iterator it = + m_lbm_defs.begin(); it != m_lbm_defs.end(); ++it) { + if (it->second->run_at_every_load) { + lbms_running_always.addLBM(it->second, gamedef); + } else { + lbms_we_introduce_now.addLBM(it->second, gamedef); + } + } + + // Clear the list, so that we don't delete remaining elements + // twice in the destructor + m_lbm_defs.clear(); +} + +std::string LBMManager::createIntroductionTimesString() +{ + // Precondition, we must be in query mode + FATAL_ERROR_IF(m_query_mode == false, + "attempted to query on non fully set up LBMManager"); + + std::ostringstream oss; + for (lbm_lookup_map::iterator it = m_lbm_lookup.begin(); + it != m_lbm_lookup.end(); ++it) { + u32 time = it->first; + std::vector &lbm_list = it->second.lbm_list; + for (std::vector::iterator iit = lbm_list.begin(); + iit != lbm_list.end(); ++iit) { + // Don't add if the LBM runs at every load, + // then introducement time is hardcoded + // and doesn't need to be stored + if ((*iit)->run_at_every_load) + continue; + oss << (*iit)->name << "~" << time << ";"; + } + } + return oss.str(); +} + +void LBMManager::applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp) +{ + // Precondition, we need m_lbm_lookup to be initialized + FATAL_ERROR_IF(m_query_mode == false, + "attempted to query on non fully set up LBMManager"); + v3s16 pos_of_block = block->getPosRelative(); + v3s16 pos; + MapNode n; + content_t c; + lbm_lookup_map::const_iterator it = getLBMsIntroducedAfter(stamp); + for (pos.X = 0; pos.X < MAP_BLOCKSIZE; pos.X++) + for (pos.Y = 0; pos.Y < MAP_BLOCKSIZE; pos.Y++) + for (pos.Z = 0; pos.Z < MAP_BLOCKSIZE; pos.Z++) + { + n = block->getNodeNoEx(pos); + c = n.getContent(); + for (LBMManager::lbm_lookup_map::const_iterator iit = it; + iit != m_lbm_lookup.end(); ++iit) { + const std::vector *lbm_list = + iit->second.lookup(c); + if (!lbm_list) + continue; + for (std::vector::const_iterator iit = + lbm_list->begin(); iit != lbm_list->end(); ++iit) { + (*iit)->trigger(env, pos + pos_of_block, n); + } + } + } +} + /* ActiveBlockList */ @@ -354,6 +590,7 @@ ServerEnvironment::ServerEnvironment(ServerMap *map, m_active_block_interval_overload_skip(0), m_game_time(0), m_game_time_fraction_counter(0), + m_last_clear_objects_time(0), m_recommended_send_interval(0.1), m_max_lag_estimate(0.1) { @@ -503,6 +740,11 @@ void ServerEnvironment::saveMeta() Settings args; args.setU64("game_time", m_game_time); args.setU64("time_of_day", getTimeOfDay()); + args.setU64("last_clear_objects_time", m_last_clear_objects_time); + args.setU64("lbm_introduction_times_version", 1); + args.set("lbm_introduction_times", + m_lbm_mgr.createIntroductionTimesString()); + args.setU64("day_count", m_day_count); args.writeLines(ss); ss<<"EnvArgsEnd\n"; @@ -540,12 +782,35 @@ void ServerEnvironment::loadMeta() throw SerializationError("Couldn't load env meta game_time"); } + setTimeOfDay(args.exists("time_of_day") ? + // set day to morning by default + args.getU64("time_of_day") : 9000); + + m_last_clear_objects_time = args.exists("last_clear_objects_time") ? + // If missing, do as if clearObjects was never called + args.getU64("last_clear_objects_time") : 0; + + std::string lbm_introduction_times = ""; try { - setTimeOfDay(args.getU64("time_of_day")); + u64 ver = args.getU64("lbm_introduction_times_version"); + if (ver == 1) { + lbm_introduction_times = args.get("lbm_introduction_times"); + } else { + infostream << "ServerEnvironment::loadMeta(): Non-supported" + << " introduction time version " << ver << std::endl; + } } catch (SettingNotFoundException &e) { - // This is not as important - setTimeOfDay(9000); + // No problem, this is expected. Just continue with an empty string } + m_lbm_mgr.loadIntroductionTimes(lbm_introduction_times, m_gamedef, m_game_time); + + m_day_count = args.exists("day_count") ? + args.getU64("day_count") : 0; +} + +void ServerEnvironment::loadDefaultMeta() +{ + m_lbm_mgr.loadIntroductionTimes("", m_gamedef, m_game_time); } struct ActiveABM @@ -739,13 +1004,19 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime) // Get time difference u32 dtime_s = 0; u32 stamp = block->getTimestamp(); - if(m_game_time > stamp && stamp != BLOCK_TIMESTAMP_UNDEFINED) - dtime_s = m_game_time - block->getTimestamp(); + if (m_game_time > stamp && stamp != BLOCK_TIMESTAMP_UNDEFINED) + dtime_s = m_game_time - stamp; dtime_s += additional_dtime; /*infostream<<"ServerEnvironment::activateBlock(): block timestamp: " <m_static_objects.m_stored.clear(); + // do not set changed flag to avoid unnecessary mapblock writes + } + // Set current time as timestamp block->setTimestampNoChangedFlag(m_game_time); @@ -755,6 +1026,9 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime) // Activate stored objects activateObjects(block, dtime_s); + /* Handle LoadingBlockModifiers */ + m_lbm_mgr.applyLBMs(this, block, stamp); + // Run node timers std::map elapsed_timers = block->m_node_timers.step((float)dtime_s); @@ -780,6 +1054,11 @@ void ServerEnvironment::addActiveBlockModifier(ActiveBlockModifier *abm) m_abms.push_back(ABMWithState(abm)); } +void ServerEnvironment::addLoadingBlockModifierDef(LoadingBlockModifierDef *lbm) +{ + m_lbm_mgr.addLBMDef(lbm); +} + bool ServerEnvironment::setNode(v3s16 p, const MapNode &n) { INodeDefManager *ndef = m_gamedef->ndef(); @@ -858,22 +1137,22 @@ void ServerEnvironment::getObjectsInsideRadius(std::vector &objects, v3f po } } -void ServerEnvironment::clearAllObjects() +void ServerEnvironment::clearObjects(ClearObjectsMode mode) { - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Removing all active objects"< objects_to_remove; - for(std::map::iterator + for (std::map::iterator i = m_active_objects.begin(); i != m_active_objects.end(); ++i) { ServerActiveObject* obj = i->second; - if(obj->getType() == ACTIVEOBJECT_TYPE_PLAYER) + if (obj->getType() == ACTIVEOBJECT_TYPE_PLAYER) continue; u16 id = i->first; // Delete static object if block is loaded - if(obj->m_static_exists){ + if (obj->m_static_exists) { MapBlock *block = m_map->getBlockNoCreateNoEx(obj->m_static_block); - if(block){ + if (block) { block->m_static_objects.remove(id); block->raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_CLEAR_ALL_OBJECTS); @@ -881,7 +1160,7 @@ void ServerEnvironment::clearAllObjects() } } // If known by some client, don't delete immediately - if(obj->m_known_by_count > 0){ + if (obj->m_known_by_count > 0) { obj->m_pending_deactivation = true; obj->m_removed = true; continue; @@ -893,39 +1172,46 @@ void ServerEnvironment::clearAllObjects() m_script->removeObjectReference(obj); // Delete active object - if(obj->environmentDeletes()) + if (obj->environmentDeletes()) delete obj; // Id to be removed from m_active_objects objects_to_remove.push_back(id); } // Remove references from m_active_objects - for(std::vector::iterator i = objects_to_remove.begin(); + for (std::vector::iterator i = objects_to_remove.begin(); i != objects_to_remove.end(); ++i) { m_active_objects.erase(*i); } // Get list of loaded blocks std::vector loaded_blocks; - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Listing all loaded blocks"<listAllLoadedBlocks(loaded_blocks); - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Done listing all loaded blocks: " - < loadable_blocks; - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Listing all loadable blocks"<listAllLoadableBlocks(loadable_blocks); - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Done listing all loadable blocks: " - <listAllLoadableBlocks(loadable_blocks); + infostream << "ServerEnvironment::clearObjects(): " + << "Done listing all loadable blocks: " + << loadable_blocks.size() << std::endl; + } else { + loadable_blocks = loaded_blocks; + } + + infostream << "ServerEnvironment::clearObjects(): " + << "Now clearing objects in " << loadable_blocks.size() + << " blocks" << std::endl; // Grab a reference on each loaded block to avoid unloading it - for(std::vector::iterator i = loaded_blocks.begin(); + for (std::vector::iterator i = loaded_blocks.begin(); i != loaded_blocks.end(); ++i) { v3s16 p = *i; MapBlock *block = m_map->getBlockNoCreateNoEx(p); @@ -934,24 +1220,27 @@ void ServerEnvironment::clearAllObjects() } // Remove objects in all loadable blocks - u32 unload_interval = g_settings->getS32("max_clearobjects_extra_loaded_blocks"); - unload_interval = MYMAX(unload_interval, 1); + u32 unload_interval = U32_MAX; + if (mode == CLEAR_OBJECTS_MODE_FULL) { + unload_interval = g_settings->getS32("max_clearobjects_extra_loaded_blocks"); + unload_interval = MYMAX(unload_interval, 1); + } u32 report_interval = loadable_blocks.size() / 10; u32 num_blocks_checked = 0; u32 num_blocks_cleared = 0; u32 num_objs_cleared = 0; - for(std::vector::iterator i = loadable_blocks.begin(); + for (std::vector::iterator i = loadable_blocks.begin(); i != loadable_blocks.end(); ++i) { v3s16 p = *i; MapBlock *block = m_map->emergeBlock(p, false); - if(!block){ - errorstream<<"ServerEnvironment::clearAllObjects(): " - <<"Failed to emerge block "<m_static_objects.m_stored.size(); u32 num_active = block->m_static_objects.m_active.size(); - if(num_stored != 0 || num_active != 0){ + if (num_stored != 0 || num_active != 0) { block->m_static_objects.m_stored.clear(); block->m_static_objects.m_active.clear(); block->raiseModified(MOD_STATE_WRITE_NEEDED, @@ -961,23 +1250,23 @@ void ServerEnvironment::clearAllObjects() } num_blocks_checked++; - if(report_interval != 0 && - num_blocks_checked % report_interval == 0){ + if (report_interval != 0 && + num_blocks_checked % report_interval == 0) { float percent = 100.0 * (float)num_blocks_checked / - loadable_blocks.size(); - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Cleared "<unloadUnreferencedBlocks(); } } m_map->unloadUnreferencedBlocks(); // Drop references that were added above - for(std::vector::iterator i = loaded_blocks.begin(); + for (std::vector::iterator i = loaded_blocks.begin(); i != loaded_blocks.end(); ++i) { v3s16 p = *i; MapBlock *block = m_map->getBlockNoCreateNoEx(p); @@ -985,9 +1274,11 @@ void ServerEnvironment::clearAllObjects() block->refDrop(); } - infostream<<"ServerEnvironment::clearAllObjects(): " - <<"Finished: Cleared "<getFloat("dedicated_server_step"); + static const float server_step = g_settings->getFloat("dedicated_server_step"); + m_recommended_send_interval = server_step; /* Increment game time @@ -1036,9 +1328,8 @@ void ServerEnvironment::step(float dtime) /* Manage active block list */ - if(m_active_blocks_management_interval.step(dtime, 2.0)) - { - ScopeProfiler sp(g_profiler, "SEnv: manage act. block list avg /2s", SPT_AVG); + if (m_active_blocks_management_interval.step(dtime, m_cache_active_block_mgmt_interval)) { + ScopeProfiler sp(g_profiler, "SEnv: manage act. block list avg per interval", SPT_AVG); /* Get player block positions */ @@ -1059,7 +1350,7 @@ void ServerEnvironment::step(float dtime) /* Update list of active blocks, collecting changes */ - const s16 active_block_range = g_settings->getS16("active_block_range"); + static const s16 active_block_range = g_settings->getS16("active_block_range"); std::set blocks_removed; std::set blocks_added; m_active_blocks.update(players_blockpos, active_block_range, @@ -1074,8 +1365,7 @@ void ServerEnvironment::step(float dtime) for(std::set::iterator i = blocks_removed.begin(); - i != blocks_removed.end(); ++i) - { + i != blocks_removed.end(); ++i) { v3s16 p = *i; /* infostream<<"Server: Block " << PP(p) @@ -1114,11 +1404,10 @@ void ServerEnvironment::step(float dtime) /* Mess around in active blocks */ - if(m_active_blocks_nodemetadata_interval.step(dtime, 1.0)) - { - ScopeProfiler sp(g_profiler, "SEnv: mess in act. blocks avg /1s", SPT_AVG); + if (m_active_blocks_nodemetadata_interval.step(dtime, m_cache_nodetimer_interval)) { + ScopeProfiler sp(g_profiler, "SEnv: mess in act. blocks avg per interval", SPT_AVG); - float dtime = 1.0; + float dtime = m_cache_nodetimer_interval; for(std::set::iterator i = m_active_blocks.m_list.begin(); @@ -1161,19 +1450,18 @@ void ServerEnvironment::step(float dtime) } } - const float abm_interval = 1.0; - if(m_active_block_modifier_interval.step(dtime, abm_interval)) + if (m_active_block_modifier_interval.step(dtime, m_cache_abm_interval)) do{ // breakable if(m_active_block_interval_overload_skip > 0){ ScopeProfiler sp(g_profiler, "SEnv: ABM overload skips"); m_active_block_interval_overload_skip--; break; } - ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg /1s", SPT_AVG); - TimeTaker timer("modify in active blocks"); + ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg per interval", SPT_AVG); + TimeTaker timer("modify in active blocks per interval"); // Initialize handling of ActiveBlockModifiers - ABMHandler abmhandler(m_abms, abm_interval, this, true); + ABMHandler abmhandler(m_abms, m_cache_abm_interval, this, true); for(std::set::iterator i = m_active_blocks.m_list.begin(); @@ -1259,6 +1547,49 @@ void ServerEnvironment::step(float dtime) */ removeRemovedObjects(); } + + /* + Manage particle spawner expiration + */ + if (m_particle_management_interval.step(dtime, 1.0)) { + for (std::map::iterator i = m_particle_spawners.begin(); + i != m_particle_spawners.end(); ) { + //non expiring spawners + if (i->second == PARTICLE_SPAWNER_NO_EXPIRY) { + ++i; + continue; + } + + i->second -= 1.0f; + if (i->second <= 0.f) + m_particle_spawners.erase(i++); + else + ++i; + } + } +} + +u32 ServerEnvironment::addParticleSpawner(float exptime) +{ + // Timers with lifetime 0 do not expire + float time = exptime > 0.f ? exptime : PARTICLE_SPAWNER_NO_EXPIRY; + + u32 id = 0; + for (;;) { // look for unused particlespawner id + id++; + std::map::iterator f; + f = m_particle_spawners.find(id); + if (f == m_particle_spawners.end()) { + m_particle_spawners[id] = time; + break; + } + } + return id; +} + +void ServerEnvironment::deleteParticleSpawner(u32 id) +{ + m_particle_spawners.erase(id); } ServerActiveObject* ServerEnvironment::getActiveObject(u16 id) @@ -2609,5 +2940,3 @@ ClientEnvEvent ClientEnvironment::getClientEvent() } #endif // #ifndef SERVER - - diff --git a/src/environment.h b/src/environment.h index 1aaa5091..c6786fae 100644 --- a/src/environment.h +++ b/src/environment.h @@ -95,6 +95,8 @@ public: void setDayNightRatioOverride(bool enable, u32 value); + u32 getDayCount(); + // counter used internally when triggering ABMs u32 m_added_objects; @@ -117,6 +119,9 @@ protected: // Overriding the day-night ratio is useful for custom sky visuals bool m_enable_day_night_ratio_override; u32 m_day_night_ratio_override; + // Days from the server start, accounts for time shift + // in game (e.g. /time or bed usage) + Atomic m_day_count; /* * Above: values managed by m_time_lock */ @@ -131,6 +136,9 @@ protected: * a later release. */ bool m_cache_enable_shaders; + float m_cache_active_block_mgmt_interval; + float m_cache_abm_interval; + float m_cache_nodetimer_interval; private: Mutex m_time_lock; @@ -139,7 +147,7 @@ private: }; /* - Active block modifier interface. + {Active, Loading} block modifier interface. These are fed into ServerEnvironment at initialization time; ServerEnvironment handles deleting them. @@ -177,6 +185,77 @@ struct ABMWithState ABMWithState(ActiveBlockModifier *abm_); }; +struct LoadingBlockModifierDef +{ + // Set of contents to trigger on + std::set trigger_contents; + std::string name; + bool run_at_every_load; + + virtual ~LoadingBlockModifierDef() {} + virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n){}; +}; + +struct LBMContentMapping +{ + typedef std::map > container_map; + container_map map; + + std::vector lbm_list; + + // Needs to be separate method (not inside destructor), + // because the LBMContentMapping may be copied and destructed + // many times during operation in the lbm_lookup_map. + void deleteContents(); + void addLBM(LoadingBlockModifierDef *lbm_def, IGameDef *gamedef); + const std::vector *lookup(content_t c) const; +}; + +class LBMManager +{ +public: + LBMManager(): + m_query_mode(false) + {} + + ~LBMManager(); + + // Don't call this after loadIntroductionTimes() ran. + void addLBMDef(LoadingBlockModifierDef *lbm_def); + + void loadIntroductionTimes(const std::string ×, + IGameDef *gamedef, u32 now); + + // Don't call this before loadIntroductionTimes() ran. + std::string createIntroductionTimesString(); + + // Don't call this before loadIntroductionTimes() ran. + void applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp); + + // Warning: do not make this std::unordered_map, order is relevant here + typedef std::map lbm_lookup_map; + +private: + // Once we set this to true, we can only query, + // not modify + bool m_query_mode; + + // For m_query_mode == false: + // The key of the map is the LBM def's name. + // TODO make this std::unordered_map + std::map m_lbm_defs; + + // For m_query_mode == true: + // The key of the map is the LBM def's first introduction time. + lbm_lookup_map m_lbm_lookup; + + // Returns an iterator to the LBMs that were introduced + // after the given time. This is guaranteed to return + // valid values for everything + lbm_lookup_map::const_iterator getLBMsIntroducedAfter(u32 time) + { return m_lbm_lookup.lower_bound(time); } +}; + /* List of active blocks, used by ServerEnvironment */ @@ -203,6 +282,18 @@ public: private: }; +/* + Operation mode for ServerEnvironment::clearObjects() +*/ +enum ClearObjectsMode { + // Load and go through every mapblock, clearing objects + CLEAR_OBJECTS_MODE_FULL, + + // Clear objects immediately in loaded mapblocks; + // clear objects in unloaded mapblocks only when the mapblocks are next activated. + CLEAR_OBJECTS_MODE_QUICK, +}; + /* The server-side environment. @@ -242,6 +333,12 @@ public: */ void saveMeta(); void loadMeta(); + // to be called instead of loadMeta if + // env_meta.txt doesn't exist (e.g. new world) + void loadDefaultMeta(); + + u32 addParticleSpawner(float exptime); + void deleteParticleSpawner(u32 id); /* External ActiveObject interface @@ -300,11 +397,12 @@ public: void activateBlock(MapBlock *block, u32 additional_dtime=0); /* - ActiveBlockModifiers + {Active,Loading}BlockModifiers ------------------------------------------- */ void addActiveBlockModifier(ActiveBlockModifier *abm); + void addLoadingBlockModifierDef(LoadingBlockModifierDef *lbm); /* Other stuff @@ -319,8 +417,8 @@ public: // Find all active objects inside a radius around a point void getObjectsInsideRadius(std::vector &objects, v3f pos, float radius); - // Clear all objects, loading and going through every MapBlock - void clearAllObjects(); + // Clear objects, loading and going through every MapBlock + void clearObjects(ClearObjectsMode mode); // This makes stuff happen void step(f32 dtime); @@ -410,12 +508,21 @@ private: u32 m_game_time; // A helper variable for incrementing the latter float m_game_time_fraction_counter; + // Time of last clearObjects call (game time). + // When a mapblock older than this is loaded, its objects are cleared. + u32 m_last_clear_objects_time; + // Active block modifiers std::vector m_abms; + LBMManager m_lbm_mgr; // An interval for generally sending object positions and stuff float m_recommended_send_interval; // Estimate for general maximum lag as determined by server. // Can raise to high values like 15s with eg. map generation mods. float m_max_lag_estimate; + + // Particles + IntervalLimiter m_particle_management_interval; + std::map m_particle_spawners; }; #ifndef SERVER diff --git a/src/filesys.cpp b/src/filesys.cpp index 4cefdb80..b4c52ab7 100644 --- a/src/filesys.cpp +++ b/src/filesys.cpp @@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "log.h" #include "config.h" +#include "porting.h" namespace fs { @@ -693,18 +694,47 @@ bool safeWriteToFile(const std::string &path, const std::string &content) os.flush(); os.close(); if (os.fail()) { + // Remove the temporary file because writing it failed and it's useless. remove(tmp_file.c_str()); return false; } - // Copy file - remove(path.c_str()); - if(rename(tmp_file.c_str(), path.c_str())) { + bool rename_success = false; + + // Move the finished temporary file over the real file +#ifdef _WIN32 + // When creating the file, it can cause Windows Search indexer, virus scanners and other apps + // to query the file. This can make the move file call below fail. + // We retry up to 5 times, with a 1ms sleep between, before we consider the whole operation failed + int number_attempts = 0; + while (number_attempts < 5) { + rename_success = MoveFileEx(tmp_file.c_str(), path.c_str(), + MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH); + if (rename_success) + break; + sleep_ms(1); + ++number_attempts; + } +#else + // On POSIX compliant systems rename() is specified to be able to swap the + // file in place of the destination file, making this a truly error-proof + // transaction. + rename_success = rename(tmp_file.c_str(), path.c_str()) == 0; +#endif + if (!rename_success) { + warningstream << "Failed to write to file: " << path.c_str() << std::endl; + // Remove the temporary file because moving it over the target file + // failed. remove(tmp_file.c_str()); return false; - } else { - return true; } + + return true; +} + +bool Rename(const std::string &from, const std::string &to) +{ + return rename(from.c_str(), to.c_str()) == 0; } } // namespace fs diff --git a/src/filesys.h b/src/filesys.h index cc6f43ec..94d0c874 100644 --- a/src/filesys.h +++ b/src/filesys.h @@ -115,6 +115,8 @@ const char *GetFilenameFromPath(const char *path); bool safeWriteToFile(const std::string &path, const std::string &content); +bool Rename(const std::string &from, const std::string &to); + } // namespace fs #endif diff --git a/src/game.cpp b/src/game.cpp index 1738517b..23f261cf 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -57,6 +57,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/pointedthing.h" #include "version.h" #include "minimap.h" +#include "mapblock_mesh.h" #include "sound.h" @@ -175,19 +176,6 @@ struct LocalFormspecHandler : public TextDest { } } - if (m_formname == "MT_CHAT_MENU") { - assert(m_client != 0); - - if ((fields.find("btn_send") != fields.end()) || - (fields.find("quit") != fields.end())) { - StringMap::const_iterator it = fields.find("f_text"); - if (it != fields.end()) - m_client->typeChatMessage(utf8_to_wide(it->second)); - - return; - } - } - if (m_formname == "MT_DEATH_SCREEN") { assert(m_client != 0); @@ -285,23 +273,70 @@ inline bool isPointableNode(const MapNode &n, (liquids_pointable && features.isLiquid()); } +static inline void getNeighborConnectingFace(v3s16 p, INodeDefManager *nodedef, + ClientMap *map, MapNode n, u8 bitmask, u8 *neighbors) +{ + MapNode n2 = map->getNodeNoEx(p); + if (nodedef->nodeboxConnects(n, n2, bitmask)) + *neighbors |= bitmask; +} + +static inline u8 getNeighbors(v3s16 p, INodeDefManager *nodedef, ClientMap *map, MapNode n) +{ + u8 neighbors = 0; + const ContentFeatures &f = nodedef->get(n); + // locate possible neighboring nodes to connect to + if (f.drawtype == NDT_NODEBOX && f.node_box.type == NODEBOX_CONNECTED) { + v3s16 p2 = p; + + p2.Y++; + getNeighborConnectingFace(p2, nodedef, map, n, 1, &neighbors); + + p2 = p; + p2.Y--; + getNeighborConnectingFace(p2, nodedef, map, n, 2, &neighbors); + + p2 = p; + p2.Z--; + getNeighborConnectingFace(p2, nodedef, map, n, 4, &neighbors); + + p2 = p; + p2.X--; + getNeighborConnectingFace(p2, nodedef, map, n, 8, &neighbors); + + p2 = p; + p2.Z++; + getNeighborConnectingFace(p2, nodedef, map, n, 16, &neighbors); + + p2 = p; + p2.X++; + getNeighborConnectingFace(p2, nodedef, map, n, 32, &neighbors); + } + + return neighbors; +} + /* Find what the player is pointing at */ -PointedThing getPointedThing(Client *client, v3f player_position, - v3f camera_direction, v3f camera_position, core::line3d shootline, - f32 d, bool liquids_pointable, bool look_for_object, v3s16 camera_offset, - std::vector &hilightboxes, ClientActiveObject *&selected_object) +PointedThing getPointedThing(Client *client, Hud *hud, const v3f &player_position, + const v3f &camera_direction, const v3f &camera_position, + core::line3d shootline, f32 d, bool liquids_pointable, + bool look_for_object, const v3s16 &camera_offset, + ClientActiveObject *&selected_object) { PointedThing result; - hilightboxes.clear(); + std::vector *selectionboxes = hud->getSelectionBoxes(); + selectionboxes->clear(); + static const bool show_entity_selectionbox = g_settings->getBool("show_entity_selectionbox"); + selected_object = NULL; INodeDefManager *nodedef = client->getNodeDefManager(); ClientMap &map = client->getEnv().getClientMap(); - f32 mindistance = BS * 1001; + f32 min_distance = BS * 1001; // First try to find a pointed at active object if (look_for_object) { @@ -309,19 +344,20 @@ PointedThing getPointedThing(Client *client, v3f player_position, camera_position, shootline); if (selected_object != NULL) { - if (selected_object->doShowSelectionBox()) { + if (show_entity_selectionbox && + selected_object->doShowSelectionBox()) { aabb3f *selection_box = selected_object->getSelectionBox(); // Box should exist because object was // returned in the first place assert(selection_box); v3f pos = selected_object->getPosition(); - hilightboxes.push_back(aabb3f( - selection_box->MinEdge + pos - intToFloat(camera_offset, BS), - selection_box->MaxEdge + pos - intToFloat(camera_offset, BS))); + selectionboxes->push_back(aabb3f( + selection_box->MinEdge, selection_box->MaxEdge)); + hud->setSelectionPos(pos, camera_offset); } - mindistance = (selected_object->getPosition() - camera_position).getLength(); + min_distance = (selected_object->getPosition() - camera_position).getLength(); result.type = POINTEDTHING_OBJECT; result.object_id = selected_object->getId(); @@ -330,14 +366,13 @@ PointedThing getPointedThing(Client *client, v3f player_position, // That didn't work, try to find a pointed at node - v3s16 pos_i = floatToInt(player_position, BS); /*infostream<<"pos_i=("< 0 ? a : 1); @@ -354,24 +389,28 @@ PointedThing getPointedThing(Client *client, v3f player_position, if (xend == 32767) xend = 32766; - for (s16 y = ystart; y <= yend; y++) - for (s16 z = zstart; z <= zend; z++) + v3s16 pointed_pos(0, 0, 0); + + for (s16 y = ystart; y <= yend; y++) { + for (s16 z = zstart; z <= zend; z++) { for (s16 x = xstart; x <= xend; x++) { MapNode n; bool is_valid_position; + v3s16 p(x, y, z); - n = map.getNodeNoEx(v3s16(x, y, z), &is_valid_position); - if (!is_valid_position) + n = map.getNodeNoEx(p, &is_valid_position); + if (!is_valid_position) { continue; - - if (!isPointableNode(n, client, liquids_pointable)) + } + if (!isPointableNode(n, client, liquids_pointable)) { continue; + } - std::vector boxes = n.getSelectionBoxes(nodedef); + std::vector boxes; + n.getSelectionBoxes(nodedef, &boxes, getNeighbors(p, nodedef, &map, n)); v3s16 np(x, y, z); v3f npf = intToFloat(np, BS); - for (std::vector::const_iterator i = boxes.begin(); i != boxes.end(); ++i) { @@ -379,57 +418,110 @@ PointedThing getPointedThing(Client *client, v3f player_position, box.MinEdge += npf; box.MaxEdge += npf; - for (u16 j = 0; j < 6; j++) { - v3s16 facedir = g_6dirs[j]; - aabb3f facebox = box; - - f32 d = 0.001 * BS; - - if (facedir.X > 0) - facebox.MinEdge.X = facebox.MaxEdge.X - d; - else if (facedir.X < 0) - facebox.MaxEdge.X = facebox.MinEdge.X + d; - else if (facedir.Y > 0) - facebox.MinEdge.Y = facebox.MaxEdge.Y - d; - else if (facedir.Y < 0) - facebox.MaxEdge.Y = facebox.MinEdge.Y + d; - else if (facedir.Z > 0) - facebox.MinEdge.Z = facebox.MaxEdge.Z - d; - else if (facedir.Z < 0) - facebox.MaxEdge.Z = facebox.MinEdge.Z + d; - - v3f centerpoint = facebox.getCenter(); - f32 distance = (centerpoint - camera_position).getLength(); - - if (distance >= mindistance) - continue; - - if (!facebox.intersectsWithLine(shootline)) - continue; - - v3s16 np_above = np + facedir; - - result.type = POINTEDTHING_NODE; - result.node_undersurface = np; - result.node_abovesurface = np_above; - mindistance = distance; - - hilightboxes.clear(); - - if (!g_settings->getBool("enable_node_highlighting")) { - for (std::vector::const_iterator - i2 = boxes.begin(); - i2 != boxes.end(); ++i2) { - aabb3f box = *i2; - box.MinEdge += npf + v3f(-d, -d, -d) - intToFloat(camera_offset, BS); - box.MaxEdge += npf + v3f(d, d, d) - intToFloat(camera_offset, BS); - hilightboxes.push_back(box); - } - } + v3f centerpoint = box.getCenter(); + f32 distance = (centerpoint - camera_position).getLength(); + if (distance >= min_distance) { + continue; } + if (!box.intersectsWithLine(shootline)) { + continue; + } + result.type = POINTEDTHING_NODE; + min_distance = distance; + pointed_pos = np; } - } // for coords + } + } + } + if (result.type == POINTEDTHING_NODE) { + f32 d = 0.001 * BS; + MapNode n = map.getNodeNoEx(pointed_pos); + v3f npf = intToFloat(pointed_pos, BS); + std::vector boxes; + n.getSelectionBoxes(nodedef, &boxes, getNeighbors(pointed_pos, nodedef, &map, n)); + f32 face_min_distance = 1000 * BS; + for (std::vector::const_iterator + i = boxes.begin(); + i != boxes.end(); ++i) { + aabb3f box = *i; + box.MinEdge += npf; + box.MaxEdge += npf; + for (u16 j = 0; j < 6; j++) { + v3s16 facedir = g_6dirs[j]; + aabb3f facebox = box; + if (facedir.X > 0) { + facebox.MinEdge.X = facebox.MaxEdge.X - d; + } else if (facedir.X < 0) { + facebox.MaxEdge.X = facebox.MinEdge.X + d; + } else if (facedir.Y > 0) { + facebox.MinEdge.Y = facebox.MaxEdge.Y - d; + } else if (facedir.Y < 0) { + facebox.MaxEdge.Y = facebox.MinEdge.Y + d; + } else if (facedir.Z > 0) { + facebox.MinEdge.Z = facebox.MaxEdge.Z - d; + } else if (facedir.Z < 0) { + facebox.MaxEdge.Z = facebox.MinEdge.Z + d; + } + v3f centerpoint = facebox.getCenter(); + f32 distance = (centerpoint - camera_position).getLength(); + if (distance >= face_min_distance) + continue; + if (!facebox.intersectsWithLine(shootline)) + continue; + result.node_abovesurface = pointed_pos + facedir; + face_min_distance = distance; + } + } + selectionboxes->clear(); + for (std::vector::const_iterator + i = boxes.begin(); + i != boxes.end(); ++i) { + aabb3f box = *i; + box.MinEdge += v3f(-d, -d, -d); + box.MaxEdge += v3f(d, d, d); + selectionboxes->push_back(box); + } + hud->setSelectionPos(intToFloat(pointed_pos, BS), camera_offset); + result.node_undersurface = pointed_pos; + } + + // Update selection mesh light level and vertex colors + if (selectionboxes->size() > 0) { + v3f pf = hud->getSelectionPos(); + v3s16 p = floatToInt(pf, BS); + + // Get selection mesh light level + MapNode n = map.getNodeNoEx(p); + u16 node_light = getInteriorLight(n, -1, nodedef); + u16 light_level = node_light; + + for (u8 i = 0; i < 6; i++) { + n = map.getNodeNoEx(p + g_6dirs[i]); + node_light = getInteriorLight(n, -1, nodedef); + if (node_light > light_level) + light_level = node_light; + } + + video::SColor c = MapBlock_LightColor(255, light_level, 0); + u8 day = c.getRed(); + u8 night = c.getGreen(); + u32 daynight_ratio = client->getEnv().getDayNightRatio(); + finalColorBlend(c, day, night, daynight_ratio); + + // Modify final color a bit with time + u32 timer = porting::getTimeMs() % 5000; + float timerf = (float)(irr::core::PI * ((timer / 2500.0) - 0.5)); + float sin_r = 0.08 * sin(timerf); + float sin_g = 0.08 * sin(timerf + irr::core::PI * 0.5); + float sin_b = 0.08 * sin(timerf + irr::core::PI); + c.setRed(core::clamp(core::round32(c.getRed() * (0.8 + sin_r)), 0, 255)); + c.setGreen(core::clamp(core::round32(c.getGreen() * (0.8 + sin_g)), 0, 255)); + c.setBlue(core::clamp(core::round32(c.getBlue() * (0.8 + sin_b)), 0, 255)); + + // Set mesh final color + hud->setSelectionMeshColor(c); + } return result; } @@ -870,15 +962,18 @@ public: services->setPixelShaderConstant("yawVec", (irr::f32 *)&minimap_yaw_vec, 3); // Uniform sampler layers - int layer0 = 0; - int layer1 = 1; - int layer2 = 2; // before 1.8 there isn't a "integer interface", only float #if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8) + f32 layer0 = 0; + f32 layer1 = 1; + f32 layer2 = 2; services->setPixelShaderConstant("baseTexture" , (irr::f32 *)&layer0, 1); services->setPixelShaderConstant("normalTexture" , (irr::f32 *)&layer1, 1); services->setPixelShaderConstant("textureFlags" , (irr::f32 *)&layer2, 1); #else + s32 layer0 = 0; + s32 layer1 = 1; + s32 layer2 = 2; services->setPixelShaderConstant("baseTexture" , (irr::s32 *)&layer0, 1); services->setPixelShaderConstant("normalTexture" , (irr::s32 *)&layer1, 1); services->setPixelShaderConstant("textureFlags" , (irr::s32 *)&layer2, 1); @@ -1039,27 +1134,6 @@ static inline void create_formspec_menu(GUIFormSpecMenu **cur_formspec, #define SIZE_TAG "size[11,5.5,true]" // Fixed size on desktop #endif -static void show_chat_menu(GUIFormSpecMenu **cur_formspec, - InventoryManager *invmgr, IGameDef *gamedef, - IWritableTextureSource *tsrc, IrrlichtDevice *device, - Client *client, std::string text) -{ - std::string formspec = - FORMSPEC_VERSION_STRING - SIZE_TAG - "field[3,2.35;6,0.5;f_text;;" + text + "]" - "button_exit[4,3;3,0.5;btn_send;" + strgettext("Proceed") + "]" - ; - - /* Create menu */ - /* Note: FormspecFormSource and LocalFormspecHandler - * are deleted by guiFormSpecMenu */ - FormspecFormSource *fs_src = new FormspecFormSource(formspec); - LocalFormspecHandler *txt_dst = new LocalFormspecHandler("MT_CHAT_MENU", client); - - create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst, NULL); -} - static void show_deathscreen(GUIFormSpecMenu **cur_formspec, InventoryManager *invmgr, IGameDef *gamedef, IWritableTextureSource *tsrc, IrrlichtDevice *device, Client *client) @@ -1490,12 +1564,13 @@ protected: void dropSelectedItem(); void openInventory(); - void openConsole(); + void openConsole(float height, const wchar_t *line=NULL); void toggleFreeMove(float *statustext_time); void toggleFreeMoveAlt(float *statustext_time, float *jump_timer); void toggleFast(float *statustext_time); void toggleNoClip(float *statustext_time); void toggleCinematic(float *statustext_time); + void toggleAutorun(float *statustext_time); void toggleChat(float *statustext_time, bool *flag); void toggleHud(float *statustext_time, bool *flag); @@ -1521,9 +1596,9 @@ protected: void updateCamera(VolatileRunFlags *flags, u32 busy_time, f32 dtime, float time_from_last_punch); void updateSound(f32 dtime); - void processPlayerInteraction(std::vector &highlight_boxes, - GameRunData *runData, f32 dtime, bool show_hud, + void processPlayerInteraction(GameRunData *runData, f32 dtime, bool show_hud, bool show_debug); + void handlePointingAtNothing(GameRunData *runData, const ItemStack &playerItem); void handlePointingAtNode(GameRunData *runData, const PointedThing &pointed, const ItemDefinition &playeritem_def, const ToolCapabilities &playeritem_toolcap, f32 dtime); @@ -1533,8 +1608,7 @@ protected: void handleDigging(GameRunData *runData, const PointedThing &pointed, const v3s16 &nodepos, const ToolCapabilities &playeritem_toolcap, f32 dtime); - void updateFrame(std::vector &highlight_boxes, ProfilerGraph *graph, - RunStats *stats, GameRunData *runData, + void updateFrame(ProfilerGraph *graph, RunStats *stats, GameRunData *runData, f32 dtime, const VolatileRunFlags &flags, const CameraOrientation &cam); void updateGui(float *statustext_time, const RunStats &stats, const GameRunData& runData, f32 dtime, const VolatileRunFlags &flags, @@ -1550,6 +1624,10 @@ protected: static void settingChangedCallback(const std::string &setting_name, void *data); void readSettings(); +#ifdef __ANDROID__ + void handleAndroidChatInput(); +#endif + private: InputHandler *input; @@ -1628,7 +1706,6 @@ private: * a later release. */ bool m_cache_doubletap_jump; - bool m_cache_enable_node_highlighting; bool m_cache_enable_clouds; bool m_cache_enable_particles; bool m_cache_enable_fog; @@ -1637,8 +1714,8 @@ private: #ifdef __ANDROID__ bool m_cache_hold_aux1; + bool m_android_chat_open; #endif - }; Game::Game() : @@ -1666,8 +1743,6 @@ Game::Game() : { g_settings->registerChangedCallback("doubletap_jump", &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_node_highlighting", - &settingChangedCallback, this); g_settings->registerChangedCallback("enable_clouds", &settingChangedCallback, this); g_settings->registerChangedCallback("enable_particles", @@ -1717,8 +1792,6 @@ Game::~Game() g_settings->deregisterChangedCallback("doubletap_jump", &settingChangedCallback, this); - g_settings->deregisterChangedCallback("enable_node_highlighting", - &settingChangedCallback, this); g_settings->deregisterChangedCallback("enable_clouds", &settingChangedCallback, this); g_settings->deregisterChangedCallback("enable_particles", @@ -1805,8 +1878,6 @@ void Game::run() &runData.fog_range, client)); - std::vector highlight_boxes; - set_light_table(g_settings->getFloat("display_gamma")); #ifdef __ANDROID__ @@ -1814,7 +1885,9 @@ void Game::run() && client->checkPrivilege("fast"); #endif - while (device->run() && !(*kill || g_gamecallback->shutdown_requested)) { + while (device->run() + && !(*kill || g_gamecallback->shutdown_requested + || (server && server->getShutdownRequested()))) { /* Must be called immediately after a device->run() call because it * uses device->getTimer()->getTime() @@ -1854,10 +1927,9 @@ void Game::run() updateCamera(&flags, draw_times.busy_time, dtime, runData.time_from_last_punch); updateSound(dtime); - processPlayerInteraction(highlight_boxes, &runData, dtime, - flags.show_hud, flags.show_debug); - updateFrame(highlight_boxes, &graph, &stats, &runData, dtime, - flags, cam_view); + processPlayerInteraction(&runData, dtime, flags.show_hud, + flags.show_debug); + updateFrame(&graph, &stats, &runData, dtime, flags, cam_view); updateProfilerGraphs(&graph); // Update if minimap has been disabled by the server @@ -1868,6 +1940,10 @@ void Game::run() void Game::shutdown() { + if (g_settings->get("3d_mode") == "pageflip") { + driver->setRenderTarget(irr::video::ERT_STEREO_BOTH_BUFFERS); + } + showOverlayMessage(wgettext("Shutting down..."), 0, 0, false); if (clouds) @@ -2049,6 +2125,7 @@ bool Game::createClient(const std::string &playername, camera = new Camera(smgr, *draw_control, gamedef); if (!camera || !camera->successfullyCreated(*error_message)) return false; + client->setCamera(camera); /* Clouds */ @@ -2152,7 +2229,7 @@ bool Game::initGui() // Chat backend and console gui_chat_console = new GUIChatConsole(guienv, guienv->getRootGUIElement(), - -1, chat_backend, client); + -1, chat_backend, client, &g_menumgr); if (!gui_chat_console) { *error_message = "Could not allocate memory for chat console"; errorstream << *error_message << std::endl; @@ -2171,7 +2248,7 @@ bool Game::initGui() #ifdef HAVE_TOUCHSCREENGUI if (g_touchscreengui) - g_touchscreengui->init(texture_src, porting::getDisplayDensity()); + g_touchscreengui->init(texture_src); #endif @@ -2567,7 +2644,17 @@ void Game::processUserInput(VolatileRunFlags *flags, || noMenuActive() == false || guienv->hasFocus(gui_chat_console)) { input->clear(); +#ifdef HAVE_TOUCHSCREENGUI + g_touchscreengui->hide(); +#endif } +#ifdef HAVE_TOUCHSCREENGUI + else if (g_touchscreengui) { + /* on touchscreengui step may generate own input events which ain't + * what we want in case we just did clear them */ + g_touchscreengui->step(dtime); + } +#endif if (!guienv->hasFocus(gui_chat_console) && gui_chat_console->isOpen()) { gui_chat_console->closeConsoleAtOnce(); @@ -2576,18 +2663,11 @@ void Game::processUserInput(VolatileRunFlags *flags, // Input handler step() (used by the random input generator) input->step(dtime); -#ifdef HAVE_TOUCHSCREENGUI - - if (g_touchscreengui) { - g_touchscreengui->step(dtime); - } - -#endif #ifdef __ANDROID__ - - if (current_formspec != 0) + if (current_formspec != NULL) current_formspec->getAndroidUIInput(); - + else + handleAndroidChatInput(); #endif // Increase timer for double tap of "keymap_jump" @@ -2618,23 +2698,21 @@ void Game::processKeyboardInput(VolatileRunFlags *flags, if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_DROP])) { dropSelectedItem(); - // Add WoW-style autorun by toggling continuous forward. } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_AUTORUN])) { - bool autorun_setting = g_settings->getBool("continuous_forward"); - g_settings->setBool("continuous_forward", !autorun_setting); + toggleAutorun(statustext_time); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_INVENTORY])) { openInventory(); } else if (input->wasKeyDown(EscapeKey) || input->wasKeyDown(CancelKey)) { - show_pause_menu(¤t_formspec, client, gamedef, texture_src, device, - simple_singleplayer_mode); + if (!gui_chat_console->isOpenInhibited()) { + show_pause_menu(¤t_formspec, client, gamedef, + texture_src, device, simple_singleplayer_mode); + } } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_CHAT])) { - show_chat_menu(¤t_formspec, client, gamedef, texture_src, device, - client, ""); + openConsole(0.2, L""); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_CMD])) { - show_chat_menu(¤t_formspec, client, gamedef, texture_src, device, - client, "/"); + openConsole(0.2, L"/"); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_CONSOLE])) { - openConsole(); + openConsole(1); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_FREEMOVE])) { toggleFreeMove(statustext_time); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_JUMP])) { @@ -2669,15 +2747,15 @@ void Game::processKeyboardInput(VolatileRunFlags *flags, decreaseViewRange(statustext_time); } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_RANGESELECT])) { toggleFullViewRange(statustext_time); - } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_NEXT])) + } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_NEXT])) { quicktune->next(); - else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_PREV])) + } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_PREV])) { quicktune->prev(); - else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_INC])) + } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_INC])) { quicktune->inc(); - else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_DEC])) + } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_QUICKTUNE_DEC])) { quicktune->dec(); - else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_DEBUG_STACKS])) { + } else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_DEBUG_STACKS])) { // Print debug stacks dstream << "-----------------------------------------" << std::endl; @@ -2777,14 +2855,31 @@ void Game::openInventory() } -void Game::openConsole() +void Game::openConsole(float height, const wchar_t *line) { - if (!gui_chat_console->isOpenInhibited()) { - // Open up to over half of the screen - gui_chat_console->openConsole(0.6); - guienv->setFocus(gui_chat_console); +#ifdef __ANDROID__ + porting::showInputDialog(gettext("ok"), "", "", 2); + m_android_chat_open = true; +#else + if (gui_chat_console->isOpenInhibited()) + return; + gui_chat_console->openConsole(height); + if (line) { + gui_chat_console->setCloseOnEnter(true); + gui_chat_console->replaceAndAddToHistory(line); + } +#endif +} + +#ifdef __ANDROID__ +void Game::handleAndroidChatInput() +{ + if (m_android_chat_open && porting::getInputDialogState() == 0) { + std::string text = porting::getInputDialogValue(); + client->typeChatMessage(utf8_to_wide(text)); } } +#endif void Game::toggleFreeMove(float *statustext_time) @@ -2851,6 +2946,16 @@ void Game::toggleCinematic(float *statustext_time) statustext = msg[cinematic]; } +// Add WoW-style autorun by toggling continuous forward. +void Game::toggleAutorun(float *statustext_time) +{ + static const wchar_t *msg[] = { L"autorun disabled", L"autorun enabled" }; + bool autorun_enabled = !g_settings->getBool("continuous_forward"); + g_settings->set("continuous_forward", bool_to_cstr(autorun_enabled)); + + *statustext_time = 0; + statustext = msg[autorun_enabled ? 1 : 0]; +} void Game::toggleChat(float *statustext_time, bool *flag) { @@ -2869,8 +2974,6 @@ void Game::toggleHud(float *statustext_time, bool *flag) *flag = !*flag; *statustext_time = 0; statustext = msg[*flag]; - if (g_settings->getBool("enable_node_highlighting")) - client->setHighlighted(client->getHighlighted(), *flag); } void Game::toggleMinimap(float *statustext_time, bool *flag, @@ -2991,10 +3094,10 @@ void Game::toggleProfiler(float *statustext_time, u32 *profiler_current_page, void Game::increaseViewRange(float *statustext_time) { - s16 range = g_settings->getS16("viewing_range_nodes_min"); + s16 range = g_settings->getS16("viewing_range"); s16 range_new = range + 10; - g_settings->set("viewing_range_nodes_min", itos(range_new)); - statustext = utf8_to_wide("Minimum viewing range changed to " + g_settings->set("viewing_range", itos(range_new)); + statustext = utf8_to_wide("Viewing range changed to " + itos(range_new)); *statustext_time = 0; } @@ -3002,14 +3105,14 @@ void Game::increaseViewRange(float *statustext_time) void Game::decreaseViewRange(float *statustext_time) { - s16 range = g_settings->getS16("viewing_range_nodes_min"); + s16 range = g_settings->getS16("viewing_range"); s16 range_new = range - 10; - if (range_new < 0) - range_new = range; + if (range_new < 20) + range_new = 20; - g_settings->set("viewing_range_nodes_min", itos(range_new)); - statustext = utf8_to_wide("Minimum viewing range changed to " + g_settings->set("viewing_range", itos(range_new)); + statustext = utf8_to_wide("Viewing range changed to " + itos(range_new)); *statustext_time = 0; } @@ -3456,8 +3559,8 @@ void Game::updateSound(f32 dtime) } -void Game::processPlayerInteraction(std::vector &highlight_boxes, - GameRunData *runData, f32 dtime, bool show_hud, bool show_debug) +void Game::processPlayerInteraction(GameRunData *runData, + f32 dtime, bool show_hud, bool show_debug) { LocalPlayer *player = client->getEnv().getLocalPlayer(); @@ -3515,25 +3618,17 @@ void Game::processPlayerInteraction(std::vector &highlight_boxes, PointedThing pointed = getPointedThing( // input - client, player_position, camera_direction, + client, hud, player_position, camera_direction, camera_position, shootline, d, playeritem_def.liquids_pointable, !runData->ldown_for_dig, camera_offset, // output - highlight_boxes, runData->selected_object); if (pointed != runData->pointed_old) { infostream << "Pointing at " << pointed.dump() << std::endl; - - if (m_cache_enable_node_highlighting) { - if (pointed.type == POINTEDTHING_NODE) { - client->setHighlighted(pointed.node_undersurface, show_hud); - } else { - client->setHighlighted(pointed.node_undersurface, false); - } - } + hud->updateSelectionMesh(camera_offset); } /* @@ -3557,6 +3652,7 @@ void Game::processPlayerInteraction(std::vector &highlight_boxes, infostream << "Pointing away from node" << " (stopped digging)" << std::endl; runData->digging = false; + hud->updateSelectionMesh(camera_offset); } } @@ -3594,6 +3690,8 @@ void Game::processPlayerInteraction(std::vector &highlight_boxes, } else if (input->getLeftState()) { // When button is held down in air, show continuous animation runData->left_punch = true; + } else if (input->getRightClicked()) { + handlePointingAtNothing(runData, playeritem); } runData->pointed_old = pointed; @@ -3609,6 +3707,15 @@ void Game::processPlayerInteraction(std::vector &highlight_boxes, } +void Game::handlePointingAtNothing(GameRunData *runData, const ItemStack &playerItem) +{ + infostream << "Right Clicked in Air" << std::endl; + PointedThing fauxPointed; + fauxPointed.type = POINTEDTHING_NOTHING; + client->interact(5, fauxPointed); +} + + void Game::handlePointingAtNode(GameRunData *runData, const PointedThing &pointed, const ItemDefinition &playeritem_def, const ToolCapabilities &playeritem_toolcap, f32 dtime) @@ -3624,7 +3731,7 @@ void Game::handlePointingAtNode(GameRunData *runData, NodeMetadata *meta = map.getNodeMetadata(nodepos); if (meta) { - infotext = utf8_to_wide(meta->getString("infotext")); + infotext = unescape_enriched(utf8_to_wide(meta->getString("infotext"))); } else { MapNode n = map.getNodeNoEx(nodepos); @@ -3700,10 +3807,15 @@ void Game::handlePointingAtObject(GameRunData *runData, const v3f &player_position, bool show_debug) { - infotext = utf8_to_wide(runData->selected_object->infoText()); + infotext = unescape_enriched( + utf8_to_wide(runData->selected_object->infoText())); - if (infotext == L"" && show_debug) { - infotext = utf8_to_wide(runData->selected_object->debugInfoText()); + if (show_debug) { + if (infotext != L"") { + infotext += L"\n"; + } + infotext += unescape_enriched(utf8_to_wide( + runData->selected_object->debugInfoText())); } if (input->getLeftState()) { @@ -3867,9 +3979,9 @@ void Game::handleDigging(GameRunData *runData, } -void Game::updateFrame(std::vector &highlight_boxes, - ProfilerGraph *graph, RunStats *stats, GameRunData *runData, - f32 dtime, const VolatileRunFlags &flags, const CameraOrientation &cam) +void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, + GameRunData *runData, f32 dtime, const VolatileRunFlags &flags, + const CameraOrientation &cam) { LocalPlayer *player = client->getEnv().getLocalPlayer(); @@ -3880,12 +3992,7 @@ void Game::updateFrame(std::vector &highlight_boxes, if (draw_control->range_all) { runData->fog_range = 100000 * BS; } else { - runData->fog_range = draw_control->wanted_range * BS - + 0.0 * MAP_BLOCKSIZE * BS; - runData->fog_range = MYMIN( - runData->fog_range, - (draw_control->farthest_drawn + 20) * BS); - runData->fog_range *= 0.9; + runData->fog_range = 0.9 * draw_control->wanted_range * BS; } /* @@ -4061,7 +4168,7 @@ void Game::updateFrame(std::vector &highlight_boxes, } draw_scene(driver, smgr, *camera, *client, player, *hud, *mapper, - guienv, highlight_boxes, screensize, skycolor, flags.show_hud, + guienv, screensize, skycolor, flags.show_hud, flags.show_minimap); /* @@ -4341,7 +4448,6 @@ void Game::settingChangedCallback(const std::string &setting_name, void *data) void Game::readSettings() { m_cache_doubletap_jump = g_settings->getBool("doubletap_jump"); - m_cache_enable_node_highlighting = g_settings->getBool("enable_node_highlighting"); m_cache_enable_clouds = g_settings->getBool("enable_clouds"); m_cache_enable_particles = g_settings->getBool("enable_particles"); m_cache_enable_fog = g_settings->getBool("enable_fog"); diff --git a/src/gamedef.h b/src/gamedef.h index a5f6b596..7e3da4ca 100644 --- a/src/gamedef.h +++ b/src/gamedef.h @@ -32,6 +32,8 @@ class IShaderSource; class MtEventManager; class IRollbackManager; class EmergeManager; +class Camera; + namespace irr { namespace scene { class IAnimatedMesh; class ISceneManager; @@ -67,6 +69,10 @@ public: { return NULL; } virtual scene::ISceneManager* getSceneManager()=0; + virtual Camera* getCamera() + { return NULL; } + virtual void setCamera(Camera *camera) {} + // Only usable on the server, and NOT thread-safe. It is usable from the // environment thread. virtual IRollbackManager* getRollbackManager(){return NULL;} diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index 3937e405..17a1689c 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -46,15 +46,18 @@ GUIChatConsole::GUIChatConsole( gui::IGUIElement* parent, s32 id, ChatBackend* backend, - Client* client + Client* client, + IMenuManager* menumgr ): IGUIElement(gui::EGUIET_ELEMENT, env, parent, id, core::rect(0,0,100,100)), m_chat_backend(backend), m_client(client), + m_menumgr(menumgr), m_screensize(v2u32(0,0)), m_animate_time_old(0), m_open(false), + m_close_on_enter(false), m_height(0), m_desired_height(0), m_desired_height_fraction(0.0), @@ -119,6 +122,10 @@ void GUIChatConsole::openConsole(f32 height) m_desired_height_fraction = height; m_desired_height = height * m_screensize.Y; reformatConsole(); + m_animate_time_old = getTimeMs(); + IGUIElement::setVisible(true); + Environment->setFocus(this); + m_menumgr->createdMenu(this); } bool GUIChatConsole::isOpen() const @@ -134,11 +141,13 @@ bool GUIChatConsole::isOpenInhibited() const void GUIChatConsole::closeConsole() { m_open = false; + Environment->removeFocus(this); + m_menumgr->deletingMenu(this); } void GUIChatConsole::closeConsoleAtOnce() { - m_open = false; + closeConsole(); m_height = 0; recalculateConsolePosition(); } @@ -148,6 +157,14 @@ f32 GUIChatConsole::getDesiredHeight() const return m_desired_height_fraction; } +void GUIChatConsole::replaceAndAddToHistory(std::wstring line) +{ + ChatPrompt& prompt = m_chat_backend->getPrompt(); + prompt.addToHistory(prompt.getLine()); + prompt.replace(line); +} + + void GUIChatConsole::setCursor( bool visible, bool blinking, f32 blink_speed, f32 relative_height) { @@ -228,6 +245,13 @@ void GUIChatConsole::animate(u32 msec) { // animate the console height s32 goal = m_open ? m_desired_height : 0; + + // Set invisible if close animation finished (reset by openConsole) + // This function (animate()) is never called once its visibility becomes false so do not + // actually set visible to false before the inhibited period is over + if (!m_open && m_height == 0 && m_open_inhibited == 0) + IGUIElement::setVisible(false); + if (m_height != goal) { s32 max_change = msec * m_screensize.Y * (m_height_speed / 1000.0); @@ -362,13 +386,15 @@ void GUIChatConsole::drawPrompt() s32 cursor_pos = prompt.getVisibleCursorPosition(); if (cursor_pos >= 0) { + s32 cursor_len = prompt.getCursorLength(); video::IVideoDriver* driver = Environment->getVideoDriver(); s32 x = (1 + cursor_pos) * m_fontsize.X; core::rect destrect( x, - y + (1.0-m_cursor_height) * m_fontsize.Y, - x + m_fontsize.X, - y + m_fontsize.Y); + y + m_fontsize.Y * (1.0 - m_cursor_height), + x + m_fontsize.X * MYMAX(cursor_len, 1), + y + m_fontsize.Y * (cursor_len ? m_cursor_height+1 : 1) + ); video::SColor cursor_color(255,255,255,255); driver->draw2DRectangle( cursor_color, @@ -381,23 +407,27 @@ void GUIChatConsole::drawPrompt() bool GUIChatConsole::OnEvent(const SEvent& event) { + + ChatPrompt &prompt = m_chat_backend->getPrompt(); + if(event.EventType == EET_KEY_INPUT_EVENT && event.KeyInput.PressedDown) { // Key input if(KeyPress(event.KeyInput) == getKeySetting("keymap_console")) { closeConsole(); - Environment->removeFocus(this); // inhibit open so the_game doesn't reopen immediately m_open_inhibited = 50; + m_close_on_enter = false; return true; } else if(event.KeyInput.Key == KEY_ESCAPE) { closeConsoleAtOnce(); - Environment->removeFocus(this); - // the_game will open the pause menu + m_close_on_enter = false; + // inhibit open so the_game doesn't reopen immediately + m_open_inhibited = 1; // so the ESCAPE button doesn't open the "pause menu" return true; } else if(event.KeyInput.Key == KEY_PRIOR) @@ -412,57 +442,50 @@ bool GUIChatConsole::OnEvent(const SEvent& event) } else if(event.KeyInput.Key == KEY_RETURN) { - std::wstring text = m_chat_backend->getPrompt().submit(); + prompt.addToHistory(prompt.getLine()); + std::wstring text = prompt.replace(L""); m_client->typeChatMessage(text); + if (m_close_on_enter) { + closeConsoleAtOnce(); + m_close_on_enter = false; + } return true; } else if(event.KeyInput.Key == KEY_UP) { // Up pressed // Move back in history - m_chat_backend->getPrompt().historyPrev(); + prompt.historyPrev(); return true; } else if(event.KeyInput.Key == KEY_DOWN) { // Down pressed // Move forward in history - m_chat_backend->getPrompt().historyNext(); + prompt.historyNext(); return true; } - else if(event.KeyInput.Key == KEY_LEFT) + else if(event.KeyInput.Key == KEY_LEFT || event.KeyInput.Key == KEY_RIGHT) { - // Left or Ctrl-Left pressed - // move character / word to the left - ChatPrompt::CursorOpScope scope = - event.KeyInput.Control ? + // Left/right pressed + // Move/select character/word to the left depending on control and shift keys + ChatPrompt::CursorOp op = event.KeyInput.Shift ? + ChatPrompt::CURSOROP_SELECT : + ChatPrompt::CURSOROP_MOVE; + ChatPrompt::CursorOpDir dir = event.KeyInput.Key == KEY_LEFT ? + ChatPrompt::CURSOROP_DIR_LEFT : + ChatPrompt::CURSOROP_DIR_RIGHT; + ChatPrompt::CursorOpScope scope = event.KeyInput.Control ? ChatPrompt::CURSOROP_SCOPE_WORD : ChatPrompt::CURSOROP_SCOPE_CHARACTER; - m_chat_backend->getPrompt().cursorOperation( - ChatPrompt::CURSOROP_MOVE, - ChatPrompt::CURSOROP_DIR_LEFT, - scope); - return true; - } - else if(event.KeyInput.Key == KEY_RIGHT) - { - // Right or Ctrl-Right pressed - // move character / word to the right - ChatPrompt::CursorOpScope scope = - event.KeyInput.Control ? - ChatPrompt::CURSOROP_SCOPE_WORD : - ChatPrompt::CURSOROP_SCOPE_CHARACTER; - m_chat_backend->getPrompt().cursorOperation( - ChatPrompt::CURSOROP_MOVE, - ChatPrompt::CURSOROP_DIR_RIGHT, - scope); + prompt.cursorOperation(op, dir, scope); return true; } else if(event.KeyInput.Key == KEY_HOME) { // Home pressed // move to beginning of line - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -472,7 +495,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) { // End pressed // move to end of line - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -486,7 +509,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) event.KeyInput.Control ? ChatPrompt::CURSOROP_SCOPE_WORD : ChatPrompt::CURSOROP_SCOPE_CHARACTER; - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_LEFT, scope); @@ -500,30 +523,72 @@ bool GUIChatConsole::OnEvent(const SEvent& event) event.KeyInput.Control ? ChatPrompt::CURSOROP_SCOPE_WORD : ChatPrompt::CURSOROP_SCOPE_CHARACTER; - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_RIGHT, scope); return true; } + else if(event.KeyInput.Key == KEY_KEY_A && event.KeyInput.Control) + { + // Ctrl-A pressed + // Select all text + prompt.cursorOperation( + ChatPrompt::CURSOROP_SELECT, + ChatPrompt::CURSOROP_DIR_LEFT, // Ignored + ChatPrompt::CURSOROP_SCOPE_LINE); + return true; + } + else if(event.KeyInput.Key == KEY_KEY_C && event.KeyInput.Control) + { + // Ctrl-C pressed + // Copy text to clipboard + if (prompt.getCursorLength() <= 0) + return true; + std::wstring wselected = prompt.getSelection(); + std::string selected(wselected.begin(), wselected.end()); + Environment->getOSOperator()->copyToClipboard(selected.c_str()); + return true; + } else if(event.KeyInput.Key == KEY_KEY_V && event.KeyInput.Control) { // Ctrl-V pressed // paste text from clipboard + if (prompt.getCursorLength() > 0) { + // Delete selected section of text + prompt.cursorOperation( + ChatPrompt::CURSOROP_DELETE, + ChatPrompt::CURSOROP_DIR_LEFT, // Ignored + ChatPrompt::CURSOROP_SCOPE_SELECTION); + } IOSOperator *os_operator = Environment->getOSOperator(); const c8 *text = os_operator->getTextFromClipboard(); - if (text) - { - std::wstring wtext = narrow_to_wide(text); - m_chat_backend->getPrompt().input(wtext); - } + if (!text) + return true; + std::basic_string str((const unsigned char*)text); + prompt.input(std::wstring(str.begin(), str.end())); + return true; + } + else if(event.KeyInput.Key == KEY_KEY_X && event.KeyInput.Control) + { + // Ctrl-X pressed + // Cut text to clipboard + if (prompt.getCursorLength() <= 0) + return true; + std::wstring wselected = prompt.getSelection(); + std::string selected(wselected.begin(), wselected.end()); + Environment->getOSOperator()->copyToClipboard(selected.c_str()); + prompt.cursorOperation( + ChatPrompt::CURSOROP_DELETE, + ChatPrompt::CURSOROP_DIR_LEFT, // Ignored + ChatPrompt::CURSOROP_SCOPE_SELECTION); return true; } else if(event.KeyInput.Key == KEY_KEY_U && event.KeyInput.Control) { // Ctrl-U pressed // kill line to left end - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -533,7 +598,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) { // Ctrl-K pressed // kill line to right end - m_chat_backend->getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -545,7 +610,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) // Nick completion std::list names = m_client->getConnectedPlayerNames(); bool backwards = event.KeyInput.Shift; - m_chat_backend->getPrompt().nickCompletion(names, backwards); + prompt.nickCompletion(names, backwards); return true; } else if(event.KeyInput.Char != 0 && !event.KeyInput.Control) @@ -553,9 +618,9 @@ bool GUIChatConsole::OnEvent(const SEvent& event) #if (defined(linux) || defined(__linux)) wchar_t wc = L'_'; mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) ); - m_chat_backend->getPrompt().input(wc); + prompt.input(wc); #else - m_chat_backend->getPrompt().input(event.KeyInput.Char); + prompt.input(event.KeyInput.Char); #endif return true; } @@ -572,3 +637,13 @@ bool GUIChatConsole::OnEvent(const SEvent& event) return Parent ? Parent->OnEvent(event) : false; } +void GUIChatConsole::setVisible(bool visible) +{ + m_open = visible; + IGUIElement::setVisible(visible); + if (!visible) { + m_height = 0; + recalculateConsolePosition(); + } +} + diff --git a/src/guiChatConsole.h b/src/guiChatConsole.h index 652b265a..3013a1d3 100644 --- a/src/guiChatConsole.h +++ b/src/guiChatConsole.h @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define GUICHATCONSOLE_HEADER #include "irrlichttypes_extrabloated.h" +#include "modalMenu.h" #include "chat.h" #include "config.h" @@ -33,7 +34,8 @@ public: gui::IGUIElement* parent, s32 id, ChatBackend* backend, - Client* client); + Client* client, + IMenuManager* menumgr); virtual ~GUIChatConsole(); // Open the console (height = desired fraction of screen size) @@ -51,11 +53,16 @@ public: void closeConsole(); // Close the console immediately, without animation. void closeConsoleAtOnce(); + // Set whether to close the console after the user presses enter. + void setCloseOnEnter(bool close) { m_close_on_enter = close; } // Return the desired height (fraction of screen size) // Zero if the console is closed or getting closed f32 getDesiredHeight() const; + // Replace actual line when adding the actual to the history (if there is any) + void replaceAndAddToHistory(std::wstring line); + // Change how the cursor looks void setCursor( bool visible, @@ -70,6 +77,8 @@ public: virtual bool OnEvent(const SEvent& event); + virtual void setVisible(bool visible); + private: void reformatConsole(); void recalculateConsolePosition(); @@ -81,11 +90,9 @@ private: void drawPrompt(); private: - // pointer to the chat backend ChatBackend* m_chat_backend; - - // pointer to the client Client* m_client; + IMenuManager* m_menumgr; // current screen size v2u32 m_screensize; @@ -95,6 +102,8 @@ private: // should the console be opened or closed? bool m_open; + // should it close after you press enter? + bool m_close_on_enter; // current console height [pixels] s32 m_height; // desired height [pixels] diff --git a/src/guiEngine.cpp b/src/guiEngine.cpp index 84bc8488..ba286a91 100644 --- a/src/guiEngine.cpp +++ b/src/guiEngine.cpp @@ -361,7 +361,7 @@ void GUIEngine::cloudPreProcess() /******************************************************************************/ void GUIEngine::cloudPostProcess() { - float fps_max = g_settings->getFloat("fps_max"); + float fps_max = g_settings->getFloat("pause_fps_max"); // Time of frame without fps limit u32 busytime_u32; diff --git a/src/guiFileSelectMenu.cpp b/src/guiFileSelectMenu.cpp index e0240742..0bb02f8a 100644 --- a/src/guiFileSelectMenu.cpp +++ b/src/guiFileSelectMenu.cpp @@ -36,6 +36,7 @@ GUIModalMenu(env, parent, id, menumgr) GUIFileSelectMenu::~GUIFileSelectMenu() { removeChildren(); + setlocale(LC_NUMERIC, "C"); } void GUIFileSelectMenu::removeChildren() diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp index c5edb967..2bf06c1d 100644 --- a/src/guiFormSpecMenu.cpp +++ b/src/guiFormSpecMenu.cpp @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "constants.h" #include "gamedef.h" #include "keycode.h" -#include "strfnd.h" +#include "util/strfnd.h" #include #include #include @@ -240,6 +240,15 @@ GUITable* GUIFormSpecMenu::getTable(const std::string &tablename) return 0; } +std::vector* GUIFormSpecMenu::getDropDownValues(const std::string &name) +{ + for (u32 i = 0; i < m_dropdowns.size(); ++i) { + if (name == m_dropdowns[i].first.fname) + return &m_dropdowns[i].second; + } + return NULL; +} + static std::vector split(const std::string &s, char delim) { std::vector tokens; @@ -413,7 +422,7 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element) if (selected == "true") fselected = true; - std::wstring wlabel = utf8_to_wide(label); + std::wstring wlabel = utf8_to_wide(unescape_string(label)); core::rect rect = core::rect( pos.X, pos.Y + ((imgsize.Y/2) - m_btn_height), @@ -450,7 +459,7 @@ void GUIFormSpecMenu::parseScrollBar(parserData* data, std::string element) if (parts.size() >= 5) { std::vector v_pos = split(parts[0],','); std::vector v_dim = split(parts[1],','); - std::string name = parts[2]; + std::string name = parts[3]; std::string value = parts[4]; MY_CHECKPOS("scrollbar",0); @@ -572,7 +581,7 @@ void GUIFormSpecMenu::parseItemImage(parserData* data,std::string element) if(!data->explicit_size) warningstream<<"invalid use of item_image without a size[] element"<explicit_size) warningstream<<"invalid use of button without a size[] element"< rect = core::rect(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y); FieldSpec spec( @@ -746,7 +752,7 @@ void GUIFormSpecMenu::parseTable(parserData* data,std::string element) spec.ftype = f_Table; for (unsigned int i = 0; i < items.size(); ++i) { - items[i] = unescape_string(items[i]); + items[i] = unescape_enriched(unescape_string(items[i])); } //now really show table @@ -818,7 +824,7 @@ void GUIFormSpecMenu::parseTextList(parserData* data,std::string element) spec.ftype = f_Table; for (unsigned int i = 0; i < items.size(); ++i) { - items[i] = unescape_string(items[i]); + items[i] = unescape_enriched(unescape_string(items[i])); } //now really show list @@ -889,13 +895,22 @@ void GUIFormSpecMenu::parseDropDown(parserData* data,std::string element) } for (unsigned int i=0; i < items.size(); i++) { - e->addItem(utf8_to_wide(items[i]).c_str()); + e->addItem(unescape_enriched(unescape_string( + utf8_to_wide(items[i]))).c_str()); } if (str_initial_selection != "") e->setSelected(stoi(str_initial_selection.c_str())-1); m_fields.push_back(spec); + + m_dropdowns.push_back(std::pair >(spec, std::vector())); + std::vector &values = m_dropdowns.back().second; + for (unsigned int i = 0; i < items.size(); i++) { + values.push_back(unescape_string(items[i])); + } + return; } errorstream << "Invalid dropdown element(" << parts.size() << "): '" @@ -930,9 +945,7 @@ void GUIFormSpecMenu::parsePwdField(parserData* data,std::string element) core::rect rect = core::rect(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y); - label = unescape_string(label); - - std::wstring wlabel = utf8_to_wide(label); + std::wstring wlabel = utf8_to_wide(unescape_string(label)); FieldSpec spec( name, @@ -995,15 +1008,13 @@ void GUIFormSpecMenu::parseSimpleField(parserData* data, if(m_form_src) default_val = m_form_src->resolveText(default_val); - default_val = unescape_string(default_val); - label = unescape_string(label); - std::wstring wlabel = utf8_to_wide(label); + std::wstring wlabel = utf8_to_wide(unescape_string(label)); FieldSpec spec( name, wlabel, - utf8_to_wide(default_val), + utf8_to_wide(unescape_string(default_val)), 258+m_fields.size() ); @@ -1094,15 +1105,12 @@ void GUIFormSpecMenu::parseTextArea(parserData* data, default_val = m_form_src->resolveText(default_val); - default_val = unescape_string(default_val); - label = unescape_string(label); - - std::wstring wlabel = utf8_to_wide(label); + std::wstring wlabel = utf8_to_wide(unescape_string(label)); FieldSpec spec( name, wlabel, - utf8_to_wide(default_val), + utf8_to_wide(unescape_string(default_val)), 258+m_fields.size() ); @@ -1197,7 +1205,6 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element) if(!data->explicit_size) warningstream<<"invalid use of label without a size[] element"< lines = split(text, '\n'); for (unsigned int i = 0; i != lines.size(); i++) { @@ -1211,7 +1218,7 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element) // in the integer cases: 0.4 is not exactly // representable in binary floating point. s32 posy = pos.Y + ((float)i) * spacing.Y * 2.0 / 5.0; - std::wstring wlabel = utf8_to_wide(lines[i]); + std::wstring wlabel = utf8_to_wide(unescape_string(lines[i])); core::rect rect = core::rect( pos.X, posy - m_btn_height, pos.X + m_font->getDimension(wlabel.c_str()).Width, @@ -1243,7 +1250,8 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data,std::string element) ((parts.size() > 2) && (m_formspec_version > FORMSPEC_API_VERSION))) { std::vector v_pos = split(parts[0],','); - std::wstring text = utf8_to_wide(unescape_string(parts[1])); + std::wstring text = unescape_enriched( + unescape_string(utf8_to_wide(parts[1]))); MY_CHECKPOS("vertlabel",1); @@ -1330,9 +1338,8 @@ void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element, image_name = unescape_string(image_name); pressed_image_name = unescape_string(pressed_image_name); - label = unescape_string(label); - std::wstring wlabel = utf8_to_wide(label); + std::wstring wlabel = utf8_to_wide(unescape_string(label)); FieldSpec spec( name, @@ -1430,7 +1437,8 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data,std::string element) e->setNotClipped(true); for (unsigned int i = 0; i < buttons.size(); i++) { - e->addTab(utf8_to_wide(buttons[i]).c_str(), -1); + e->addTab(unescape_enriched(unescape_string( + utf8_to_wide(buttons[i]))).c_str(), -1); } if ((tab_index >= 0) && @@ -1465,6 +1473,9 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data,std::string element) std::string name = parts[3]; std::string label = parts[4]; + label = unescape_string(label); + item_name = unescape_string(item_name); + MY_CHECKPOS("itemimagebutton",0); MY_CHECKGEOM("itemimagebutton",1); @@ -1483,14 +1494,12 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data,std::string element) IItemDefManager *idef = m_gamedef->idef(); ItemStack item; item.deSerialize(item_name, idef); - video::ITexture *texture = idef->getInventoryTexture(item.getDefinition(idef).name, m_gamedef); m_tooltips[name] = TooltipSpec(item.getDefinition(idef).description, m_default_tooltip_bgcolor, m_default_tooltip_color); - label = unescape_string(label); FieldSpec spec( name, utf8_to_wide(label), @@ -1498,20 +1507,21 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data,std::string element) 258 + m_fields.size() ); - gui::IGUIButton *e = Environment->addButton(rect, this, spec.fid, spec.flabel.c_str()); + gui::IGUIButton *e = Environment->addButton(rect, this, spec.fid, L""); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); } - e->setUseAlphaChannel(true); - e->setImage(guiScalingImageButton(Environment->getVideoDriver(), texture, geom.X, geom.Y)); - e->setPressedImage(guiScalingImageButton(Environment->getVideoDriver(), texture, geom.X, geom.Y)); - e->setScaleImage(true); spec.ftype = f_Button; rect+=data->basepos-padding; spec.rect=rect; m_fields.push_back(spec); + pos = padding + AbsoluteRect.UpperLeftCorner; + pos.X += stof(v_pos[0]) * (float) spacing.X; + pos.Y += stof(v_pos[1]) * (float) spacing.Y; + m_itemimages.push_back(ImageDrawSpec("", item_name, e, pos, geom)); + m_static_texts.push_back(StaticTextSpec(utf8_to_wide(label), rect, e)); return; } errorstream<< "Invalid ItemImagebutton element(" << parts.size() << "): '" << element << "'" << std::endl; @@ -1880,6 +1890,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) m_boxes.clear(); m_tooltips.clear(); m_inventory_rings.clear(); + m_static_texts.clear(); // Set default values (fits old formspec values) m_bgcolor = video::SColor(140,0,0,0); @@ -2151,7 +2162,8 @@ GUIFormSpecMenu::ItemSpec GUIFormSpecMenu::getItemAtPos(v2s32 p) const return ItemSpec(InventoryLocation(), "", -1); } -void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) +void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase, + bool &item_hovered) { video::IVideoDriver* driver = Environment->getVideoDriver(); @@ -2192,13 +2204,16 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) && m_selected_item->listname == s.listname && m_selected_item->i == item_i; bool hovering = rect.isPointInside(m_pointer); + ItemRotationKind rotation_kind = selected ? IT_ROT_SELECTED : + (hovering ? IT_ROT_HOVERED : IT_ROT_NONE); - if(phase == 0) - { - if(hovering) + if (phase == 0) { + if (hovering) { + item_hovered = true; driver->draw2DRectangle(m_slotbg_h, rect, &AbsoluteClippingRect); - else + } else { driver->draw2DRectangle(m_slotbg_n, rect, &AbsoluteClippingRect); + } } //Draw inv slot borders @@ -2232,22 +2247,25 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) if(!item.empty()) { drawItemStack(driver, m_font, item, - rect, &AbsoluteClippingRect, m_gamedef); + rect, &AbsoluteClippingRect, m_gamedef, + rotation_kind); } // Draw tooltip - std::string tooltip_text = ""; - if (hovering && !m_selected_item) - tooltip_text = item.getDefinition(m_gamedef->idef()).description; - if (tooltip_text != "") { - std::vector tt_rows = str_split(tooltip_text, '\n'); + std::wstring tooltip_text = L""; + if (hovering && !m_selected_item) { + tooltip_text = utf8_to_wide(item.getDefinition(m_gamedef->idef()).description); + tooltip_text = unescape_enriched(tooltip_text); + } + if (tooltip_text != L"") { + std::vector tt_rows = str_split(tooltip_text, L'\n'); m_tooltip_element->setBackgroundColor(m_default_tooltip_bgcolor); m_tooltip_element->setOverrideColor(m_default_tooltip_color); m_tooltip_element->setVisible(true); this->bringToFront(m_tooltip_element); - m_tooltip_element->setText(utf8_to_wide(tooltip_text).c_str()); + m_tooltip_element->setText(tooltip_text.c_str()); s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height; - s32 tooltip_height = m_tooltip_element->getTextHeight() * tt_rows.size() + 5; + s32 tooltip_height = m_tooltip_element->getTextHeight() + 5; v2u32 screenSize = driver->getScreenSize(); int tooltip_offset_x = m_btn_height; int tooltip_offset_y = m_btn_height; @@ -2273,11 +2291,15 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) void GUIFormSpecMenu::drawSelectedItem() { - if(!m_selected_item) - return; - video::IVideoDriver* driver = Environment->getVideoDriver(); + if (!m_selected_item) { + drawItemStack(driver, m_font, ItemStack(), + core::rect(v2s32(0, 0), v2s32(0, 0)), + NULL, m_gamedef, IT_ROT_DRAGGED); + return; + } + Inventory *inv = m_invmgr->getInventory(m_selected_item->inventoryloc); sanity_check(inv); InventoryList *list = inv->getList(m_selected_item->listname); @@ -2287,7 +2309,7 @@ void GUIFormSpecMenu::drawSelectedItem() core::rect imgrect(0,0,imgsize.X,imgsize.Y); core::rect rect = imgrect + (m_pointer - imgrect.getCenter()); - drawItemStack(driver, m_font, stack, rect, NULL, m_gamedef); + drawItemStack(driver, m_font, stack, rect, NULL, m_gamedef, IT_ROT_DRAGGED); } void GUIFormSpecMenu::drawMenu() @@ -2369,6 +2391,12 @@ void GUIFormSpecMenu::drawMenu() driver->draw2DRectangle(todraw, rect, 0); } + + /* + Call base class + */ + gui::IGUIElement::draw(); + /* Draw images */ @@ -2413,18 +2441,22 @@ void GUIFormSpecMenu::drawMenu() const ImageDrawSpec &spec = m_itemimages[i]; IItemDefManager *idef = m_gamedef->idef(); ItemStack item; - item.deSerialize(spec.name, idef); - video::ITexture *texture = idef->getInventoryTexture(item.getDefinition(idef).name, m_gamedef); - // Image size on screen + item.deSerialize(spec.item_name, idef); core::rect imgrect(0, 0, spec.geom.X, spec.geom.Y); - // Image rectangle on screen + // Viewport rectangle on screen core::rect rect = imgrect + spec.pos; - const video::SColor color(255,255,255,255); - const video::SColor colors[] = {color,color,color,color}; - draw2DImageFilterScaled(driver, texture, rect, - core::rect(core::position2d(0,0), - core::dimension2di(texture->getOriginalSize())), - NULL/*&AbsoluteClippingRect*/, colors, true); + if (spec.parent_button && spec.parent_button->isPressed()) { +#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8) + rect += core::dimension2d( + 0.05 * (float)rect.getWidth(), 0.05 * (float)rect.getHeight()); +#else + rect += core::dimension2d( + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X), + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y)); +#endif + } + drawItemStack(driver, m_font, item, rect, &AbsoluteClippingRect, + m_gamedef, IT_ROT_NONE); } /* @@ -2432,23 +2464,46 @@ void GUIFormSpecMenu::drawMenu() Phase 0: Item slot rectangles Phase 1: Item images; prepare tooltip */ - int start_phase=0; - for(int phase=start_phase; phase<=1; phase++) - for(u32 i=0; i(v2s32(0, 0), v2s32(0, 0)), + NULL, m_gamedef, IT_ROT_HOVERED); } - - /* - Call base class - */ - gui::IGUIElement::draw(); /* TODO find way to show tooltips on touchscreen */ #ifndef HAVE_TOUCHSCREENGUI m_pointer = m_device->getCursorControl()->getPosition(); #endif + /* + Draw static text elements + */ + for (u32 i = 0; i < m_static_texts.size(); i++) { + const StaticTextSpec &spec = m_static_texts[i]; + core::rect rect = spec.rect; + if (spec.parent_button && spec.parent_button->isPressed()) { +#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8) + rect += core::dimension2d( + 0.05 * (float)rect.getWidth(), 0.05 * (float)rect.getHeight()); +#else + // Use image offset instead of text's because its a bit smaller + // and fits better, also TEXT_OFFSET_X is always 0 + rect += core::dimension2d( + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X), + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y)); +#endif + } + video::SColor color(255, 255, 255, 255); + m_font->draw(spec.text.c_str(), rect, color, true, true, &rect); + } + /* Draw fields/buttons tooltips */ @@ -2461,7 +2516,7 @@ void GUIFormSpecMenu::drawMenu() u32 delta = 0; if (id == -1) { m_old_tooltip_id = id; - m_old_tooltip = ""; + m_old_tooltip = L""; } else { if (id == m_old_tooltip_id) { delta = porting::getDeltaMs(m_hovered_time, getTimeMs()); @@ -2474,11 +2529,11 @@ void GUIFormSpecMenu::drawMenu() if (id != -1 && delta >= m_tooltip_show_delay) { for(std::vector::iterator iter = m_fields.begin(); iter != m_fields.end(); ++iter) { - if ( (iter->fid == id) && (m_tooltips[iter->fname].tooltip != "") ){ + if (iter->fid == id && m_tooltips[iter->fname].tooltip != L"") { if (m_old_tooltip != m_tooltips[iter->fname].tooltip) { m_old_tooltip = m_tooltips[iter->fname].tooltip; - m_tooltip_element->setText(utf8_to_wide(m_tooltips[iter->fname].tooltip).c_str()); - std::vector tt_rows = str_split(m_tooltips[iter->fname].tooltip, '\n'); + m_tooltip_element->setText(m_tooltips[iter->fname].tooltip.c_str()); + std::vector tt_rows = str_split(m_tooltips[iter->fname].tooltip, L'\n'); s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height; s32 tooltip_height = m_tooltip_element->getTextHeight() * tt_rows.size() + 5; int tooltip_offset_x = m_btn_height; @@ -2690,8 +2745,11 @@ void GUIFormSpecMenu::acceptInput(FormspecQuitMode quitmode=quit_mode_no) } s32 selected = e->getSelected(); if (selected >= 0) { - fields[name] = - wide_to_utf8(e->getItem(selected)); + std::vector *dropdown_values = + getDropDownValues(s.fname); + if (dropdown_values && selected < (s32)dropdown_values->size()) { + fields[name] = (*dropdown_values)[selected]; + } } } else if (s.ftype == f_TabHeader) { @@ -2832,7 +2890,7 @@ bool GUIFormSpecMenu::preprocessEvent(const SEvent& event) core::position2d(x, y)); if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) { m_old_tooltip_id = -1; - m_old_tooltip = ""; + m_old_tooltip = L""; } if (!isChild(hovered,this)) { if (DoubleClickDetection(event)) { diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index 2ba47f7f..ef230c81 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -29,6 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "modalMenu.h" #include "guiTable.h" #include "network/networkprotocol.h" +#include "util/string.h" class IGameDef; class InventoryManager; @@ -139,25 +140,53 @@ class GUIFormSpecMenu : public GUIModalMenu struct ImageDrawSpec { - ImageDrawSpec() + ImageDrawSpec(): + parent_button(NULL) { } ImageDrawSpec(const std::string &a_name, - v2s32 a_pos, v2s32 a_geom): + const std::string &a_item_name, + gui::IGUIButton *a_parent_button, + const v2s32 &a_pos, const v2s32 &a_geom): name(a_name), + item_name(a_item_name), + parent_button(a_parent_button), pos(a_pos), - geom(a_geom) + geom(a_geom), + scale(true) { - scale = true; } ImageDrawSpec(const std::string &a_name, - v2s32 a_pos): + const std::string &a_item_name, + const v2s32 &a_pos, const v2s32 &a_geom): name(a_name), - pos(a_pos) + item_name(a_item_name), + parent_button(NULL), + pos(a_pos), + geom(a_geom), + scale(true) + { + } + ImageDrawSpec(const std::string &a_name, + const v2s32 &a_pos, const v2s32 &a_geom): + name(a_name), + parent_button(NULL), + pos(a_pos), + geom(a_geom), + scale(true) + { + } + ImageDrawSpec(const std::string &a_name, + const v2s32 &a_pos): + name(a_name), + parent_button(NULL), + pos(a_pos), + scale(false) { - scale = false; } std::string name; + std::string item_name; + gui::IGUIButton *parent_button; v2s32 pos; v2s32 geom; bool scale; @@ -169,12 +198,12 @@ class GUIFormSpecMenu : public GUIModalMenu { } FieldSpec(const std::string &name, const std::wstring &label, - const std::wstring &fdeflt, int id) : + const std::wstring &default_text, int id) : fname(name), - flabel(label), - fdefault(fdeflt), fid(id) { + flabel = unescape_enriched(label); + fdefault = unescape_enriched(default_text); send = false; ftype = f_Unknown; is_exit = false; @@ -207,16 +236,41 @@ class GUIFormSpecMenu : public GUIModalMenu } TooltipSpec(std::string a_tooltip, irr::video::SColor a_bgcolor, irr::video::SColor a_color): - tooltip(a_tooltip), bgcolor(a_bgcolor), color(a_color) { + tooltip = unescape_enriched(utf8_to_wide(a_tooltip)); } - std::string tooltip; + std::wstring tooltip; irr::video::SColor bgcolor; irr::video::SColor color; }; + struct StaticTextSpec { + StaticTextSpec(): + parent_button(NULL) + { + } + StaticTextSpec(const std::wstring &a_text, + const core::rect &a_rect): + rect(a_rect), + parent_button(NULL) + { + text = unescape_enriched(a_text); + } + StaticTextSpec(const std::wstring &a_text, + const core::rect &a_rect, + gui::IGUIButton *a_parent_button): + rect(a_rect), + parent_button(a_parent_button) + { + text = unescape_enriched(a_text); + } + std::wstring text; + core::rect rect; + gui::IGUIButton *parent_button; + }; + public: GUIFormSpecMenu(irr::IrrlichtDevice* dev, gui::IGUIElement* parent, s32 id, @@ -282,7 +336,7 @@ public: void regenerateGui(v2u32 screensize); ItemSpec getItemAtPos(v2s32 p) const; - void drawList(const ListDrawSpec &s, int phase); + void drawList(const ListDrawSpec &s, int phase, bool &item_hovered); void drawSelectedItem(); void drawMenu(); void updateSelectedItem(); @@ -295,6 +349,7 @@ public: bool pausesGame() { return doPause; } GUITable* getTable(const std::string &tablename); + std::vector* getDropDownValues(const std::string &name); #ifdef __ANDROID__ bool getAndroidUIInput(); @@ -328,12 +383,16 @@ protected: std::vector m_itemimages; std::vector m_boxes; std::vector m_fields; + std::vector m_static_texts; std::vector > m_tables; std::vector > m_checkboxes; std::map m_tooltips; std::vector > m_scrollbars; + std::vector > > m_dropdowns; ItemSpec *m_selected_item; + f32 m_timer1; + f32 m_timer2; u32 m_selected_amount; bool m_selected_dragging; @@ -350,7 +409,7 @@ protected: u32 m_tooltip_show_delay; s32 m_hovered_time; s32 m_old_tooltip_id; - std::string m_old_tooltip; + std::wstring m_old_tooltip; bool m_rmouse_auto_place; diff --git a/src/guiKeyChangeMenu.cpp b/src/guiKeyChangeMenu.cpp index bb878d6e..b0581825 100644 --- a/src/guiKeyChangeMenu.cpp +++ b/src/guiKeyChangeMenu.cpp @@ -187,7 +187,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) { core::rect < s32 > rect(0, 0, 100, 30); - rect += topleft + v2s32(size.X - 100 - 20, size.Y - 40); + rect += topleft + v2s32(size.X / 2 - 105, size.Y - 40); const wchar_t *text = wgettext("Save"); Environment->addButton(rect, this, GUI_ID_BACK_BUTTON, text); @@ -195,7 +195,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) } { core::rect < s32 > rect(0, 0, 100, 30); - rect += topleft + v2s32(size.X - 100 - 20 - 100 - 20, size.Y - 40); + rect += topleft + v2s32(size.X / 2 + 5, size.Y - 40); const wchar_t *text = wgettext("Cancel"); Environment->addButton(rect, this, GUI_ID_ABORT_BUTTON, text); diff --git a/src/httpfetch.cpp b/src/httpfetch.cpp index f10351a0..f64c9f71 100644 --- a/src/httpfetch.cpp +++ b/src/httpfetch.cpp @@ -18,7 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "socket.h" // for select() -#include "porting.h" // for sleep_ms(), get_sysinfo() +#include "porting.h" // for sleep_ms(), get_sysinfo(), secure_rand_fill_buf() #include "httpfetch.h" #include #include @@ -34,9 +34,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/thread.h" #include "version.h" #include "settings.h" +#include "noise.h" Mutex g_httpfetch_mutex; std::map > g_httpfetch_results; +PcgRandom g_callerid_randomness; HTTPFetchRequest::HTTPFetchRequest() { @@ -84,6 +86,34 @@ unsigned long httpfetch_caller_alloc() return discard; } +unsigned long httpfetch_caller_alloc_secure() +{ + MutexAutoLock lock(g_httpfetch_mutex); + + // Generate random caller IDs and make sure they're not + // already used or equal to HTTPFETCH_DISCARD + // Give up after 100 tries to prevent infinite loop + u8 tries = 100; + unsigned long caller; + + do { + caller = (((u64) g_callerid_randomness.next()) << 32) | + g_callerid_randomness.next(); + + if (--tries < 1) { + FATAL_ERROR("httpfetch_caller_alloc_secure: ran out of caller IDs"); + return HTTPFETCH_DISCARD; + } + } while (g_httpfetch_results.find(caller) != g_httpfetch_results.end()); + + verbosestream << "httpfetch_caller_alloc_secure: allocating " + << caller << std::endl; + + // Access element to create it + g_httpfetch_results[caller]; + return caller; +} + void httpfetch_caller_free(unsigned long caller) { verbosestream<<"httpfetch_caller_free: freeing " @@ -262,7 +292,7 @@ HTTPFetchOngoing::HTTPFetchOngoing(HTTPFetchRequest request_, CurlHandlePool *po } // Set POST (or GET) data - if (request.post_fields.empty()) { + if (request.post_fields.empty() && request.post_data.empty()) { curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); } else if (request.multipart) { curl_httppost *last = NULL; @@ -710,6 +740,11 @@ void httpfetch_init(int parallel_limit) FATAL_ERROR_IF(res != CURLE_OK, "CURL init failed"); g_httpfetch_thread = new CurlFetchThread(parallel_limit); + + // Initialize g_callerid_randomness for httpfetch_caller_alloc_secure + u64 randbuf[2]; + porting::secure_rand_fill_buf(randbuf, sizeof(u64) * 2); + g_callerid_randomness = PcgRandom(randbuf[0], randbuf[1]); } void httpfetch_cleanup() diff --git a/src/httpfetch.h b/src/httpfetch.h index c44c8d2d..f57ed878 100644 --- a/src/httpfetch.h +++ b/src/httpfetch.h @@ -116,6 +116,9 @@ bool httpfetch_async_get(unsigned long caller, HTTPFetchResult &fetch_result); // Not required if you want to set caller = HTTPFETCH_DISCARD unsigned long httpfetch_caller_alloc(); +// Allocates a non-predictable caller ID for httpfetch_async +unsigned long httpfetch_caller_alloc_secure(); + // Frees a caller ID allocated with httpfetch_caller_alloc // Note: This can be expensive, because the httpfetch thread is told // to stop any ongoing fetches for the given caller. diff --git a/src/hud.cpp b/src/hud.cpp index d1313089..19feaef7 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "hud.h" #include "settings.h" #include "util/numeric.h" +#include "util/string.h" #include "log.h" #include "gamedef.h" #include "itemdef.h" @@ -32,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "porting.h" #include "fontengine.h" #include "guiscalingfilter.h" +#include "mesh.h" #include #ifdef HAVE_TOUCHSCREENGUI @@ -40,7 +42,8 @@ with this program; if not, write to the Free Software Foundation, Inc., Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr, gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player, - Inventory *inventory) { + Inventory *inventory) +{ this->driver = driver; this->smgr = smgr; this->guienv = guienv; @@ -48,16 +51,15 @@ Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr, this->player = player; this->inventory = inventory; + m_hud_scaling = g_settings->getFloat("hud_scaling"); m_screensize = v2u32(0, 0); m_displaycenter = v2s32(0, 0); m_hotbar_imagesize = floor(HOTBAR_IMAGE_SIZE * porting::getDisplayDensity() + 0.5); - m_hotbar_imagesize *= g_settings->getFloat("hud_scaling"); + m_hotbar_imagesize *= m_hud_scaling; m_padding = m_hotbar_imagesize / 12; - const video::SColor hbar_color(255, 255, 255, 255); - for (unsigned int i=0; i < 4; i++ ){ - hbar_colors[i] = hbar_color; - } + for (unsigned int i = 0; i < 4; i++) + hbar_colors[i] = video::SColor(255, 255, 255, 255); tsrc = gamedef->getTextureSource(); @@ -80,10 +82,46 @@ Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr, use_hotbar_image = false; hotbar_selected_image = ""; use_hotbar_selected_image = false; + + m_selection_mesh = NULL; + m_selection_boxes.clear(); + m_halo_boxes.clear(); + + m_selection_pos = v3f(0.0, 0.0, 0.0); + std::string mode = g_settings->get("node_highlighting"); + m_selection_material.Lighting = false; + + if (g_settings->getBool("enable_shaders")) { + IShaderSource *shdrsrc = gamedef->getShaderSource(); + u16 shader_id = shdrsrc->getShader( + mode == "halo" ? "selection_shader" : "default_shader", 1, 1); + m_selection_material.MaterialType = shdrsrc->getShaderInfo(shader_id).material; + } else { + m_selection_material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; + } + + if (mode == "box") { + m_use_selection_mesh = false; + m_selection_material.Thickness = + rangelim(g_settings->getS16("selectionbox_width"), 1, 5); + } else if (mode == "halo") { + m_use_selection_mesh = true; + m_selection_material.setTexture(0, tsrc->getTextureForMesh("halo.png")); + m_selection_material.setFlag(video::EMF_BACK_FACE_CULLING, true); + } else { + m_selection_material.MaterialType = video::EMT_SOLID; + } } -void Hud::drawItem(const ItemStack &item, const core::rect& rect, bool selected) { +Hud::~Hud() +{ + if (m_selection_mesh) + m_selection_mesh->drop(); +} +void Hud::drawItem(const ItemStack &item, const core::rect& rect, + bool selected) +{ if (selected) { /* draw hihlighting around selected item */ if (use_hotbar_selected_image) { @@ -154,29 +192,35 @@ void Hud::drawItem(const ItemStack &item, const core::rect& rect, bool sele video::SColor bgcolor2(128, 0, 0, 0); if (!use_hotbar_image) driver->draw2DRectangle(bgcolor2, rect, NULL); - drawItemStack(driver, g_fontengine->getFont(), item, rect, NULL, gamedef); + drawItemStack(driver, g_fontengine->getFont(), item, rect, NULL, + gamedef, selected ? IT_ROT_SELECTED : IT_ROT_NONE); } //NOTE: selectitem = 0 -> no selected; selectitem 1-based -void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, - InventoryList *mainlist, u16 selectitem, u16 direction) +void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, + s32 inv_offset, InventoryList *mainlist, u16 selectitem, u16 direction) { #ifdef HAVE_TOUCHSCREENGUI - if ( (g_touchscreengui) && (offset == 0)) + if (g_touchscreengui && inv_offset == 0) g_touchscreengui->resetHud(); #endif s32 height = m_hotbar_imagesize + m_padding * 2; - s32 width = (itemcount - offset) * (m_hotbar_imagesize + m_padding * 2); + s32 width = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2); if (direction == HUD_DIR_TOP_BOTTOM || direction == HUD_DIR_BOTTOM_TOP) { - width = m_hotbar_imagesize + m_padding * 2; - height = (itemcount - offset) * (m_hotbar_imagesize + m_padding * 2); + s32 tmp = height; + height = width; + width = tmp; } // Position of upper left corner of bar - v2s32 pos = upperleftpos; + v2s32 pos = screen_offset; + pos.X *= m_hud_scaling * porting::getDisplayDensity(); + pos.Y *= m_hud_scaling * porting::getDisplayDensity(); + pos += upperleftpos; + // Store hotbar_image in member variable, used by drawItem() if (hotbar_image != player->hotbar_image) { hotbar_image = player->hotbar_image; if (hotbar_image != "") @@ -185,6 +229,7 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, use_hotbar_image = false; } + // Store hotbar_selected_image in member variable, used by drawItem() if (hotbar_selected_image != player->hotbar_selected_image) { hotbar_selected_image = player->hotbar_selected_image; if (hotbar_selected_image != "") @@ -193,10 +238,10 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, use_hotbar_selected_image = false; } - /* draw customized item background */ + // draw customized item background if (use_hotbar_image) { core::rect imgrect2(-m_padding/2, -m_padding/2, - width+m_padding/2, height+m_padding/2); + width+m_padding/2, height+m_padding/2); core::rect rect2 = imgrect2 + pos; video::ITexture *texture = tsrc->getTexture(hotbar_image); core::dimension2di imgsize(texture->getOriginalSize()); @@ -205,29 +250,28 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, NULL, hbar_colors, true); } - for (s32 i = offset; i < itemcount && (size_t)i < mainlist->getSize(); i++) - { - v2s32 steppos; + // Draw items + core::rect imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize); + for (s32 i = inv_offset; i < itemcount && (size_t)i < mainlist->getSize(); i++) { s32 fullimglen = m_hotbar_imagesize + m_padding * 2; - core::rect imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize); - + v2s32 steppos; switch (direction) { - case HUD_DIR_RIGHT_LEFT: - steppos = v2s32(-(m_padding + (i - offset) * fullimglen), m_padding); - break; - case HUD_DIR_TOP_BOTTOM: - steppos = v2s32(m_padding, m_padding + (i - offset) * fullimglen); - break; - case HUD_DIR_BOTTOM_TOP: - steppos = v2s32(m_padding, -(m_padding + (i - offset) * fullimglen)); - break; - default: - steppos = v2s32(m_padding + (i - offset) * fullimglen, m_padding); - break; + case HUD_DIR_RIGHT_LEFT: + steppos = v2s32(-(m_padding + (i - inv_offset) * fullimglen), m_padding); + break; + case HUD_DIR_TOP_BOTTOM: + steppos = v2s32(m_padding, m_padding + (i - inv_offset) * fullimglen); + break; + case HUD_DIR_BOTTOM_TOP: + steppos = v2s32(m_padding, -(m_padding + (i - inv_offset) * fullimglen)); + break; + default: + steppos = v2s32(m_padding + (i - inv_offset) * fullimglen, m_padding); + break; } - drawItem(mainlist->getItem(i), (imgrect + pos + steppos), (i +1) == selectitem ); + drawItem(mainlist->getItem(i), (imgrect + pos + steppos), (i + 1) == selectitem); #ifdef HAVE_TOUCHSCREENGUI if (g_touchscreengui) @@ -237,7 +281,8 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, } -void Hud::drawLuaElements(v3s16 camera_offset) { +void Hud::drawLuaElements(const v3s16 &camera_offset) +{ u32 text_height = g_fontengine->getTextHeight(); irr::gui::IGUIFont* font = g_fontengine->getFont(); for (size_t i = 0; i != player->maxHudId(); i++) { @@ -275,7 +320,7 @@ void Hud::drawLuaElements(v3s16 camera_offset) { (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); - std::wstring text = utf8_to_wide(e->text); + std::wstring text = unescape_enriched(utf8_to_wide(e->text)); core::dimension2d textsize = font->getDimension(text.c_str()); v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2), (e->align.Y - 1.0) * (textsize.Height / 2)); @@ -288,7 +333,8 @@ void Hud::drawLuaElements(v3s16 camera_offset) { break; } case HUD_ELEM_INVENTORY: { InventoryList *inv = inventory->getList(e->text); - drawItems(pos, e->number, 0, inv, e->item, e->dir); + drawItems(pos, v2s32(e->offset.X, e->offset.Y), e->number, 0, + inv, e->item, e->dir); break; } case HUD_ELEM_WAYPOINT: { v3f p_pos = player->getPosition() / BS; @@ -310,11 +356,11 @@ void Hud::drawLuaElements(v3s16 camera_offset) { (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, 200, 2 * text_height); - std::wstring text = utf8_to_wide(e->name); + std::wstring text = unescape_enriched(utf8_to_wide(e->name)); font->draw(text.c_str(), size + pos, color); std::ostringstream os; os << distance << e->text; - text = utf8_to_wide(os.str()); + text = unescape_enriched(utf8_to_wide(os.str())); pos.Y += text_height; font->draw(text.c_str(), size + pos, color); break; } @@ -341,8 +387,7 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture, if (size == v2s32()) { dstd = srcd; } else { - double size_factor = g_settings->getFloat("hud_scaling") * - porting::getDisplayDensity(); + float size_factor = m_hud_scaling * porting::getDisplayDensity(); dstd.Height = size.Y * size_factor; dstd.Width = size.X * size_factor; offset.X *= size_factor; @@ -410,18 +455,19 @@ void Hud::drawHotbar(u16 playeritem) { if ( (float) width / (float) porting::getWindowSize().X <= g_settings->getFloat("hud_hotbar_max_width")) { if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE) { - drawItems(pos, hotbar_itemcount, 0, mainlist, playeritem + 1, 0); + drawItems(pos, v2s32(0, 0), hotbar_itemcount, 0, mainlist, playeritem + 1, 0); } - } - else { + } else { pos.X += width/4; v2s32 secondpos = pos; pos = pos - v2s32(0, m_hotbar_imagesize + m_padding); if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE) { - drawItems(pos, hotbar_itemcount/2, 0, mainlist, playeritem + 1, 0); - drawItems(secondpos, hotbar_itemcount, hotbar_itemcount/2, mainlist, playeritem + 1, 0); + drawItems(pos, v2s32(0, 0), hotbar_itemcount / 2, 0, + mainlist, playeritem + 1, 0); + drawItems(secondpos, v2s32(0, 0), hotbar_itemcount, + hotbar_itemcount / 2, mainlist, playeritem + 1, 0); } } @@ -446,8 +492,8 @@ void Hud::drawHotbar(u16 playeritem) { } -void Hud::drawCrosshair() { - +void Hud::drawCrosshair() +{ if (use_crosshair_image) { video::ITexture *crosshair = tsrc->getTexture("crosshair.png"); v2u32 size = crosshair->getOriginalSize(); @@ -464,48 +510,179 @@ void Hud::drawCrosshair() { } } +void Hud::setSelectionPos(const v3f &pos, const v3s16 &camera_offset) +{ + m_camera_offset = camera_offset; + m_selection_pos = pos; + m_selection_pos_with_offset = pos - intToFloat(camera_offset, BS); +} -void Hud::drawSelectionBoxes(std::vector &hilightboxes) { - for (std::vector::const_iterator - i = hilightboxes.begin(); - i != hilightboxes.end(); ++i) { - driver->draw3DBox(*i, selectionbox_argb); +void Hud::drawSelectionMesh() +{ + if (!m_use_selection_mesh) { + // Draw 3D selection boxes + video::SMaterial oldmaterial = driver->getMaterial2D(); + driver->setMaterial(m_selection_material); + for (std::vector::const_iterator + i = m_selection_boxes.begin(); + i != m_selection_boxes.end(); ++i) { + aabb3f box = aabb3f( + i->MinEdge + m_selection_pos_with_offset, + i->MaxEdge + m_selection_pos_with_offset); + + u32 r = (selectionbox_argb.getRed() * + m_selection_mesh_color.getRed() / 255); + u32 g = (selectionbox_argb.getGreen() * + m_selection_mesh_color.getGreen() / 255); + u32 b = (selectionbox_argb.getBlue() * + m_selection_mesh_color.getBlue() / 255); + driver->draw3DBox(box, video::SColor(255, r, g, b)); + } + driver->setMaterial(oldmaterial); + } else if (m_selection_mesh) { + // Draw selection mesh + video::SMaterial oldmaterial = driver->getMaterial2D(); + driver->setMaterial(m_selection_material); + setMeshColor(m_selection_mesh, m_selection_mesh_color); + scene::IMesh* mesh = cloneMesh(m_selection_mesh); + translateMesh(mesh, m_selection_pos_with_offset); + u32 mc = m_selection_mesh->getMeshBufferCount(); + for (u32 i = 0; i < mc; i++) { + scene::IMeshBuffer *buf = mesh->getMeshBuffer(i); + driver->drawMeshBuffer(buf); + } + mesh->drop(); + driver->setMaterial(oldmaterial); } } +void Hud::updateSelectionMesh(const v3s16 &camera_offset) +{ + m_camera_offset = camera_offset; + if (!m_use_selection_mesh) + return; + + if (m_selection_mesh) { + m_selection_mesh->drop(); + m_selection_mesh = NULL; + } + + if (!m_selection_boxes.size()) { + // No pointed object + return; + } + + // New pointed object, create new mesh. + + // Texture UV coordinates for selection boxes + static f32 texture_uv[24] = { + 0,0,1,1, + 0,0,1,1, + 0,0,1,1, + 0,0,1,1, + 0,0,1,1, + 0,0,1,1 + }; + + // Use single halo box instead of multiple overlapping boxes. + // Temporary solution - problem can be solved with multiple + // rendering targets, or some method to remove inner surfaces. + // Thats because of halo transparency. + + aabb3f halo_box(100.0, 100.0, 100.0, -100.0, -100.0, -100.0); + m_halo_boxes.clear(); + + for (std::vector::iterator + i = m_selection_boxes.begin(); + i != m_selection_boxes.end(); ++i) { + halo_box.addInternalBox(*i); + } + + m_halo_boxes.push_back(halo_box); + m_selection_mesh = convertNodeboxesToMesh( + m_halo_boxes, texture_uv, 0.5); +} void Hud::resizeHotbar() { if (m_screensize != porting::getWindowSize()) { m_hotbar_imagesize = floor(HOTBAR_IMAGE_SIZE * porting::getDisplayDensity() + 0.5); - m_hotbar_imagesize *= g_settings->getFloat("hud_scaling"); + m_hotbar_imagesize *= m_hud_scaling; m_padding = m_hotbar_imagesize / 12; m_screensize = porting::getWindowSize(); m_displaycenter = v2s32(m_screensize.X/2,m_screensize.Y/2); } } +struct MeshTimeInfo { + s32 time; + scene::IMesh *mesh; +}; + void drawItemStack(video::IVideoDriver *driver, gui::IGUIFont *font, const ItemStack &item, const core::rect &rect, const core::rect *clip, - IGameDef *gamedef) + IGameDef *gamedef, + ItemRotationKind rotation_kind) { - if(item.empty()) + static MeshTimeInfo rotation_time_infos[IT_ROT_NONE]; + static bool enable_animations = + g_settings->getBool("inventory_items_animations"); + + if (item.empty()) { + if (rotation_kind < IT_ROT_NONE) { + rotation_time_infos[rotation_kind].mesh = NULL; + } return; + } const ItemDefinition &def = item.getDefinition(gamedef->idef()); - video::ITexture *texture = gamedef->idef()->getInventoryTexture(def.name, gamedef); + scene::IMesh* mesh = gamedef->idef()->getWieldMesh(def.name, gamedef); - // Draw the inventory texture - if(texture != NULL) - { - const video::SColor color(255,255,255,255); - const video::SColor colors[] = {color,color,color,color}; - draw2DImageFilterScaled(driver, texture, rect, - core::rect(core::position2d(0,0), - core::dimension2di(texture->getOriginalSize())), - clip, colors, true); + if (mesh) { + driver->clearZBuffer(); + s32 delta = 0; + if (rotation_kind < IT_ROT_NONE) { + MeshTimeInfo &ti = rotation_time_infos[rotation_kind]; + if (mesh != ti.mesh) { + ti.mesh = mesh; + ti.time = getTimeMs(); + } else { + delta = porting::getDeltaMs(ti.time, getTimeMs()) % 100000; + } + } + core::rect oldViewPort = driver->getViewPort(); + core::matrix4 oldProjMat = driver->getTransform(video::ETS_PROJECTION); + core::matrix4 oldViewMat = driver->getTransform(video::ETS_VIEW); + core::matrix4 ProjMatrix; + ProjMatrix.buildProjectionMatrixOrthoLH(2, 2, -1, 100); + driver->setTransform(video::ETS_PROJECTION, ProjMatrix); + driver->setTransform(video::ETS_VIEW, ProjMatrix); + core::matrix4 matrix; + matrix.makeIdentity(); + + if (enable_animations) { + float timer_f = (float)delta / 5000.0; + matrix.setRotationDegrees(core::vector3df(0, 360 * timer_f, 0)); + } + + driver->setTransform(video::ETS_WORLD, matrix); + driver->setViewPort(rect); + + u32 mc = mesh->getMeshBufferCount(); + for (u32 j = 0; j < mc; ++j) { + scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); + video::SMaterial &material = buf->getMaterial(); + material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; + material.Lighting = false; + driver->setMaterial(material); + driver->drawMeshBuffer(buf); + } + + driver->setTransform(video::ETS_VIEW, oldViewMat); + driver->setTransform(video::ETS_PROJECTION, oldProjMat); + driver->setViewPort(oldViewPort); } if(def.type == ITEM_TOOL && item.wear != 0) diff --git a/src/hud.h b/src/hud.h index 65453aec..7f0fbe7b 100644 --- a/src/hud.h +++ b/src/hud.h @@ -119,31 +119,65 @@ public: bool use_hotbar_image; std::string hotbar_selected_image; bool use_hotbar_selected_image; - v3s16 camera_offset; Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr, gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player, Inventory *inventory); + ~Hud(); void drawHotbar(u16 playeritem); void resizeHotbar(); void drawCrosshair(); - void drawSelectionBoxes(std::vector &hilightboxes); - void drawLuaElements(v3s16 camera_offset); + void drawSelectionMesh(); + void updateSelectionMesh(const v3s16 &camera_offset); + + std::vector *getSelectionBoxes() + { return &m_selection_boxes; } + + void setSelectionPos(const v3f &pos, const v3s16 &camera_offset); + + v3f getSelectionPos() const + { return m_selection_pos; } + + void setSelectionMeshColor(const video::SColor &c) + { m_selection_mesh_color = c; } + + void drawLuaElements(const v3s16 &camera_offset); + private: void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture, s32 count, v2s32 offset, v2s32 size=v2s32()); - void drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, - InventoryList *mainlist, u16 selectitem, u16 direction); + void drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, + s32 inv_offset, InventoryList *mainlist, u16 selectitem, u16 direction); - void drawItem(const ItemStack &item, const core::rect& rect, bool selected); + void drawItem(const ItemStack &item, const core::rect& rect, + bool selected); + float m_hud_scaling; // cached minetest setting + v3s16 m_camera_offset; v2u32 m_screensize; v2s32 m_displaycenter; - s32 m_hotbar_imagesize; - s32 m_padding; + s32 m_hotbar_imagesize; // Takes hud_scaling into account, updated by resizeHotbar() + s32 m_padding; // Takes hud_scaling into account, updated by resizeHotbar() video::SColor hbar_colors[4]; + + std::vector m_selection_boxes; + std::vector m_halo_boxes; + v3f m_selection_pos; + v3f m_selection_pos_with_offset; + + scene::IMesh* m_selection_mesh; + video::SColor m_selection_mesh_color; + video::SMaterial m_selection_material; + bool m_use_selection_mesh; +}; + +enum ItemRotationKind { + IT_ROT_SELECTED, + IT_ROT_HOVERED, + IT_ROT_DRAGGED, + IT_ROT_NONE, // Must be last, also serves as number }; void drawItemStack(video::IVideoDriver *driver, @@ -151,8 +185,8 @@ void drawItemStack(video::IVideoDriver *driver, const ItemStack &item, const core::rect &rect, const core::rect *clip, - IGameDef *gamedef); - + IGameDef *gamedef, + ItemRotationKind rotation_kind); #endif diff --git a/src/inventory.cpp b/src/inventory.cpp index e89993e6..cb8faecb 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "log.h" #include "itemdef.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "content_mapnode.h" // For loading legacy MaterialItems #include "nameidmapping.h" // For loading legacy MaterialItems #include "util/serialize.h" @@ -218,7 +218,7 @@ void ItemStack::deSerialize(std::istream &is, IItemDefManager *itemdef) Strfnd fnd(all); fnd.next("\""); // If didn't skip to end, we have ""s - if(!fnd.atend()){ + if(!fnd.at_end()){ name = fnd.next("\""); } else { // No luck, just read a word then fnd.start(all); @@ -246,7 +246,7 @@ void ItemStack::deSerialize(std::istream &is, IItemDefManager *itemdef) Strfnd fnd(all); fnd.next("\""); // If didn't skip to end, we have ""s - if(!fnd.atend()){ + if(!fnd.at_end()){ name = fnd.next("\""); } else { // No luck, just read a word then fnd.start(all); @@ -335,8 +335,9 @@ ItemStack ItemStack::addItem(const ItemStack &newitem_, *this = newitem; newitem.clear(); } - // If item name differs, bail out - else if(name != newitem.name) + // If item name or metadata differs, bail out + else if (name != newitem.name + || metadata != newitem.metadata) { // cannot be added } @@ -374,8 +375,9 @@ bool ItemStack::itemFits(const ItemStack &newitem_, { newitem.clear(); } - // If item name differs, bail out - else if(name != newitem.name) + // If item name or metadata differs, bail out + else if (name != newitem.name + || metadata != newitem.metadata) { // cannot be added } diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp index 5b29b6f1..3d851349 100644 --- a/src/inventorymanager.cpp +++ b/src/inventorymanager.cpp @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "settings.h" #include "craftdef.h" #include "rollback_interface.h" -#include "strfnd.h" +#include "util/strfnd.h" #define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")" diff --git a/src/itemdef.cpp b/src/itemdef.cpp index 60a7dc64..a618ad63 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -332,7 +332,6 @@ public: return cc; ITextureSource *tsrc = gamedef->getTextureSource(); - INodeDefManager *nodedef = gamedef->getNodeDefManager(); const ItemDefinition &def = get(name); // Create new ClientCached @@ -343,103 +342,11 @@ public: if(def.inventory_image != "") cc->inventory_texture = tsrc->getTexture(def.inventory_image); - // Additional processing for nodes: - // - Create a wield mesh if WieldMeshSceneNode can't render - // the node on its own. - // - If inventory_texture isn't set yet, create one using - // render-to-texture. - if (def.type == ITEM_NODE) { - // Get node properties - content_t id = nodedef->getId(name); - const ContentFeatures &f = nodedef->get(id); + ItemStack item = ItemStack(); + item.name = def.name; - bool need_rtt_mesh = cc->inventory_texture == NULL; - - // Keep this in sync with WieldMeshSceneNode::setItem() - bool need_wield_mesh = - !(f.mesh_ptr[0] || - f.drawtype == NDT_NORMAL || - f.drawtype == NDT_ALLFACES || - f.drawtype == NDT_AIRLIKE); - - scene::IMesh *node_mesh = NULL; - - if (need_rtt_mesh || need_wield_mesh) { - u8 param1 = 0; - if (f.param_type == CPT_LIGHT) - param1 = 0xee; - - /* - Make a mesh from the node - */ - MeshMakeData mesh_make_data(gamedef, false); - u8 param2 = 0; - if (f.param_type_2 == CPT2_WALLMOUNTED) - param2 = 1; - MapNode mesh_make_node(id, param1, param2); - mesh_make_data.fillSingleNode(&mesh_make_node); - MapBlockMesh mapblock_mesh(&mesh_make_data, v3s16(0, 0, 0)); - node_mesh = mapblock_mesh.getMesh(); - node_mesh->grab(); - video::SColor c(255, 255, 255, 255); - setMeshColor(node_mesh, c); - - // scale and translate the mesh so it's a - // unit cube centered on the origin - scaleMesh(node_mesh, v3f(1.0/BS, 1.0/BS, 1.0/BS)); - translateMesh(node_mesh, v3f(-1.0, -1.0, -1.0)); - } - - /* - Draw node mesh into a render target texture - */ - if (need_rtt_mesh) { - TextureFromMeshParams params; - params.mesh = node_mesh; - params.dim.set(64, 64); - params.rtt_texture_name = "INVENTORY_" - + def.name + "_RTT"; - params.delete_texture_on_shutdown = true; - params.camera_position.set(0, 1.0, -1.5); - params.camera_position.rotateXZBy(45); - params.camera_lookat.set(0, 0, 0); - // Set orthogonal projection - params.camera_projection_matrix.buildProjectionMatrixOrthoLH( - 1.65, 1.65, 0, 100); - params.ambient_light.set(1.0, 0.2, 0.2, 0.2); - params.light_position.set(10, 100, -50); - params.light_color.set(1.0, 0.5, 0.5, 0.5); - params.light_radius = 1000; - -#ifdef __ANDROID__ - params.camera_position.set(0, -1.0, -1.5); - params.camera_position.rotateXZBy(45); - params.light_position.set(10, -100, -50); -#endif - cc->inventory_texture = - tsrc->generateTextureFromMesh(params); - - // render-to-target didn't work - if (cc->inventory_texture == NULL) { - cc->inventory_texture = - tsrc->getTexture(f.tiledef[0].name); - } - } - - /* - Use the node mesh as the wield mesh - */ - if (need_wield_mesh) { - cc->wield_mesh = node_mesh; - cc->wield_mesh->grab(); - - // no way reference count can be smaller than 2 in this place! - assert(cc->wield_mesh->getReferenceCount() >= 2); - } - - if (node_mesh) - node_mesh->drop(); - } + scene::IMesh *mesh = getItemMesh(gamedef, item); + cc->wield_mesh = mesh; // Put in cache m_clientcached.set(name, cc); diff --git a/src/localplayer.cpp b/src/localplayer.cpp index e5546447..507f3198 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -42,6 +42,7 @@ LocalPlayer::LocalPlayer(IGameDef *gamedef, const char *name): last_pitch(0), last_yaw(0), last_keyPressed(0), + camera_impact(0.f), last_animation(NO_ANIM), hotbar_image(""), hotbar_selected_image(""), @@ -182,7 +183,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, */ if (control.sneak && m_sneak_node_exists && !(fly_allowed && g_settings->getBool("free_move")) && !in_liquid && - physics_override_sneak) { + physics_override_sneak && !got_teleported) { f32 maxd = 0.5 * BS + sneak_max; v3f lwn_f = intToFloat(m_sneak_node, BS); position.X = rangelim(position.X, lwn_f.X-maxd, lwn_f.X+maxd); @@ -203,18 +204,21 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, } } + if (got_teleported) + got_teleported = false; + // this shouldn't be hardcoded but transmitted from server float player_stepheight = touching_ground ? (BS*0.6) : (BS*0.2); #ifdef __ANDROID__ - player_stepheight += (0.5 * BS); + player_stepheight += (0.6 * BS); #endif v3f accel_f = v3f(0,0,0); collisionMoveResult result = collisionMoveSimple(env, m_gamedef, - pos_max_d, m_collisionbox, player_stepheight, dtime, - position, m_speed, accel_f); + pos_max_d, m_collisionbox, player_stepheight, dtime, + &position, &m_speed, accel_f); /* If the player's feet touch the topside of any node, this is @@ -309,7 +313,8 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, if (sneak_node_found) { f32 cb_max = 0; MapNode n = map->getNodeNoEx(m_sneak_node); - std::vector nodeboxes = n.getCollisionBoxes(nodemgr); + std::vector nodeboxes; + n.getCollisionBoxes(nodemgr, &nodeboxes); for (std::vector::iterator it = nodeboxes.begin(); it != nodeboxes.end(); ++it) { aabb3f box = *it; @@ -621,3 +626,36 @@ v3s16 LocalPlayer::getStandingNodePos() return floatToInt(getPosition() - v3f(0, BS, 0), BS); } +// Horizontal acceleration (X and Z), Y direction is ignored +void LocalPlayer::accelerateHorizontal(const v3f &target_speed, const f32 max_increase) +{ + if (max_increase == 0) + return; + + v3f d_wanted = target_speed - m_speed; + d_wanted.Y = 0; + f32 dl = d_wanted.getLength(); + if (dl > max_increase) + dl = max_increase; + + v3f d = d_wanted.normalize() * dl; + + m_speed.X += d.X; + m_speed.Z += d.Z; +} + +// Vertical acceleration (Y), X and Z directions are ignored +void LocalPlayer::accelerateVertical(const v3f &target_speed, const f32 max_increase) +{ + if (max_increase == 0) + return; + + f32 d_wanted = target_speed.Y - m_speed.Y; + if (d_wanted > max_increase) + d_wanted = max_increase; + else if (d_wanted < -max_increase) + d_wanted = -max_increase; + + m_speed.Y += d_wanted; +} + diff --git a/src/localplayer.h b/src/localplayer.h index 40a7f089..3ae0c4e5 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -45,7 +45,7 @@ public: bool isAttached; v3f overridePosition; - + void move(f32 dtime, Environment *env, f32 pos_max_d); void move(f32 dtime, Environment *env, f32 pos_max_d, std::vector *collision_info); @@ -81,6 +81,9 @@ public: } private: + void accelerateHorizontal(const v3f &target_speed, const f32 max_increase); + void accelerateVertical(const v3f &target_speed, const f32 max_increase); + // This is used for determining the sneaking range v3s16 m_sneak_node; // Whether the player is allowed to sneak diff --git a/src/log.cpp b/src/log.cpp index 600e715c..589cfd90 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -34,9 +34,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include +const int BUFFER_LENGTH = 256; + class StringBuffer : public std::streambuf { public: - StringBuffer() {} + StringBuffer() { + buffer_index = 0; + } int overflow(int c); virtual void flush(const std::string &buf) = 0; @@ -44,7 +48,8 @@ public: void push_back(char c); private: - std::string buffer; + char buffer[BUFFER_LENGTH]; + int buffer_index; }; @@ -338,11 +343,18 @@ std::streamsize StringBuffer::xsputn(const char *s, std::streamsize n) void StringBuffer::push_back(char c) { if (c == '\n' || c == '\r') { - if (!buffer.empty()) - flush(buffer); - buffer.clear(); + if (buffer_index) + flush(std::string(buffer, buffer_index)); + buffer_index = 0; } else { - buffer.push_back(c); + int index = buffer_index; + buffer[index++] = c; + if (index >= BUFFER_LENGTH) { + flush(std::string(buffer, buffer_index)); + buffer_index = 0; + } else { + buffer_index = index; + } } } diff --git a/src/main.cpp b/src/main.cpp index 5046181b..1b95a9f1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,11 +18,11 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #ifdef _MSC_VER -#ifndef SERVER // Dedicated server isn't linked with Irrlicht - #pragma comment(lib, "Irrlicht.lib") - // This would get rid of the console window - //#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") -#endif + #ifndef SERVER // Dedicated server isn't linked with Irrlicht + #pragma comment(lib, "Irrlicht.lib") + // This would get rid of the console window + //#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") + #endif #pragma comment(lib, "zlibwapi.lib") #pragma comment(lib, "Shell32.lib") #endif @@ -59,7 +59,14 @@ with this program; if not, write to the Free Software Foundation, Inc., #endif #ifdef HAVE_TOUCHSCREENGUI -#include "touchscreengui.h" + #include "touchscreengui.h" +#endif + +#if !defined(SERVER) && \ + (IRRLICHT_VERSION_MAJOR == 1) && \ + (IRRLICHT_VERSION_MINOR == 8) && \ + (IRRLICHT_VERSION_REVISION == 2) + #error "Irrlicht 1.8.2 is known to be broken - please update Irrlicht to version >= 1.8.3" #endif #define DEBUGFILE "debug.txt" @@ -157,7 +164,13 @@ int main(int argc, char *argv[]) setup_log_params(cmd_args); porting::signal_handler_init(); + +#ifdef __ANDROID__ + porting::initAndroid(); + porting::initializePathsAndroid(); +#else porting::initializePaths(); +#endif if (!create_userdata_path()) { errorstream << "Cannot create user data directory" << std::endl; @@ -331,7 +344,8 @@ static void print_allowed_options(const OptionList &allowed_options) static void print_version() { - std::cout << PROJECT_NAME_C " " << g_version_hash << std::endl; + std::cout << PROJECT_NAME_C " " << g_version_hash + << " (" << porting::getPlatformName() << ")" << std::endl; #ifndef SERVER std::cout << "Using Irrlicht " << IRRLICHT_SDK_VERSION << std::endl; #endif @@ -415,9 +429,6 @@ static bool create_userdata_path() bool success; #ifdef __ANDROID__ - porting::initAndroid(); - - porting::setExternalStorageDir(porting::jnienv); if (!fs::PathExists(porting::path_user)) { success = fs::CreateDir(porting::path_user); } else { @@ -429,9 +440,6 @@ static bool create_userdata_path() success = fs::CreateDir(porting::path_user); #endif - infostream << "path_share = " << porting::path_share << std::endl; - infostream << "path_user = " << porting::path_user << std::endl; - return success; } diff --git a/src/mainmenumanager.h b/src/mainmenumanager.h index 6f8aa913..17133b16 100644 --- a/src/mainmenumanager.h +++ b/src/mainmenumanager.h @@ -47,9 +47,9 @@ extern gui::IGUIStaticText *guiroot; class MainMenuManager : public IMenuManager { public: - virtual void createdMenu(GUIModalMenu *menu) + virtual void createdMenu(gui::IGUIElement *menu) { - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { @@ -61,13 +61,13 @@ public: m_stack.push_back(menu); } - virtual void deletingMenu(GUIModalMenu *menu) + virtual void deletingMenu(gui::IGUIElement *menu) { // Remove all entries if there are duplicates bool removed_entry; do{ removed_entry = false; - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { @@ -91,10 +91,10 @@ public: // Returns true to prevent further processing virtual bool preprocessEvent(const SEvent& event) { - if(!m_stack.empty()) - return m_stack.back()->preprocessEvent(event); - else + if (m_stack.empty()) return false; + GUIModalMenu *mm = dynamic_cast(m_stack.back()); + return mm && mm->preprocessEvent(event); } u32 menuCount() @@ -104,16 +104,17 @@ public: bool pausesGame() { - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { - if((*i)->pausesGame()) + GUIModalMenu *mm = dynamic_cast(*i); + if (mm && mm->pausesGame()) return true; } return false; } - std::list m_stack; + std::list m_stack; }; extern MainMenuManager g_menumgr; diff --git a/src/map.cpp b/src/map.cpp index ceebd40a..66fabaf8 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1614,7 +1614,7 @@ s32 Map::transforming_liquid_size() { return m_transforming_liquid.size(); } -void Map::transformLiquids(std::map & modified_blocks) +void Map::transformLiquids(std::map &modified_blocks) { INodeDefManager *nodemgr = m_gamedef->ndef(); @@ -1632,7 +1632,7 @@ void Map::transformLiquids(std::map & modified_blocks) std::deque must_reflow; // List of MapBlocks that will require a lighting update (due to lava) - std::map lighting_modified_blocks; + std::map lighting_modified_blocks; u32 liquid_loop_max = g_settings->getS32("liquid_loop_max"); u32 loop_max = liquid_loop_max; @@ -1654,10 +1654,10 @@ void Map::transformLiquids(std::map & modified_blocks) loop_max *= m_transforming_liquid_loop_count_multiplier; #endif - while(m_transforming_liquid.size() != 0) + while (m_transforming_liquid.size() != 0) { // This should be done here so that it is done when continue is used - if(loopcount >= initial_size || loopcount >= loop_max) + if (loopcount >= initial_size || loopcount >= loop_max) break; loopcount++; @@ -1674,21 +1674,24 @@ void Map::transformLiquids(std::map & modified_blocks) */ s8 liquid_level = -1; content_t liquid_kind = CONTENT_IGNORE; - LiquidType liquid_type = nodemgr->get(n0).liquid_type; + content_t floodable_node = CONTENT_AIR; + const ContentFeatures &cf = nodemgr->get(n0); + LiquidType liquid_type = cf.liquid_type; switch (liquid_type) { case LIQUID_SOURCE: liquid_level = LIQUID_LEVEL_SOURCE; - liquid_kind = nodemgr->getId(nodemgr->get(n0).liquid_alternative_flowing); + liquid_kind = nodemgr->getId(cf.liquid_alternative_flowing); break; case LIQUID_FLOWING: liquid_level = (n0.param2 & LIQUID_LEVEL_MASK); liquid_kind = n0.getContent(); break; case LIQUID_NONE: - // if this is an air node, it *could* be transformed into a liquid. otherwise, - // continue with the next node. - if (n0.getContent() != CONTENT_AIR) + // if this node is 'floodable', it *could* be transformed + // into a liquid, otherwise, continue with the next node. + if (!cf.floodable) continue; + floodable_node = n0.getContent(); liquid_kind = CONTENT_AIR; break; } @@ -1718,9 +1721,10 @@ void Map::transformLiquids(std::map & modified_blocks) } v3s16 npos = p0 + dirs[i]; NodeNeighbor nb(getNodeNoEx(npos), nt, npos); + const ContentFeatures &cfnb = nodemgr->get(nb.n); switch (nodemgr->get(nb.n.getContent()).liquid_type) { case LIQUID_NONE: - if (nb.n.getContent() == CONTENT_AIR) { + if (cfnb.floodable) { airs[num_airs++] = nb; // if the current node is a water source the neighbor // should be enqueded for transformation regardless of whether the @@ -1728,18 +1732,21 @@ void Map::transformLiquids(std::map & modified_blocks) if (nb.t != NEIGHBOR_UPPER && liquid_type != LIQUID_NONE) m_transforming_liquid.push_back(npos); // if the current node happens to be a flowing node, it will start to flow down here. - if (nb.t == NEIGHBOR_LOWER) { + if (nb.t == NEIGHBOR_LOWER) flowing_down = true; - } } else { neutrals[num_neutrals++] = nb; + // If neutral below is ignore prevent water spreading outwards + if (nb.t == NEIGHBOR_LOWER && + nb.n.getContent() == CONTENT_IGNORE) + flowing_down = true; } break; case LIQUID_SOURCE: // if this node is not (yet) of a liquid type, choose the first liquid type we encounter if (liquid_kind == CONTENT_AIR) - liquid_kind = nodemgr->getId(nodemgr->get(nb.n).liquid_alternative_flowing); - if (nodemgr->getId(nodemgr->get(nb.n).liquid_alternative_flowing) != liquid_kind) { + liquid_kind = nodemgr->getId(cfnb.liquid_alternative_flowing); + if (nodemgr->getId(cfnb.liquid_alternative_flowing) != liquid_kind) { neutrals[num_neutrals++] = nb; } else { // Do not count bottom source, it will screw things up @@ -1750,8 +1757,8 @@ void Map::transformLiquids(std::map & modified_blocks) case LIQUID_FLOWING: // if this node is not (yet) of a liquid type, choose the first liquid type we encounter if (liquid_kind == CONTENT_AIR) - liquid_kind = nodemgr->getId(nodemgr->get(nb.n).liquid_alternative_flowing); - if (nodemgr->getId(nodemgr->get(nb.n).liquid_alternative_flowing) != liquid_kind) { + liquid_kind = nodemgr->getId(cfnb.liquid_alternative_flowing); + if (nodemgr->getId(cfnb.liquid_alternative_flowing) != liquid_kind) { neutrals[num_neutrals++] = nb; } else { flows[num_flows++] = nb; @@ -1770,8 +1777,8 @@ void Map::transformLiquids(std::map & modified_blocks) s8 max_node_level = -1; u8 range = nodemgr->get(liquid_kind).liquid_range; - if (range > LIQUID_LEVEL_MAX+1) - range = LIQUID_LEVEL_MAX+1; + if (range > LIQUID_LEVEL_MAX + 1) + range = LIQUID_LEVEL_MAX + 1; if ((num_sources >= 2 && nodemgr->get(liquid_kind).liquid_renewable) || liquid_type == LIQUID_SOURCE) { // liquid_kind will be set to either the flowing alternative of the node (if it's a liquid) @@ -1780,10 +1787,11 @@ void Map::transformLiquids(std::map & modified_blocks) new_node_content = nodemgr->getId(nodemgr->get(liquid_kind).liquid_alternative_source); } else if (num_sources >= 1 && sources[0].t != NEIGHBOR_LOWER) { // liquid_kind is set properly, see above - new_node_content = liquid_kind; max_node_level = new_node_level = LIQUID_LEVEL_MAX; - if (new_node_level < (LIQUID_LEVEL_MAX+1-range)) - new_node_content = CONTENT_AIR; + if (new_node_level >= (LIQUID_LEVEL_MAX + 1 - range)) + new_node_content = liquid_kind; + else + new_node_content = floodable_node; } else { // no surrounding sources, so get the maximum level that can flow into this node for (u16 i = 0; i < num_flows; i++) { @@ -1794,16 +1802,16 @@ void Map::transformLiquids(std::map & modified_blocks) max_node_level = LIQUID_LEVEL_MAX; if (nb_liquid_level + WATER_DROP_BOOST < LIQUID_LEVEL_MAX) max_node_level = nb_liquid_level + WATER_DROP_BOOST; - } else if (nb_liquid_level > max_node_level) + } else if (nb_liquid_level > max_node_level) { max_node_level = nb_liquid_level; + } break; case NEIGHBOR_LOWER: break; case NEIGHBOR_SAME_LEVEL: if ((flows[i].n.param2 & LIQUID_FLOW_DOWN_MASK) != LIQUID_FLOW_DOWN_MASK && - nb_liquid_level > 0 && nb_liquid_level - 1 > max_node_level) { + nb_liquid_level > 0 && nb_liquid_level - 1 > max_node_level) max_node_level = nb_liquid_level - 1; - } break; } } @@ -1821,23 +1829,25 @@ void Map::transformLiquids(std::map & modified_blocks) new_node_level = liquid_level + 1; if (new_node_level != max_node_level) must_reflow.push_back(p0); - } else + } else { new_node_level = max_node_level; + } - if (max_node_level >= (LIQUID_LEVEL_MAX+1-range)) + if (max_node_level >= (LIQUID_LEVEL_MAX + 1 - range)) new_node_content = liquid_kind; else - new_node_content = CONTENT_AIR; + new_node_content = floodable_node; } /* check if anything has changed. if not, just continue with the next node. */ - if (new_node_content == n0.getContent() && (nodemgr->get(n0.getContent()).liquid_type != LIQUID_FLOWING || - ((n0.param2 & LIQUID_LEVEL_MASK) == (u8)new_node_level && - ((n0.param2 & LIQUID_FLOW_DOWN_MASK) == LIQUID_FLOW_DOWN_MASK) - == flowing_down))) + if (new_node_content == n0.getContent() && + (nodemgr->get(n0.getContent()).liquid_type != LIQUID_FLOWING || + ((n0.param2 & LIQUID_LEVEL_MASK) == (u8)new_node_level && + ((n0.param2 & LIQUID_FLOW_DOWN_MASK) == LIQUID_FLOW_DOWN_MASK) + == flowing_down))) continue; @@ -1857,11 +1867,10 @@ void Map::transformLiquids(std::map & modified_blocks) // Find out whether there is a suspect for this action std::string suspect; - if(m_gamedef->rollback()) { + if (m_gamedef->rollback()) suspect = m_gamedef->rollback()->getSuspect(p0, 83, 1); - } - if(m_gamedef->rollback() && !suspect.empty()){ + if (m_gamedef->rollback() && !suspect.empty()) { // Blame suspect RollbackScopeActor rollback_scope(m_gamedef->rollback(), suspect, true); // Get old node for rollback @@ -1880,10 +1889,10 @@ void Map::transformLiquids(std::map & modified_blocks) v3s16 blockpos = getNodeBlockPos(p0); MapBlock *block = getBlockNoCreateNoEx(blockpos); - if(block != NULL) { + if (block != NULL) { modified_blocks[blockpos] = block; // If new or old node emits light, MapBlock requires lighting update - if(nodemgr->get(n0).light_source != 0 || + if (nodemgr->get(n0).light_source != 0 || nodemgr->get(n00).light_source != 0) lighting_modified_blocks[block->getPos()] = block; } diff --git a/src/mapblock_mesh.cpp b/src/mapblock_mesh.cpp index 6ae9dec1..e1b04427 100644 --- a/src/mapblock_mesh.cpp +++ b/src/mapblock_mesh.cpp @@ -33,26 +33,26 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/directiontables.h" #include -static void applyFacesShading(video::SColor& color, float factor) +static void applyFacesShading(video::SColor &color, const float factor) { - color.setRed(core::clamp(core::round32(color.getRed()*factor), 0, 255)); - color.setGreen(core::clamp(core::round32(color.getGreen()*factor), 0, 255)); + color.setRed(core::clamp(core::round32(color.getRed() * factor), 0, 255)); + color.setGreen(core::clamp(core::round32(color.getGreen() * factor), 0, 255)); } /* MeshMakeData */ -MeshMakeData::MeshMakeData(IGameDef *gamedef, bool use_shaders): +MeshMakeData::MeshMakeData(IGameDef *gamedef, bool use_shaders, + bool use_tangent_vertices): m_vmanip(), m_blockpos(-1337,-1337,-1337), m_crack_pos_relative(-1337, -1337, -1337), - m_highlighted_pos_relative(-1337, -1337, -1337), m_smooth_lighting(false), m_show_hud(false), - m_highlight_mesh_color(255, 255, 255, 255), m_gamedef(gamedef), - m_use_shaders(use_shaders) + m_use_shaders(use_shaders), + m_use_tangent_vertices(use_tangent_vertices) {} void MeshMakeData::fill(MapBlock *block) @@ -138,12 +138,6 @@ void MeshMakeData::setCrack(int crack_level, v3s16 crack_pos) m_crack_pos_relative = crack_pos - m_blockpos*MAP_BLOCKSIZE; } -void MeshMakeData::setHighlighted(v3s16 highlighted_pos, bool show_hud) -{ - m_show_hud = show_hud; - m_highlighted_pos_relative = highlighted_pos - m_blockpos*MAP_BLOCKSIZE; -} - void MeshMakeData::setSmoothLighting(bool smooth_lighting) { m_smooth_lighting = smooth_lighting; @@ -891,8 +885,9 @@ static void updateFastFaceRow( && next_lights[3] == lights[3] && next_tile == tile && tile.rotation == 0 - && next_light_source == light_source) - { + && next_light_source == light_source + && (tile.material_flags & MATERIAL_FLAG_TILEABLE_HORIZONTAL) + && (tile.material_flags & MATERIAL_FLAG_TILEABLE_VERTICAL)) { next_is_different = false; } else{ @@ -1031,18 +1026,19 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): m_mesh(new scene::SMesh()), m_minimap_mapblock(NULL), m_gamedef(data->m_gamedef), + m_driver(m_gamedef->tsrc()->getDevice()->getVideoDriver()), m_tsrc(m_gamedef->getTextureSource()), m_shdrsrc(m_gamedef->getShaderSource()), m_animation_force_timer(0), // force initial animation m_last_crack(-1), m_crack_materials(), - m_highlighted_materials(), m_last_daynight_ratio((u32) -1), m_daynight_diffs() { m_enable_shaders = data->m_use_shaders; - m_enable_highlighting = g_settings->getBool("enable_node_highlighting"); - + m_use_tangent_vertices = data->m_use_tangent_vertices; + m_enable_vbo = g_settings->getBool("enable_vbo"); + if (g_settings->getBool("enable_minimap")) { m_minimap_mapblock = new MinimapMapblock; m_minimap_mapblock->getMinimapNodes( @@ -1074,15 +1070,14 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): Convert FastFaces to MeshCollector */ - MeshCollector collector; + MeshCollector collector(m_use_tangent_vertices); { // avg 0ms (100ms spikes when loading textures the first time) // (NOTE: probably outdated) //TimeTaker timer2("MeshCollector building"); - for(u32 i=0; im_highlight_mesh_color; - /* Convert MeshCollector to SMesh */ @@ -1162,38 +1155,43 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): p.tile.texture = animation_frame.texture; } - if(m_enable_highlighting && p.tile.material_flags & MATERIAL_FLAG_HIGHLIGHTED) - m_highlighted_materials.push_back(i); - - for(u32 j = 0; j < p.vertices.size(); j++) - { - video::S3DVertexTangents *vertex = &p.vertices[j]; + u32 vertex_count = m_use_tangent_vertices ? + p.tangent_vertices.size() : p.vertices.size(); + for (u32 j = 0; j < vertex_count; j++) { + v3f *Normal; + video::SColor *vc; + if (m_use_tangent_vertices) { + vc = &p.tangent_vertices[j].Color; + Normal = &p.tangent_vertices[j].Normal; + } else { + vc = &p.vertices[j].Color; + Normal = &p.vertices[j].Normal; + } // Note applyFacesShading second parameter is precalculated sqrt // value for speed improvement // Skip it for lightsources and top faces. - video::SColor &vc = vertex->Color; - if (!vc.getBlue()) { - if (vertex->Normal.Y < -0.5) { - applyFacesShading (vc, 0.447213); - } else if (vertex->Normal.X > 0.5) { - applyFacesShading (vc, 0.670820); - } else if (vertex->Normal.X < -0.5) { - applyFacesShading (vc, 0.670820); - } else if (vertex->Normal.Z > 0.5) { - applyFacesShading (vc, 0.836660); - } else if (vertex->Normal.Z < -0.5) { - applyFacesShading (vc, 0.836660); + if (!vc->getBlue()) { + if (Normal->Y < -0.5) { + applyFacesShading(*vc, 0.447213); + } else if (Normal->X > 0.5) { + applyFacesShading(*vc, 0.670820); + } else if (Normal->X < -0.5) { + applyFacesShading(*vc, 0.670820); + } else if (Normal->Z > 0.5) { + applyFacesShading(*vc, 0.836660); + } else if (Normal->Z < -0.5) { + applyFacesShading(*vc, 0.836660); } } - if(!m_enable_shaders) - { + if (!m_enable_shaders) { // - Classic lighting (shaders handle this by themselves) // Set initial real color and store for later updates - u8 day = vc.getRed(); - u8 night = vc.getGreen(); - finalColorBlend(vc, day, night, 1000); - if(day != night) + u8 day = vc->getRed(); + u8 night = vc->getGreen(); + finalColorBlend(*vc, day, night, 1000); + if (day != night) { m_daynight_diffs[i][j] = std::make_pair(day, night); + } } } @@ -1205,46 +1203,57 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): material.setFlag(video::EMF_FOG_ENABLE, true); material.setTexture(0, p.tile.texture); - if (p.tile.material_flags & MATERIAL_FLAG_HIGHLIGHTED) { - material.MaterialType = video::EMT_TRANSPARENT_ADD_COLOR; - } else { - if (m_enable_shaders) { - material.MaterialType = m_shdrsrc->getShaderInfo(p.tile.shader_id).material; - p.tile.applyMaterialOptionsWithShaders(material); - if (p.tile.normal_texture) { - material.setTexture(1, p.tile.normal_texture); - } - material.setTexture(2, p.tile.flags_texture); - } else { - p.tile.applyMaterialOptions(material); + if (m_enable_shaders) { + material.MaterialType = m_shdrsrc->getShaderInfo(p.tile.shader_id).material; + p.tile.applyMaterialOptionsWithShaders(material); + if (p.tile.normal_texture) { + material.setTexture(1, p.tile.normal_texture); } + material.setTexture(2, p.tile.flags_texture); + } else { + p.tile.applyMaterialOptions(material); } - // Create meshbuffer - scene::SMeshBufferTangents *buf = new scene::SMeshBufferTangents(); - // Set material - buf->Material = material; - // Add to mesh - m_mesh->addMeshBuffer(buf); - // Mesh grabbed it - buf->drop(); - buf->append(&p.vertices[0], p.vertices.size(), - &p.indices[0], p.indices.size()); -} - m_camera_offset = camera_offset; + scene::SMesh *mesh = (scene::SMesh *)m_mesh; + + // Create meshbuffer, add to mesh + if (m_use_tangent_vertices) { + scene::SMeshBufferTangents *buf = new scene::SMeshBufferTangents(); + // Set material + buf->Material = material; + // Add to mesh + mesh->addMeshBuffer(buf); + // Mesh grabbed it + buf->drop(); + buf->append(&p.tangent_vertices[0], p.tangent_vertices.size(), + &p.indices[0], p.indices.size()); + } else { + scene::SMeshBuffer *buf = new scene::SMeshBuffer(); + // Set material + buf->Material = material; + // Add to mesh + mesh->addMeshBuffer(buf); + // Mesh grabbed it + buf->drop(); + buf->append(&p.vertices[0], p.vertices.size(), + &p.indices[0], p.indices.size()); + } + } /* Do some stuff to the mesh */ + m_camera_offset = camera_offset; + translateMesh(m_mesh, + intToFloat(data->m_blockpos * MAP_BLOCKSIZE - camera_offset, BS)); - translateMesh(m_mesh, intToFloat(data->m_blockpos * MAP_BLOCKSIZE - camera_offset, BS)); - - if (m_enable_shaders) { - scene::IMeshManipulator* meshmanip = m_gamedef->getSceneManager()->getMeshManipulator(); + if (m_use_tangent_vertices) { + scene::IMeshManipulator* meshmanip = + m_gamedef->getSceneManager()->getMeshManipulator(); meshmanip->recalculateTangents(m_mesh, true, false, false); } - if(m_mesh) + if (m_mesh) { #if 0 // Usually 1-700 faces and 1-7 materials @@ -1254,14 +1263,9 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): #endif // Use VBO for mesh (this just would set this for ever buffer) - // This will lead to infinite memory usage because or irrlicht. - //m_mesh->setHardwareMappingHint(scene::EHM_STATIC); - - /* - NOTE: If that is enabled, some kind of a queue to the main - thread should be made which would call irrlicht to delete - the hardware buffer and then delete the mesh - */ + if (m_enable_vbo) { + m_mesh->setHardwareMappingHint(scene::EHM_STATIC); + } } //std::cout<<"added "<getMeshBufferCount(); i++) { + scene::IMeshBuffer *buf = m_mesh->getMeshBuffer(i); + m_driver->removeHardwareBuffer(buf); + } + } m_mesh->drop(); m_mesh = NULL; delete m_minimap_mapblock; @@ -1356,12 +1365,16 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat // Day-night transition if(!m_enable_shaders && (daynight_ratio != m_last_daynight_ratio)) { + // Force reload mesh to VBO + if (m_enable_vbo) { + m_mesh->setDirty(); + } for(std::map > >::iterator i = m_daynight_diffs.begin(); i != m_daynight_diffs.end(); ++i) { scene::IMeshBuffer *buf = m_mesh->getMeshBuffer(i->first); - video::S3DVertexTangents *vertices = (video::S3DVertexTangents *)buf->getVertices(); + video::S3DVertex *vertices = (video::S3DVertex *)buf->getVertices(); for(std::map >::iterator j = i->second.begin(); j != i->second.end(); ++j) @@ -1374,30 +1387,6 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat m_last_daynight_ratio = daynight_ratio; } - // Node highlighting - if (m_enable_highlighting) { - u8 day = m_highlight_mesh_color.getRed(); - u8 night = m_highlight_mesh_color.getGreen(); - video::SColor hc; - finalColorBlend(hc, day, night, daynight_ratio); - float sin_r = 0.07 * sin(1.5 * time); - float sin_g = 0.07 * sin(1.5 * time + irr::core::PI * 0.5); - float sin_b = 0.07 * sin(1.5 * time + irr::core::PI); - hc.setRed(core::clamp(core::round32(hc.getRed() * (0.8 + sin_r)), 0, 255)); - hc.setGreen(core::clamp(core::round32(hc.getGreen() * (0.8 + sin_g)), 0, 255)); - hc.setBlue(core::clamp(core::round32(hc.getBlue() * (0.8 + sin_b)), 0, 255)); - - for(std::list::iterator - i = m_highlighted_materials.begin(); - i != m_highlighted_materials.end(); ++i) - { - scene::IMeshBuffer *buf = m_mesh->getMeshBuffer(*i); - video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)buf->getVertices(); - for (u32 j = 0; j < buf->getVertexCount() ;j++) - vertices[j].Color = hc; - } - } - return true; } @@ -1405,6 +1394,9 @@ void MapBlockMesh::updateCameraOffset(v3s16 camera_offset) { if (camera_offset != m_camera_offset) { translateMesh(m_mesh, intToFloat(m_camera_offset-camera_offset, BS)); + if (m_enable_vbo) { + m_mesh->setDirty(); + } m_camera_offset = camera_offset; } } @@ -1441,17 +1433,27 @@ void MeshCollector::append(const TileSpec &tile, p = &prebuffers[prebuffers.size() - 1]; } - u32 vertex_count = p->vertices.size(); - for (u32 i = 0; i < numIndices; i++) { + u32 vertex_count; + if (m_use_tangent_vertices) { + vertex_count = p->tangent_vertices.size(); + for (u32 i = 0; i < numVertices; i++) { + video::S3DVertexTangents vert(vertices[i].Pos, vertices[i].Normal, + vertices[i].Color, vertices[i].TCoords); + p->tangent_vertices.push_back(vert); + } + } else { + vertex_count = p->vertices.size(); + for (u32 i = 0; i < numVertices; i++) { + video::S3DVertex vert(vertices[i].Pos, vertices[i].Normal, + vertices[i].Color, vertices[i].TCoords); + p->vertices.push_back(vert); + } + } + + for (u32 i = 0; i < numIndices; i++) { u32 j = indices[i] + vertex_count; p->indices.push_back(j); } - - for (u32 i = 0; i < numVertices; i++) { - video::S3DVertexTangents vert(vertices[i].Pos, vertices[i].Normal, - vertices[i].Color, vertices[i].TCoords); - p->vertices.push_back(vert); - } } /* @@ -1487,15 +1489,25 @@ void MeshCollector::append(const TileSpec &tile, p = &prebuffers[prebuffers.size() - 1]; } - u32 vertex_count = p->vertices.size(); + u32 vertex_count; + if (m_use_tangent_vertices) { + vertex_count = p->tangent_vertices.size(); + for (u32 i = 0; i < numVertices; i++) { + video::S3DVertexTangents vert(vertices[i].Pos + pos, + vertices[i].Normal, c, vertices[i].TCoords); + p->tangent_vertices.push_back(vert); + } + } else { + vertex_count = p->vertices.size(); + for (u32 i = 0; i < numVertices; i++) { + video::S3DVertex vert(vertices[i].Pos + pos, + vertices[i].Normal, c, vertices[i].TCoords); + p->vertices.push_back(vert); + } + } + for (u32 i = 0; i < numIndices; i++) { u32 j = indices[i] + vertex_count; p->indices.push_back(j); } - - for (u32 i = 0; i < numVertices; i++) { - video::S3DVertexTangents vert(vertices[i].Pos + pos, vertices[i].Normal, - c, vertices[i].TCoords); - p->vertices.push_back(vert); - } } diff --git a/src/mapblock_mesh.h b/src/mapblock_mesh.h index 8e994ec6..f89fbe66 100644 --- a/src/mapblock_mesh.h +++ b/src/mapblock_mesh.h @@ -41,15 +41,15 @@ struct MeshMakeData VoxelManipulator m_vmanip; v3s16 m_blockpos; v3s16 m_crack_pos_relative; - v3s16 m_highlighted_pos_relative; bool m_smooth_lighting; bool m_show_hud; - video::SColor m_highlight_mesh_color; IGameDef *m_gamedef; bool m_use_shaders; + bool m_use_tangent_vertices; - MeshMakeData(IGameDef *gamedef, bool use_shaders); + MeshMakeData(IGameDef *gamedef, bool use_shaders, + bool use_tangent_vertices = false); /* Copy central data directly from block, and other data from @@ -67,11 +67,6 @@ struct MeshMakeData */ void setCrack(int crack_level, v3s16 crack_pos); - /* - Set the highlighted node position - */ - - void setHighlighted(v3s16 highlighted_pos, bool show_hud); /* Enable or disable smooth lighting */ @@ -104,7 +99,7 @@ public: // Returns true if anything has been changed. bool animate(bool faraway, float time, int crack, u32 daynight_ratio); - scene::SMesh *getMesh() + scene::IMesh *getMesh() { return m_mesh; } @@ -130,17 +125,17 @@ public: void updateCameraOffset(v3s16 camera_offset); private: - scene::SMesh *m_mesh; + scene::IMesh *m_mesh; MinimapMapblock *m_minimap_mapblock; IGameDef *m_gamedef; + video::IVideoDriver *m_driver; ITextureSource *m_tsrc; IShaderSource *m_shdrsrc; bool m_enable_shaders; - bool m_enable_highlighting; + bool m_use_tangent_vertices; + bool m_enable_vbo; - video::SColor m_highlight_mesh_color; - // Must animate() be called before rendering? bool m_has_animation; int m_animation_force_timer; @@ -150,7 +145,6 @@ private: int m_last_crack; // Maps mesh buffer (i.e. material) indices to base texture names std::map m_crack_materials; - std::list m_highlighted_materials; // Animation info: texture animationi // Maps meshbuffers to TileSpecs @@ -177,12 +171,20 @@ struct PreMeshBuffer { TileSpec tile; std::vector indices; - std::vector vertices; + std::vector vertices; + std::vector tangent_vertices; }; struct MeshCollector { std::vector prebuffers; + bool m_use_tangent_vertices; + + MeshCollector(bool use_tangent_vertices): + m_use_tangent_vertices(use_tangent_vertices) + { + } + void append(const TileSpec &material, const video::S3DVertex *vertices, u32 numVertices, const u16 *indices, u32 numIndices); diff --git a/src/mapgen.cpp b/src/mapgen.cpp index 8a77000f..b3c9380a 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -41,11 +41,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" FlagDesc flagdesc_mapgen[] = { - {"trees", MG_TREES}, - {"caves", MG_CAVES}, - {"dungeons", MG_DUNGEONS}, - {"flat", MG_FLAT}, - {"light", MG_LIGHT}, + {"trees", MG_TREES}, + {"caves", MG_CAVES}, + {"dungeons", MG_DUNGEONS}, + {"flat", MG_FLAT}, + {"light", MG_LIGHT}, + {"decorations", MG_DECORATIONS}, {NULL, 0} }; @@ -245,14 +246,31 @@ void Mapgen::lightSpread(VoxelArea &a, v3s16 p, u8 light) return; u32 vi = vm->m_area.index(p); - MapNode &nn = vm->m_data[vi]; + MapNode &n = vm->m_data[vi]; - light--; - // should probably compare masked, but doesn't seem to make a difference - if (light <= nn.param1 || !ndef->get(nn).light_propagates) + // Decay light in each of the banks separately + u8 light_day = light & 0x0F; + if (light_day > 0) + light_day -= 0x01; + + u8 light_night = light & 0xF0; + if (light_night > 0) + light_night -= 0x10; + + // Bail out only if we have no more light from either bank to propogate, or + // we hit a solid block that light cannot pass through. + if ((light_day <= (n.param1 & 0x0F) && + light_night <= (n.param1 & 0xF0)) || + !ndef->get(n).light_propagates) return; - nn.param1 = light; + // Since this recursive function only terminates when there is no light from + // either bank left, we need to take the max of both banks into account for + // the case where spreading has stopped for one light bank but not the other. + light = MYMAX(light_day, n.param1 & 0x0F) | + MYMAX(light_night, n.param1 & 0xF0); + + n.param1 = light; lightSpread(a, p + v3s16(0, 0, 1), light); lightSpread(a, p + v3s16(0, 1, 0), light); @@ -263,43 +281,29 @@ void Mapgen::lightSpread(VoxelArea &a, v3s16 p, u8 light) } -void Mapgen::calcLighting(v3s16 nmin, v3s16 nmax, v3s16 full_nmin, v3s16 full_nmax) +void Mapgen::calcLighting(v3s16 nmin, v3s16 nmax, v3s16 full_nmin, v3s16 full_nmax, + bool propagate_shadow) { ScopeProfiler sp(g_profiler, "EmergeThread: mapgen lighting update", SPT_AVG); //TimeTaker t("updateLighting"); - propagateSunlight(nmin, nmax); + propagateSunlight(nmin, nmax, propagate_shadow); spreadLight(full_nmin, full_nmax); //printf("updateLighting: %dms\n", t.stop()); } - -void Mapgen::calcLighting(v3s16 nmin, v3s16 nmax) -{ - ScopeProfiler sp(g_profiler, "EmergeThread: mapgen lighting update", SPT_AVG); - //TimeTaker t("updateLighting"); - - propagateSunlight( - nmin - v3s16(1, 1, 1) * MAP_BLOCKSIZE, - nmax + v3s16(1, 0, 1) * MAP_BLOCKSIZE); - - spreadLight( - nmin - v3s16(1, 1, 1) * MAP_BLOCKSIZE, - nmax + v3s16(1, 1, 1) * MAP_BLOCKSIZE); - - //printf("updateLighting: %dms\n", t.stop()); -} - - -void Mapgen::propagateSunlight(v3s16 nmin, v3s16 nmax) +void Mapgen::propagateSunlight(v3s16 nmin, v3s16 nmax, bool propagate_shadow) { //TimeTaker t("propagateSunlight"); VoxelArea a(nmin, nmax); bool block_is_underground = (water_level >= nmax.Y); v3s16 em = vm->m_area.getExtent(); + // NOTE: Direct access to the low 4 bits of param1 is okay here because, + // by definition, sunlight will never be in the night lightbank. + for (int z = a.MinEdge.Z; z <= a.MaxEdge.Z; z++) { for (int x = a.MinEdge.X; x <= a.MaxEdge.X; x++) { // see if we can get a light value from the overtop @@ -307,7 +311,8 @@ void Mapgen::propagateSunlight(v3s16 nmin, v3s16 nmax) if (vm->m_data[i].getContent() == CONTENT_IGNORE) { if (block_is_underground) continue; - } else if ((vm->m_data[i].param1 & 0x0F) != LIGHT_SUN) { + } else if ((vm->m_data[i].param1 & 0x0F) != LIGHT_SUN && + propagate_shadow) { continue; } vm->m_area.add_y(em, i, -1); @@ -325,7 +330,6 @@ void Mapgen::propagateSunlight(v3s16 nmin, v3s16 nmax) } - void Mapgen::spreadLight(v3s16 nmin, v3s16 nmax) { //TimeTaker t("spreadLight"); @@ -336,15 +340,21 @@ void Mapgen::spreadLight(v3s16 nmin, v3s16 nmax) u32 i = vm->m_area.index(a.MinEdge.X, y, z); for (int x = a.MinEdge.X; x <= a.MaxEdge.X; x++, i++) { MapNode &n = vm->m_data[i]; - if (n.getContent() == CONTENT_IGNORE || - !ndef->get(n).light_propagates) + if (n.getContent() == CONTENT_IGNORE) continue; - u8 light_produced = ndef->get(n).light_source & 0x0F; - if (light_produced) - n.param1 = light_produced; + const ContentFeatures &cf = ndef->get(n); + if (!cf.light_propagates) + continue; - u8 light = n.param1 & 0x0F; + // TODO(hmmmmm): Abstract away direct param1 accesses with a + // wrapper, but something lighter than MapNode::get/setLight + + u8 light_produced = cf.light_source; + if (light_produced) + n.param1 = light_produced | (light_produced << 4); + + u8 light = n.param1; if (light) { lightSpread(a, v3s16(x, y, z + 1), light); lightSpread(a, v3s16(x, y + 1, z ), light); diff --git a/src/mapgen.h b/src/mapgen.h index 57e99584..abc3d2e8 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -29,11 +29,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #define DEFAULT_MAPGEN "v6" /////////////////// Mapgen flags -#define MG_TREES 0x01 -#define MG_CAVES 0x02 -#define MG_DUNGEONS 0x04 -#define MG_FLAT 0x08 -#define MG_LIGHT 0x10 +#define MG_TREES 0x01 +#define MG_CAVES 0x02 +#define MG_DUNGEONS 0x04 +#define MG_FLAT 0x08 +#define MG_LIGHT 0x10 +#define MG_DECORATIONS 0x20 class Settings; class MMVManip; @@ -126,7 +127,7 @@ struct MapgenParams { chunksize(5), seed(0), water_level(1), - flags(MG_TREES | MG_CAVES | MG_LIGHT), + flags(MG_CAVES | MG_LIGHT | MG_DECORATIONS), np_biome_heat(NoiseParams(50, 50, v3f(750.0, 750.0, 750.0), 5349, 3, 0.5, 2.0)), np_biome_heat_blend(NoiseParams(0, 1.5, v3f(8.0, 8.0, 8.0), 13, 2, 1.0, 2.0)), np_biome_humidity(NoiseParams(50, 50, v3f(750.0, 750.0, 750.0), 842, 3, 0.5, 2.0)), @@ -172,17 +173,21 @@ public: void setLighting(u8 light, v3s16 nmin, v3s16 nmax); void lightSpread(VoxelArea &a, v3s16 p, u8 light); - - void calcLighting(v3s16 nmin, v3s16 nmax); - void calcLighting(v3s16 nmin, v3s16 nmax, - v3s16 full_nmin, v3s16 full_nmax); - - void propagateSunlight(v3s16 nmin, v3s16 nmax); + void calcLighting(v3s16 nmin, v3s16 nmax, v3s16 full_nmin, v3s16 full_nmax, + bool propagate_shadow = true); + void propagateSunlight(v3s16 nmin, v3s16 nmax, bool propagate_shadow); void spreadLight(v3s16 nmin, v3s16 nmax); virtual void makeChunk(BlockMakeData *data) {} virtual int getGroundLevelAtPoint(v2s16 p) { return 0; } + // getSpawnLevelAtPoint() is a function within each mapgen that returns a + // suitable y co-ordinate for player spawn ('suitable' usually meaning + // within 16 nodes of water_level). If a suitable spawn level cannot be + // found at the specified (X, Z) 'MAX_MAP_GENERATION_LIMIT' is returned to + // signify this and to cause Server::findSpawnPos() to try another (X, Z). + virtual int getSpawnLevelAtPoint(v2s16 p) { return 0; } + private: DISABLE_CLASS_COPY(Mapgen); }; diff --git a/src/mapgen_flat.cpp b/src/mapgen_flat.cpp new file mode 100644 index 00000000..4669f171 --- /dev/null +++ b/src/mapgen_flat.cpp @@ -0,0 +1,622 @@ +/* +Minetest +Copyright (C) 2010-2015 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 paramat, Matt Gregory + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + + +#include "mapgen.h" +#include "voxel.h" +#include "noise.h" +#include "mapblock.h" +#include "mapnode.h" +#include "map.h" +#include "content_sao.h" +#include "nodedef.h" +#include "voxelalgorithms.h" +//#include "profiler.h" // For TimeTaker +#include "settings.h" // For g_settings +#include "emerge.h" +#include "dungeongen.h" +#include "cavegen.h" +#include "treegen.h" +#include "mg_biome.h" +#include "mg_ore.h" +#include "mg_decoration.h" +#include "mapgen_flat.h" + + +FlagDesc flagdesc_mapgen_flat[] = { + {"lakes", MGFLAT_LAKES}, + {"hills", MGFLAT_HILLS}, + {NULL, 0} +}; + +/////////////////////////////////////////////////////////////////////////////////////// + + +MapgenFlat::MapgenFlat(int mapgenid, MapgenParams *params, EmergeManager *emerge) + : Mapgen(mapgenid, params, emerge) +{ + this->m_emerge = emerge; + this->bmgr = emerge->biomemgr; + + //// amount of elements to skip for the next index + //// for noise/height/biome maps (not vmanip) + this->ystride = csize.X; + // 1-down overgeneration + this->zstride_1d = csize.X * (csize.Y + 1); + + this->biomemap = new u8[csize.X * csize.Z]; + this->heightmap = new s16[csize.X * csize.Z]; + this->heatmap = NULL; + this->humidmap = NULL; + + MapgenFlatParams *sp = (MapgenFlatParams *)params->sparams; + + this->spflags = sp->spflags; + this->ground_level = sp->ground_level; + this->large_cave_depth = sp->large_cave_depth; + this->cave_width = sp->cave_width; + this->lake_threshold = sp->lake_threshold; + this->lake_steepness = sp->lake_steepness; + this->hill_threshold = sp->hill_threshold; + this->hill_steepness = sp->hill_steepness; + + //// 2D noise + noise_terrain = new Noise(&sp->np_terrain, seed, csize.X, csize.Z); + noise_filler_depth = new Noise(&sp->np_filler_depth, seed, csize.X, csize.Z); + + //// 3D noise + // 1-down overgeneraion + noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 1, csize.Z); + noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 1, csize.Z); + + //// Biome noise + noise_heat = new Noise(¶ms->np_biome_heat, seed, csize.X, csize.Z); + noise_humidity = new Noise(¶ms->np_biome_humidity, seed, csize.X, csize.Z); + noise_heat_blend = new Noise(¶ms->np_biome_heat_blend, seed, csize.X, csize.Z); + noise_humidity_blend = new Noise(¶ms->np_biome_humidity_blend, seed, csize.X, csize.Z); + + //// Resolve nodes to be used + INodeDefManager *ndef = emerge->ndef; + + c_stone = ndef->getId("mapgen_stone"); + c_water_source = ndef->getId("mapgen_water_source"); + c_lava_source = ndef->getId("mapgen_lava_source"); + c_desert_stone = ndef->getId("mapgen_desert_stone"); + c_ice = ndef->getId("mapgen_ice"); + c_sandstone = ndef->getId("mapgen_sandstone"); + + c_cobble = ndef->getId("mapgen_cobble"); + c_stair_cobble = ndef->getId("mapgen_stair_cobble"); + c_mossycobble = ndef->getId("mapgen_mossycobble"); + c_sandstonebrick = ndef->getId("mapgen_sandstonebrick"); + c_stair_sandstonebrick = ndef->getId("mapgen_stair_sandstonebrick"); + + if (c_ice == CONTENT_IGNORE) + c_ice = CONTENT_AIR; + if (c_mossycobble == CONTENT_IGNORE) + c_mossycobble = c_cobble; + if (c_stair_cobble == CONTENT_IGNORE) + c_stair_cobble = c_cobble; + if (c_sandstonebrick == CONTENT_IGNORE) + c_sandstonebrick = c_sandstone; + if (c_stair_sandstonebrick == CONTENT_IGNORE) + c_stair_sandstonebrick = c_sandstone; +} + + +MapgenFlat::~MapgenFlat() +{ + delete noise_terrain; + delete noise_filler_depth; + delete noise_cave1; + delete noise_cave2; + + delete noise_heat; + delete noise_humidity; + delete noise_heat_blend; + delete noise_humidity_blend; + + delete[] heightmap; + delete[] biomemap; +} + + +MapgenFlatParams::MapgenFlatParams() +{ + spflags = 0; + ground_level = 8; + large_cave_depth = -33; + cave_width = 0.3; + lake_threshold = -0.45; + lake_steepness = 48.0; + hill_threshold = 0.45; + hill_steepness = 64.0; + + np_terrain = NoiseParams(0, 1, v3f(600, 600, 600), 7244, 5, 0.6, 2.0); + np_filler_depth = NoiseParams(0, 1.2, v3f(150, 150, 150), 261, 3, 0.7, 2.0); + np_cave1 = NoiseParams(0, 12, v3f(96, 96, 96), 52534, 4, 0.5, 2.0); + np_cave2 = NoiseParams(0, 12, v3f(96, 96, 96), 10325, 4, 0.5, 2.0); +} + + +void MapgenFlatParams::readParams(const Settings *settings) +{ + settings->getFlagStrNoEx("mgflat_spflags", spflags, flagdesc_mapgen_flat); + settings->getS16NoEx("mgflat_ground_level", ground_level); + settings->getS16NoEx("mgflat_large_cave_depth", large_cave_depth); + settings->getFloatNoEx("mgflat_cave_width", cave_width); + settings->getFloatNoEx("mgflat_lake_threshold", lake_threshold); + settings->getFloatNoEx("mgflat_lake_steepness", lake_steepness); + settings->getFloatNoEx("mgflat_hill_threshold", hill_threshold); + settings->getFloatNoEx("mgflat_hill_steepness", hill_steepness); + + settings->getNoiseParams("mgflat_np_terrain", np_terrain); + settings->getNoiseParams("mgflat_np_filler_depth", np_filler_depth); + settings->getNoiseParams("mgflat_np_cave1", np_cave1); + settings->getNoiseParams("mgflat_np_cave2", np_cave2); +} + + +void MapgenFlatParams::writeParams(Settings *settings) const +{ + settings->setFlagStr("mgflat_spflags", spflags, flagdesc_mapgen_flat, U32_MAX); + settings->setS16("mgflat_ground_level", ground_level); + settings->setS16("mgflat_large_cave_depth", large_cave_depth); + settings->setFloat("mgflat_cave_width", cave_width); + settings->setFloat("mgflat_lake_threshold", lake_threshold); + settings->setFloat("mgflat_lake_steepness", lake_steepness); + settings->setFloat("mgflat_hill_threshold", hill_threshold); + settings->setFloat("mgflat_hill_steepness", hill_steepness); + + settings->setNoiseParams("mgflat_np_terrain", np_terrain); + settings->setNoiseParams("mgflat_np_filler_depth", np_filler_depth); + settings->setNoiseParams("mgflat_np_cave1", np_cave1); + settings->setNoiseParams("mgflat_np_cave2", np_cave2); +} + + +///////////////////////////////////////////////////////////////// + + +int MapgenFlat::getSpawnLevelAtPoint(v2s16 p) +{ + s16 level_at_point = ground_level; + float n_terrain = NoisePerlin2D(&noise_terrain->np, p.X, p.Y, seed); + + if ((spflags & MGFLAT_LAKES) && n_terrain < lake_threshold) { + level_at_point = ground_level - + (lake_threshold - n_terrain) * lake_steepness; + } else if ((spflags & MGFLAT_HILLS) && n_terrain > hill_threshold) { + level_at_point = ground_level + + (n_terrain - hill_threshold) * hill_steepness; + } + + if (ground_level < water_level) // Ocean world, allow spawn in water + return MYMAX(level_at_point, water_level); + else if (level_at_point > water_level) + return level_at_point; // Spawn on land + else + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point +} + + +void MapgenFlat::makeChunk(BlockMakeData *data) +{ + // Pre-conditions + assert(data->vmanip); + assert(data->nodedef); + assert(data->blockpos_requested.X >= data->blockpos_min.X && + data->blockpos_requested.Y >= data->blockpos_min.Y && + data->blockpos_requested.Z >= data->blockpos_min.Z); + assert(data->blockpos_requested.X <= data->blockpos_max.X && + data->blockpos_requested.Y <= data->blockpos_max.Y && + data->blockpos_requested.Z <= data->blockpos_max.Z); + + this->generating = true; + this->vm = data->vmanip; + this->ndef = data->nodedef; + //TimeTaker t("makeChunk"); + + v3s16 blockpos_min = data->blockpos_min; + v3s16 blockpos_max = data->blockpos_max; + node_min = blockpos_min * MAP_BLOCKSIZE; + node_max = (blockpos_max + v3s16(1, 1, 1)) * MAP_BLOCKSIZE - v3s16(1, 1, 1); + full_node_min = (blockpos_min - 1) * MAP_BLOCKSIZE; + full_node_max = (blockpos_max + 2) * MAP_BLOCKSIZE - v3s16(1, 1, 1); + + blockseed = getBlockSeed2(full_node_min, seed); + + // Make some noise + calculateNoise(); + + // Generate base terrain, mountains, and ridges with initial heightmaps + s16 stone_surface_max_y = generateTerrain(); + + // Create heightmap + updateHeightmap(node_min, node_max); + + // Create biomemap at heightmap surface + bmgr->calcBiomes(csize.X, csize.Z, noise_heat->result, + noise_humidity->result, heightmap, biomemap); + + // Actually place the biome-specific nodes + MgStoneType stone_type = generateBiomes(noise_heat->result, noise_humidity->result); + + if (flags & MG_CAVES) + generateCaves(stone_surface_max_y); + + if ((flags & MG_DUNGEONS) && (stone_surface_max_y >= node_min.Y)) { + DungeonParams dp; + + dp.np_rarity = nparams_dungeon_rarity; + dp.np_density = nparams_dungeon_density; + dp.np_wetness = nparams_dungeon_wetness; + dp.c_water = c_water_source; + if (stone_type == STONE) { + dp.c_cobble = c_cobble; + dp.c_moss = c_mossycobble; + dp.c_stair = c_stair_cobble; + + dp.diagonal_dirs = false; + dp.mossratio = 3.0; + dp.holesize = v3s16(1, 2, 1); + dp.roomsize = v3s16(0, 0, 0); + dp.notifytype = GENNOTIFY_DUNGEON; + } else if (stone_type == DESERT_STONE) { + dp.c_cobble = c_desert_stone; + dp.c_moss = c_desert_stone; + dp.c_stair = c_desert_stone; + + dp.diagonal_dirs = true; + dp.mossratio = 0.0; + dp.holesize = v3s16(2, 3, 2); + dp.roomsize = v3s16(2, 5, 2); + dp.notifytype = GENNOTIFY_TEMPLE; + } else if (stone_type == SANDSTONE) { + dp.c_cobble = c_sandstonebrick; + dp.c_moss = c_sandstonebrick; + dp.c_stair = c_sandstonebrick; + + dp.diagonal_dirs = false; + dp.mossratio = 0.0; + dp.holesize = v3s16(2, 2, 2); + dp.roomsize = v3s16(2, 0, 2); + dp.notifytype = GENNOTIFY_DUNGEON; + } + + DungeonGen dgen(this, &dp); + dgen.generate(blockseed, full_node_min, full_node_max); + } + + // Generate the registered decorations + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + + // Generate the registered ores + m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); + + // Sprinkle some dust on top after everything else was generated + dustTopNodes(); + + //printf("makeChunk: %dms\n", t.stop()); + + updateLiquid(&data->transforming_liquid, full_node_min, full_node_max); + + if (flags & MG_LIGHT) + calcLighting(node_min - v3s16(0, 1, 0), node_max + v3s16(0, 1, 0), + full_node_min, full_node_max); + + //setLighting(node_min - v3s16(1, 0, 1) * MAP_BLOCKSIZE, + // node_max + v3s16(1, 0, 1) * MAP_BLOCKSIZE, 0xFF); + + this->generating = false; +} + + +void MapgenFlat::calculateNoise() +{ + //TimeTaker t("calculateNoise", NULL, PRECISION_MICRO); + s16 x = node_min.X; + s16 z = node_min.Z; + + if ((spflags & MGFLAT_LAKES) || (spflags & MGFLAT_HILLS)) + noise_terrain->perlinMap2D(x, z); + + // Cave noises are calculated in generateCaves() + // only if solid terrain is present in mapchunk + + noise_filler_depth->perlinMap2D(x, z); + noise_heat->perlinMap2D(x, z); + noise_humidity->perlinMap2D(x, z); + noise_heat_blend->perlinMap2D(x, z); + noise_humidity_blend->perlinMap2D(x, z); + + for (s32 i = 0; i < csize.X * csize.Z; i++) { + noise_heat->result[i] += noise_heat_blend->result[i]; + noise_humidity->result[i] += noise_humidity_blend->result[i]; + } + + heatmap = noise_heat->result; + humidmap = noise_humidity->result; + //printf("calculateNoise: %dus\n", t.stop()); +} + + +s16 MapgenFlat::generateTerrain() +{ + MapNode n_air(CONTENT_AIR); + MapNode n_stone(c_stone); + MapNode n_water(c_water_source); + + v3s16 em = vm->m_area.getExtent(); + s16 stone_surface_max_y = -MAX_MAP_GENERATION_LIMIT; + u32 ni2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, ni2d++) { + s16 stone_level = ground_level; + float n_terrain = 0.0f; + + if ((spflags & MGFLAT_LAKES) || (spflags & MGFLAT_HILLS)) + n_terrain = noise_terrain->result[ni2d]; + + if ((spflags & MGFLAT_LAKES) && n_terrain < lake_threshold) { + s16 depress = (lake_threshold - n_terrain) * lake_steepness; + stone_level = ground_level - depress; + } else if ((spflags & MGFLAT_HILLS) && n_terrain > hill_threshold) { + s16 rise = (n_terrain - hill_threshold) * hill_steepness; + stone_level = ground_level + rise; + } + + u32 vi = vm->m_area.index(x, node_min.Y - 1, z); + for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { + if (vm->m_data[vi].getContent() == CONTENT_IGNORE) { + if (y <= stone_level) { + vm->m_data[vi] = n_stone; + if (y > stone_surface_max_y) + stone_surface_max_y = y; + } else if (y <= water_level) { + vm->m_data[vi] = n_water; + } else { + vm->m_data[vi] = n_air; + } + } + vm->m_area.add_y(em, vi, 1); + } + } + + return stone_surface_max_y; +} + + +MgStoneType MapgenFlat::generateBiomes(float *heat_map, float *humidity_map) +{ + v3s16 em = vm->m_area.getExtent(); + u32 index = 0; + MgStoneType stone_type = STONE; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index++) { + Biome *biome = NULL; + u16 depth_top = 0; + u16 base_filler = 0; + u16 depth_water_top = 0; + u32 vi = vm->m_area.index(x, node_max.Y, z); + + // Check node at base of mapchunk above, either a node of a previously + // generated mapchunk or if not, a node of overgenerated base terrain. + content_t c_above = vm->m_data[vi + em.X].getContent(); + bool air_above = c_above == CONTENT_AIR; + bool water_above = c_above == c_water_source; + + // If there is air or water above enable top/filler placement, otherwise force + // nplaced to stone level by setting a number exceeding any possible filler depth. + u16 nplaced = (air_above || water_above) ? 0 : U16_MAX; + + + for (s16 y = node_max.Y; y >= node_min.Y; y--) { + content_t c = vm->m_data[vi].getContent(); + + // Biome is recalculated each time an upper surface is detected while + // working down a column. The selected biome then remains in effect for + // all nodes below until the next surface and biome recalculation. + // Biome is recalculated: + // 1. At the surface of stone below air or water. + // 2. At the surface of water below air. + // 3. When stone or water is detected but biome has not yet been calculated. + if ((c == c_stone && (air_above || water_above || !biome)) || + (c == c_water_source && (air_above || !biome))) { + biome = bmgr->getBiome(heat_map[index], humidity_map[index], y); + depth_top = biome->depth_top; + base_filler = MYMAX(depth_top + biome->depth_filler + + noise_filler_depth->result[index], 0); + depth_water_top = biome->depth_water_top; + + // Detect stone type for dungeons during every biome calculation. + // This is more efficient than detecting per-node and will not + // miss any desert stone or sandstone biomes. + if (biome->c_stone == c_desert_stone) + stone_type = DESERT_STONE; + else if (biome->c_stone == c_sandstone) + stone_type = SANDSTONE; + } + + if (c == c_stone) { + content_t c_below = vm->m_data[vi - em.X].getContent(); + + // If the node below isn't solid, make this node stone, so that + // any top/filler nodes above are structurally supported. + // This is done by aborting the cycle of top/filler placement + // immediately by forcing nplaced to stone level. + if (c_below == CONTENT_AIR || c_below == c_water_source) + nplaced = U16_MAX; + + if (nplaced < depth_top) { + vm->m_data[vi] = MapNode(biome->c_top); + nplaced++; + } else if (nplaced < base_filler) { + vm->m_data[vi] = MapNode(biome->c_filler); + nplaced++; + } else { + vm->m_data[vi] = MapNode(biome->c_stone); + } + + air_above = false; + water_above = false; + } else if (c == c_water_source) { + vm->m_data[vi] = MapNode((y > (s32)(water_level - depth_water_top)) ? + biome->c_water_top : biome->c_water); + nplaced = 0; // Enable top/filler placement for next surface + air_above = false; + water_above = true; + } else if (c == CONTENT_AIR) { + nplaced = 0; // Enable top/filler placement for next surface + air_above = true; + water_above = false; + } else { // Possible various nodes overgenerated from neighbouring mapchunks + nplaced = U16_MAX; // Disable top/filler placement + air_above = false; + water_above = false; + } + + vm->m_area.add_y(em, vi, -1); + } + } + + return stone_type; +} + + +void MapgenFlat::dustTopNodes() +{ + if (node_max.Y < water_level) + return; + + v3s16 em = vm->m_area.getExtent(); + u32 index = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index++) { + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index]); + + if (biome->c_dust == CONTENT_IGNORE) + continue; + + u32 vi = vm->m_area.index(x, full_node_max.Y, z); + content_t c_full_max = vm->m_data[vi].getContent(); + s16 y_start; + + if (c_full_max == CONTENT_AIR) { + y_start = full_node_max.Y - 1; + } else if (c_full_max == CONTENT_IGNORE) { + vi = vm->m_area.index(x, node_max.Y + 1, z); + content_t c_max = vm->m_data[vi].getContent(); + + if (c_max == CONTENT_AIR) + y_start = node_max.Y; + else + continue; + } else { + continue; + } + + vi = vm->m_area.index(x, y_start, z); + for (s16 y = y_start; y >= node_min.Y - 1; y--) { + if (vm->m_data[vi].getContent() != CONTENT_AIR) + break; + + vm->m_area.add_y(em, vi, -1); + } + + content_t c = vm->m_data[vi].getContent(); + if (!ndef->get(c).buildable_to && c != CONTENT_IGNORE && c != biome->c_dust) { + vm->m_area.add_y(em, vi, 1); + vm->m_data[vi] = MapNode(biome->c_dust); + } + } +} + + +void MapgenFlat::generateCaves(s16 max_stone_y) +{ + if (max_stone_y < node_min.Y) + return; + + noise_cave1->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + noise_cave2->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + v3s16 em = vm->m_area.getExtent(); + u32 index2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { + bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor + u32 vi = vm->m_area.index(x, node_max.Y, z); + u32 index3d = (z - node_min.Z) * zstride_1d + csize.Y * ystride + + (x - node_min.X); + // Biome of column + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index2d]); + + // Don't excavate the overgenerated stone at node_max.Y + 1, + // this creates a 'roof' over the tunnel, preventing light in + // tunnels at mapchunk borders when generating mapchunks upwards. + // This 'roof' is removed when the mapchunk above is generated. + for (s16 y = node_max.Y; y >= node_min.Y - 1; y--, + index3d -= ystride, + vm->m_area.add_y(em, vi, -1)) { + + content_t c = vm->m_data[vi].getContent(); + if (c == CONTENT_AIR || c == biome->c_water_top || + c == biome->c_water) { + column_is_open = true; + continue; + } + // Ground + float d1 = contour(noise_cave1->result[index3d]); + float d2 = contour(noise_cave2->result[index3d]); + + if (d1 * d2 > cave_width && ndef->get(c).is_ground_content) { + // In tunnel and ground content, excavate + vm->m_data[vi] = MapNode(CONTENT_AIR); + is_tunnel = true; + } else { + // Not in tunnel or not ground content + if (is_tunnel && column_is_open && + (c == biome->c_filler || c == biome->c_stone)) + // Tunnel entrance floor + vm->m_data[vi] = MapNode(biome->c_top); + + column_is_open = false; + is_tunnel = false; + } + } + } + + if (node_max.Y > large_cave_depth) + return; + + PseudoRandom ps(blockseed + 21343); + u32 bruises_count = ps.range(0, 2); + for (u32 i = 0; i < bruises_count; i++) { + CaveV5 cave(this, &ps); + cave.makeCave(node_min, node_max, max_stone_y); + } +} diff --git a/src/mapgen_flat.h b/src/mapgen_flat.h new file mode 100644 index 00000000..8aed09be --- /dev/null +++ b/src/mapgen_flat.h @@ -0,0 +1,124 @@ +/* +Minetest +Copyright (C) 2010-2015 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 paramat, Matt Gregory + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef MAPGEN_FLAT_HEADER +#define MAPGEN_FLAT_HEADER + +#include "mapgen.h" + +/////// Mapgen Flat flags +#define MGFLAT_LAKES 0x01 +#define MGFLAT_HILLS 0x02 + +class BiomeManager; + +extern FlagDesc flagdesc_mapgen_flat[]; + + +struct MapgenFlatParams : public MapgenSpecificParams { + u32 spflags; + s16 ground_level; + s16 large_cave_depth; + float cave_width; + float lake_threshold; + float lake_steepness; + float hill_threshold; + float hill_steepness; + NoiseParams np_terrain; + NoiseParams np_filler_depth; + NoiseParams np_cave1; + NoiseParams np_cave2; + + MapgenFlatParams(); + ~MapgenFlatParams() {} + + void readParams(const Settings *settings); + void writeParams(Settings *settings) const; +}; + +class MapgenFlat : public Mapgen { +public: + EmergeManager *m_emerge; + BiomeManager *bmgr; + + int ystride; + int zstride_1d; + + v3s16 node_min; + v3s16 node_max; + v3s16 full_node_min; + v3s16 full_node_max; + + u32 spflags; + s16 ground_level; + s16 large_cave_depth; + float cave_width; + float lake_threshold; + float lake_steepness; + float hill_threshold; + float hill_steepness; + Noise *noise_terrain; + Noise *noise_filler_depth; + Noise *noise_cave1; + Noise *noise_cave2; + + Noise *noise_heat; + Noise *noise_humidity; + Noise *noise_heat_blend; + Noise *noise_humidity_blend; + + content_t c_stone; + content_t c_water_source; + content_t c_lava_source; + content_t c_desert_stone; + content_t c_ice; + content_t c_sandstone; + + content_t c_cobble; + content_t c_stair_cobble; + content_t c_mossycobble; + content_t c_sandstonebrick; + content_t c_stair_sandstonebrick; + + MapgenFlat(int mapgenid, MapgenParams *params, EmergeManager *emerge); + ~MapgenFlat(); + + virtual void makeChunk(BlockMakeData *data); + int getSpawnLevelAtPoint(v2s16 p); + void calculateNoise(); + s16 generateTerrain(); + MgStoneType generateBiomes(float *heat_map, float *humidity_map); + void dustTopNodes(); + void generateCaves(s16 max_stone_y); +}; + +struct MapgenFactoryFlat : public MapgenFactory { + Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) + { + return new MapgenFlat(mgid, params, emerge); + }; + + MapgenSpecificParams *createMapgenParams() + { + return new MapgenFlatParams(); + }; +}; + +#endif diff --git a/src/mapgen_fractal.cpp b/src/mapgen_fractal.cpp index a33e1984..e2e29f87 100644 --- a/src/mapgen_fractal.cpp +++ b/src/mapgen_fractal.cpp @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" -#include "profiler.h" // For TimeTaker +//#include "profiler.h" // For TimeTaker #include "settings.h" // For g_settings #include "emerge.h" #include "dungeongen.h" @@ -41,7 +41,6 @@ with this program; if not, write to the Free Software Foundation, Inc., FlagDesc flagdesc_mapgen_fractal[] = { - {"julia", MGFRACTAL_JULIA}, {NULL, 0} }; @@ -57,37 +56,36 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager * //// amount of elements to skip for the next index //// for noise/height/biome maps (not vmanip) this->ystride = csize.X; - this->zstride = csize.X * (csize.Y + 2); + // 1-down overgeneration + this->zstride_1d = csize.X * (csize.Y + 1); - this->biomemap = new u8[csize.X * csize.Z]; - this->heightmap = new s16[csize.X * csize.Z]; - this->heatmap = NULL; - this->humidmap = NULL; + this->biomemap = new u8[csize.X * csize.Z]; + this->heightmap = new s16[csize.X * csize.Z]; + this->heatmap = NULL; + this->humidmap = NULL; MapgenFractalParams *sp = (MapgenFractalParams *)params->sparams; - this->spflags = sp->spflags; - this->m_iterations = sp->m_iterations; - this->m_scale = sp->m_scale; - this->m_offset = sp->m_offset; - this->m_slice_w = sp->m_slice_w; - - this->j_iterations = sp->j_iterations; - this->j_scale = sp->j_scale; - this->j_offset = sp->j_offset; - this->j_slice_w = sp->j_slice_w; - this->julia_x = sp->julia_x; - this->julia_y = sp->julia_y; - this->julia_z = sp->julia_z; - this->julia_w = sp->julia_w; + this->spflags = sp->spflags; + this->cave_width = sp->cave_width; + this->fractal = sp->fractal; + this->iterations = sp->iterations; + this->scale = sp->scale; + this->offset = sp->offset; + this->slice_w = sp->slice_w; + this->julia_x = sp->julia_x; + this->julia_y = sp->julia_y; + this->julia_z = sp->julia_z; + this->julia_w = sp->julia_w; //// 2D terrain noise noise_seabed = new Noise(&sp->np_seabed, seed, csize.X, csize.Z); noise_filler_depth = new Noise(&sp->np_filler_depth, seed, csize.X, csize.Z); //// 3D terrain noise - noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 2, csize.Z); - noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 2, csize.Z); + // 1-down overgeneraion + noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 1, csize.Z); + noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 1, csize.Z); //// Biome noise noise_heat = new Noise(¶ms->np_biome_heat, seed, csize.X, csize.Z); @@ -95,6 +93,9 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager * noise_heat_blend = new Noise(¶ms->np_biome_heat_blend, seed, csize.X, csize.Z); noise_humidity_blend = new Noise(¶ms->np_biome_humidity_blend, seed, csize.X, csize.Z); + this->formula = fractal / 2 + fractal % 2; + this->julia = fractal % 2 == 0; + //// Resolve nodes to be used INodeDefManager *ndef = emerge->ndef; @@ -143,93 +144,92 @@ MapgenFractal::~MapgenFractal() MapgenFractalParams::MapgenFractalParams() { - spflags = 0; - - m_iterations = 9; // Mandelbrot set only - m_scale = v3f(1024.0, 256.0, 1024.0); - m_offset = v3f(1.75, 0.0, 0.0); - m_slice_w = 0.0; - - j_iterations = 9; // Julia set only - j_scale = v3f(2048.0, 512.0, 2048.0); - j_offset = v3f(0.0, 1.0, 0.0); - j_slice_w = 0.0; - julia_x = 0.33; - julia_y = 0.33; - julia_z = 0.33; - julia_w = 0.33; + spflags = 0; + cave_width = 0.3; + fractal = 1; + iterations = 11; + scale = v3f(4096.0, 1024.0, 4096.0); + offset = v3f(1.79, 0.0, 0.0); + slice_w = 0.0; + julia_x = 0.33; + julia_y = 0.33; + julia_z = 0.33; + julia_w = 0.33; np_seabed = NoiseParams(-14, 9, v3f(600, 600, 600), 41900, 5, 0.6, 2.0); np_filler_depth = NoiseParams(0, 1.2, v3f(150, 150, 150), 261, 3, 0.7, 2.0); - np_cave1 = NoiseParams(0, 12, v3f(128, 128, 128), 52534, 4, 0.5, 2.0); - np_cave2 = NoiseParams(0, 12, v3f(128, 128, 128), 10325, 4, 0.5, 2.0); + np_cave1 = NoiseParams(0, 12, v3f(96, 96, 96), 52534, 4, 0.5, 2.0); + np_cave2 = NoiseParams(0, 12, v3f(96, 96, 96), 10325, 4, 0.5, 2.0); } void MapgenFractalParams::readParams(const Settings *settings) { - settings->getFlagStrNoEx("mgfractal_spflags", spflags, flagdesc_mapgen_fractal); + settings->getFlagStrNoEx("mgfractal_spflags", spflags, flagdesc_mapgen_fractal); + settings->getFloatNoEx("mgfractal_cave_width", cave_width); + settings->getU16NoEx("mgfractal_fractal", fractal); + settings->getU16NoEx("mgfractal_iterations", iterations); + settings->getV3FNoEx("mgfractal_scale", scale); + settings->getV3FNoEx("mgfractal_offset", offset); + settings->getFloatNoEx("mgfractal_slice_w", slice_w); + settings->getFloatNoEx("mgfractal_julia_x", julia_x); + settings->getFloatNoEx("mgfractal_julia_y", julia_y); + settings->getFloatNoEx("mgfractal_julia_z", julia_z); + settings->getFloatNoEx("mgfractal_julia_w", julia_w); - settings->getU16NoEx("mgfractal_m_iterations", m_iterations); - settings->getV3FNoEx("mgfractal_m_scale", m_scale); - settings->getV3FNoEx("mgfractal_m_offset", m_offset); - settings->getFloatNoEx("mgfractal_m_slice_w", m_slice_w); - - settings->getU16NoEx("mgfractal_j_iterations", j_iterations); - settings->getV3FNoEx("mgfractal_j_scale", j_scale); - settings->getV3FNoEx("mgfractal_j_offset", j_offset); - settings->getFloatNoEx("mgfractal_j_slice_w", j_slice_w); - settings->getFloatNoEx("mgfractal_julia_x", julia_x); - settings->getFloatNoEx("mgfractal_julia_y", julia_y); - settings->getFloatNoEx("mgfractal_julia_z", julia_z); - settings->getFloatNoEx("mgfractal_julia_w", julia_w); - - settings->getNoiseParams("mgfractal_np_seabed", np_seabed); + settings->getNoiseParams("mgfractal_np_seabed", np_seabed); settings->getNoiseParams("mgfractal_np_filler_depth", np_filler_depth); - settings->getNoiseParams("mgfractal_np_cave1", np_cave1); - settings->getNoiseParams("mgfractal_np_cave2", np_cave2); + settings->getNoiseParams("mgfractal_np_cave1", np_cave1); + settings->getNoiseParams("mgfractal_np_cave2", np_cave2); } void MapgenFractalParams::writeParams(Settings *settings) const { - settings->setFlagStr("mgfractal_spflags", spflags, flagdesc_mapgen_fractal, U32_MAX); + settings->setFlagStr("mgfractal_spflags", spflags, flagdesc_mapgen_fractal, U32_MAX); + settings->setFloat("mgfractal_cave_width", cave_width); + settings->setU16("mgfractal_fractal", fractal); + settings->setU16("mgfractal_iterations", iterations); + settings->setV3F("mgfractal_scale", scale); + settings->setV3F("mgfractal_offset", offset); + settings->setFloat("mgfractal_slice_w", slice_w); + settings->setFloat("mgfractal_julia_x", julia_x); + settings->setFloat("mgfractal_julia_y", julia_y); + settings->setFloat("mgfractal_julia_z", julia_z); + settings->setFloat("mgfractal_julia_w", julia_w); - settings->setU16("mgfractal_m_iterations", m_iterations); - settings->setV3F("mgfractal_m_scale", m_scale); - settings->setV3F("mgfractal_m_offset", m_offset); - settings->setFloat("mgfractal_m_slice_w", m_slice_w); - - settings->setU16("mgfractal_j_iterations", j_iterations); - settings->setV3F("mgfractal_j_scale", j_scale); - settings->setV3F("mgfractal_j_offset", j_offset); - settings->setFloat("mgfractal_j_slice_w", j_slice_w); - settings->setFloat("mgfractal_julia_x", julia_x); - settings->setFloat("mgfractal_julia_y", julia_y); - settings->setFloat("mgfractal_julia_z", julia_z); - settings->setFloat("mgfractal_julia_w", julia_w); - - settings->setNoiseParams("mgfractal_np_seabed", np_seabed); + settings->setNoiseParams("mgfractal_np_seabed", np_seabed); settings->setNoiseParams("mgfractal_np_filler_depth", np_filler_depth); - settings->setNoiseParams("mgfractal_np_cave1", np_cave1); - settings->setNoiseParams("mgfractal_np_cave2", np_cave2); + settings->setNoiseParams("mgfractal_np_cave1", np_cave1); + settings->setNoiseParams("mgfractal_np_cave2", np_cave2); } ///////////////////////////////////////////////////////////////// -int MapgenFractal::getGroundLevelAtPoint(v2s16 p) +int MapgenFractal::getSpawnLevelAtPoint(v2s16 p) { - s16 search_start = 128; - s16 search_end = -128; - - for (s16 y = search_start; y >= search_end; y--) { - if (getFractalAtPoint(p.X, y, p.Y)) - return y; + bool solid_below = false; // Dry solid node is present below to spawn on + u8 air_count = 0; // Consecutive air nodes above the dry solid node + s16 seabed_level = NoisePerlin2D(&noise_seabed->np, p.X, p.Y, seed); + // Seabed can rise above water_level or might be raised to create dry land + s16 search_start = MYMAX(seabed_level, water_level + 1); + if (seabed_level > water_level) + solid_below = true; + + for (s16 y = search_start; y <= search_start + 128; y++) { + if (getFractalAtPoint(p.X, y, p.Y)) { // Fractal node + solid_below = true; + air_count = 0; + } else if (solid_below) { // Air above solid node + air_count++; + if (air_count == 2) + return y - 2; + } } - return -MAX_MAP_GENERATION_LIMIT; + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point } @@ -248,7 +248,7 @@ void MapgenFractal::makeChunk(BlockMakeData *data) this->generating = true; this->vm = data->vmanip; this->ndef = data->nodedef; - TimeTaker t("makeChunk"); + //TimeTaker t("makeChunk"); v3s16 blockpos_min = data->blockpos_min; v3s16 blockpos_max = data->blockpos_max; @@ -322,7 +322,8 @@ void MapgenFractal::makeChunk(BlockMakeData *data) } // Generate the registered decorations - m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); // Generate the registered ores m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); @@ -330,7 +331,7 @@ void MapgenFractal::makeChunk(BlockMakeData *data) // Sprinkle some dust on top after everything else was generated dustTopNodes(); - printf("makeChunk: %dms\n", t.stop()); + //printf("makeChunk: %dms\n", t.stop()); updateLiquid(&data->transforming_liquid, full_node_min, full_node_max); @@ -348,18 +349,15 @@ void MapgenFractal::makeChunk(BlockMakeData *data) void MapgenFractal::calculateNoise() { //TimeTaker t("calculateNoise", NULL, PRECISION_MICRO); - int x = node_min.X; - int y = node_min.Y - 1; - int z = node_min.Z; + s16 x = node_min.X; + s16 z = node_min.Z; noise_seabed->perlinMap2D(x, z); + + // Cave noises are calculated in generateCaves() + // only if solid terrain is present in mapchunk + noise_filler_depth->perlinMap2D(x, z); - - if (flags & MG_CAVES) { - noise_cave1->perlinMap3D(x, y, z); - noise_cave2->perlinMap3D(x, y, z); - } - noise_heat->perlinMap2D(x, z); noise_humidity->perlinMap2D(x, z); noise_heat_blend->perlinMap2D(x, z); @@ -380,34 +378,108 @@ bool MapgenFractal::getFractalAtPoint(s16 x, s16 y, s16 z) { float cx, cy, cz, cw, ox, oy, oz, ow; - if (spflags & MGFRACTAL_JULIA) { // Julia set + if (julia) { // Julia set cx = julia_x; cy = julia_y; cz = julia_z; cw = julia_w; - ox = (float)x / j_scale.X - j_offset.X; - oy = (float)y / j_scale.Y - j_offset.Y; - oz = (float)z / j_scale.Z - j_offset.Z; - ow = j_slice_w; + ox = (float)x / scale.X - offset.X; + oy = (float)y / scale.Y - offset.Y; + oz = (float)z / scale.Z - offset.Z; + ow = slice_w; } else { // Mandelbrot set - cx = (float)x / m_scale.X - m_offset.X; - cy = (float)y / m_scale.Y - m_offset.Y; - cz = (float)z / m_scale.Z - m_offset.Z; - cw = m_slice_w; + cx = (float)x / scale.X - offset.X; + cy = (float)y / scale.Y - offset.Y; + cz = (float)z / scale.Z - offset.Z; + cw = slice_w; ox = 0.0f; oy = 0.0f; oz = 0.0f; ow = 0.0f; } - u16 iterations = spflags & MGFRACTAL_JULIA ? j_iterations : m_iterations; + float nx = 0.0f; + float ny = 0.0f; + float nz = 0.0f; + float nw = 0.0f; for (u16 iter = 0; iter < iterations; iter++) { - // 4D "Roundy" Mandelbrot set - float nx = ox * ox - oy * oy - oz * oz - ow * ow + cx; - float ny = 2.0f * (ox * oy + oz * ow) + cy; - float nz = 2.0f * (ox * oz + oy * ow) + cz; - float nw = 2.0f * (ox * ow + oy * oz) + cw; + + if (formula == 1) { // 4D "Roundy" + nx = ox * ox - oy * oy - oz * oz - ow * ow + cx; + ny = 2.0f * (ox * oy + oz * ow) + cy; + nz = 2.0f * (ox * oz + oy * ow) + cz; + nw = 2.0f * (ox * ow + oy * oz) + cw; + } else if (formula == 2) { // 4D "Squarry" + nx = ox * ox - oy * oy - oz * oz - ow * ow + cx; + ny = 2.0f * (ox * oy + oz * ow) + cy; + nz = 2.0f * (ox * oz + oy * ow) + cz; + nw = 2.0f * (ox * ow - oy * oz) + cw; + } else if (formula == 3) { // 4D "Mandy Cousin" + nx = ox * ox - oy * oy - oz * oz + ow * ow + cx; + ny = 2.0f * (ox * oy + oz * ow) + cy; + nz = 2.0f * (ox * oz + oy * ow) + cz; + nw = 2.0f * (ox * ow + oy * oz) + cw; + } else if (formula == 4) { // 4D "Variation" + nx = ox * ox - oy * oy - oz * oz - ow * ow + cx; + ny = 2.0f * (ox * oy + oz * ow) + cy; + nz = 2.0f * (ox * oz - oy * ow) + cz; + nw = 2.0f * (ox * ow + oy * oz) + cw; + } else if (formula == 5) { // 3D "Mandelbrot/Mandelbar" + nx = ox * ox - oy * oy - oz * oz + cx; + ny = 2.0f * ox * oy + cy; + nz = -2.0f * ox * oz + cz; + } else if (formula == 6) { // 3D "Christmas Tree" + // Altering the formula here is necessary to avoid division by zero + if (fabs(oz) < 0.000000001f) { + nx = ox * ox - oy * oy - oz * oz + cx; + ny = 2.0f * oy * ox + cy; + nz = 4.0f * oz * ox + cz; + } else { + float a = (2.0f * ox) / (sqrt(oy * oy + oz * oz)); + nx = ox * ox - oy * oy - oz * oz + cx; + ny = a * (oy * oy - oz * oz) + cy; + nz = a * 2.0f * oy * oz + cz; + } + } else if (formula == 7) { // 3D "Mandelbulb" + if (fabs(oy) < 0.000000001f) { + nx = ox * ox - oz * oz + cx; + ny = cy; + nz = -2.0f * oz * sqrt(ox * ox) + cz; + } else { + float a = 1.0f - (oz * oz) / (ox * ox + oy * oy); + nx = (ox * ox - oy * oy) * a + cx; + ny = 2.0f * ox * oy * a + cy; + nz = -2.0f * oz * sqrt(ox * ox + oy * oy) + cz; + } + } else if (formula == 8) { // 3D "Cosine Mandelbulb" + if (fabs(oy) < 0.000000001f) { + nx = 2.0f * ox * oz + cx; + ny = 4.0f * oy * oz + cy; + nz = oz * oz - ox * ox - oy * oy + cz; + } else { + float a = (2.0f * oz) / sqrt(ox * ox + oy * oy); + nx = (ox * ox - oy * oy) * a + cx; + ny = 2.0f * ox * oy * a + cy; + nz = oz * oz - ox * ox - oy * oy + cz; + } + } else if (formula == 9) { // 4D "Mandelbulb" + float rxy = sqrt(ox * ox + oy * oy); + float rxyz = sqrt(ox * ox + oy * oy + oz * oz); + if (fabs(ow) < 0.000000001f && fabs(oz) < 0.000000001f) { + nx = (ox * ox - oy * oy) + cx; + ny = 2.0f * ox * oy + cy; + nz = -2.0f * rxy * oz + cz; + nw = 2.0f * rxyz * ow + cw; + } else { + float a = 1.0f - (ow * ow) / (rxyz * rxyz); + float b = a * (1.0f - (oz * oz) / (rxy * rxy)); + nx = (ox * ox - oy * oy) * b + cx; + ny = 2.0f * ox * oy * b + cy; + nz = -2.0f * rxy * oz * a + cz; + nw = 2.0f * rxyz * ow + cw; + } + } if (nx * nx + ny * ny + nz * nz + nw * nw > 4.0f) return false; @@ -608,22 +680,56 @@ void MapgenFractal::dustTopNodes() void MapgenFractal::generateCaves(s16 max_stone_y) { - if (max_stone_y >= node_min.Y) { - u32 index = 0; + if (max_stone_y < node_min.Y) + return; - for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { - u32 vi = vm->m_area.index(node_min.X, y, z); - for (s16 x = node_min.X; x <= node_max.X; x++, vi++, index++) { - float d1 = contour(noise_cave1->result[index]); - float d2 = contour(noise_cave2->result[index]); - if (d1 * d2 > 0.4f) { - content_t c = vm->m_data[vi].getContent(); - if (!ndef->get(c).is_ground_content || c == CONTENT_AIR) - continue; + noise_cave1->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + noise_cave2->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); - vm->m_data[vi] = MapNode(CONTENT_AIR); - } + v3s16 em = vm->m_area.getExtent(); + u32 index2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { + bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor + u32 vi = vm->m_area.index(x, node_max.Y, z); + u32 index3d = (z - node_min.Z) * zstride_1d + csize.Y * ystride + + (x - node_min.X); + // Biome of column + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index2d]); + + // Don't excavate the overgenerated stone at node_max.Y + 1, + // this creates a 'roof' over the tunnel, preventing light in + // tunnels at mapchunk borders when generating mapchunks upwards. + // This 'roof' is removed when the mapchunk above is generated. + for (s16 y = node_max.Y; y >= node_min.Y - 1; y--, + index3d -= ystride, + vm->m_area.add_y(em, vi, -1)) { + + content_t c = vm->m_data[vi].getContent(); + if (c == CONTENT_AIR || c == biome->c_water_top || + c == biome->c_water) { + column_is_open = true; + continue; + } + // Ground + float d1 = contour(noise_cave1->result[index3d]); + float d2 = contour(noise_cave2->result[index3d]); + + if (d1 * d2 > cave_width && ndef->get(c).is_ground_content) { + // In tunnel and ground content, excavate + vm->m_data[vi] = MapNode(CONTENT_AIR); + is_tunnel = true; + } else { + // Not in tunnel or not ground content + if (is_tunnel && column_is_open && + (c == biome->c_filler || c == biome->c_stone)) + // Tunnel entrance floor + vm->m_data[vi] = MapNode(biome->c_top); + + column_is_open = false; + is_tunnel = false; } } } @@ -632,9 +738,9 @@ void MapgenFractal::generateCaves(s16 max_stone_y) return; PseudoRandom ps(blockseed + 21343); - u32 bruises_count = (ps.range(1, 4) == 1) ? ps.range(1, 2) : 0; + u32 bruises_count = ps.range(0, 2); for (u32 i = 0; i < bruises_count; i++) { - CaveFractal cave(this, &ps); + CaveV5 cave(this, &ps); cave.makeCave(node_min, node_max, max_stone_y); } } diff --git a/src/mapgen_fractal.h b/src/mapgen_fractal.h index ee947dba..dd96045e 100644 --- a/src/mapgen_fractal.h +++ b/src/mapgen_fractal.h @@ -3,6 +3,9 @@ Minetest Copyright (C) 2010-2015 kwolekr, Ryan Kwolek Copyright (C) 2010-2015 paramat, Matt Gregory +Fractal formulas from http://www.bugman123.com/Hypercomplex/index.html +by Paul Nylander, and from http://www.fractalforums.com, thank you. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or @@ -23,10 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapgen.h" -#define MGFRACTAL_LARGE_CAVE_DEPTH -32 - -/////////////////// Mapgen Fractal flags -#define MGFRACTAL_JULIA 0x01 +#define MGFRACTAL_LARGE_CAVE_DEPTH -33 class BiomeManager; @@ -35,21 +35,16 @@ extern FlagDesc flagdesc_mapgen_fractal[]; struct MapgenFractalParams : public MapgenSpecificParams { u32 spflags; - - u16 m_iterations; - v3f m_scale; - v3f m_offset; - float m_slice_w; - - u16 j_iterations; - v3f j_scale; - v3f j_offset; - float j_slice_w; + float cave_width; + u16 fractal; + u16 iterations; + v3f scale; + v3f offset; + float slice_w; float julia_x; float julia_y; float julia_z; float julia_w; - NoiseParams np_seabed; NoiseParams np_filler_depth; NoiseParams np_cave1; @@ -68,28 +63,26 @@ public: BiomeManager *bmgr; int ystride; - int zstride; - u32 spflags; + int zstride_1d; + u16 formula; + bool julia; v3s16 node_min; v3s16 node_max; v3s16 full_node_min; v3s16 full_node_max; - u16 m_iterations; - v3f m_scale; - v3f m_offset; - float m_slice_w; - - u16 j_iterations; - v3f j_scale; - v3f j_offset; - float j_slice_w; + u32 spflags; + float cave_width; + u16 fractal; + u16 iterations; + v3f scale; + v3f offset; + float slice_w; float julia_x; float julia_y; float julia_z; float julia_w; - Noise *noise_seabed; Noise *noise_filler_depth; Noise *noise_cave1; @@ -117,7 +110,7 @@ public: ~MapgenFractal(); virtual void makeChunk(BlockMakeData *data); - int getGroundLevelAtPoint(v2s16 p); + int getSpawnLevelAtPoint(v2s16 p); void calculateNoise(); bool getFractalAtPoint(s16 x, s16 y, s16 z); s16 generateTerrain(); diff --git a/src/mapgen_singlenode.cpp b/src/mapgen_singlenode.cpp index 8b6c25a5..ff985dd3 100644 --- a/src/mapgen_singlenode.cpp +++ b/src/mapgen_singlenode.cpp @@ -38,6 +38,9 @@ MapgenSinglenode::MapgenSinglenode(int mapgenid, c_node = ndef->getId("mapgen_singlenode"); if (c_node == CONTENT_IGNORE) c_node = CONTENT_AIR; + + MapNode n_node(c_node); + set_light = (ndef->get(n_node).sunlight_propagates) ? LIGHT_SUN : 0x00; } @@ -45,6 +48,7 @@ MapgenSinglenode::~MapgenSinglenode() { } + //////////////////////// Map generator void MapgenSinglenode::makeChunk(BlockMakeData *data) @@ -53,11 +57,11 @@ void MapgenSinglenode::makeChunk(BlockMakeData *data) assert(data->vmanip); assert(data->nodedef); assert(data->blockpos_requested.X >= data->blockpos_min.X && - data->blockpos_requested.Y >= data->blockpos_min.Y && - data->blockpos_requested.Z >= data->blockpos_min.Z); + data->blockpos_requested.Y >= data->blockpos_min.Y && + data->blockpos_requested.Z >= data->blockpos_min.Z); assert(data->blockpos_requested.X <= data->blockpos_max.X && - data->blockpos_requested.Y <= data->blockpos_max.Y && - data->blockpos_requested.Z <= data->blockpos_max.Z); + data->blockpos_requested.Y <= data->blockpos_max.Y && + data->blockpos_requested.Z <= data->blockpos_max.Z); this->generating = true; this->vm = data->vmanip; @@ -67,8 +71,8 @@ void MapgenSinglenode::makeChunk(BlockMakeData *data) v3s16 blockpos_max = data->blockpos_max; // Area of central chunk - v3s16 node_min = blockpos_min*MAP_BLOCKSIZE; - v3s16 node_max = (blockpos_max+v3s16(1,1,1))*MAP_BLOCKSIZE-v3s16(1,1,1); + v3s16 node_min = blockpos_min * MAP_BLOCKSIZE; + v3s16 node_max = (blockpos_max + v3s16(1, 1, 1)) * MAP_BLOCKSIZE - v3s16(1, 1, 1); blockseed = getBlockSeed2(node_min, data->seed); @@ -87,15 +91,15 @@ void MapgenSinglenode::makeChunk(BlockMakeData *data) // Add top and bottom side of water to transforming_liquid queue updateLiquid(&data->transforming_liquid, node_min, node_max); - // Calculate lighting - if (flags & MG_LIGHT) - calcLighting(node_min, node_max); + // Set lighting + if ((flags & MG_LIGHT) && set_light == LIGHT_SUN) + setLighting(LIGHT_SUN, node_min, node_max); this->generating = false; } -int MapgenSinglenode::getGroundLevelAtPoint(v2s16 p) + +int MapgenSinglenode::getSpawnLevelAtPoint(v2s16 p) { return 0; } - diff --git a/src/mapgen_singlenode.h b/src/mapgen_singlenode.h index bd3576dc..2c6496c0 100644 --- a/src/mapgen_singlenode.h +++ b/src/mapgen_singlenode.h @@ -35,12 +35,13 @@ class MapgenSinglenode : public Mapgen { public: u32 flags; content_t c_node; + u8 set_light; MapgenSinglenode(int mapgenid, MapgenParams *params, EmergeManager *emerge); ~MapgenSinglenode(); void makeChunk(BlockMakeData *data); - int getGroundLevelAtPoint(v2s16 p); + int getSpawnLevelAtPoint(v2s16 p); }; struct MapgenFactorySinglenode : public MapgenFactory { diff --git a/src/mapgen_v5.cpp b/src/mapgen_v5.cpp index 10e9f5e6..b98acb92 100644 --- a/src/mapgen_v5.cpp +++ b/src/mapgen_v5.cpp @@ -38,7 +38,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mg_ore.h" #include "mg_decoration.h" #include "mapgen_v5.h" -#include "util/directiontables.h" FlagDesc flagdesc_mapgen_v5[] = { @@ -55,7 +54,8 @@ MapgenV5::MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge) // amount of elements to skip for the next index // for noise/height/biome maps (not vmanip) this->ystride = csize.X; - this->zstride = csize.X * (csize.Y + 2); + // 1-down overgeneration + this->zstride_1d = csize.X * (csize.Y + 1); this->biomemap = new u8[csize.X * csize.Z]; this->heightmap = new s16[csize.X * csize.Z]; @@ -63,7 +63,9 @@ MapgenV5::MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge) this->humidmap = NULL; MapgenV5Params *sp = (MapgenV5Params *)params->sparams; - this->spflags = sp->spflags; + + this->spflags = sp->spflags; + this->cave_width = sp->cave_width; // Terrain noise noise_filler_depth = new Noise(&sp->np_filler_depth, seed, csize.X, csize.Z); @@ -71,9 +73,11 @@ MapgenV5::MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge) noise_height = new Noise(&sp->np_height, seed, csize.X, csize.Z); // 3D terrain noise - noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 2, csize.Z); - noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 2, csize.Z); + // 1-up 1-down overgeneration noise_ground = new Noise(&sp->np_ground, seed, csize.X, csize.Y + 2, csize.Z); + // 1-down overgeneraion + noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 1, csize.Z); + noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 1, csize.Z); // Biome noise noise_heat = new Noise(¶ms->np_biome_heat, seed, csize.X, csize.Z); @@ -131,7 +135,8 @@ MapgenV5::~MapgenV5() MapgenV5Params::MapgenV5Params() { - spflags = 0; + spflags = 0; + cave_width = 0.125; np_filler_depth = NoiseParams(0, 1, v3f(150, 150, 150), 261, 4, 0.7, 2.0); np_factor = NoiseParams(0, 1, v3f(250, 250, 250), 920381, 3, 0.45, 2.0); @@ -148,7 +153,8 @@ MapgenV5Params::MapgenV5Params() void MapgenV5Params::readParams(const Settings *settings) { - settings->getFlagStrNoEx("mgv5_spflags", spflags, flagdesc_mapgen_v5); + settings->getFlagStrNoEx("mgv5_spflags", spflags, flagdesc_mapgen_v5); + settings->getFloatNoEx("mgv5_cave_width", cave_width); settings->getNoiseParams("mgv5_np_filler_depth", np_filler_depth); settings->getNoiseParams("mgv5_np_factor", np_factor); @@ -161,7 +167,8 @@ void MapgenV5Params::readParams(const Settings *settings) void MapgenV5Params::writeParams(Settings *settings) const { - settings->setFlagStr("mgv5_spflags", spflags, flagdesc_mapgen_v5, U32_MAX); + settings->setFlagStr("mgv5_spflags", spflags, flagdesc_mapgen_v5, U32_MAX); + settings->setFloat("mgv5_cave_width", cave_width); settings->setNoiseParams("mgv5_np_filler_depth", np_filler_depth); settings->setNoiseParams("mgv5_np_factor", np_factor); @@ -172,7 +179,7 @@ void MapgenV5Params::writeParams(Settings *settings) const } -int MapgenV5::getGroundLevelAtPoint(v2s16 p) +int MapgenV5::getSpawnLevelAtPoint(v2s16 p) { //TimeTaker t("getGroundLevelAtPoint", NULL, PRECISION_MICRO); @@ -183,24 +190,25 @@ int MapgenV5::getGroundLevelAtPoint(v2s16 p) f *= 1.6; float h = NoisePerlin2D(&noise_height->np, p.X, p.Y, seed); - s16 search_start = 128; // Only bother searching this range, actual - s16 search_end = -128; // ground level is rarely higher or lower. - - for (s16 y = search_start; y >= search_end; y--) { + for (s16 y = 128; y >= -128; y--) { float n_ground = NoisePerlin3D(&noise_ground->np, p.X, y, p.Y, seed); - // If solid - if (n_ground * f > y - h) { + + if (n_ground * f > y - h) { // If solid // If either top 2 nodes of search are solid this is inside a - // mountain or floatland with no space for the player to spawn. - if (y >= search_start - 1) - return MAX_MAP_GENERATION_LIMIT; - else - return y; // Ground below at least 2 nodes of space + // mountain or floatland with possibly no space for the player to spawn. + if (y >= 127) { + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + } else { // Ground below at least 2 nodes of empty space + if (y <= water_level || y > water_level + 16) + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + else + return y; + } } } //printf("getGroundLevelAtPoint: %dus\n", t.stop()); - return -MAX_MAP_GENERATION_LIMIT; + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn position, no ground found } @@ -216,9 +224,9 @@ void MapgenV5::makeChunk(BlockMakeData *data) data->blockpos_requested.Y <= data->blockpos_max.Y && data->blockpos_requested.Z <= data->blockpos_max.Z); - generating = true; - vm = data->vmanip; - ndef = data->nodedef; + this->generating = true; + this->vm = data->vmanip; + this->ndef = data->nodedef; //TimeTaker t("makeChunk"); v3s16 blockpos_min = data->blockpos_min; @@ -296,7 +304,8 @@ void MapgenV5::makeChunk(BlockMakeData *data) } // Generate the registered decorations - m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); // Generate the registered ores m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); @@ -322,18 +331,16 @@ void MapgenV5::makeChunk(BlockMakeData *data) void MapgenV5::calculateNoise() { //TimeTaker t("calculateNoise", NULL, PRECISION_MICRO); - int x = node_min.X; - int y = node_min.Y - 1; - int z = node_min.Z; + s16 x = node_min.X; + s16 y = node_min.Y - 1; + s16 z = node_min.Z; noise_factor->perlinMap2D(x, z); noise_height->perlinMap2D(x, z); noise_ground->perlinMap3D(x, y, z); - if (flags & MG_CAVES) { - noise_cave1->perlinMap3D(x, y, z); - noise_cave2->perlinMap3D(x, y, z); - } + // Cave noises are calculated in generateCaves() + // only if solid terrain is present in mapchunk noise_filler_depth->perlinMap2D(x, z); noise_heat->perlinMap2D(x, z); @@ -377,9 +384,9 @@ int MapgenV5::generateBaseTerrain() for (s16 z=node_min.Z; z<=node_max.Z; z++) { for (s16 y=node_min.Y - 1; y<=node_max.Y + 1; y++) { - u32 i = vm->m_area.index(node_min.X, y, z); - for (s16 x=node_min.X; x<=node_max.X; x++, i++, index++, index2d++) { - if (vm->m_data[i].getContent() != CONTENT_IGNORE) + u32 vi = vm->m_area.index(node_min.X, y, z); + for (s16 x=node_min.X; x<=node_max.X; x++, vi++, index++, index2d++) { + if (vm->m_data[vi].getContent() != CONTENT_IGNORE) continue; float f = 0.55 + noise_factor->result[index2d]; @@ -391,11 +398,11 @@ int MapgenV5::generateBaseTerrain() if (noise_ground->result[index] * f < y - h) { if (y <= water_level) - vm->m_data[i] = MapNode(c_water_source); + vm->m_data[vi] = MapNode(c_water_source); else - vm->m_data[i] = MapNode(CONTENT_AIR); + vm->m_data[vi] = MapNode(CONTENT_AIR); } else { - vm->m_data[i] = MapNode(c_stone); + vm->m_data[vi] = MapNode(c_stone); if (y > stone_surface_max_y) stone_surface_max_y = y; } @@ -506,40 +513,6 @@ MgStoneType MapgenV5::generateBiomes(float *heat_map, float *humidity_map) } -void MapgenV5::generateCaves(int max_stone_y) -{ - if (max_stone_y >= node_min.Y) { - u32 index = 0; - - for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { - u32 i = vm->m_area.index(node_min.X, y, z); - for (s16 x = node_min.X; x <= node_max.X; x++, i++, index++) { - float d1 = contour(noise_cave1->result[index]); - float d2 = contour(noise_cave2->result[index]); - if (d1*d2 > 0.125) { - content_t c = vm->m_data[i].getContent(); - if (!ndef->get(c).is_ground_content || c == CONTENT_AIR) - continue; - - vm->m_data[i] = MapNode(CONTENT_AIR); - } - } - } - } - - if (node_max.Y > MGV5_LARGE_CAVE_DEPTH) - return; - - PseudoRandom ps(blockseed + 21343); - u32 bruises_count = (ps.range(1, 4) == 1) ? ps.range(1, 2) : 0; - for (u32 i = 0; i < bruises_count; i++) { - CaveV5 cave(this, &ps); - cave.makeCave(node_min, node_max, max_stone_y); - } -} - - void MapgenV5::dustTopNodes() { if (node_max.Y < water_level) @@ -588,3 +561,72 @@ void MapgenV5::dustTopNodes() } } } + + +void MapgenV5::generateCaves(int max_stone_y) +{ + if (max_stone_y < node_min.Y) + return; + + noise_cave1->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + noise_cave2->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + v3s16 em = vm->m_area.getExtent(); + u32 index2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { + bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor + // Indexes at column top (node_max.Y) + u32 vi = vm->m_area.index(x, node_max.Y, z); + u32 index3d = (z - node_min.Z) * zstride_1d + csize.Y * ystride + + (x - node_min.X); + // Biome of column + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index2d]); + + // Don't excavate the overgenerated stone at node_max.Y + 1, + // this creates a 'roof' over the tunnel, preventing light in + // tunnels at mapchunk borders when generating mapchunks upwards. + // This 'roof' is removed when the mapchunk above is generated. + for (s16 y = node_max.Y; y >= node_min.Y - 1; y--, + index3d -= ystride, + vm->m_area.add_y(em, vi, -1)) { + + content_t c = vm->m_data[vi].getContent(); + if (c == CONTENT_AIR || c == biome->c_water_top || + c == biome->c_water) { + column_is_open = true; + continue; + } + // Ground + float d1 = contour(noise_cave1->result[index3d]); + float d2 = contour(noise_cave2->result[index3d]); + + if (d1 * d2 > cave_width && ndef->get(c).is_ground_content) { + // In tunnel and ground content, excavate + vm->m_data[vi] = MapNode(CONTENT_AIR); + is_tunnel = true; + } else { + // Not in tunnel or not ground content + if (is_tunnel && column_is_open && + (c == biome->c_filler || c == biome->c_stone)) + // Tunnel entrance floor + vm->m_data[vi] = MapNode(biome->c_top); + + column_is_open = false; + is_tunnel = false; + } + } + } + + if (node_max.Y > MGV5_LARGE_CAVE_DEPTH) + return; + + PseudoRandom ps(blockseed + 21343); + u32 bruises_count = ps.range(0, 2); + for (u32 i = 0; i < bruises_count; i++) { + CaveV5 cave(this, &ps); + cave.makeCave(node_min, node_max, max_stone_y); + } +} diff --git a/src/mapgen_v5.h b/src/mapgen_v5.h index 4112bbfa..fd2f7f4d 100644 --- a/src/mapgen_v5.h +++ b/src/mapgen_v5.h @@ -32,6 +32,7 @@ extern FlagDesc flagdesc_mapgen_v5[]; struct MapgenV5Params : public MapgenSpecificParams { u32 spflags; + float cave_width; NoiseParams np_filler_depth; NoiseParams np_factor; NoiseParams np_height; @@ -53,14 +54,15 @@ public: BiomeManager *bmgr; int ystride; - int zstride; - u32 spflags; + int zstride_1d; v3s16 node_min; v3s16 node_max; v3s16 full_node_min; v3s16 full_node_max; + u32 spflags; + float cave_width; Noise *noise_filler_depth; Noise *noise_factor; Noise *noise_height; @@ -90,7 +92,7 @@ public: ~MapgenV5(); virtual void makeChunk(BlockMakeData *data); - int getGroundLevelAtPoint(v2s16 p); + int getSpawnLevelAtPoint(v2s16 p); void calculateNoise(); int generateBaseTerrain(); MgStoneType generateBiomes(float *heat_map, float *humidity_map); diff --git a/src/mapgen_v6.cpp b/src/mapgen_v6.cpp index 82ed6c4d..c389b2ed 100644 --- a/src/mapgen_v6.cpp +++ b/src/mapgen_v6.cpp @@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + #include "mapgen.h" #include "voxel.h" #include "noise.h" @@ -37,15 +38,19 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mg_decoration.h" #include "mapgen_v6.h" + FlagDesc flagdesc_mapgen_v6[] = { {"jungles", MGV6_JUNGLES}, {"biomeblend", MGV6_BIOMEBLEND}, {"mudflow", MGV6_MUDFLOW}, {"snowbiomes", MGV6_SNOWBIOMES}, + {"flat", MGV6_FLAT}, + {"trees", MGV6_TREES}, {NULL, 0} }; -/////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// MapgenV6::MapgenV6(int mapgenid, MapgenParams *params, EmergeManager *emerge) @@ -135,7 +140,9 @@ MapgenV6::~MapgenV6() MapgenV6Params::MapgenV6Params() { - spflags = MGV6_BIOMEBLEND | MGV6_MUDFLOW; + spflags = MGV6_JUNGLES | MGV6_SNOWBIOMES | MGV6_TREES | + MGV6_BIOMEBLEND | MGV6_MUDFLOW; + freq_desert = 0.45; freq_beach = 0.15; @@ -195,7 +202,6 @@ void MapgenV6Params::writeParams(Settings *settings) const //////////////////////// Some helper functions for the map generator - // Returns Y one under area minimum if not found s16 MapgenV6::find_stone_level(v2s16 p2d) { @@ -263,7 +269,7 @@ float MapgenV6::baseTerrainLevel(float terrain_base, float terrain_higher, float MapgenV6::baseTerrainLevelFromNoise(v2s16 p) { - if (flags & MG_FLAT) + if ((spflags & MGV6_FLAT) || (flags & MG_FLAT)) return water_level; float terrain_base = NoisePerlin2D_PO(&noise_terrain_base->np, @@ -289,7 +295,7 @@ float MapgenV6::baseTerrainLevelFromMap(v2s16 p) float MapgenV6::baseTerrainLevelFromMap(int index) { - if (flags & MG_FLAT) + if ((spflags & MGV6_FLAT) || (flags & MG_FLAT)) return water_level; float terrain_base = noise_terrain_base->result[index]; @@ -314,6 +320,17 @@ int MapgenV6::getGroundLevelAtPoint(v2s16 p) } +int MapgenV6::getSpawnLevelAtPoint(v2s16 p) +{ + s16 level_at_point = baseTerrainLevelFromNoise(p) + MGV6_AVERAGE_MUD_AMOUNT; + if (level_at_point <= water_level || + level_at_point > water_level + 16) + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + else + return level_at_point; +} + + //////////////////////// Noise functions float MapgenV6::getMudAmount(v2s16 p) @@ -386,7 +403,7 @@ bool MapgenV6::getHaveAppleTree(v2s16 p) float MapgenV6::getMudAmount(int index) { - if (flags & MG_FLAT) + if ((spflags & MGV6_FLAT) || (flags & MG_FLAT)) return MGV6_AVERAGE_MUD_AMOUNT; /*return ((float)AVERAGE_MUD_AMOUNT + 2.0 * noise2d_perlin( @@ -466,11 +483,11 @@ void MapgenV6::makeChunk(BlockMakeData *data) assert(data->vmanip); assert(data->nodedef); assert(data->blockpos_requested.X >= data->blockpos_min.X && - data->blockpos_requested.Y >= data->blockpos_min.Y && - data->blockpos_requested.Z >= data->blockpos_min.Z); + data->blockpos_requested.Y >= data->blockpos_min.Y && + data->blockpos_requested.Z >= data->blockpos_min.Z); assert(data->blockpos_requested.X <= data->blockpos_max.X && - data->blockpos_requested.Y <= data->blockpos_max.Y && - data->blockpos_requested.Z <= data->blockpos_max.Z); + data->blockpos_requested.Y <= data->blockpos_max.Y && + data->blockpos_requested.Z <= data->blockpos_max.Z); this->generating = true; this->vm = data->vmanip; @@ -579,18 +596,21 @@ void MapgenV6::makeChunk(BlockMakeData *data) growGrass(); // Generate some trees, and add grass, if a jungle - if (flags & MG_TREES) + if ((spflags & MGV6_TREES) || (flags & MG_TREES)) placeTreesAndJungleGrass(); // Generate the registered decorations - m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); // Generate the registered ores m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); // Calculate lighting if (flags & MG_LIGHT) - calcLighting(node_min, node_max); + calcLighting(node_min - v3s16(1, 1, 1) * MAP_BLOCKSIZE, + node_max + v3s16(1, 0, 1) * MAP_BLOCKSIZE, + full_node_min, full_node_max); this->generating = false; } @@ -603,7 +623,7 @@ void MapgenV6::calculateNoise() int fx = full_node_min.X; int fz = full_node_min.Z; - if (!(flags & MG_FLAT)) { + if (!((spflags & MGV6_FLAT) || (flags & MG_FLAT))) { noise_terrain_base->perlinMap2D_PO(x, 0.5, z, 0.5); noise_terrain_higher->perlinMap2D_PO(x, 0.5, z, 0.5); noise_steepness->perlinMap2D_PO(x, 0.5, z, 0.5); @@ -803,7 +823,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) continue; // Drop mud on side - for(u32 di = 0; di < 4; di++) { + for (u32 di = 0; di < 4; di++) { v3s16 dirp = dirs4[di]; u32 i2 = i; // Move to side @@ -828,7 +848,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) vm->m_area.add_y(em, i2, -1); n2 = &vm->m_data[i2]; // if out of known area - if(vm->m_area.contains(i2) == false || + if (vm->m_area.contains(i2) == false || n2->getContent() == CONTENT_IGNORE) { dropped_to_unknown = true; break; @@ -843,7 +863,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) if (!dropped_to_unknown) { *n2 = *n; // Set old place to be air (or water) - if(old_is_water) + if (old_is_water) *n = MapNode(c_water_source); else *n = MapNode(CONTENT_AIR); diff --git a/src/mapgen_v6.h b/src/mapgen_v6.h index 685fdad7..a55fc6d5 100644 --- a/src/mapgen_v6.h +++ b/src/mapgen_v6.h @@ -36,6 +36,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #define MGV6_BIOMEBLEND 0x02 #define MGV6_MUDFLOW 0x04 #define MGV6_SNOWBIOMES 0x08 +#define MGV6_FLAT 0x10 +#define MGV6_TREES 0x20 extern FlagDesc flagdesc_mapgen_v6[]; @@ -127,6 +129,7 @@ public: void makeChunk(BlockMakeData *data); int getGroundLevelAtPoint(v2s16 p); + int getSpawnLevelAtPoint(v2s16 p); float baseTerrainLevel(float terrain_base, float terrain_higher, float steepness, float height_select); diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 77b9721c..9fb65f57 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -46,6 +46,7 @@ FlagDesc flagdesc_mapgen_v7[] = { {NULL, 0} }; + /////////////////////////////////////////////////////////////////////////////// @@ -58,7 +59,10 @@ MapgenV7::MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge) //// amount of elements to skip for the next index //// for noise/height/biome maps (not vmanip) this->ystride = csize.X; - this->zstride = csize.X * (csize.Y + 2); + // 1-up 1-down overgeneration + this->zstride_1u1d = csize.X * (csize.Y + 2); + // 1-down overgeneration + this->zstride_1d = csize.X * (csize.Y + 1); this->biomemap = new u8[csize.X * csize.Z]; this->heightmap = new s16[csize.X * csize.Z]; @@ -67,7 +71,9 @@ MapgenV7::MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge) this->ridge_heightmap = new s16[csize.X * csize.Z]; MapgenV7Params *sp = (MapgenV7Params *)params->sparams; - this->spflags = sp->spflags; + + this->spflags = sp->spflags; + this->cave_width = sp->cave_width; //// Terrain noise noise_terrain_base = new Noise(&sp->np_terrain_base, seed, csize.X, csize.Z); @@ -79,10 +85,12 @@ MapgenV7::MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge) noise_ridge_uwater = new Noise(&sp->np_ridge_uwater, seed, csize.X, csize.Z); //// 3d terrain noise + // 1-up 1-down overgeneration noise_mountain = new Noise(&sp->np_mountain, seed, csize.X, csize.Y + 2, csize.Z); noise_ridge = new Noise(&sp->np_ridge, seed, csize.X, csize.Y + 2, csize.Z); - noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 2, csize.Z); - noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 2, csize.Z); + // 1-down overgeneraion + noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 1, csize.Z); + noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 1, csize.Z); //// Biome noise noise_heat = new Noise(¶ms->np_biome_heat, seed, csize.X, csize.Z); @@ -146,25 +154,27 @@ MapgenV7::~MapgenV7() MapgenV7Params::MapgenV7Params() { - spflags = MGV7_MOUNTAINS | MGV7_RIDGES; + spflags = MGV7_MOUNTAINS | MGV7_RIDGES; + cave_width = 0.3; np_terrain_base = NoiseParams(4, 70, v3f(600, 600, 600), 82341, 5, 0.6, 2.0); np_terrain_alt = NoiseParams(4, 25, v3f(600, 600, 600), 5934, 5, 0.6, 2.0); np_terrain_persist = NoiseParams(0.6, 0.1, v3f(2000, 2000, 2000), 539, 3, 0.6, 2.0); - np_height_select = NoiseParams(-12, 24, v3f(500, 500, 500), 4213, 6, 0.7, 2.0); + np_height_select = NoiseParams(-8, 16, v3f(500, 500, 500), 4213, 6, 0.7, 2.0); np_filler_depth = NoiseParams(0, 1.2, v3f(150, 150, 150), 261, 3, 0.7, 2.0); np_mount_height = NoiseParams(256, 112, v3f(1000, 1000, 1000), 72449, 3, 0.6, 2.0); np_ridge_uwater = NoiseParams(0, 1, v3f(1000, 1000, 1000), 85039, 5, 0.6, 2.0); np_mountain = NoiseParams(-0.6, 1, v3f(250, 350, 250), 5333, 5, 0.63, 2.0); np_ridge = NoiseParams(0, 1, v3f(100, 100, 100), 6467, 4, 0.75, 2.0); - np_cave1 = NoiseParams(0, 12, v3f(100, 100, 100), 52534, 4, 0.5, 2.0); - np_cave2 = NoiseParams(0, 12, v3f(100, 100, 100), 10325, 4, 0.5, 2.0); + np_cave1 = NoiseParams(0, 12, v3f(96, 96, 96), 52534, 4, 0.5, 2.0); + np_cave2 = NoiseParams(0, 12, v3f(96, 96, 96), 10325, 4, 0.5, 2.0); } void MapgenV7Params::readParams(const Settings *settings) { - settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7); + settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7); + settings->getFloatNoEx("mgv7_cave_width", cave_width); settings->getNoiseParams("mgv7_np_terrain_base", np_terrain_base); settings->getNoiseParams("mgv7_np_terrain_alt", np_terrain_alt); @@ -182,7 +192,8 @@ void MapgenV7Params::readParams(const Settings *settings) void MapgenV7Params::writeParams(Settings *settings) const { - settings->setFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7, U32_MAX); + settings->setFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7, U32_MAX); + settings->setFloat("mgv7_cave_width", cave_width); settings->setNoiseParams("mgv7_np_terrain_base", np_terrain_base); settings->setNoiseParams("mgv7_np_terrain_alt", np_terrain_alt); @@ -198,10 +209,10 @@ void MapgenV7Params::writeParams(Settings *settings) const } -/////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// -int MapgenV7::getGroundLevelAtPoint(v2s16 p) +int MapgenV7::getSpawnLevelAtPoint(v2s16 p) { // Base terrain calculation s16 y = baseTerrainLevelAtPoint(p.X, p.Y); @@ -209,22 +220,24 @@ int MapgenV7::getGroundLevelAtPoint(v2s16 p) // Ridge/river terrain calculation float width = 0.2; float uwatern = NoisePerlin2D(&noise_ridge_uwater->np, p.X, p.Y, seed) * 2; - // actually computing the depth of the ridge is much more expensive; - // if inside a river, simply guess + // if inside a river this is an unsuitable spawn point if (fabs(uwatern) <= width) - return water_level - 10; + return MAX_MAP_GENERATION_LIMIT; // Mountain terrain calculation - int iters = 128; // don't even bother iterating more than 128 times.. + int iters = 128; while (iters--) { - //current point would have been air - if (!getMountainTerrainAtPoint(p.X, y, p.Y)) - return y; - + if (!getMountainTerrainAtPoint(p.X, y + 1, p.Y)) { // Air, y is ground level + if (y <= water_level || y > water_level + 16) + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + else + return y; + } y++; } - return y; + // Unsuitable spawn point, no ground surface found + return MAX_MAP_GENERATION_LIMIT; } @@ -257,10 +270,13 @@ void MapgenV7::makeChunk(BlockMakeData *data) // Make some noise calculateNoise(); - // Generate base terrain, mountains, and ridges with initial heightmaps + // Generate terrain and ridges with initial heightmaps s16 stone_surface_max_y = generateTerrain(); - // Create heightmap + if (spflags & MGV7_RIDGES) + generateRidgeTerrain(); + + // Update heightmap to include mountain terrain updateHeightmap(node_min, node_max); // Create biomemap at heightmap surface @@ -317,7 +333,8 @@ void MapgenV7::makeChunk(BlockMakeData *data) } // Generate the registered decorations - m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); // Generate the registered ores m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); @@ -343,9 +360,9 @@ void MapgenV7::makeChunk(BlockMakeData *data) void MapgenV7::calculateNoise() { //TimeTaker t("calculateNoise", NULL, PRECISION_MICRO); - int x = node_min.X; - int y = node_min.Y - 1; - int z = node_min.Z; + s16 x = node_min.X; + s16 y = node_min.Y - 1; + s16 z = node_min.Z; noise_terrain_persist->perlinMap2D(x, z); float *persistmap = noise_terrain_persist->result; @@ -354,9 +371,9 @@ void MapgenV7::calculateNoise() noise_terrain_alt->perlinMap2D(x, z, persistmap); noise_height_select->perlinMap2D(x, z); - if (flags & MG_CAVES) { - noise_cave1->perlinMap3D(x, y, z); - noise_cave2->perlinMap3D(x, y, z); + if (spflags & MGV7_MOUNTAINS) { + noise_mountain->perlinMap3D(x, y, z); + noise_mount_height->perlinMap2D(x, z); } if ((spflags & MGV7_RIDGES) && node_max.Y >= water_level) { @@ -364,7 +381,8 @@ void MapgenV7::calculateNoise() noise_ridge_uwater->perlinMap2D(x, z); } - // Mountain noises are calculated in generateMountainTerrain() + // Cave noises are calculated in generateCaves() + // only if solid terrain is present in mapchunk noise_filler_depth->perlinMap2D(x, z); noise_heat->perlinMap2D(x, z); @@ -394,7 +412,7 @@ Biome *MapgenV7::getBiomeAtPoint(v3s16 p) return bmgr->getBiome(heat, humidity, groundlevel); } -//needs to be updated + float MapgenV7::baseTerrainLevelAtPoint(s16 x, s16 z) { float hselect = NoisePerlin2D(&noise_height_select->np, x, z, seed); @@ -448,142 +466,62 @@ bool MapgenV7::getMountainTerrainFromMap(int idx_xyz, int idx_xz, s16 y) } -#if 0 -void MapgenV7::carveRivers() { - MapNode n_air(CONTENT_AIR), n_water_source(c_water_source); - MapNode n_stone(c_stone); - u32 index = 0; - - int river_depth = 4; - - for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 x = node_min.X; x <= node_max.X; x++, index++) { - float terrain_mod = noise_terrain_mod->result[index]; - NoiseParams *np = noise_terrain_river->np; - np.persist = noise_terrain_persist->result[index]; - float terrain_river = NoisePerlin2DNoTxfm(np, x, z, seed); - float height = terrain_river * (1 - abs(terrain_mod)) * - noise_terrain_river->np.scale; - height = log(height * height); //log(h^3) is pretty interesting for terrain - - s16 y = heightmap[index]; - if (height < 1.0 && y > river_depth && - y - river_depth >= node_min.Y && y <= node_max.Y) { - - for (s16 ry = y; ry != y - river_depth; ry--) { - u32 vi = vm->m_area.index(x, ry, z); - vm->m_data[vi] = n_air; - } - - u32 vi = vm->m_area.index(x, y - river_depth, z); - vm->m_data[vi] = n_water_source; - } - } -} -#endif - - int MapgenV7::generateTerrain() -{ - s16 stone_surface_min_y; - s16 stone_surface_max_y; - - generateBaseTerrain(&stone_surface_min_y, &stone_surface_max_y); - - if ((spflags & MGV7_MOUNTAINS) && stone_surface_min_y < node_max.Y) - stone_surface_max_y = generateMountainTerrain(stone_surface_max_y); - - if (spflags & MGV7_RIDGES) - generateRidgeTerrain(); - - return stone_surface_max_y; -} - - -void MapgenV7::generateBaseTerrain(s16 *stone_surface_min_y, s16 *stone_surface_max_y) { MapNode n_air(CONTENT_AIR); MapNode n_stone(c_stone); MapNode n_water(c_water_source); v3s16 em = vm->m_area.getExtent(); - s16 surface_min_y = MAX_MAP_GENERATION_LIMIT; - s16 surface_max_y = -MAX_MAP_GENERATION_LIMIT; - u32 index = 0; + s16 stone_surface_max_y = -MAX_MAP_GENERATION_LIMIT; + u32 index2d = 0; + bool mountain_flag = spflags & MGV7_MOUNTAINS; for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 x = node_min.X; x <= node_max.X; x++, index++) { - float surface_height = baseTerrainLevelFromMap(index); - s16 surface_y = (s16)surface_height; + for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { + s16 surface_y = baseTerrainLevelFromMap(index2d); + heightmap[index2d] = surface_y; // Create base terrain heightmap + ridge_heightmap[index2d] = surface_y; - heightmap[index] = surface_y; - ridge_heightmap[index] = surface_y; + if (surface_y > stone_surface_max_y) + stone_surface_max_y = surface_y; - if (surface_y < surface_min_y) - surface_min_y = surface_y; + u32 vi = vm->m_area.index(x, node_min.Y - 1, z); + u32 index3d = (z - node_min.Z) * zstride_1u1d + (x - node_min.X); - if (surface_y > surface_max_y) - surface_max_y = surface_y; - - u32 i = vm->m_area.index(x, node_min.Y - 1, z); for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { - if (vm->m_data[i].getContent() == CONTENT_IGNORE) { - if (y <= surface_y) - vm->m_data[i] = n_stone; - else if (y <= water_level) - vm->m_data[i] = n_water; - else - vm->m_data[i] = n_air; + if (vm->m_data[vi].getContent() == CONTENT_IGNORE) { + if (y <= surface_y) { + vm->m_data[vi] = n_stone; // Base terrain + } else if (mountain_flag && + getMountainTerrainFromMap(index3d, index2d, y)) { + vm->m_data[vi] = n_stone; // Mountain terrain + if (y > stone_surface_max_y) + stone_surface_max_y = y; + } else if (y <= water_level) { + vm->m_data[vi] = n_water; + } else { + vm->m_data[vi] = n_air; + } } - vm->m_area.add_y(em, i, 1); + vm->m_area.add_y(em, vi, 1); + index3d += ystride; } } - *stone_surface_min_y = surface_min_y; - *stone_surface_max_y = surface_max_y; -} - - -int MapgenV7::generateMountainTerrain(s16 ymax) -{ - noise_mountain->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); - noise_mount_height->perlinMap2D(node_min.X, node_min.Z); - - MapNode n_stone(c_stone); - u32 j = 0; - - for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { - u32 vi = vm->m_area.index(node_min.X, y, z); - for (s16 x = node_min.X; x <= node_max.X; x++) { - int index = (z - node_min.Z) * csize.X + (x - node_min.X); - content_t c = vm->m_data[vi].getContent(); - - if (getMountainTerrainFromMap(j, index, y) - && (c == CONTENT_AIR || c == c_water_source)) { - vm->m_data[vi] = n_stone; - if (y > ymax) - ymax = y; - } - - vi++; - j++; - } - } - - return ymax; + return stone_surface_max_y; } void MapgenV7::generateRidgeTerrain() { - if (node_max.Y < water_level) + if (node_max.Y < water_level - 16) return; MapNode n_water(c_water_source); MapNode n_air(CONTENT_AIR); u32 index = 0; - float width = 0.2; // TODO: figure out acceptable perlin noise values + float width = 0.2; for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { @@ -591,7 +529,7 @@ void MapgenV7::generateRidgeTerrain() for (s16 x = node_min.X; x <= node_max.X; x++, index++, vi++) { int j = (z - node_min.Z) * csize.X + (x - node_min.X); - if (heightmap[j] < water_level - 16) + if (heightmap[j] < water_level - 16) // Use base terrain heightmap continue; float uwatern = noise_ridge_uwater->result[j] * 2; @@ -762,6 +700,143 @@ void MapgenV7::dustTopNodes() } +void MapgenV7::generateCaves(s16 max_stone_y) +{ + if (max_stone_y < node_min.Y) + return; + + noise_cave1->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + noise_cave2->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + v3s16 em = vm->m_area.getExtent(); + u32 index2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { + bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor + // Indexes at column top (node_max.Y) + u32 vi = vm->m_area.index(x, node_max.Y, z); + u32 index3d = (z - node_min.Z) * zstride_1d + csize.Y * ystride + + (x - node_min.X); + // Biome of column + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index2d]); + + // Don't excavate the overgenerated stone at node_max.Y + 1, + // this creates a 'roof' over the tunnel, preventing light in + // tunnels at mapchunk borders when generating mapchunks upwards. + // This 'roof' is removed when the mapchunk above is generated. + for (s16 y = node_max.Y; y >= node_min.Y - 1; y--, + index3d -= ystride, + vm->m_area.add_y(em, vi, -1)) { + + content_t c = vm->m_data[vi].getContent(); + if (c == CONTENT_AIR || c == biome->c_water_top || + c == biome->c_water) { + column_is_open = true; + continue; + } + // Ground + float d1 = contour(noise_cave1->result[index3d]); + float d2 = contour(noise_cave2->result[index3d]); + + if (d1 * d2 > cave_width && ndef->get(c).is_ground_content) { + // In tunnel and ground content, excavate + vm->m_data[vi] = MapNode(CONTENT_AIR); + is_tunnel = true; + } else { + // Not in tunnel or not ground content + if (is_tunnel && column_is_open && + (c == biome->c_filler || c == biome->c_stone)) + // Tunnel entrance floor + vm->m_data[vi] = MapNode(biome->c_top); + + column_is_open = false; + is_tunnel = false; + } + } + } + + if (node_min.Y >= water_level) + return; + + PseudoRandom ps(blockseed + 21343); + u32 bruises_count = ps.range(0, 2); + for (u32 i = 0; i < bruises_count; i++) { + CaveV7 cave(this, &ps); + cave.makeCave(node_min, node_max, max_stone_y); + } +} + + +/////////////////////////////////////////////////////////////// + + +#if 0 +int MapgenV7::generateMountainTerrain(s16 ymax) +{ + MapNode n_stone(c_stone); + u32 j = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { + u32 vi = vm->m_area.index(node_min.X, y, z); + for (s16 x = node_min.X; x <= node_max.X; x++) { + int index = (z - node_min.Z) * csize.X + (x - node_min.X); + content_t c = vm->m_data[vi].getContent(); + + if (getMountainTerrainFromMap(j, index, y) + && (c == CONTENT_AIR || c == c_water_source)) { + vm->m_data[vi] = n_stone; + if (y > ymax) + ymax = y; + } + + vi++; + j++; + } + } + + return ymax; +} +#endif + + +#if 0 +void MapgenV7::carveRivers() { + MapNode n_air(CONTENT_AIR), n_water_source(c_water_source); + MapNode n_stone(c_stone); + u32 index = 0; + + int river_depth = 4; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index++) { + float terrain_mod = noise_terrain_mod->result[index]; + NoiseParams *np = noise_terrain_river->np; + np.persist = noise_terrain_persist->result[index]; + float terrain_river = NoisePerlin2DNoTxfm(np, x, z, seed); + float height = terrain_river * (1 - abs(terrain_mod)) * + noise_terrain_river->np.scale; + height = log(height * height); //log(h^3) is pretty interesting for terrain + + s16 y = heightmap[index]; + if (height < 1.0 && y > river_depth && + y - river_depth >= node_min.Y && y <= node_max.Y) { + + for (s16 ry = y; ry != y - river_depth; ry--) { + u32 vi = vm->m_area.index(x, ry, z); + vm->m_data[vi] = n_air; + } + + u32 vi = vm->m_area.index(x, y - river_depth, z); + vm->m_data[vi] = n_water_source; + } + } +} +#endif + + #if 0 void MapgenV7::addTopNodes() { @@ -856,34 +931,3 @@ void MapgenV7::addTopNodes() } } #endif - - -void MapgenV7::generateCaves(s16 max_stone_y) -{ - if (max_stone_y >= node_min.Y) { - u32 index = 0; - - for (s16 z = node_min.Z; z <= node_max.Z; z++) - for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { - u32 i = vm->m_area.index(node_min.X, y, z); - for (s16 x = node_min.X; x <= node_max.X; x++, i++, index++) { - float d1 = contour(noise_cave1->result[index]); - float d2 = contour(noise_cave2->result[index]); - if (d1 * d2 > 0.3) { - content_t c = vm->m_data[i].getContent(); - if (!ndef->get(c).is_ground_content || c == CONTENT_AIR) - continue; - - vm->m_data[i] = MapNode(CONTENT_AIR); - } - } - } - } - - PseudoRandom ps(blockseed + 21343); - u32 bruises_count = (ps.range(1, 4) == 1) ? ps.range(1, 2) : 0; - for (u32 i = 0; i < bruises_count; i++) { - CaveV7 cave(this, &ps); - cave.makeCave(node_min, node_max, max_stone_y); - } -} diff --git a/src/mapgen_v7.h b/src/mapgen_v7.h index 9b483b04..c2522064 100644 --- a/src/mapgen_v7.h +++ b/src/mapgen_v7.h @@ -34,6 +34,7 @@ extern FlagDesc flagdesc_mapgen_v7[]; struct MapgenV7Params : public MapgenSpecificParams { u32 spflags; + float cave_width; NoiseParams np_terrain_base; NoiseParams np_terrain_alt; NoiseParams np_terrain_persist; @@ -59,8 +60,8 @@ public: BiomeManager *bmgr; int ystride; - int zstride; - u32 spflags; + int zstride_1u1d; + int zstride_1d; v3s16 node_min; v3s16 node_max; @@ -69,6 +70,8 @@ public: s16 *ridge_heightmap; + u32 spflags; + float cave_width; Noise *noise_terrain_base; Noise *noise_terrain_alt; Noise *noise_terrain_persist; @@ -103,7 +106,7 @@ public: ~MapgenV7(); virtual void makeChunk(BlockMakeData *data); - int getGroundLevelAtPoint(v2s16 p); + int getSpawnLevelAtPoint(v2s16 p); Biome *getBiomeAtPoint(v3s16 p); float baseTerrainLevelAtPoint(s16 x, s16 z); @@ -113,16 +116,12 @@ public: void calculateNoise(); - virtual int generateTerrain(); - void generateBaseTerrain(s16 *stone_surface_min_y, s16 *stone_surface_max_y); - int generateMountainTerrain(s16 ymax); + int generateTerrain(); void generateRidgeTerrain(); MgStoneType generateBiomes(float *heat_map, float *humidity_map); void dustTopNodes(); - //void addTopNodes(); - void generateCaves(s16 max_stone_y); }; diff --git a/src/mapgen_valleys.cpp b/src/mapgen_valleys.cpp new file mode 100644 index 00000000..0ec5409c --- /dev/null +++ b/src/mapgen_valleys.cpp @@ -0,0 +1,1017 @@ +/* +Minetest Valleys C +Copyright (C) 2010-2015 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 paramat, Matt Gregory +Copyright (C) 2016 Duane Robertson + +Based on Valleys Mapgen by Gael de Sailly + (https://forum.minetest.net/viewtopic.php?f=9&t=11430) +and mapgen_v7, mapgen_flat by kwolekr and paramat. + +Licensing changed by permission of Gael de Sailly. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "mapgen.h" +#include "voxel.h" +#include "noise.h" +#include "mapblock.h" +#include "mapnode.h" +#include "map.h" +#include "content_sao.h" +#include "nodedef.h" +#include "voxelalgorithms.h" +#include "settings.h" // For g_settings +#include "emerge.h" +#include "dungeongen.h" +#include "treegen.h" +#include "mg_biome.h" +#include "mg_ore.h" +#include "mg_decoration.h" +#include "mapgen_valleys.h" +#include "cavegen.h" + + +//#undef NDEBUG +//#include "assert.h" + +//#include "util/timetaker.h" +//#include "profiler.h" + + +//static Profiler mapgen_prof; +//Profiler *mapgen_profiler = &mapgen_prof; + +static FlagDesc flagdesc_mapgen_valleys[] = { + {"altitude_chill", MGVALLEYS_ALT_CHILL}, + {"humid_rivers", MGVALLEYS_HUMID_RIVERS}, + {NULL, 0} +}; + +/////////////////////////////////////////////////////////////////////////////// + + +MapgenValleys::MapgenValleys(int mapgenid, MapgenParams *params, EmergeManager *emerge) + : Mapgen(mapgenid, params, emerge) +{ + this->m_emerge = emerge; + this->bmgr = emerge->biomemgr; + + //// amount of elements to skip for the next index + //// for noise/height/biome maps (not vmanip) + this->ystride = csize.X; + this->zstride = csize.X * (csize.Y + 2); + // 1-down overgeneration + this->zstride_1d = csize.X * (csize.Y + 1); + + this->biomemap = new u8[csize.X * csize.Z]; + this->heightmap = new s16[csize.X * csize.Z]; + this->heatmap = NULL; + this->humidmap = NULL; + + this->map_gen_limit = MYMIN(MAX_MAP_GENERATION_LIMIT, + g_settings->getU16("map_generation_limit")); + + MapgenValleysParams *sp = (MapgenValleysParams *)params->sparams; + + this->spflags = sp->spflags; + this->altitude_chill = sp->altitude_chill; + this->large_cave_depth = sp->large_cave_depth; + this->lava_features_lim = rangelim(sp->lava_features, 0, 10); + this->massive_cave_depth = sp->massive_cave_depth; + this->river_depth_bed = sp->river_depth + 1.f; + this->river_size_factor = sp->river_size / 100.f; + this->water_features_lim = rangelim(sp->water_features, 0, 10); + this->cave_width = sp->cave_width; + + //// 2D Terrain noise + noise_filler_depth = new Noise(&sp->np_filler_depth, seed, csize.X, csize.Z); + noise_inter_valley_slope = new Noise(&sp->np_inter_valley_slope, seed, csize.X, csize.Z); + noise_rivers = new Noise(&sp->np_rivers, seed, csize.X, csize.Z); + noise_terrain_height = new Noise(&sp->np_terrain_height, seed, csize.X, csize.Z); + noise_valley_depth = new Noise(&sp->np_valley_depth, seed, csize.X, csize.Z); + noise_valley_profile = new Noise(&sp->np_valley_profile, seed, csize.X, csize.Z); + + //// 3D Terrain noise + // 1-up 1-down overgeneration + noise_inter_valley_fill = new Noise(&sp->np_inter_valley_fill, seed, csize.X, csize.Y + 2, csize.Z); + // 1-down overgeneraion + noise_cave1 = new Noise(&sp->np_cave1, seed, csize.X, csize.Y + 1, csize.Z); + noise_cave2 = new Noise(&sp->np_cave2, seed, csize.X, csize.Y + 1, csize.Z); + noise_massive_caves = new Noise(&sp->np_massive_caves, seed, csize.X, csize.Y + 1, csize.Z); + + //// Biome noise + noise_heat_blend = new Noise(¶ms->np_biome_heat_blend, seed, csize.X, csize.Z); + noise_heat = new Noise(¶ms->np_biome_heat, seed, csize.X, csize.Z); + noise_humidity_blend = new Noise(¶ms->np_biome_humidity_blend, seed, csize.X, csize.Z); + noise_humidity = new Noise(¶ms->np_biome_humidity, seed, csize.X, csize.Z); + + this->humid_rivers = (spflags & MGVALLEYS_HUMID_RIVERS); + this->use_altitude_chill = (spflags & MGVALLEYS_ALT_CHILL); + this->humidity_adjust = params->np_biome_humidity.offset - 50.f; + + // a small chance of overflows if the settings are very high + this->cave_water_max_height = water_level + MYMAX(0, water_features_lim - 4) * 50; + this->lava_max_height = water_level + MYMAX(0, lava_features_lim - 4) * 50; + + tcave_cache = new float[csize.Y + 2]; + + //// Resolve nodes to be used + INodeDefManager *ndef = emerge->ndef; + + c_cobble = ndef->getId("mapgen_cobble"); + c_desert_stone = ndef->getId("mapgen_desert_stone"); + c_dirt = ndef->getId("mapgen_dirt"); + c_lava_source = ndef->getId("mapgen_lava_source"); + c_mossycobble = ndef->getId("mapgen_mossycobble"); + c_river_water_source = ndef->getId("mapgen_river_water_source"); + c_sand = ndef->getId("mapgen_sand"); + c_sandstonebrick = ndef->getId("mapgen_sandstonebrick"); + c_sandstone = ndef->getId("mapgen_sandstone"); + c_stair_cobble = ndef->getId("mapgen_stair_cobble"); + c_stair_sandstonebrick = ndef->getId("mapgen_stair_sandstonebrick"); + c_stone = ndef->getId("mapgen_stone"); + c_water_source = ndef->getId("mapgen_water_source"); + + if (c_mossycobble == CONTENT_IGNORE) + c_mossycobble = c_cobble; + if (c_river_water_source == CONTENT_IGNORE) + c_river_water_source = c_water_source; + if (c_sand == CONTENT_IGNORE) + c_sand = c_stone; + if (c_sandstonebrick == CONTENT_IGNORE) + c_sandstonebrick = c_sandstone; + if (c_stair_cobble == CONTENT_IGNORE) + c_stair_cobble = c_cobble; + if (c_stair_sandstonebrick == CONTENT_IGNORE) + c_stair_sandstonebrick = c_sandstone; +} + + +MapgenValleys::~MapgenValleys() +{ + delete noise_cave1; + delete noise_cave2; + delete noise_filler_depth; + delete noise_inter_valley_fill; + delete noise_inter_valley_slope; + delete noise_rivers; + delete noise_massive_caves; + delete noise_terrain_height; + delete noise_valley_depth; + delete noise_valley_profile; + + delete noise_heat; + delete noise_heat_blend; + delete noise_humidity; + delete noise_humidity_blend; + + delete[] biomemap; + delete[] heightmap; + delete[] tcave_cache; +} + + +MapgenValleysParams::MapgenValleysParams() +{ + spflags = MGVALLEYS_HUMID_RIVERS | MGVALLEYS_ALT_CHILL; + altitude_chill = 90; // The altitude at which temperature drops by 20C. + large_cave_depth = -33; + lava_features = 0; // How often water will occur in caves. + massive_cave_depth = -256; // highest altitude of massive caves + river_depth = 4; // How deep to carve river channels. + river_size = 5; // How wide to make rivers. + water_features = 0; // How often water will occur in caves. + cave_width = 0.3; + + np_cave1 = NoiseParams(0, 12, v3f(96, 96, 96), 52534, 4, 0.5, 2.0); + np_cave2 = NoiseParams(0, 12, v3f(96, 96, 96), 10325, 4, 0.5, 2.0); + np_filler_depth = NoiseParams(0.f, 1.2f, v3f(256, 256, 256), 1605, 3, 0.5f, 2.f); + np_inter_valley_fill = NoiseParams(0.f, 1.f, v3f(256, 512, 256), 1993, 6, 0.8f, 2.f); + np_inter_valley_slope = NoiseParams(0.5f, 0.5f, v3f(128, 128, 128), 746, 1, 1.f, 2.f); + np_rivers = NoiseParams(0.f, 1.f, v3f(256, 256, 256), -6050, 5, 0.6f, 2.f); + np_massive_caves = NoiseParams(0.f, 1.f, v3f(768, 256, 768), 59033, 6, 0.63f, 2.f); + np_terrain_height = NoiseParams(-10.f, 50.f, v3f(1024, 1024, 1024), 5202, 6, 0.4f, 2.f); + np_valley_depth = NoiseParams(5.f, 4.f, v3f(512, 512, 512), -1914, 1, 1.f, 2.f); + np_valley_profile = NoiseParams(0.6f, 0.5f, v3f(512, 512, 512), 777, 1, 1.f, 2.f); +} + + +void MapgenValleysParams::readParams(const Settings *settings) +{ + settings->getFlagStrNoEx("mgvalleys_spflags", spflags, flagdesc_mapgen_valleys); + settings->getU16NoEx("mgvalleys_altitude_chill", altitude_chill); + settings->getS16NoEx("mgvalleys_large_cave_depth", large_cave_depth); + settings->getU16NoEx("mgvalleys_lava_features", lava_features); + settings->getS16NoEx("mgvalleys_massive_cave_depth", massive_cave_depth); + settings->getU16NoEx("mgvalleys_river_depth", river_depth); + settings->getU16NoEx("mgvalleys_river_size", river_size); + settings->getU16NoEx("mgvalleys_water_features", water_features); + settings->getFloatNoEx("mgvalleys_cave_width", cave_width); + + settings->getNoiseParams("mgvalleys_np_cave1", np_cave1); + settings->getNoiseParams("mgvalleys_np_cave2", np_cave2); + settings->getNoiseParams("mgvalleys_np_filler_depth", np_filler_depth); + settings->getNoiseParams("mgvalleys_np_inter_valley_fill", np_inter_valley_fill); + settings->getNoiseParams("mgvalleys_np_inter_valley_slope", np_inter_valley_slope); + settings->getNoiseParams("mgvalleys_np_rivers", np_rivers); + settings->getNoiseParams("mgvalleys_np_massive_caves", np_massive_caves); + settings->getNoiseParams("mgvalleys_np_terrain_height", np_terrain_height); + settings->getNoiseParams("mgvalleys_np_valley_depth", np_valley_depth); + settings->getNoiseParams("mgvalleys_np_valley_profile", np_valley_profile); +} + + +void MapgenValleysParams::writeParams(Settings *settings) const +{ + settings->setFlagStr("mgvalleys_spflags", spflags, flagdesc_mapgen_valleys, U32_MAX); + settings->setU16("mgvalleys_altitude_chill", altitude_chill); + settings->setS16("mgvalleys_large_cave_depth", large_cave_depth); + settings->setU16("mgvalleys_lava_features", lava_features); + settings->setS16("mgvalleys_massive_cave_depth", massive_cave_depth); + settings->setU16("mgvalleys_river_depth", river_depth); + settings->setU16("mgvalleys_river_size", river_size); + settings->setU16("mgvalleys_water_features", water_features); + settings->setFloat("mgvalleys_cave_width", cave_width); + + settings->setNoiseParams("mgvalleys_np_cave1", np_cave1); + settings->setNoiseParams("mgvalleys_np_cave2", np_cave2); + settings->setNoiseParams("mgvalleys_np_filler_depth", np_filler_depth); + settings->setNoiseParams("mgvalleys_np_inter_valley_fill", np_inter_valley_fill); + settings->setNoiseParams("mgvalleys_np_inter_valley_slope", np_inter_valley_slope); + settings->setNoiseParams("mgvalleys_np_rivers", np_rivers); + settings->setNoiseParams("mgvalleys_np_massive_caves", np_massive_caves); + settings->setNoiseParams("mgvalleys_np_terrain_height", np_terrain_height); + settings->setNoiseParams("mgvalleys_np_valley_depth", np_valley_depth); + settings->setNoiseParams("mgvalleys_np_valley_profile", np_valley_profile); +} + + +/////////////////////////////////////// + + +void MapgenValleys::makeChunk(BlockMakeData *data) +{ + // Pre-conditions + assert(data->vmanip); + assert(data->nodedef); + assert(data->blockpos_requested.X >= data->blockpos_min.X && + data->blockpos_requested.Y >= data->blockpos_min.Y && + data->blockpos_requested.Z >= data->blockpos_min.Z); + assert(data->blockpos_requested.X <= data->blockpos_max.X && + data->blockpos_requested.Y <= data->blockpos_max.Y && + data->blockpos_requested.Z <= data->blockpos_max.Z); + + this->generating = true; + this->vm = data->vmanip; + this->ndef = data->nodedef; + + //TimeTaker t("makeChunk"); + + v3s16 blockpos_min = data->blockpos_min; + v3s16 blockpos_max = data->blockpos_max; + node_min = blockpos_min * MAP_BLOCKSIZE; + node_max = (blockpos_max + v3s16(1, 1, 1)) * MAP_BLOCKSIZE - v3s16(1, 1, 1); + full_node_min = (blockpos_min - 1) * MAP_BLOCKSIZE; + full_node_max = (blockpos_max + 2) * MAP_BLOCKSIZE - v3s16(1, 1, 1); + + blockseed = getBlockSeed2(full_node_min, seed); + + // Generate noise maps and base terrain height. + calculateNoise(); + + // Generate base terrain with initial heightmaps + s16 stone_surface_max_y = generateTerrain(); + + // Create biomemap at heightmap surface + bmgr->calcBiomes(csize.X, csize.Z, heatmap, humidmap, heightmap, biomemap); + + // Actually place the biome-specific nodes + MgStoneType stone_type = generateBiomes(heatmap, humidmap); + + // Cave creation. + if (flags & MG_CAVES) + generateCaves(stone_surface_max_y); + + // Dungeon creation + if ((flags & MG_DUNGEONS) && node_max.Y < 50 && (stone_surface_max_y >= node_min.Y)) { + DungeonParams dp; + + dp.np_rarity = nparams_dungeon_rarity; + dp.np_density = nparams_dungeon_density; + dp.np_wetness = nparams_dungeon_wetness; + dp.c_water = c_water_source; + if (stone_type == STONE) { + dp.c_cobble = c_cobble; + dp.c_moss = c_mossycobble; + dp.c_stair = c_stair_cobble; + + dp.diagonal_dirs = false; + dp.mossratio = 3.f; + dp.holesize = v3s16(1, 2, 1); + dp.roomsize = v3s16(0, 0, 0); + dp.notifytype = GENNOTIFY_DUNGEON; + } else if (stone_type == DESERT_STONE) { + dp.c_cobble = c_desert_stone; + dp.c_moss = c_desert_stone; + dp.c_stair = c_desert_stone; + + dp.diagonal_dirs = true; + dp.mossratio = 0.f; + dp.holesize = v3s16(2, 3, 2); + dp.roomsize = v3s16(2, 5, 2); + dp.notifytype = GENNOTIFY_TEMPLE; + } else if (stone_type == SANDSTONE) { + dp.c_cobble = c_sandstonebrick; + dp.c_moss = c_sandstonebrick; + dp.c_stair = c_sandstonebrick; + + dp.diagonal_dirs = false; + dp.mossratio = 0.f; + dp.holesize = v3s16(2, 2, 2); + dp.roomsize = v3s16(2, 0, 2); + dp.notifytype = GENNOTIFY_DUNGEON; + } + + DungeonGen dgen(this, &dp); + dgen.generate(blockseed, full_node_min, full_node_max); + } + + // Generate the registered decorations + if (flags & MG_DECORATIONS) + m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max); + + // Generate the registered ores + m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max); + + // Sprinkle some dust on top after everything else was generated + dustTopNodes(); + + //TimeTaker tll("liquid_lighting"); + + updateLiquid(&data->transforming_liquid, full_node_min, full_node_max); + + if (flags & MG_LIGHT) + calcLighting( + node_min - v3s16(0, 1, 0), + node_max + v3s16(0, 1, 0), + full_node_min, + full_node_max); + + //mapgen_profiler->avg("liquid_lighting", tll.stop() / 1000.f); + //mapgen_profiler->avg("makeChunk", t.stop() / 1000.f); + + this->generating = false; +} + + +// Populate the noise tables and do most of the +// calculation necessary to determine terrain height. +void MapgenValleys::calculateNoise() +{ + //TimeTaker t("calculateNoise", NULL, PRECISION_MICRO); + + int x = node_min.X; + int y = node_min.Y - 1; + int z = node_min.Z; + + //TimeTaker tcn("actualNoise"); + + noise_filler_depth->perlinMap2D(x, z); + noise_heat_blend->perlinMap2D(x, z); + noise_heat->perlinMap2D(x, z); + noise_humidity_blend->perlinMap2D(x, z); + noise_humidity->perlinMap2D(x, z); + noise_inter_valley_slope->perlinMap2D(x, z); + noise_rivers->perlinMap2D(x, z); + noise_terrain_height->perlinMap2D(x, z); + noise_valley_depth->perlinMap2D(x, z); + noise_valley_profile->perlinMap2D(x, z); + + noise_inter_valley_fill->perlinMap3D(x, y, z); + + //mapgen_profiler->avg("noisemaps", tcn.stop() / 1000.f); + + float heat_offset = 0.f; + float humidity_scale = 1.f; + + // Altitude chill tends to reduce the average heat. + if (use_altitude_chill) + heat_offset = 5.f; + + // River humidity tends to increase the humidity range. + if (humid_rivers) { + humidity_scale = 0.8f; + } + + for (s32 index = 0; index < csize.X * csize.Z; index++) { + noise_heat->result[index] += noise_heat_blend->result[index] + heat_offset; + noise_humidity->result[index] *= humidity_scale; + noise_humidity->result[index] += noise_humidity_blend->result[index]; + } + + TerrainNoise tn; + + u32 index = 0; + for (tn.z = node_min.Z; tn.z <= node_max.Z; tn.z++) + for (tn.x = node_min.X; tn.x <= node_max.X; tn.x++, index++) { + // The parameters that we actually need to generate terrain + // are passed by address (and the return value). + tn.terrain_height = noise_terrain_height->result[index]; + // River noise is replaced with base terrain, which + // is basically the height of the water table. + tn.rivers = &noise_rivers->result[index]; + // Valley depth noise is replaced with the valley + // number that represents the height of terrain + // over rivers and is used to determine about + // how close a river is for humidity calculation. + tn.valley = &noise_valley_depth->result[index]; + tn.valley_profile = noise_valley_profile->result[index]; + // Slope noise is replaced by the calculated slope + // which is used to get terrain height in the slow + // method, to create sharper mountains. + tn.slope = &noise_inter_valley_slope->result[index]; + tn.inter_valley_fill = noise_inter_valley_fill->result[index]; + + // This is the actual terrain height. + float mount = terrainLevelFromNoise(&tn); + noise_terrain_height->result[index] = mount; + } + + heatmap = noise_heat->result; + humidmap = noise_humidity->result; +} + + +// This keeps us from having to maintain two similar sets of +// complicated code to determine ground level. +float MapgenValleys::terrainLevelFromNoise(TerrainNoise *tn) +{ + // The square function changes the behaviour of this noise: + // very often small, and sometimes very high. + float valley_d = MYSQUARE(*tn->valley); + + // valley_d is here because terrain is generally higher where valleys + // are deep (mountains). base represents the height of the + // rivers, most of the surface is above. + float base = tn->terrain_height + valley_d; + + // "river" represents the distance from the river, in arbitrary units. + float river = fabs(*tn->rivers) - river_size_factor; + + // Use the curve of the function 1-exp(-(x/a)^2) to model valleys. + // Making "a" vary (0 < a <= 1) changes the shape of the valleys. + // Try it with a geometry software ! + // (here x = "river" and a = valley_profile). + // "valley" represents the height of the terrain, from the rivers. + { + float t = river / tn->valley_profile; + *tn->valley = valley_d * (1.f - exp(- MYSQUARE(t))); + } + + // approximate height of the terrain at this point + float mount = base + *tn->valley; + + *tn->slope *= *tn->valley; + + // Rivers are placed where "river" is negative, so where the original + // noise value is close to zero. + // Base ground is returned as rivers since it's basically the water table. + *tn->rivers = base; + if (river < 0.f) { + // Use the the function -sqrt(1-x^2) which models a circle. + float depth; + { + float t = river / river_size_factor + 1; + depth = (river_depth_bed * sqrt(MYMAX(0, 1.f - MYSQUARE(t)))); + } + + // base - depth : height of the bottom of the river + // water_level - 3 : don't make rivers below 3 nodes under the surface + // We use three because that's as low as the swamp biomes go. + // There is no logical equivalent to this using rangelim. + mount = MYMIN(MYMAX(base - depth, (float)(water_level - 3)), mount); + + // Slope has no influence on rivers. + *tn->slope = 0.f; + } + + return mount; +} + + +// This avoids duplicating the code in terrainLevelFromNoise, adding +// only the final step of terrain generation without a noise map. +float MapgenValleys::adjustedTerrainLevelFromNoise(TerrainNoise *tn) +{ + float mount = terrainLevelFromNoise(tn); + s16 y_start = myround(mount); + + for (s16 y = y_start; y <= y_start + 1000; y++) { + float fill = NoisePerlin3D(&noise_inter_valley_fill->np, tn->x, y, tn->z, seed); + + if (fill * *tn->slope < y - mount) { + mount = MYMAX(y - 1, mount); + break; + } + } + + return mount; +} + + +int MapgenValleys::getSpawnLevelAtPoint(v2s16 p) +{ + // Check to make sure this isn't a request for a location in a river. + float rivers = NoisePerlin2D(&noise_rivers->np, p.X, p.Y, seed); + if (fabs(rivers) < river_size_factor) + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + + s16 level_at_point = terrainLevelAtPoint(p.X, p.Y); + if (level_at_point <= water_level || + level_at_point > water_level + 32) + return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point + else + return level_at_point; +} + + +float MapgenValleys::terrainLevelAtPoint(s16 x, s16 z) +{ + TerrainNoise tn; + + float rivers = NoisePerlin2D(&noise_rivers->np, x, z, seed); + float valley = NoisePerlin2D(&noise_valley_depth->np, x, z, seed); + float inter_valley_slope = NoisePerlin2D(&noise_inter_valley_slope->np, x, z, seed); + + tn.x = x; + tn.z = z; + tn.terrain_height = NoisePerlin2D(&noise_terrain_height->np, x, z, seed); + tn.rivers = &rivers; + tn.valley = &valley; + tn.valley_profile = NoisePerlin2D(&noise_valley_profile->np, x, z, seed); + tn.slope = &inter_valley_slope; + tn.inter_valley_fill = 0.f; + + return adjustedTerrainLevelFromNoise(&tn); +} + + +int MapgenValleys::generateTerrain() +{ + // Raising this reduces the rate of evaporation. + static const float evaporation = 300.f; + // from the lua + static const float humidity_dropoff = 4.f; + // constant to convert altitude chill (compatible with lua) to heat + static const float alt_to_heat = 20.f; + // humidity reduction by altitude + static const float alt_to_humid = 10.f; + + MapNode n_air(CONTENT_AIR); + MapNode n_river_water(c_river_water_source); + MapNode n_sand(c_sand); + MapNode n_stone(c_stone); + MapNode n_water(c_water_source); + + v3s16 em = vm->m_area.getExtent(); + s16 surface_max_y = -MAX_MAP_GENERATION_LIMIT; + u32 index_2d = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index_2d++) { + float river_y = noise_rivers->result[index_2d]; + float surface_y = noise_terrain_height->result[index_2d]; + float slope = noise_inter_valley_slope->result[index_2d]; + float t_heat = noise_heat->result[index_2d]; + + heightmap[index_2d] = -MAX_MAP_GENERATION_LIMIT; + + if (surface_y > surface_max_y) + surface_max_y = ceil(surface_y); + + if (humid_rivers) { + // Derive heat from (base) altitude. This will be most correct + // at rivers, since other surface heights may vary below. + if (use_altitude_chill && (surface_y > 0.f || river_y > 0.f)) + t_heat -= alt_to_heat * MYMAX(surface_y, river_y) / altitude_chill; + + // If humidity is low or heat is high, lower the water table. + float delta = noise_humidity->result[index_2d] - 50.f; + if (delta < 0.f) { + float t_evap = (t_heat - 32.f) / evaporation; + river_y += delta * MYMAX(t_evap, 0.08f); + } + } + + u32 index_3d = (z - node_min.Z) * zstride + (x - node_min.X); + u32 index_data = vm->m_area.index(x, node_min.Y - 1, z); + + // Mapgens concern themselves with stone and water. + for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) { + if (vm->m_data[index_data].getContent() == CONTENT_IGNORE) { + float fill = noise_inter_valley_fill->result[index_3d]; + float surface_delta = (float)y - surface_y; + bool river = y + 1 < river_y; + + if (fabs(surface_delta) <= 0.5f && y > water_level && river) { + // river bottom + vm->m_data[index_data] = n_sand; + } else if (slope * fill > surface_delta) { + // ground + vm->m_data[index_data] = n_stone; + if (y > heightmap[index_2d]) + heightmap[index_2d] = y; + if (y > surface_max_y) + surface_max_y = y; + } else if (y <= water_level) { + // sea + vm->m_data[index_data] = n_water; + } else if (river) { + // river + vm->m_data[index_data] = n_river_water; + } else { + vm->m_data[index_data] = n_air; + } + } + + vm->m_area.add_y(em, index_data, 1); + index_3d += ystride; + } + + // This happens if we're generating a chunk that doesn't + // contain the terrain surface, in which case, we need + // to set heightmap to a value outside of the chunk, + // to avoid confusing lua mods that use heightmap. + if (heightmap[index_2d] == -MAX_MAP_GENERATION_LIMIT) { + s16 surface_y_int = myround(surface_y); + if (surface_y_int > node_max.Y + 1 || surface_y_int < node_min.Y - 1) { + // If surface_y is outside the chunk, it's good enough. + heightmap[index_2d] = surface_y_int; + } else { + // If the ground is outside of this chunk, but surface_y + // is within the chunk, give a value outside. + heightmap[index_2d] = node_min.Y - 2; + } + } + + if (humid_rivers) { + // Use base ground (water table) in a riverbed, to + // avoid an unnatural rise in humidity. + float t_alt = MYMAX(noise_rivers->result[index_2d], (float)heightmap[index_2d]); + float humid = noise_humidity->result[index_2d]; + float water_depth = (t_alt - river_y) / humidity_dropoff; + humid *= 1.f + pow(0.5f, MYMAX(water_depth, 1.f)); + + // Reduce humidity with altitude (ignoring riverbeds). + // This is similar to the lua version's seawater adjustment, + // but doesn't increase the base humidity, which causes + // problems with the default biomes. + if (t_alt > 0.f) + humid -= alt_to_humid * t_alt / altitude_chill; + + noise_humidity->result[index_2d] = humid; + } + + // Assign the heat adjusted by any changed altitudes. + // The altitude will change about half the time. + if (use_altitude_chill) { + // ground height ignoring riverbeds + float t_alt = MYMAX(noise_rivers->result[index_2d], (float)heightmap[index_2d]); + if (humid_rivers && heightmap[index_2d] == (s16)myround(surface_y)) + // The altitude hasn't changed. Use the first result. + noise_heat->result[index_2d] = t_heat; + else if (t_alt > 0.f) + noise_heat->result[index_2d] -= alt_to_heat * t_alt / altitude_chill; + } + } + + return surface_max_y; +} + + +MgStoneType MapgenValleys::generateBiomes(float *heat_map, float *humidity_map) +{ + v3s16 em = vm->m_area.getExtent(); + u32 index = 0; + MgStoneType stone_type = STONE; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index++) { + Biome *biome = NULL; + u16 depth_top = 0; + u16 base_filler = 0; + u16 depth_water_top = 0; + u32 vi = vm->m_area.index(x, node_max.Y, z); + + // Check node at base of mapchunk above, either a node of a previously + // generated mapchunk or if not, a node of overgenerated base terrain. + content_t c_above = vm->m_data[vi + em.X].getContent(); + bool air_above = c_above == CONTENT_AIR; + bool water_above = (c_above == c_water_source || c_above == c_river_water_source); + + // If there is air or water above enable top/filler placement, otherwise force + // nplaced to stone level by setting a number exceeding any possible filler depth. + u16 nplaced = (air_above || water_above) ? 0 : U16_MAX; + + for (s16 y = node_max.Y; y >= node_min.Y; y--) { + content_t c = vm->m_data[vi].getContent(); + + // Biome is recalculated each time an upper surface is detected while + // working down a column. The selected biome then remains in effect for + // all nodes below until the next surface and biome recalculation. + // Biome is recalculated: + // 1. At the surface of stone below air or water. + // 2. At the surface of water below air. + // 3. When stone or water is detected but biome has not yet been calculated. + if ((c == c_stone && (air_above || water_above || !biome)) + || ((c == c_water_source || c == c_river_water_source) + && (air_above || !biome))) { + // Both heat and humidity have already been adjusted for altitude. + biome = bmgr->getBiome(heat_map[index], humidity_map[index], y); + + depth_top = biome->depth_top; + base_filler = MYMAX(depth_top + + biome->depth_filler + + noise_filler_depth->result[index], 0.f); + depth_water_top = biome->depth_water_top; + + // Detect stone type for dungeons during every biome calculation. + // This is more efficient than detecting per-node and will not + // miss any desert stone or sandstone biomes. + if (biome->c_stone == c_desert_stone) + stone_type = DESERT_STONE; + else if (biome->c_stone == c_sandstone) + stone_type = SANDSTONE; + } + + if (c == c_stone) { + content_t c_below = vm->m_data[vi - em.X].getContent(); + + // If the node below isn't solid, make this node stone, so that + // any top/filler nodes above are structurally supported. + // This is done by aborting the cycle of top/filler placement + // immediately by forcing nplaced to stone level. + if (c_below == CONTENT_AIR + || c_below == c_water_source + || c_below == c_river_water_source) + nplaced = U16_MAX; + + if (nplaced < depth_top) { + vm->m_data[vi] = MapNode(biome->c_top); + nplaced++; + } else if (nplaced < base_filler) { + vm->m_data[vi] = MapNode(biome->c_filler); + nplaced++; + } else { + vm->m_data[vi] = MapNode(biome->c_stone); + } + + air_above = false; + water_above = false; + } else if (c == c_water_source) { + vm->m_data[vi] = MapNode((y > (s32)(water_level - depth_water_top)) + ? biome->c_water_top : biome->c_water); + nplaced = 0; // Enable top/filler placement for next surface + air_above = false; + water_above = true; + } else if (c == c_river_water_source) { + vm->m_data[vi] = MapNode(biome->c_river_water); + nplaced = depth_top; // Enable filler placement for next surface + air_above = false; + water_above = true; + } else if (c == CONTENT_AIR) { + nplaced = 0; // Enable top/filler placement for next surface + air_above = true; + water_above = false; + } else { // Possible various nodes overgenerated from neighbouring mapchunks + nplaced = U16_MAX; // Disable top/filler placement + air_above = false; + water_above = false; + } + + vm->m_area.add_y(em, vi, -1); + } + } + + return stone_type; +} + + +void MapgenValleys::dustTopNodes() +{ + if (node_max.Y < water_level) + return; + + v3s16 em = vm->m_area.getExtent(); + u32 index = 0; + + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index++) { + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index]); + + if (biome->c_dust == CONTENT_IGNORE) + continue; + + u32 vi = vm->m_area.index(x, full_node_max.Y, z); + content_t c_full_max = vm->m_data[vi].getContent(); + s16 y_start; + + if (c_full_max == CONTENT_AIR) { + y_start = full_node_max.Y - 1; + } else if (c_full_max == CONTENT_IGNORE) { + vi = vm->m_area.index(x, node_max.Y + 1, z); + content_t c_max = vm->m_data[vi].getContent(); + + if (c_max == CONTENT_AIR) + y_start = node_max.Y; + else + continue; + } else { + continue; + } + + vi = vm->m_area.index(x, y_start, z); + for (s16 y = y_start; y >= node_min.Y - 1; y--) { + if (vm->m_data[vi].getContent() != CONTENT_AIR) + break; + + vm->m_area.add_y(em, vi, -1); + } + + content_t c = vm->m_data[vi].getContent(); + if (!ndef->get(c).buildable_to && c != CONTENT_IGNORE && c != biome->c_dust) { + vm->m_area.add_y(em, vi, 1); + vm->m_data[vi] = MapNode(biome->c_dust); + } + } +} + + +void MapgenValleys::generateCaves(s16 max_stone_y) +{ + if (max_stone_y < node_min.Y) + return; + + noise_cave1->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + noise_cave2->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + PseudoRandom ps(blockseed + 72202); + + MapNode n_air(CONTENT_AIR); + MapNode n_lava(c_lava_source); + MapNode n_water(c_river_water_source); + + v3s16 em = vm->m_area.getExtent(); + + // Cave blend distance near YMIN, YMAX + const float massive_cave_blend = 128.f; + // noise threshold for massive caves + const float massive_cave_threshold = 0.6f; + // mct: 1 = small rare caves, 0.5 1/3rd ground volume, 0 = 1/2 ground volume. + + float yblmin = -map_gen_limit + massive_cave_blend * 1.5f; + float yblmax = massive_cave_depth - massive_cave_blend * 1.5f; + bool made_a_big_one = false; + + // Cache the tcave values as they only vary by altitude. + if (node_max.Y <= massive_cave_depth) { + noise_massive_caves->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + for (s16 y = node_min.Y - 1; y <= node_max.Y; y++) { + float tcave = massive_cave_threshold; + + if (y < yblmin) { + float t = (yblmin - y) / massive_cave_blend; + tcave += MYSQUARE(t); + } else if (y > yblmax) { + float t = (y - yblmax) / massive_cave_blend; + tcave += MYSQUARE(t); + } + + tcave_cache[y - node_min.Y + 1] = tcave; + } + } + + // lava_depth varies between one and ten as you approach + // the bottom of the world. + s16 lava_depth = ceil((lava_max_height - node_min.Y + 1) * 10.f / map_gen_limit); + // This allows random lava spawns to be less common at the surface. + s16 lava_chance = MYCUBE(lava_features_lim) * lava_depth; + // water_depth varies between ten and one on the way down. + s16 water_depth = ceil((map_gen_limit - abs(node_min.Y) + 1) * 10.f / map_gen_limit); + // This allows random water spawns to be more common at the surface. + s16 water_chance = MYCUBE(water_features_lim) * water_depth; + + // Reduce the odds of overflows even further. + if (node_max.Y > water_level) { + lava_chance /= 3; + water_chance /= 3; + } + + u32 index_2d = 0; + for (s16 z = node_min.Z; z <= node_max.Z; z++) + for (s16 x = node_min.X; x <= node_max.X; x++, index_2d++) { + Biome *biome = (Biome *)bmgr->getRaw(biomemap[index_2d]); + bool tunnel_air_above = false; + bool underground = false; + u32 index_data = vm->m_area.index(x, node_max.Y, z); + u32 index_3d = (z - node_min.Z) * zstride_1d + csize.Y * ystride + (x - node_min.X); + + // Dig caves on down loop to check for air above. + // Don't excavate the overgenerated stone at node_max.Y + 1, + // this creates a 'roof' over the tunnel, preventing light in + // tunnels at mapchunk borders when generating mapchunks upwards. + // This 'roof' is removed when the mapchunk above is generated. + for (s16 y = node_max.Y; y >= node_min.Y - 1; y--, + index_3d -= ystride, + vm->m_area.add_y(em, index_data, -1)) { + + float terrain = noise_terrain_height->result[index_2d]; + + // Saves some time. + if (y > terrain + 10) + continue; + else if (y < terrain - 40) + underground = true; + + // Dig massive caves. + if (node_max.Y <= massive_cave_depth + && noise_massive_caves->result[index_3d] + > tcave_cache[y - node_min.Y + 1]) { + vm->m_data[index_data] = n_air; + made_a_big_one = true; + continue; + } + + content_t c = vm->m_data[index_data].getContent(); + float d1 = contour(noise_cave1->result[index_3d]); + float d2 = contour(noise_cave2->result[index_3d]); + + // River water is not set as ground content + // in the default game. This can produce strange results + // when a tunnel undercuts a river. However, that's not for + // the mapgen to correct. Fix it in lua. + + if (d1 * d2 > cave_width && ndef->get(c).is_ground_content) { + // in a tunnel + vm->m_data[index_data] = n_air; + tunnel_air_above = true; + } else if (c == biome->c_filler || c == biome->c_stone) { + if (tunnel_air_above) { + // at the tunnel floor + s16 sr = ps.range(0, 39); + u32 j = index_data; + vm->m_area.add_y(em, j, 1); + + if (sr > terrain - y) { + // Put dirt in tunnels near the surface. + if (underground) + vm->m_data[index_data] = MapNode(biome->c_filler); + else + vm->m_data[index_data] = MapNode(biome->c_top); + } else if (sr < 3 && underground) { + sr = abs(ps.next()); + if (lava_features_lim > 0 && y <= lava_max_height + && c == biome->c_stone && sr < lava_chance) + vm->m_data[j] = n_lava; + + sr -= lava_chance; + + // If sr < 0 then we should have already placed lava -- + // don't immediately dump water on it. + if (water_features_lim > 0 && y <= cave_water_max_height + && sr >= 0 && sr < water_chance) + vm->m_data[j] = n_water; + } + } + + tunnel_air_above = false; + underground = true; + } else { + tunnel_air_above = false; + } + } + } + + if (node_max.Y <= large_cave_depth && !made_a_big_one) { + u32 bruises_count = ps.range(0, 2); + for (u32 i = 0; i < bruises_count; i++) { + CaveV5 cave(this, &ps); + cave.makeCave(node_min, node_max, max_stone_y); + } + } +} diff --git a/src/mapgen_valleys.h b/src/mapgen_valleys.h new file mode 100644 index 00000000..5224ea54 --- /dev/null +++ b/src/mapgen_valleys.h @@ -0,0 +1,187 @@ +/* +Minetest Valleys C +Copyright (C) 2010-2015 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 paramat, Matt Gregory +Copyright (C) 2016 Duane Robertson + +Based on Valleys Mapgen by Gael de Sailly + (https://forum.minetest.net/viewtopic.php?f=9&t=11430) +and mapgen_v7 by kwolekr and paramat. + +Licensing changed by permission of Gael de Sailly. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef MAPGEN_VALLEYS_HEADER +#define MAPGEN_VALLEYS_HEADER + +#include "mapgen.h" + +////////////// Mapgen Valleys flags +#define MGVALLEYS_ALT_CHILL 0x01 +#define MGVALLEYS_HUMID_RIVERS 0x02 + +// Feed only one variable into these. +#define MYSQUARE(x) (x) * (x) +#define MYCUBE(x) (x) * (x) * (x) + +class BiomeManager; + +// Global profiler +//class Profiler; +//extern Profiler *mapgen_profiler; + + +struct MapgenValleysParams : public MapgenSpecificParams { + u32 spflags; + s16 large_cave_depth; + s16 massive_cave_depth; + u16 altitude_chill; + u16 lava_features; + u16 river_depth; + u16 river_size; + u16 water_features; + float cave_width; + NoiseParams np_cave1; + NoiseParams np_cave2; + NoiseParams np_filler_depth; + NoiseParams np_inter_valley_fill; + NoiseParams np_inter_valley_slope; + NoiseParams np_rivers; + NoiseParams np_massive_caves; + NoiseParams np_terrain_height; + NoiseParams np_valley_depth; + NoiseParams np_valley_profile; + + MapgenValleysParams(); + ~MapgenValleysParams() {} + + void readParams(const Settings *settings); + void writeParams(Settings *settings) const; +}; + +struct TerrainNoise { + s16 x; + s16 z; + float terrain_height; + float *rivers; + float *valley; + float valley_profile; + float *slope; + float inter_valley_fill; +}; + +class MapgenValleys : public Mapgen { +public: + + MapgenValleys(int mapgenid, MapgenParams *params, EmergeManager *emerge); + ~MapgenValleys(); + + virtual void makeChunk(BlockMakeData *data); + int getSpawnLevelAtPoint(v2s16 p); + + s16 large_cave_depth; + +private: + EmergeManager *m_emerge; + BiomeManager *bmgr; + + int ystride; + int zstride; + int zstride_1d; + + float map_gen_limit; + + bool humid_rivers; + bool use_altitude_chill; + float humidity_adjust; + s16 cave_water_max_height; + s16 lava_max_height; + + v3s16 node_min; + v3s16 node_max; + v3s16 full_node_min; + v3s16 full_node_max; + + u32 spflags; + float altitude_chill; + s16 lava_features_lim; + s16 massive_cave_depth; + float river_depth_bed; + float river_size_factor; + float *tcave_cache; + s16 water_features_lim; + float cave_width; + Noise *noise_filler_depth; + Noise *noise_cave1; + Noise *noise_cave2; + Noise *noise_inter_valley_fill; + Noise *noise_inter_valley_slope; + Noise *noise_rivers; + Noise *noise_massive_caves; + Noise *noise_terrain_height; + Noise *noise_valley_depth; + Noise *noise_valley_profile; + + Noise *noise_heat; + Noise *noise_heat_blend; + Noise *noise_humidity; + Noise *noise_humidity_blend; + + content_t c_cobble; + content_t c_desert_stone; + content_t c_dirt; + content_t c_ice; + content_t c_lava_source; + content_t c_mossycobble; + content_t c_river_water_source; + content_t c_sand; + content_t c_sandstone; + content_t c_sandstonebrick; + content_t c_stair_cobble; + content_t c_stair_sandstonebrick; + content_t c_stone; + content_t c_water_source; + + float terrainLevelAtPoint(s16 x, s16 z); + + void calculateNoise(); + + virtual int generateTerrain(); + float terrainLevelFromNoise(TerrainNoise *tn); + float adjustedTerrainLevelFromNoise(TerrainNoise *tn); + + float humidityByTerrain(float humidity_base, float mount, float rivers, float valley); + + MgStoneType generateBiomes(float *heat_map, float *humidity_map); + void dustTopNodes(); + + void generateCaves(s16 max_stone_y); +}; + +struct MapgenFactoryValleys : public MapgenFactory { + Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) + { + return new MapgenValleys(mgid, params, emerge); + }; + + MapgenSpecificParams *createMapgenParams() + { + return new MapgenValleysParams(); + }; +}; + +#endif diff --git a/src/mapnode.cpp b/src/mapnode.cpp index 671e949f..eba47446 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -214,12 +214,12 @@ void MapNode::rotateAlongYAxis(INodeDefManager *nodemgr, Rotation rot) } } -static std::vector transformNodeBox(const MapNode &n, - const NodeBox &nodebox, INodeDefManager *nodemgr) +void transformNodeBox(const MapNode &n, const NodeBox &nodebox, + INodeDefManager *nodemgr, std::vector *p_boxes, u8 neighbors = 0) { - std::vector boxes; - if(nodebox.type == NODEBOX_FIXED || nodebox.type == NODEBOX_LEVELED) - { + std::vector &boxes = *p_boxes; + + if (nodebox.type == NODEBOX_FIXED || nodebox.type == NODEBOX_LEVELED) { const std::vector &fixed = nodebox.fixed; int facedir = n.getFaceDir(nodemgr); u8 axisdir = facedir>>2; @@ -395,32 +395,71 @@ static std::vector transformNodeBox(const MapNode &n, boxes.push_back(box); } } + else if (nodebox.type == NODEBOX_CONNECTED) + { + size_t boxes_size = boxes.size(); + boxes_size += nodebox.fixed.size(); + if (neighbors & 1) + boxes_size += nodebox.connect_top.size(); + if (neighbors & 2) + boxes_size += nodebox.connect_bottom.size(); + if (neighbors & 4) + boxes_size += nodebox.connect_front.size(); + if (neighbors & 8) + boxes_size += nodebox.connect_left.size(); + if (neighbors & 16) + boxes_size += nodebox.connect_back.size(); + if (neighbors & 32) + boxes_size += nodebox.connect_right.size(); + boxes.reserve(boxes_size); + +#define BOXESPUSHBACK(c) do { \ + for (std::vector::const_iterator \ + it = (c).begin(); \ + it != (c).end(); ++it) \ + (boxes).push_back(*it); \ + } while (0) + + BOXESPUSHBACK(nodebox.fixed); + + if (neighbors & 1) + BOXESPUSHBACK(nodebox.connect_top); + if (neighbors & 2) + BOXESPUSHBACK(nodebox.connect_bottom); + if (neighbors & 4) + BOXESPUSHBACK(nodebox.connect_front); + if (neighbors & 8) + BOXESPUSHBACK(nodebox.connect_left); + if (neighbors & 16) + BOXESPUSHBACK(nodebox.connect_back); + if (neighbors & 32) + BOXESPUSHBACK(nodebox.connect_right); + } else // NODEBOX_REGULAR { boxes.push_back(aabb3f(-BS/2,-BS/2,-BS/2,BS/2,BS/2,BS/2)); } - return boxes; } -std::vector MapNode::getNodeBoxes(INodeDefManager *nodemgr) const +void MapNode::getNodeBoxes(INodeDefManager *nodemgr, std::vector *boxes, u8 neighbors) { const ContentFeatures &f = nodemgr->get(*this); - return transformNodeBox(*this, f.node_box, nodemgr); + transformNodeBox(*this, f.node_box, nodemgr, boxes, neighbors); } -std::vector MapNode::getCollisionBoxes(INodeDefManager *nodemgr) const +void MapNode::getCollisionBoxes(INodeDefManager *nodemgr, std::vector *boxes, u8 neighbors) { const ContentFeatures &f = nodemgr->get(*this); if (f.collision_box.fixed.empty()) - return transformNodeBox(*this, f.node_box, nodemgr); + transformNodeBox(*this, f.node_box, nodemgr, boxes, neighbors); else - return transformNodeBox(*this, f.collision_box, nodemgr); + transformNodeBox(*this, f.collision_box, nodemgr, boxes, neighbors); } -std::vector MapNode::getSelectionBoxes(INodeDefManager *nodemgr) const +void MapNode::getSelectionBoxes(INodeDefManager *nodemgr, std::vector *boxes, u8 neighbors) { const ContentFeatures &f = nodemgr->get(*this); - return transformNodeBox(*this, f.selection_box, nodemgr); + transformNodeBox(*this, f.selection_box, nodemgr, boxes, neighbors); } u8 MapNode::getMaxLevel(INodeDefManager *nodemgr) const diff --git a/src/mapnode.h b/src/mapnode.h index 7cc25c60..2f6224f0 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -240,17 +240,17 @@ struct MapNode /* Gets list of node boxes (used for rendering (NDT_NODEBOX)) */ - std::vector getNodeBoxes(INodeDefManager *nodemgr) const; + void getNodeBoxes(INodeDefManager *nodemgr, std::vector *boxes, u8 neighbors = 0); /* Gets list of selection boxes */ - std::vector getSelectionBoxes(INodeDefManager *nodemgr) const; + void getSelectionBoxes(INodeDefManager *nodemg, std::vector *boxes, u8 neighbors = 0); /* Gets list of collision boxes */ - std::vector getCollisionBoxes(INodeDefManager *nodemgr) const; + void getCollisionBoxes(INodeDefManager *nodemgr, std::vector *boxes, u8 neighbors = 0); /* Liquid helpers diff --git a/src/mesh.cpp b/src/mesh.cpp index 329b93dc..b5bf8660 100644 --- a/src/mesh.cpp +++ b/src/mesh.cpp @@ -104,7 +104,7 @@ void scaleMesh(scene::IMesh *mesh, v3f scale) if (mesh == NULL) return; - core::aabbox3d bbox; + aabb3f bbox; bbox.reset(0, 0, 0); u32 mc = mesh->getMeshBufferCount(); @@ -132,7 +132,7 @@ void translateMesh(scene::IMesh *mesh, v3f vec) if (mesh == NULL) return; - core::aabbox3d bbox; + aabb3f bbox; bbox.reset(0, 0, 0); u32 mc = mesh->getMeshBufferCount(); @@ -206,146 +206,139 @@ void setMeshColorByNormalXYZ(scene::IMesh *mesh, const video::SColor &colorY, const video::SColor &colorZ) { - if(mesh == NULL) + if (mesh == NULL) return; - + u16 mc = mesh->getMeshBufferCount(); - for(u16 j=0; jgetMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 vc = buf->getVertexCount(); - for(u16 i=0; i= y && x >= z) - vertices[i].Color = colorX; - else if(y >= z) - vertices[i].Color = colorY; + const u32 stride = getVertexPitchFromType(buf->getVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) { + video::S3DVertex *vertex = (video::S3DVertex *)(vertices + i * stride); + f32 x = fabs(vertex->Normal.X); + f32 y = fabs(vertex->Normal.Y); + f32 z = fabs(vertex->Normal.Z); + if (x >= y && x >= z) + vertex->Color = colorX; + else if (y >= z) + vertex->Color = colorY; else - vertices[i].Color = colorZ; + vertex->Color = colorZ; } } } -void rotateMeshXYby (scene::IMesh *mesh, f64 degrees) -{ +void rotateMeshXYby(scene::IMesh *mesh, f64 degrees) +{ u16 mc = mesh->getMeshBufferCount(); - for(u16 j = 0; j < mc; j++) - { + for (u16 j = 0; j < mc; j++) { scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 vc = buf->getVertexCount(); - for(u16 i = 0; i < vc; i++) - { - vertices[i].Pos.rotateXYBy(degrees); - } + const u32 stride = getVertexPitchFromType(buf->getVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) + ((video::S3DVertex *)(vertices + i * stride))->Pos.rotateXYBy(degrees); } } -void rotateMeshXZby (scene::IMesh *mesh, f64 degrees) -{ +void rotateMeshXZby(scene::IMesh *mesh, f64 degrees) +{ u16 mc = mesh->getMeshBufferCount(); - for(u16 j = 0; j < mc; j++) - { + for (u16 j = 0; j < mc; j++) { scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 vc = buf->getVertexCount(); - for(u16 i = 0; i < vc; i++) - { - vertices[i].Pos.rotateXZBy(degrees); - } + const u32 stride = getVertexPitchFromType(buf->getVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) + ((video::S3DVertex *)(vertices + i * stride))->Pos.rotateXZBy(degrees); } } -void rotateMeshYZby (scene::IMesh *mesh, f64 degrees) -{ +void rotateMeshYZby(scene::IMesh *mesh, f64 degrees) +{ u16 mc = mesh->getMeshBufferCount(); - for(u16 j = 0; j < mc; j++) - { + for (u16 j = 0; j < mc; j++) { scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 vc = buf->getVertexCount(); - for(u16 i = 0; i < vc; i++) - { - vertices[i].Pos.rotateYZBy(degrees); - } + const u32 stride = getVertexPitchFromType(buf->getVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) + ((video::S3DVertex *)(vertices + i * stride))->Pos.rotateYZBy(degrees); } } void rotateMeshBy6dFacedir(scene::IMesh *mesh, int facedir) -{ - int axisdir = facedir>>2; +{ + int axisdir = facedir >> 2; facedir &= 0x03; u16 mc = mesh->getMeshBufferCount(); - for(u16 j = 0; j < mc; j++) - { + for (u16 j = 0; j < mc; j++) { scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 vc = buf->getVertexCount(); - for(u16 i=0; igetVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) { + video::S3DVertex *vertex = (video::S3DVertex *)(vertices + i * stride); + switch (axisdir) { + case 0: + if (facedir == 1) + vertex->Pos.rotateXZBy(-90); + else if (facedir == 2) + vertex->Pos.rotateXZBy(180); + else if (facedir == 3) + vertex->Pos.rotateXZBy(90); + break; + case 1: // z+ + vertex->Pos.rotateYZBy(90); + if (facedir == 1) + vertex->Pos.rotateXYBy(90); + else if (facedir == 2) + vertex->Pos.rotateXYBy(180); + else if (facedir == 3) + vertex->Pos.rotateXYBy(-90); + break; + case 2: //z- + vertex->Pos.rotateYZBy(-90); + if (facedir == 1) + vertex->Pos.rotateXYBy(-90); + else if (facedir == 2) + vertex->Pos.rotateXYBy(180); + else if (facedir == 3) + vertex->Pos.rotateXYBy(90); + break; + case 3: //x+ + vertex->Pos.rotateXYBy(-90); + if (facedir == 1) + vertex->Pos.rotateYZBy(90); + else if (facedir == 2) + vertex->Pos.rotateYZBy(180); + else if (facedir == 3) + vertex->Pos.rotateYZBy(-90); + break; + case 4: //x- + vertex->Pos.rotateXYBy(90); + if (facedir == 1) + vertex->Pos.rotateYZBy(-90); + else if (facedir == 2) + vertex->Pos.rotateYZBy(180); + else if (facedir == 3) + vertex->Pos.rotateYZBy(90); + break; + case 5: + vertex->Pos.rotateXYBy(-180); + if (facedir == 1) + vertex->Pos.rotateXZBy(90); + else if (facedir == 2) + vertex->Pos.rotateXZBy(180); + else if (facedir == 3) + vertex->Pos.rotateXZBy(-90); + break; + default: + break; } } } @@ -353,13 +346,12 @@ void rotateMeshBy6dFacedir(scene::IMesh *mesh, int facedir) void recalculateBoundingBox(scene::IMesh *src_mesh) { - core::aabbox3d bbox; + aabb3f bbox; bbox.reset(0,0,0); - for(u16 j = 0; j < src_mesh->getMeshBufferCount(); j++) - { + for (u16 j = 0; j < src_mesh->getMeshBufferCount(); j++) { scene::IMeshBuffer *buf = src_mesh->getMeshBuffer(j); buf->recalculateBoundingBox(); - if(j == 0) + if (j == 0) bbox = buf->getBoundingBox(); else bbox.addInternalBox(buf->getBoundingBox()); @@ -370,23 +362,54 @@ void recalculateBoundingBox(scene::IMesh *src_mesh) scene::IMesh* cloneMesh(scene::IMesh *src_mesh) { scene::SMesh* dst_mesh = new scene::SMesh(); - for(u16 j = 0; j < src_mesh->getMeshBufferCount(); j++) - { + for (u16 j = 0; j < src_mesh->getMeshBufferCount(); j++) { scene::IMeshBuffer *buf = src_mesh->getMeshBuffer(j); - video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); - u16 *indices = (u16*)buf->getIndices(); - scene::SMeshBuffer *temp_buf = new scene::SMeshBuffer(); - temp_buf->append(vertices, buf->getVertexCount(), - indices, buf->getIndexCount()); - dst_mesh->addMeshBuffer(temp_buf); - temp_buf->drop(); + switch (buf->getVertexType()) { + case video::EVT_STANDARD: { + video::S3DVertex *v = + (video::S3DVertex *) buf->getVertices(); + u16 *indices = (u16*)buf->getIndices(); + scene::SMeshBuffer *temp_buf = new scene::SMeshBuffer(); + temp_buf->append(v, buf->getVertexCount(), + indices, buf->getIndexCount()); + dst_mesh->addMeshBuffer(temp_buf); + temp_buf->drop(); + break; + } + case video::EVT_2TCOORDS: { + video::S3DVertex2TCoords *v = + (video::S3DVertex2TCoords *) buf->getVertices(); + u16 *indices = (u16*)buf->getIndices(); + scene::SMeshBufferTangents *temp_buf = + new scene::SMeshBufferTangents(); + temp_buf->append(v, buf->getVertexCount(), + indices, buf->getIndexCount()); + dst_mesh->addMeshBuffer(temp_buf); + temp_buf->drop(); + break; + } + case video::EVT_TANGENTS: { + video::S3DVertexTangents *v = + (video::S3DVertexTangents *) buf->getVertices(); + u16 *indices = (u16*)buf->getIndices(); + scene::SMeshBufferTangents *temp_buf = + new scene::SMeshBufferTangents(); + temp_buf->append(v, buf->getVertexCount(), + indices, buf->getIndexCount()); + dst_mesh->addMeshBuffer(temp_buf); + temp_buf->drop(); + break; + } + } } - return dst_mesh; + return dst_mesh; } -scene::IMesh* convertNodeboxNodeToMesh(ContentFeatures *f) +scene::IMesh* convertNodeboxesToMesh(const std::vector &boxes, + const f32 *uv_coords, float expand) { scene::SMesh* dst_mesh = new scene::SMesh(); + for (u16 j = 0; j < 6; j++) { scene::IMeshBuffer *buf = new scene::SMeshBuffer(); @@ -395,57 +418,49 @@ scene::IMesh* convertNodeboxNodeToMesh(ContentFeatures *f) dst_mesh->addMeshBuffer(buf); buf->drop(); } - + video::SColor c(255,255,255,255); - std::vector boxes = f->node_box.fixed; - - for(std::vector::iterator + for (std::vector::const_iterator i = boxes.begin(); i != boxes.end(); ++i) { aabb3f box = *i; + box.repair(); - f32 temp; - if (box.MinEdge.X > box.MaxEdge.X) - { - temp=box.MinEdge.X; - box.MinEdge.X=box.MaxEdge.X; - box.MaxEdge.X=temp; - } - if (box.MinEdge.Y > box.MaxEdge.Y) - { - temp=box.MinEdge.Y; - box.MinEdge.Y=box.MaxEdge.Y; - box.MaxEdge.Y=temp; - } - if (box.MinEdge.Z > box.MaxEdge.Z) - { - temp=box.MinEdge.Z; - box.MinEdge.Z=box.MaxEdge.Z; - box.MaxEdge.Z=temp; - } - // Compute texture coords - f32 tx1 = (box.MinEdge.X/BS)+0.5; - f32 ty1 = (box.MinEdge.Y/BS)+0.5; - f32 tz1 = (box.MinEdge.Z/BS)+0.5; - f32 tx2 = (box.MaxEdge.X/BS)+0.5; - f32 ty2 = (box.MaxEdge.Y/BS)+0.5; - f32 tz2 = (box.MaxEdge.Z/BS)+0.5; - f32 txc[24] = { + box.MinEdge.X -= expand; + box.MinEdge.Y -= expand; + box.MinEdge.Z -= expand; + box.MaxEdge.X += expand; + box.MaxEdge.Y += expand; + box.MaxEdge.Z += expand; + + // Compute texture UV coords + f32 tx1 = (box.MinEdge.X / BS) + 0.5; + f32 ty1 = (box.MinEdge.Y / BS) + 0.5; + f32 tz1 = (box.MinEdge.Z / BS) + 0.5; + f32 tx2 = (box.MaxEdge.X / BS) + 0.5; + f32 ty2 = (box.MaxEdge.Y / BS) + 0.5; + f32 tz2 = (box.MaxEdge.Z / BS) + 0.5; + + f32 txc_default[24] = { // up - tx1, 1-tz2, tx2, 1-tz1, + tx1, 1 - tz2, tx2, 1 - tz1, // down tx1, tz1, tx2, tz2, // right - tz1, 1-ty2, tz2, 1-ty1, + tz1, 1 - ty2, tz2, 1 - ty1, // left - 1-tz2, 1-ty2, 1-tz1, 1-ty1, + 1 - tz2, 1 - ty2, 1 - tz1, 1 - ty1, // back - 1-tx2, 1-ty2, 1-tx1, 1-ty1, + 1 - tx2, 1 - ty2, 1 - tx1, 1 - ty1, // front - tx1, 1-ty2, tx2, 1-ty1, + tx1, 1 - ty2, tx2, 1 - ty1, }; + + // use default texture UV mapping if not provided + const f32 *txc = uv_coords ? uv_coords : txc_default; + v3f min = box.MinEdge; v3f max = box.MaxEdge; diff --git a/src/mesh.h b/src/mesh.h index ec109e9e..8e189377 100644 --- a/src/mesh.h +++ b/src/mesh.h @@ -83,9 +83,13 @@ void rotateMeshYZby (scene::IMesh *mesh, f64 degrees); scene::IMesh* cloneMesh(scene::IMesh *src_mesh); /* - Convert nodebox drawtype node to mesh. + Convert nodeboxes to mesh. + boxes - set of nodeboxes to be converted into cuboids + uv_coords[24] - table of texture uv coords for each cuboid face + expand - factor by which cuboids will be resized */ -scene::IMesh* convertNodeboxNodeToMesh(ContentFeatures *f); +scene::IMesh* convertNodeboxesToMesh(const std::vector &boxes, + const f32 *uv_coords = NULL, float expand = 0); /* Update bounding box for a mesh. diff --git a/src/mg_biome.cpp b/src/mg_biome.cpp index 055ce019..9ab8d06c 100644 --- a/src/mg_biome.cpp +++ b/src/mg_biome.cpp @@ -56,7 +56,7 @@ BiomeManager::BiomeManager(IGameDef *gamedef) : b->m_nodenames.push_back("mapgen_water_source"); b->m_nodenames.push_back("mapgen_water_source"); b->m_nodenames.push_back("mapgen_river_water_source"); - b->m_nodenames.push_back("air"); + b->m_nodenames.push_back("ignore"); m_ndef->pendNodeResolve(b); add(b); @@ -138,5 +138,5 @@ void Biome::resolveNodeNames() getIdFromNrBacklog(&c_water_top, "mapgen_water_source", CONTENT_AIR); getIdFromNrBacklog(&c_water, "mapgen_water_source", CONTENT_AIR); getIdFromNrBacklog(&c_river_water, "mapgen_river_water_source", CONTENT_AIR); - getIdFromNrBacklog(&c_dust, "air", CONTENT_IGNORE); + getIdFromNrBacklog(&c_dust, "ignore", CONTENT_IGNORE); } diff --git a/src/mg_decoration.cpp b/src/mg_decoration.cpp index 846d6130..8b6abb5d 100644 --- a/src/mg_decoration.cpp +++ b/src/mg_decoration.cpp @@ -87,7 +87,7 @@ void Decoration::resolveNodeNames() size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) { - PseudoRandom ps(blockseed + 53); + PcgRandom ps(blockseed + 53); int carea_size = nmax.X - nmin.X + 1; // Divide area into parts @@ -117,7 +117,15 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) float nval = (flags & DECO_USE_NOISE) ? NoisePerlin2D(&np, p2d_center.X, p2d_center.Y, mapseed) : fill_ratio; - u32 deco_count = area * MYMAX(nval, 0.f); + u32 deco_count = 0; + float deco_count_f = (float)area * nval; + if (deco_count_f >= 1.f) { + deco_count = deco_count_f; + } else if (deco_count_f > 0.f) { + // For low density decorations calculate a chance for 1 decoration + if (ps.range(1000) <= deco_count_f * 1000.f) + deco_count = 1; + } for (u32 i = 0; i < deco_count; i++) { s16 x = ps.range(p2d_min.X, p2d_max.X); @@ -170,7 +178,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) #if 0 void Decoration::placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) { - PseudoRandom pr(blockseed + 53); + PcgRandom pr(blockseed + 53); std::vector handled_cutoffs; // Copy over the cutoffs we're interested in so we don't needlessly hold a lock @@ -286,7 +294,7 @@ bool DecoSimple::canPlaceDecoration(MMVManip *vm, v3s16 p) } -size_t DecoSimple::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) +size_t DecoSimple::generate(MMVManip *vm, PcgRandom *pr, v3s16 p) { if (!canPlaceDecoration(vm, p)) return 0; @@ -296,13 +304,16 @@ size_t DecoSimple::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) s16 height = (deco_height_max > 0) ? pr->range(deco_height, deco_height_max) : deco_height; + bool force_placement = (flags & DECO_FORCE_PLACEMENT); + v3s16 em = vm->m_area.getExtent(); u32 vi = vm->m_area.index(p); for (int i = 0; i < height; i++) { vm->m_area.add_y(em, vi, 1); content_t c = vm->m_data[vi].getContent(); - if (c != CONTENT_AIR && c != CONTENT_IGNORE) + if (c != CONTENT_AIR && c != CONTENT_IGNORE && + !force_placement) break; vm->m_data[vi] = MapNode(c_place); @@ -327,7 +338,7 @@ DecoSchematic::DecoSchematic() } -size_t DecoSchematic::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) +size_t DecoSchematic::generate(MMVManip *vm, PcgRandom *pr, v3s16 p) { // Schematic could have been unloaded but not the decoration // In this case generate() does nothing (but doesn't *fail*) diff --git a/src/mg_decoration.h b/src/mg_decoration.h index 16af02a1..ba3e9d3b 100644 --- a/src/mg_decoration.h +++ b/src/mg_decoration.h @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class Mapgen; class MMVManip; -class PseudoRandom; +class PcgRandom; class Schematic; enum DecorationType { @@ -71,7 +71,7 @@ public: size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); //size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); - virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) = 0; + virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p) = 0; virtual int getHeight() = 0; u32 flags; @@ -90,7 +90,7 @@ public: class DecoSimple : public Decoration { public: - virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p); + virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p); bool canPlaceDecoration(MMVManip *vm, v3s16 p); virtual int getHeight(); @@ -107,7 +107,7 @@ class DecoSchematic : public Decoration { public: DecoSchematic(); - virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p); + virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p); virtual int getHeight(); Rotation rotation; diff --git a/src/mg_ore.cpp b/src/mg_ore.cpp index 16d97685..25790161 100644 --- a/src/mg_ore.cpp +++ b/src/mg_ore.cpp @@ -126,7 +126,7 @@ size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { - PseudoRandom pr(blockseed); + PcgRandom pr(blockseed); MapNode n_ore(c_ore, 0, ore_param2); u32 sizex = (nmax.X - nmin.X + 1); @@ -175,11 +175,16 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { - PseudoRandom pr(blockseed + 4234); + PcgRandom pr(blockseed + 4234); MapNode n_ore(c_ore, 0, ore_param2); u16 max_height = column_height_max; - int y_start = pr.range(nmin.Y + max_height, nmax.Y - max_height); + int y_start_min = nmin.Y + max_height; + int y_start_max = nmax.Y - max_height; + + int y_start = y_start_min < y_start_max ? + pr.range(y_start_min, y_start_max) : + (y_start_min + y_start_max) / 2; if (!noise) { int sx = nmax.X - nmin.X + 1; @@ -204,10 +209,10 @@ void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, u16 height = pr.range(column_height_min, column_height_max); int ymidpoint = y_start + noiseval; - int y0 = ymidpoint - height * (1 - column_midpoint_factor); - int y1 = y0 + height; + int y0 = MYMAX(nmin.Y, ymidpoint - height * (1 - column_midpoint_factor)); + int y1 = MYMIN(nmax.Y, y0 + height - 1); - for (int y = y0; y < y1; y++) { + for (int y = y0; y <= y1; y++) { u32 i = vm->m_area.index(x, y, z); if (!vm->m_area.contains(i)) continue; @@ -240,7 +245,7 @@ OrePuff::~OrePuff() void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { - PseudoRandom pr(blockseed + 4234); + PcgRandom pr(blockseed + 4234); MapNode n_ore(c_ore, 0, ore_param2); int y_start = pr.range(nmin.Y, nmax.Y); @@ -313,7 +318,7 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { - PseudoRandom pr(blockseed + 2404); + PcgRandom pr(blockseed + 2404); MapNode n_ore(c_ore, 0, ore_param2); u32 sizex = (nmax.X - nmin.X + 1); @@ -391,7 +396,7 @@ OreVein::~OreVein() void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { - PseudoRandom pr(blockseed + 520); + PcgRandom pr(blockseed + 520); MapNode n_ore(c_ore, 0, ore_param2); u32 sizex = (nmax.X - nmin.X + 1); diff --git a/src/mg_ore.h b/src/mg_ore.h index 8ffb8fca..2e065cee 100644 --- a/src/mg_ore.h +++ b/src/mg_ore.h @@ -61,7 +61,7 @@ public: s16 y_max; u8 ore_param2; // to set node-specific attributes u32 flags; // attributes for this ore - float nthresh; // threshhold for noise at which an ore is placed + float nthresh; // threshold for noise at which an ore is placed NoiseParams np; // noise for distribution of clusters (NULL for uniform scattering) Noise *noise; std::set biomes; diff --git a/src/mg_schematic.cpp b/src/mg_schematic.cpp index 019ed4de..0b95fa26 100644 --- a/src/mg_schematic.cpp +++ b/src/mg_schematic.cpp @@ -267,7 +267,7 @@ bool Schematic::deserializeFromMts(std::istream *is, //// Read signature u32 signature = readU32(ss); if (signature != MTSCHEM_FILE_SIGNATURE) { - errorstream << "Schematic::deserializeFromMts: invalid schematic " + errorstream << __FUNCTION__ << ": invalid schematic " "file" << std::endl; return false; } @@ -275,7 +275,7 @@ bool Schematic::deserializeFromMts(std::istream *is, //// Read version u16 version = readU16(ss); if (version > MTSCHEM_FILE_VER_HIGHEST_READ) { - errorstream << "Schematic::deserializeFromMts: unsupported schematic " + errorstream << __FUNCTION__ << ": unsupported schematic " "file version" << std::endl; return false; } @@ -439,7 +439,7 @@ bool Schematic::loadSchematicFromFile(const std::string &filename, { std::ifstream is(filename.c_str(), std::ios_base::binary); if (!is.good()) { - errorstream << "Schematic::loadSchematicFile: unable to open file '" + errorstream << __FUNCTION__ << ": unable to open file '" << filename << "'" << std::endl; return false; } @@ -448,17 +448,19 @@ bool Schematic::loadSchematicFromFile(const std::string &filename, if (!deserializeFromMts(&is, &m_nodenames)) return false; + m_nnlistsizes.push_back(m_nodenames.size() - origsize); + + name = filename; + if (replace_names) { - for (size_t i = origsize; i != m_nodenames.size(); i++) { - std::string &name = m_nodenames[i]; - StringMap::iterator it = replace_names->find(name); + for (size_t i = origsize; i < m_nodenames.size(); i++) { + std::string &node_name = m_nodenames[i]; + StringMap::iterator it = replace_names->find(node_name); if (it != replace_names->end()) - name = it->second; + node_name = it->second; } } - m_nnlistsizes.push_back(m_nodenames.size() - origsize); - if (ndef) ndef->pendNodeResolve(this); diff --git a/src/minimap.cpp b/src/minimap.cpp index a6eff068..8cd0a7be 100644 --- a/src/minimap.cpp +++ b/src/minimap.cpp @@ -211,11 +211,14 @@ void MinimapUpdateThread::getMap(v3s16 pos, s16 size, s16 height, bool is_radar) Mapper::Mapper(IrrlichtDevice *device, Client *client) { + this->client = client; this->driver = device->getVideoDriver(); this->m_tsrc = client->getTextureSource(); this->m_shdrsrc = client->getShaderSource(); this->m_ndef = client->getNodeDefManager(); + m_angle = 0.f; + // Initialize static settings m_enable_shaders = g_settings->getBool("enable_shaders"); m_surface_mode_scan_height = @@ -248,6 +251,8 @@ Mapper::Mapper(IrrlichtDevice *device, Client *client) // Create player marker texture data->player_marker = m_tsrc->getTexture("player_marker.png"); + // Create object marker texture + data->object_marker_red = m_tsrc->getTexture("object_marker_red.png"); // Create mesh buffer for minimap m_meshbuffer = getMinimapMeshBuffer(); @@ -272,6 +277,7 @@ Mapper::~Mapper() driver->removeTexture(data->heightmap_texture); driver->removeTexture(data->minimap_overlay_round); driver->removeTexture(data->minimap_overlay_square); + driver->removeTexture(data->object_marker_red); delete data; delete m_minimap_update_thread; @@ -466,6 +472,7 @@ void Mapper::drawMinimap() if (!minimap_texture) return; + updateActiveMarkers(); v2u32 screensize = porting::getWindowSize(); const u32 size = 0.25 * screensize.Y; @@ -525,6 +532,70 @@ void Mapper::drawMinimap() driver->setTransform(video::ETS_VIEW, oldViewMat); driver->setTransform(video::ETS_PROJECTION, oldProjMat); driver->setViewPort(oldViewPort); + + // Draw player markers + v2s32 s_pos(screensize.X - size - 10, 10); + core::dimension2di imgsize(data->object_marker_red->getOriginalSize()); + core::rect img_rect(0, 0, imgsize.Width, imgsize.Height); + static const video::SColor col(255, 255, 255, 255); + static const video::SColor c[4] = {col, col, col, col}; + f32 sin_angle = sin(m_angle * core::DEGTORAD); + f32 cos_angle = cos(m_angle * core::DEGTORAD); + s32 marker_size2 = 0.025 * (float)size; + for (std::list::const_iterator + i = m_active_markers.begin(); + i != m_active_markers.end(); ++i) { + v2f posf = *i; + if (data->minimap_shape_round) { + f32 t1 = posf.X * cos_angle - posf.Y * sin_angle; + f32 t2 = posf.X * sin_angle + posf.Y * cos_angle; + posf.X = t1; + posf.Y = t2; + } + posf.X = (posf.X + 0.5) * (float)size; + posf.Y = (posf.Y + 0.5) * (float)size; + core::rect dest_rect( + s_pos.X + posf.X - marker_size2, + s_pos.Y + posf.Y - marker_size2, + s_pos.X + posf.X + marker_size2, + s_pos.Y + posf.Y + marker_size2); + driver->draw2DImage(data->object_marker_red, dest_rect, + img_rect, &dest_rect, &c[0], true); + } +} + +void Mapper::updateActiveMarkers () +{ + video::IImage *minimap_mask = data->minimap_shape_round ? + data->minimap_mask_round : data->minimap_mask_square; + + std::list *nametags = client->getCamera()->getNametags(); + + m_active_markers.clear(); + + for (std::list::const_iterator + i = nametags->begin(); + i != nametags->end(); ++i) { + Nametag *nametag = *i; + v3s16 pos = floatToInt(nametag->parent_node->getPosition() + + intToFloat(client->getCamera()->getOffset(), BS), BS); + pos -= data->pos - v3s16(data->map_size / 2, + data->scan_height / 2, + data->map_size / 2); + if (pos.X < 0 || pos.X > data->map_size || + pos.Y < 0 || pos.Y > data->scan_height || + pos.Z < 0 || pos.Z > data->map_size) { + continue; + } + pos.X = ((float)pos.X / data->map_size) * MINIMAP_MAX_SX; + pos.Z = ((float)pos.Z / data->map_size) * MINIMAP_MAX_SY; + video::SColor mask_col = minimap_mask->getPixel(pos.X, pos.Z); + if (!mask_col.getAlpha()) { + continue; + } + m_active_markers.push_back(v2f(((float)pos.X / (float)MINIMAP_MAX_SX) - 0.5, + (1.0 - (float)pos.Z / (float)MINIMAP_MAX_SY) - 0.5)); + } } //// diff --git a/src/minimap.h b/src/minimap.h index dd1397d5..743b2bff 100644 --- a/src/minimap.h +++ b/src/minimap.h @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include +#include "camera.h" #define MINIMAP_MAX_SX 512 #define MINIMAP_MAX_SY 512 @@ -82,6 +83,7 @@ struct MinimapData { video::ITexture *minimap_overlay_round; video::ITexture *minimap_overlay_square; video::ITexture *player_marker; + video::ITexture *object_marker_red; }; struct QueuedMinimapUpdate { @@ -138,9 +140,12 @@ public: video::IImage *heightmap_image); scene::SMeshBuffer *getMinimapMeshBuffer(); + + void updateActiveMarkers(); void drawMinimap(); video::IVideoDriver *driver; + Client* client; MinimapData *data; private: @@ -153,6 +158,7 @@ private: u16 m_surface_mode_scan_height; f32 m_angle; Mutex m_mutex; + std::list m_active_markers; }; #endif diff --git a/src/modalMenu.h b/src/modalMenu.h index 72ecedcb..43bb8e1b 100644 --- a/src/modalMenu.h +++ b/src/modalMenu.h @@ -31,8 +31,8 @@ class IMenuManager { public: // A GUIModalMenu calls these when this class is passed as a parameter - virtual void createdMenu(GUIModalMenu *menu) = 0; - virtual void deletingMenu(GUIModalMenu *menu) = 0; + virtual void createdMenu(gui::IGUIElement *menu) = 0; + virtual void deletingMenu(gui::IGUIElement *menu) = 0; }; /* @@ -108,7 +108,7 @@ public: this->remove(); #ifdef HAVE_TOUCHSCREENGUI if (g_touchscreengui) - g_touchscreengui->Show(); + g_touchscreengui->show(); #endif } diff --git a/src/mods.cpp b/src/mods.cpp index be6e1e5d..1b1bdb07 100644 --- a/src/mods.cpp +++ b/src/mods.cpp @@ -21,11 +21,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "mods.h" #include "filesys.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "log.h" #include "subgame.h" #include "settings.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "convert_json.h" #include "exceptions.h" diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index a49bbe16..0498f404 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "nodedef.h" #include "serialization.h" #include "server.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "network/clientopcodes.h" #include "util/serialize.h" #include "util/srp.h" @@ -552,6 +552,7 @@ void Client::handleCommand_MovePlayer(NetworkPacket* pkt) *pkt >> pos >> pitch >> yaw; + player->got_teleported = true; player->setPosition(pos); infostream << "Client got TOCLIENT_MOVE_PLAYER" @@ -640,7 +641,7 @@ void Client::handleCommand_AnnounceMedia(NetworkPacket* pkt) *pkt >> str; Strfnd sf(str); - while(!sf.atend()) { + while(!sf.at_end()) { std::string baseurl = trim(sf.next(",")); if (baseurl != "") m_media_downloader->addRemoteServer(baseurl); diff --git a/src/network/networkpacket.cpp b/src/network/networkpacket.cpp index b5e451cd..388afc18 100644 --- a/src/network/networkpacket.cpp +++ b/src/network/networkpacket.cpp @@ -77,6 +77,9 @@ void NetworkPacket::putRawString(const char* src, u32 len) m_data.resize(m_datasize); } + if (len == 0) + return; + memcpy(&m_data[m_read_offset], src, len); m_read_offset += len; } diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 674c6810..177b9768 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -132,16 +132,23 @@ with this program; if not, write to the Free Software Foundation, Inc., Rename GENERIC_CMD_SET_ATTACHMENT to GENERIC_CMD_ATTACH_TO PROTOCOL_VERSION 26: Add TileDef tileable_horizontal, tileable_vertical flags + PROTOCOL_VERSION 27: + backface_culling: backwards compatibility for playing with + newer client on pre-27 servers. + Add nodedef v3 - connected nodeboxes */ -#define LATEST_PROTOCOL_VERSION 26 +#define LATEST_PROTOCOL_VERSION 27 // Server's supported network protocol range #define SERVER_PROTOCOL_VERSION_MIN 13 #define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION // Client's supported network protocol range -#define CLIENT_PROTOCOL_VERSION_MIN 13 +// The minimal version depends on whether +// send_pre_v25_init is enabled or not +#define CLIENT_PROTOCOL_VERSION_MIN 25 +#define CLIENT_PROTOCOL_VERSION_MIN_LEGACY 13 #define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION // Constant that differentiates the protocol from random data and other protocols diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 3c446e31..1bcb78a8 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -261,9 +261,9 @@ void Server::handleCommand_Init(NetworkPacket* pkt) auth_mechs |= AUTH_MECHANISM_FIRST_SRP; } else { // Take care of default passwords. - client->enc_pwd = getSRPVerifier(playerName, default_password); + client->enc_pwd = get_encoded_srp_verifier(playerName, default_password); auth_mechs |= AUTH_MECHANISM_SRP; - // Create auth, but only on successful login + // Allocate player in db, but only on successful login. client->create_player_on_auth_success = true; } } @@ -549,7 +549,7 @@ void Server::handleCommand_Init_Legacy(NetworkPacket* pkt) std::string raw_default_password = g_settings->get("default_password"); std::string initial_password = - translatePassword(playername, raw_default_password); + translate_password(playername, raw_default_password); // If default_password is empty, allow any initial password if (raw_default_password.length() == 0) @@ -762,14 +762,14 @@ void Server::handleCommand_GotBlocks(NetworkPacket* pkt) RemoteClient *client = getClient(pkt->getPeerId()); - for (u16 i = 0; i < count; i++) { - if ((s16)pkt->getSize() < 1 + (i + 1) * 6) - throw con::InvalidIncomingDataException + if ((s16)pkt->getSize() < 1 + (int)count * 6) { + throw con::InvalidIncomingDataException ("GOTBLOCKS length is too short"); + } + + for (u16 i = 0; i < count; i++) { v3s16 p; - *pkt >> p; - client->GotBlock(p); } } @@ -865,13 +865,14 @@ void Server::handleCommand_DeletedBlocks(NetworkPacket* pkt) RemoteClient *client = getClient(pkt->getPeerId()); - for (u16 i = 0; i < count; i++) { - if ((s16)pkt->getSize() < 1 + (i + 1) * 6) - throw con::InvalidIncomingDataException + if ((s16)pkt->getSize() < 1 + (int)count * 6) { + throw con::InvalidIncomingDataException ("DELETEDBLOCKS length is too short"); + } + + for (u16 i = 0; i < count; i++) { v3s16 p; *pkt >> p; - client->SetBlockNotSent(p); } } @@ -1063,7 +1064,8 @@ void Server::handleCommand_ChatMessage(NetworkPacket* pkt) std::string name = player->getName(); std::wstring wname = narrow_to_wide(name); - std::wstring answer_to_sender = handleChat(name, wname, message, pkt->getPeerId()); + std::wstring answer_to_sender = handleChat(name, wname, message, + true, pkt->getPeerId()); if (!answer_to_sender.empty()) { // Send the answer to sender SendChatMessage(pkt->getPeerId(), answer_to_sender); @@ -1357,7 +1359,9 @@ void Server::handleCommand_Interact(NetworkPacket* pkt) Check that target is reasonably close (only when digging or placing things) */ - if (action == 0 || action == 2 || action == 3) { + static const bool enable_anticheat = !g_settings->getBool("disable_anticheat"); + if ((action == 0 || action == 2 || action == 3) && + (enable_anticheat && !isSingleplayer())) { float d = player_pos.getDistanceFrom(pointed_pos_under); float max_d = BS * 14; // Just some large enough value if (d > max_d) { @@ -1494,7 +1498,7 @@ void Server::handleCommand_Interact(NetworkPacket* pkt) /* Cheat prevention */ bool is_valid_dig = true; - if (!isSingleplayer() && !g_settings->getBool("disable_anticheat")) { + if (enable_anticheat && !isSingleplayer()) { v3s16 nocheat_p = playersao->getNoCheatDigPos(); float nocheat_t = playersao->getNoCheatDigTime(); playersao->noCheatDigEnd(); @@ -1652,6 +1656,23 @@ void Server::handleCommand_Interact(NetworkPacket* pkt) } } // action == 4 + + /* + 5: rightclick air + */ + else if (action == 5) { + ItemStack item = playersao->getWieldedItem(); + + actionstream << player->getName() << " activates " + << item.name << std::endl; + + if (m_script->item_OnSecondaryUse( + item, playersao)) { + if( playersao->setWieldedItem(item)) { + SendInventory(playersao); + } + } + } /* @@ -1787,7 +1808,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) *pkt >> salt >> verification_key >> is_empty; verbosestream << "Server: Got TOSERVER_FIRST_SRP from " << addr_s - << ", with is_empty= " << is_empty << std::endl; + << ", with is_empty=" << (is_empty == 1) << std::endl; // Either this packet is sent because the user is new or to change the password if (cstate == CS_HelloSent) { @@ -1810,7 +1831,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) std::string initial_ver_key; - initial_ver_key = encodeSRPVerifier(verification_key, salt); + initial_ver_key = encode_srp_verifier(verification_key, salt); m_script->createAuth(playername, initial_ver_key); acceptAuth(pkt->getPeerId(), false); @@ -1822,7 +1843,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) return; } m_clients.event(pkt->getPeerId(), CSE_SudoLeave); - std::string pw_db_field = encodeSRPVerifier(verification_key, salt); + std::string pw_db_field = encode_srp_verifier(verification_key, salt); bool success = m_script->setPassword(playername, pw_db_field); if (success) { actionstream << playername << " changes password" << std::endl; @@ -1896,22 +1917,14 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) client->chosen_mech = chosen; - std::string bytes_s; - std::string bytes_v; + std::string salt; + std::string verifier; if (based_on == 0) { - char *p_bytes_s = 0; - size_t len_s = 0; - char *p_bytes_v = 0; - size_t len_v = 0; - getSRPVerifier(client->getName(), client->enc_pwd, - &p_bytes_s, &len_s, - &p_bytes_v, &len_v); - bytes_s = std::string(p_bytes_s, len_s); - bytes_v = std::string(p_bytes_v, len_v); - free(p_bytes_s); - free(p_bytes_v); - } else if (!decodeSRPVerifier(client->enc_pwd, &bytes_s, &bytes_v)) { + + generate_srp_verifier_and_salt(client->getName(), client->enc_pwd, + &verifier, &salt); + } else if (!decode_srp_verifier_and_salt(client->enc_pwd, &verifier, &salt)) { // Non-base64 errors should have been catched in the init handler actionstream << "Server: User " << client->getName() << " tried to log in, but srp verifier field" @@ -1925,8 +1938,8 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) client->auth_data = srp_verifier_new(SRP_SHA256, SRP_NG_2048, client->getName().c_str(), - (const unsigned char *) bytes_s.c_str(), bytes_s.size(), - (const unsigned char *) bytes_v.c_str(), bytes_v.size(), + (const unsigned char *) salt.c_str(), salt.size(), + (const unsigned char *) verifier.c_str(), verifier.size(), (const unsigned char *) bytes_A.c_str(), bytes_A.size(), NULL, 0, (unsigned char **) &bytes_B, &len_B, NULL, NULL); @@ -1945,7 +1958,7 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) } NetworkPacket resp_pkt(TOCLIENT_SRP_BYTES_S_B, 0, pkt->getPeerId()); - resp_pkt << bytes_s << std::string(bytes_B, len_B); + resp_pkt << salt << std::string(bytes_B, len_B); Send(&resp_pkt); } diff --git a/src/nodedef.cpp b/src/nodedef.cpp index b5ccc3b9..3a2cb00b 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "exceptions.h" #include "debug.h" #include "gamedef.h" +#include "mapnode.h" #include // Used in applyTextureOverrides() /* @@ -48,44 +49,91 @@ void NodeBox::reset() wall_top = aabb3f(-BS/2, BS/2-BS/16., -BS/2, BS/2, BS/2, BS/2); wall_bottom = aabb3f(-BS/2, -BS/2, -BS/2, BS/2, -BS/2+BS/16., BS/2); wall_side = aabb3f(-BS/2, -BS/2, -BS/2, -BS/2+BS/16., BS/2, BS/2); + // no default for other parts + connect_top.clear(); + connect_bottom.clear(); + connect_front.clear(); + connect_left.clear(); + connect_back.clear(); + connect_right.clear(); } void NodeBox::serialize(std::ostream &os, u16 protocol_version) const { - int version = protocol_version >= 21 ? 2 : 1; + int version = 1; + if (protocol_version >= 27) + version = 3; + else if (protocol_version >= 21) + version = 2; writeU8(os, version); - if (version == 1 && type == NODEBOX_LEVELED) - writeU8(os, NODEBOX_FIXED); - else - writeU8(os, type); + switch (type) { + case NODEBOX_LEVELED: + case NODEBOX_FIXED: + if (version == 1) + writeU8(os, NODEBOX_FIXED); + else + writeU8(os, type); - if(type == NODEBOX_FIXED || type == NODEBOX_LEVELED) - { writeU16(os, fixed.size()); - for(std::vector::const_iterator + for (std::vector::const_iterator i = fixed.begin(); i != fixed.end(); ++i) { writeV3F1000(os, i->MinEdge); writeV3F1000(os, i->MaxEdge); } - } - else if(type == NODEBOX_WALLMOUNTED) - { + break; + case NODEBOX_WALLMOUNTED: + writeU8(os, type); + writeV3F1000(os, wall_top.MinEdge); writeV3F1000(os, wall_top.MaxEdge); writeV3F1000(os, wall_bottom.MinEdge); writeV3F1000(os, wall_bottom.MaxEdge); writeV3F1000(os, wall_side.MinEdge); writeV3F1000(os, wall_side.MaxEdge); + break; + case NODEBOX_CONNECTED: + if (version <= 2) { + // send old clients nodes that can't be walked through + // to prevent abuse + writeU8(os, NODEBOX_FIXED); + + writeU16(os, 1); + writeV3F1000(os, v3f(-BS/2, -BS/2, -BS/2)); + writeV3F1000(os, v3f(BS/2, BS/2, BS/2)); + } else { + writeU8(os, type); + +#define WRITEBOX(box) do { \ + writeU16(os, (box).size()); \ + for (std::vector::const_iterator \ + i = (box).begin(); \ + i != (box).end(); ++i) { \ + writeV3F1000(os, i->MinEdge); \ + writeV3F1000(os, i->MaxEdge); \ + }; } while (0) + + WRITEBOX(fixed); + WRITEBOX(connect_top); + WRITEBOX(connect_bottom); + WRITEBOX(connect_front); + WRITEBOX(connect_left); + WRITEBOX(connect_back); + WRITEBOX(connect_right); + } + break; + default: + writeU8(os, type); + break; } } void NodeBox::deSerialize(std::istream &is) { int version = readU8(is); - if(version < 1 || version > 2) + if (version < 1 || version > 3) throw SerializationError("unsupported NodeBox version"); reset(); @@ -112,6 +160,26 @@ void NodeBox::deSerialize(std::istream &is) wall_side.MinEdge = readV3F1000(is); wall_side.MaxEdge = readV3F1000(is); } + else if (type == NODEBOX_CONNECTED) + { +#define READBOXES(box) do { \ + count = readU16(is); \ + (box).reserve(count); \ + while (count--) { \ + v3f min = readV3F1000(is); \ + v3f max = readV3F1000(is); \ + (box).push_back(aabb3f(min, max)); }; } while (0) + + u16 count; + + READBOXES(fixed); + READBOXES(connect_top); + READBOXES(connect_bottom); + READBOXES(connect_front); + READBOXES(connect_left); + READBOXES(connect_back); + READBOXES(connect_right); + } } /* @@ -139,7 +207,7 @@ void TileDef::serialize(std::ostream &os, u16 protocol_version) const } } -void TileDef::deSerialize(std::istream &is) +void TileDef::deSerialize(std::istream &is, const u8 contenfeatures_version, const NodeDrawType drawtype) { int version = readU8(is); name = deSerializeString(is); @@ -153,6 +221,13 @@ void TileDef::deSerialize(std::istream &is) tileable_horizontal = readU8(is); tileable_vertical = readU8(is); } + + if ((contenfeatures_version < 8) && + ((drawtype == NDT_MESH) || + (drawtype == NDT_FIRELIKE) || + (drawtype == NDT_LIQUID) || + (drawtype == NDT_PLANTLIKE))) + backface_culling = false; } @@ -233,6 +308,7 @@ void ContentFeatures::reset() diggable = true; climbable = false; buildable_to = false; + floodable = false; rightclickable = true; leveled = 0; liquid_type = LIQUID_NONE; @@ -253,6 +329,9 @@ void ContentFeatures::reset() sound_footstep = SimpleSoundSpec(); sound_dig = SimpleSoundSpec("__group"); sound_dug = SimpleSoundSpec(); + connects_to.clear(); + connects_to_ids.clear(); + connect_sides = 0; } void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const @@ -262,7 +341,8 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const return; } - writeU8(os, 7); // version + writeU8(os, protocol_version < 27 ? 7 : 8); + os<::const_iterator i = connects_to_ids.begin(); + i != connects_to_ids.end(); ++i) + writeU16(os, *i); + writeU8(os, connect_sides); } void ContentFeatures::deSerialize(std::istream &is) { int version = readU8(is); - if(version != 7){ + if (version < 7) { deSerializeOld(is, version); return; + } else if (version > 8) { + throw SerializationError("unsupported ContentFeatures version"); } name = deSerializeString(is); @@ -337,15 +425,16 @@ void ContentFeatures::deSerialize(std::istream &is) groups[name] = value; } drawtype = (enum NodeDrawType)readU8(is); + visual_scale = readF1000(is); if(readU8(is) != 6) throw SerializationError("unsupported tile count"); for(u32 i = 0; i < 6; i++) - tiledef[i].deSerialize(is); + tiledef[i].deSerialize(is, version, drawtype); if(readU8(is) != CF_SPECIAL_COUNT) throw SerializationError("unsupported CF_SPECIAL_COUNT"); for(u32 i = 0; i < CF_SPECIAL_COUNT; i++) - tiledef_special[i].deSerialize(is); + tiledef_special[i].deSerialize(is, version, drawtype); alpha = readU8(is); post_effect_color.setAlpha(readU8(is)); post_effect_color.setRed(readU8(is)); @@ -388,6 +477,12 @@ void ContentFeatures::deSerialize(std::istream &is) // otherwise changes the protocol version mesh = deSerializeString(is); collision_box.deSerialize(is); + floodable = readU8(is); + u16 connects_to_size = readU16(is); + connects_to_ids.clear(); + for (u16 i = 0; i < connects_to_size; i++) + connects_to_ids.insert(readU16(is)); + connect_sides = readU8(is); }catch(SerializationError &e) {}; } @@ -405,7 +500,7 @@ public: inline virtual const ContentFeatures& get(const MapNode &n) const; virtual bool getId(const std::string &name, content_t &result) const; virtual content_t getId(const std::string &name) const; - virtual void getIds(const std::string &name, std::set &result) const; + virtual bool getIds(const std::string &name, std::set &result) const; virtual const ContentFeatures& get(const std::string &name) const; content_t allocateId(); virtual content_t set(const std::string &name, const ContentFeatures &def); @@ -425,6 +520,8 @@ public: virtual bool cancelNodeResolveCallback(NodeResolver *nr); virtual void runNodeResolveCallbacks(); virtual void resetNodeResolveState(); + virtual void mapNodeboxConnections(); + virtual bool nodeboxConnects(MapNode from, MapNode to, u8 connect_face); private: void addNameIdMapping(content_t i, std::string name); @@ -520,6 +617,7 @@ void CNodeDefManager::clear() f.pointable = false; f.diggable = false; f.buildable_to = true; + f.floodable = true; f.is_ground_content = true; // Insert directly into containers content_t c = CONTENT_AIR; @@ -588,22 +686,23 @@ content_t CNodeDefManager::getId(const std::string &name) const } -void CNodeDefManager::getIds(const std::string &name, +bool CNodeDefManager::getIds(const std::string &name, std::set &result) const { //TimeTaker t("getIds", NULL, PRECISION_MICRO); if (name.substr(0,6) != "group:") { content_t id = CONTENT_IGNORE; - if(getId(name, id)) + bool exists = getId(name, id); + if (exists) result.insert(id); - return; + return exists; } std::string group = name.substr(6); std::map::const_iterator i = m_group_to_items.find(group); if (i == m_group_to_items.end()) - return; + return true; const GroupItems &items = i->second; for (GroupItems::const_iterator j = items.begin(); @@ -612,6 +711,7 @@ void CNodeDefManager::getIds(const std::string &name, result.insert((*j).first); } //printf("getIds: %dus\n", t.stop()); + return true; } @@ -791,7 +891,6 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef, scene::ISceneManager* smgr = gamedef->getSceneManager(); scene::IMeshManipulator* meshmanip = smgr->getMeshManipulator(); - bool new_style_water = g_settings->getBool("new_style_water"); bool connected_glass = g_settings->getBool("connected_glass"); bool opaque_water = g_settings->getBool("opaque_water"); bool enable_shaders = g_settings->getBool("enable_shaders"); @@ -839,12 +938,7 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef, assert(f->liquid_type == LIQUID_SOURCE); if (opaque_water) f->alpha = 255; - if (new_style_water){ - f->solidness = 0; - } else { - f->solidness = 1; - f->backface_culling = false; - } + f->solidness = 1; is_liquid = true; break; case NDT_FLOWINGLIQUID: @@ -895,17 +989,14 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef, break; case NDT_PLANTLIKE: f->solidness = 0; - f->backface_culling = false; if (f->waving == 1) material_type = TILE_MATERIAL_WAVING_PLANTS; break; case NDT_FIRELIKE: - f->backface_culling = false; f->solidness = 0; break; case NDT_MESH: f->solidness = 0; - f->backface_culling = false; break; case NDT_TORCHLIKE: case NDT_SIGNLIKE: @@ -937,7 +1028,7 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef, // Tiles (fill in f->tiles[]) for (u16 j = 0; j < 6; j++) { fillTileAttribs(tsrc, &f->tiles[j], &tiledef[j], tile_shader[j], - use_normal_texture, f->backface_culling, f->alpha, material_type); + use_normal_texture, f->tiledef[j].backface_culling, f->alpha, material_type); } // Special tiles (fill in f->special_tiles[]) @@ -964,7 +1055,7 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef, //Convert regular nodebox nodes to meshnodes //Change the drawtype and apply scale f->drawtype = NDT_MESH; - f->mesh_ptr[0] = convertNodeboxNodeToMesh(f); + f->mesh_ptr[0] = convertNodeboxesToMesh(f->node_box.fixed); v3f scale = v3f(1.0, 1.0, 1.0) * f->visual_scale; scaleMesh(f->mesh_ptr[0], scale); recalculateBoundingBox(f->mesh_ptr[0]); @@ -1262,7 +1353,6 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const "Unsupported version requested"); } - void ContentFeatures::deSerializeOld(std::istream &is, int version) { if (version == 5) // In PROTOCOL_VERSION 13 @@ -1276,15 +1366,16 @@ void ContentFeatures::deSerializeOld(std::istream &is, int version) groups[name] = value; } drawtype = (enum NodeDrawType)readU8(is); + visual_scale = readF1000(is); if (readU8(is) != 6) throw SerializationError("unsupported tile count"); for (u32 i = 0; i < 6; i++) - tiledef[i].deSerialize(is); + tiledef[i].deSerialize(is, version, drawtype); if (readU8(is) != CF_SPECIAL_COUNT) throw SerializationError("unsupported CF_SPECIAL_COUNT"); for (u32 i = 0; i < CF_SPECIAL_COUNT; i++) - tiledef_special[i].deSerialize(is); + tiledef_special[i].deSerialize(is, version, drawtype); alpha = readU8(is); post_effect_color.setAlpha(readU8(is)); post_effect_color.setRed(readU8(is)); @@ -1328,12 +1419,12 @@ void ContentFeatures::deSerializeOld(std::istream &is, int version) if (readU8(is) != 6) throw SerializationError("unsupported tile count"); for (u32 i = 0; i < 6; i++) - tiledef[i].deSerialize(is); + tiledef[i].deSerialize(is, version, drawtype); // CF_SPECIAL_COUNT in version 6 = 2 if (readU8(is) != 2) throw SerializationError("unsupported CF_SPECIAL_COUNT"); for (u32 i = 0; i < 2; i++) - tiledef_special[i].deSerialize(is); + tiledef_special[i].deSerialize(is, version, drawtype); alpha = readU8(is); post_effect_color.setAlpha(readU8(is)); post_effect_color.setRed(readU8(is)); @@ -1430,6 +1521,57 @@ void CNodeDefManager::resetNodeResolveState() m_pending_resolve_callbacks.clear(); } +void CNodeDefManager::mapNodeboxConnections() +{ + for (u32 i = 0; i < m_content_features.size(); i++) { + ContentFeatures *f = &m_content_features[i]; + if ((f->drawtype != NDT_NODEBOX) || (f->node_box.type != NODEBOX_CONNECTED)) + continue; + for (std::vector::iterator it = f->connects_to.begin(); + it != f->connects_to.end(); ++it) { + getIds(*it, f->connects_to_ids); + } + } +} + +bool CNodeDefManager::nodeboxConnects(MapNode from, MapNode to, u8 connect_face) +{ + const ContentFeatures &f1 = get(from); + + if ((f1.drawtype != NDT_NODEBOX) || (f1.node_box.type != NODEBOX_CONNECTED)) + return false; + + // lookup target in connected set + if (f1.connects_to_ids.find(to.param0) == f1.connects_to_ids.end()) + return false; + + const ContentFeatures &f2 = get(to); + + if ((f2.drawtype == NDT_NODEBOX) && (f2.node_box.type == NODEBOX_CONNECTED)) + // ignores actually looking if back connection exists + return (f2.connects_to_ids.find(from.param0) != f2.connects_to_ids.end()); + + // does to node declare usable faces? + if (f2.connect_sides > 0) { + if ((f2.param_type_2 == CPT2_FACEDIR) && (connect_face >= 4)) { + static const u8 rot[33 * 4] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 32, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4 - back + 8, 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 - right + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 8, 4, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - front + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 16, 8, 4 // 32 - left + }; + return (f2.connect_sides & rot[(connect_face * 4) + to.param2]); + } + return (f2.connect_sides & connect_face); + } + // the target is just a regular node, so connect no matter back connection + return true; +} //// //// NodeResolver diff --git a/src/nodedef.h b/src/nodedef.h index 7a84b031..58d0faff 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -80,6 +80,7 @@ enum NodeBoxType NODEBOX_FIXED, // Static separately defined box(es) NODEBOX_WALLMOUNTED, // Box for wall mounted nodes; (top, bottom, side) NODEBOX_LEVELED, // Same as fixed, but with dynamic height from param2. for snow, ... + NODEBOX_CONNECTED, // optionally draws nodeboxes if a neighbor node attaches }; struct NodeBox @@ -92,6 +93,13 @@ struct NodeBox aabb3f wall_top; aabb3f wall_bottom; aabb3f wall_side; // being at the -X side + // NODEBOX_CONNECTED + std::vector connect_top; + std::vector connect_bottom; + std::vector connect_front; + std::vector connect_left; + std::vector connect_back; + std::vector connect_right; NodeBox() { reset(); } @@ -104,6 +112,30 @@ struct NodeBox struct MapNode; class NodeMetadata; +enum NodeDrawType +{ + NDT_NORMAL, // A basic solid block + NDT_AIRLIKE, // Nothing is drawn + NDT_LIQUID, // Do not draw face towards same kind of flowing/source liquid + NDT_FLOWINGLIQUID, // A very special kind of thing + NDT_GLASSLIKE, // Glass-like, don't draw faces towards other glass + NDT_ALLFACES, // Leaves-like, draw all faces no matter what + NDT_ALLFACES_OPTIONAL, // Fancy -> allfaces, fast -> normal + NDT_TORCHLIKE, + NDT_SIGNLIKE, + NDT_PLANTLIKE, + NDT_FENCELIKE, + NDT_RAILLIKE, + NDT_NODEBOX, + NDT_GLASSLIKE_FRAMED, // Glass-like, draw connected frames and all all + // visible faces + // uses 2 textures, one for frames, second for faces + NDT_FIRELIKE, // Draw faces slightly rotated and only on connecting nodes, + NDT_GLASSLIKE_FRAMED_OPTIONAL, // enabled -> connected, disabled -> Glass-like + // uses 2 textures, one for frames, second for faces + NDT_MESH, // Uses static meshes +}; + /* Stand-alone definition of a TileSpec (basically a server-side TileSpec) */ @@ -137,31 +169,7 @@ struct TileDef } void serialize(std::ostream &os, u16 protocol_version) const; - void deSerialize(std::istream &is); -}; - -enum NodeDrawType -{ - NDT_NORMAL, // A basic solid block - NDT_AIRLIKE, // Nothing is drawn - NDT_LIQUID, // Do not draw face towards same kind of flowing/source liquid - NDT_FLOWINGLIQUID, // A very special kind of thing - NDT_GLASSLIKE, // Glass-like, don't draw faces towards other glass - NDT_ALLFACES, // Leaves-like, draw all faces no matter what - NDT_ALLFACES_OPTIONAL, // Fancy -> allfaces, fast -> normal - NDT_TORCHLIKE, - NDT_SIGNLIKE, - NDT_PLANTLIKE, - NDT_FENCELIKE, - NDT_RAILLIKE, - NDT_NODEBOX, - NDT_GLASSLIKE_FRAMED, // Glass-like, draw connected frames and all all - // visible faces - // uses 2 textures, one for frames, second for faces - NDT_FIRELIKE, // Draw faces slightly rotated and only on connecting nodes, - NDT_GLASSLIKE_FRAMED_OPTIONAL, // enabled -> connected, disabled -> Glass-like - // uses 2 textures, one for frames, second for faces - NDT_MESH, // Uses static meshes + void deSerialize(std::istream &is, const u8 contentfeatures_version, const NodeDrawType drawtype); }; #define CF_SPECIAL_COUNT 6 @@ -229,6 +237,8 @@ struct ContentFeatures bool climbable; // Player can build on these bool buildable_to; + // Liquids flow into and replace node + bool floodable; // Player cannot build to these (placement prediction disabled) bool rightclickable; // Flowing liquid or snow, value = default level @@ -261,12 +271,17 @@ struct ContentFeatures bool legacy_facedir_simple; // Set to true if wall_mounted used to be set to true bool legacy_wallmounted; + // for NDT_CONNECTED pairing + u8 connect_sides; // Sound properties SimpleSoundSpec sound_footstep; SimpleSoundSpec sound_dig; SimpleSoundSpec sound_dug; + std::vector connects_to; + std::set connects_to_ids; + /* Methods */ @@ -301,7 +316,8 @@ public: virtual bool getId(const std::string &name, content_t &result) const=0; virtual content_t getId(const std::string &name) const=0; // Allows "group:name" in addition to regular node names - virtual void getIds(const std::string &name, std::set &result) + // returns false if node name not found, true otherwise + virtual bool getIds(const std::string &name, std::set &result) const=0; virtual const ContentFeatures &get(const std::string &name) const=0; @@ -311,6 +327,7 @@ public: virtual void pendNodeResolve(NodeResolver *nr)=0; virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0; + virtual bool nodeboxConnects(const MapNode from, const MapNode to, u8 connect_face)=0; }; class IWritableNodeDefManager : public INodeDefManager { @@ -325,7 +342,7 @@ public: // If not found, returns CONTENT_IGNORE virtual content_t getId(const std::string &name) const=0; // Allows "group:name" in addition to regular node names - virtual void getIds(const std::string &name, std::set &result) + virtual bool getIds(const std::string &name, std::set &result) const=0; // If not found, returns the features of CONTENT_UNKNOWN virtual const ContentFeatures &get(const std::string &name) const=0; @@ -365,6 +382,7 @@ public: virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0; virtual void runNodeResolveCallbacks()=0; virtual void resetNodeResolveState()=0; + virtual void mapNodeboxConnections()=0; }; IWritableNodeDefManager *createNodeDefManager(); diff --git a/src/noise.cpp b/src/noise.cpp index b1b70253..2ddc3926 100644 --- a/src/noise.cpp +++ b/src/noise.cpp @@ -99,17 +99,17 @@ u32 PcgRandom::range(u32 bound) Using rand() % 3, the number 0 would be twice as likely to appear. With a very large RNG range, the effect becomes less prevalent but still present. This can be solved by modifying the range of the RNG - to become a multiple of bound by dropping values above the a threshhold. - In our example, threshhold == 4 - 3 = 1 % 3 == 1, so reject 0, thus + to become a multiple of bound by dropping values above the a threshold. + In our example, threshold == 4 - 3 = 1 % 3 == 1, so reject 0, thus making the range 3 with no bias. This loop looks dangerous, but will always terminate due to the RNG's property of uniformity. */ - u32 threshhold = -bound % bound; + u32 threshold = -bound % bound; u32 r; - while ((r = next()) < threshhold) + while ((r = next()) < threshold) ; return r % bound; diff --git a/src/object_properties.cpp b/src/object_properties.cpp index dc1eddf4..89ca2627 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -43,7 +43,10 @@ ObjectProperties::ObjectProperties(): stepheight(0), automatic_face_movement_dir(false), automatic_face_movement_dir_offset(0.0), - backface_culling(true) + backface_culling(true), + nametag(""), + nametag_color(255, 255, 255, 255), + automatic_face_movement_max_rotation_per_sec(-1) { textures.push_back("unknown_object.png"); colors.push_back(video::SColor(255,255,255,255)); @@ -76,6 +79,9 @@ std::string ObjectProperties::dump() os<<", makes_footstep_sound="< collisionbox; + aabb3f collisionbox; std::string visual; std::string mesh; v2f visual_size; @@ -48,7 +48,10 @@ struct ObjectProperties bool automatic_face_movement_dir; f32 automatic_face_movement_dir_offset; bool backface_culling; - + std::string nametag; + video::SColor nametag_color; + f32 automatic_face_movement_max_rotation_per_sec; + std::string infotext; ObjectProperties(); std::string dump(); diff --git a/src/particles.cpp b/src/particles.cpp index ebb54a49..525258a2 100644 --- a/src/particles.cpp +++ b/src/particles.cpp @@ -88,7 +88,7 @@ Particle::Particle( m_vertical = vertical; // Irrlicht stuff - m_collisionbox = core::aabbox3d + m_collisionbox = aabb3f (-size/2,-size/2,-size/2,size/2,size/2,size/2); this->setAutomaticCulling(scene::EAC_OFF); @@ -128,17 +128,15 @@ void Particle::step(float dtime) m_time += dtime; if (m_collisiondetection) { - core::aabbox3d box = m_collisionbox; + aabb3f box = m_collisionbox; v3f p_pos = m_pos*BS; v3f p_velocity = m_velocity*BS; - v3f p_acceleration = m_acceleration*BS; collisionMoveSimple(m_env, m_gamedef, BS*0.5, box, 0, dtime, - p_pos, p_velocity, p_acceleration); + &p_pos, &p_velocity, m_acceleration * BS); m_pos = p_pos/BS; m_velocity = p_velocity/BS; - m_acceleration = p_acceleration/BS; } else { @@ -348,7 +346,7 @@ void ParticleManager::step(float dtime) void ParticleManager::stepSpawners (float dtime) { MutexAutoLock lock(m_spawner_list_lock); - for(std::map::iterator i = + for (std::map::iterator i = m_particle_spawners.begin(); i != m_particle_spawners.end();) { @@ -410,94 +408,92 @@ void ParticleManager::clearAll () void ParticleManager::handleParticleEvent(ClientEvent *event, IGameDef *gamedef, scene::ISceneManager* smgr, LocalPlayer *player) { - if (event->type == CE_DELETE_PARTICLESPAWNER) { - MutexAutoLock lock(m_spawner_list_lock); - if (m_particle_spawners.find(event->delete_particlespawner.id) != - m_particle_spawners.end()) - { - delete m_particle_spawners.find(event->delete_particlespawner.id)->second; - m_particle_spawners.erase(event->delete_particlespawner.id); - } - // no allocated memory in delete event - return; - } - - if (event->type == CE_ADD_PARTICLESPAWNER) { - - { + switch (event->type) { + case CE_DELETE_PARTICLESPAWNER: { MutexAutoLock lock(m_spawner_list_lock); - if (m_particle_spawners.find(event->add_particlespawner.id) != - m_particle_spawners.end()) - { - delete m_particle_spawners.find(event->add_particlespawner.id)->second; - m_particle_spawners.erase(event->add_particlespawner.id); + if (m_particle_spawners.find(event->delete_particlespawner.id) != + m_particle_spawners.end()) { + delete m_particle_spawners.find(event->delete_particlespawner.id)->second; + m_particle_spawners.erase(event->delete_particlespawner.id); } + // no allocated memory in delete event + break; } - video::ITexture *texture = - gamedef->tsrc()->getTextureForMesh(*(event->add_particlespawner.texture)); + case CE_ADD_PARTICLESPAWNER: { + { + MutexAutoLock lock(m_spawner_list_lock); + if (m_particle_spawners.find(event->add_particlespawner.id) != + m_particle_spawners.end()) { + delete m_particle_spawners.find(event->add_particlespawner.id)->second; + m_particle_spawners.erase(event->add_particlespawner.id); + } + } - ParticleSpawner* toadd = new ParticleSpawner(gamedef, smgr, player, - event->add_particlespawner.amount, - event->add_particlespawner.spawntime, - *event->add_particlespawner.minpos, - *event->add_particlespawner.maxpos, - *event->add_particlespawner.minvel, - *event->add_particlespawner.maxvel, - *event->add_particlespawner.minacc, - *event->add_particlespawner.maxacc, - event->add_particlespawner.minexptime, - event->add_particlespawner.maxexptime, - event->add_particlespawner.minsize, - event->add_particlespawner.maxsize, - event->add_particlespawner.collisiondetection, - event->add_particlespawner.vertical, - texture, - event->add_particlespawner.id, - this); + video::ITexture *texture = + gamedef->tsrc()->getTextureForMesh(*(event->add_particlespawner.texture)); - /* delete allocated content of event */ - delete event->add_particlespawner.minpos; - delete event->add_particlespawner.maxpos; - delete event->add_particlespawner.minvel; - delete event->add_particlespawner.maxvel; - delete event->add_particlespawner.minacc; - delete event->add_particlespawner.texture; - delete event->add_particlespawner.maxacc; + ParticleSpawner* toadd = new ParticleSpawner(gamedef, smgr, player, + event->add_particlespawner.amount, + event->add_particlespawner.spawntime, + *event->add_particlespawner.minpos, + *event->add_particlespawner.maxpos, + *event->add_particlespawner.minvel, + *event->add_particlespawner.maxvel, + *event->add_particlespawner.minacc, + *event->add_particlespawner.maxacc, + event->add_particlespawner.minexptime, + event->add_particlespawner.maxexptime, + event->add_particlespawner.minsize, + event->add_particlespawner.maxsize, + event->add_particlespawner.collisiondetection, + event->add_particlespawner.vertical, + texture, + event->add_particlespawner.id, + this); - { - MutexAutoLock lock(m_spawner_list_lock); - m_particle_spawners.insert( - std::pair( - event->add_particlespawner.id, - toadd)); + /* delete allocated content of event */ + delete event->add_particlespawner.minpos; + delete event->add_particlespawner.maxpos; + delete event->add_particlespawner.minvel; + delete event->add_particlespawner.maxvel; + delete event->add_particlespawner.minacc; + delete event->add_particlespawner.texture; + delete event->add_particlespawner.maxacc; + + { + MutexAutoLock lock(m_spawner_list_lock); + m_particle_spawners.insert( + std::pair( + event->add_particlespawner.id, + toadd)); + } + break; } + case CE_SPAWN_PARTICLE: { + video::ITexture *texture = + gamedef->tsrc()->getTextureForMesh(*(event->spawn_particle.texture)); - return; - } + Particle* toadd = new Particle(gamedef, smgr, player, m_env, + *event->spawn_particle.pos, + *event->spawn_particle.vel, + *event->spawn_particle.acc, + event->spawn_particle.expirationtime, + event->spawn_particle.size, + event->spawn_particle.collisiondetection, + event->spawn_particle.vertical, + texture, + v2f(0.0, 0.0), + v2f(1.0, 1.0)); - if (event->type == CE_SPAWN_PARTICLE) { - video::ITexture *texture = - gamedef->tsrc()->getTextureForMesh(*(event->spawn_particle.texture)); + addParticle(toadd); - Particle* toadd = new Particle(gamedef, smgr, player, m_env, - *event->spawn_particle.pos, - *event->spawn_particle.vel, - *event->spawn_particle.acc, - event->spawn_particle.expirationtime, - event->spawn_particle.size, - event->spawn_particle.collisiondetection, - event->spawn_particle.vertical, - texture, - v2f(0.0, 0.0), - v2f(1.0, 1.0)); + delete event->spawn_particle.pos; + delete event->spawn_particle.vel; + delete event->spawn_particle.acc; - addParticle(toadd); - - delete event->spawn_particle.pos; - delete event->spawn_particle.vel; - delete event->spawn_particle.acc; - - return; + break; + } + default: break; } } diff --git a/src/particles.h b/src/particles.h index 0ad8d71b..dda84385 100644 --- a/src/particles.h +++ b/src/particles.h @@ -52,7 +52,7 @@ class Particle : public scene::ISceneNode ); ~Particle(); - virtual const core::aabbox3d& getBoundingBox() const + virtual const aabb3f &getBoundingBox() const { return m_box; } @@ -85,8 +85,8 @@ private: ClientEnvironment *m_env; IGameDef *m_gamedef; - core::aabbox3d m_box; - core::aabbox3d m_collisionbox; + aabb3f m_box; + aabb3f m_collisionbox; video::SMaterial m_material; v2f m_texpos; v2f m_texsize; diff --git a/src/pathfinder.cpp b/src/pathfinder.cpp index 673d5077..57a008ea 100644 --- a/src/pathfinder.cpp +++ b/src/pathfinder.cpp @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2013 sapier, sapier at gmx dot net +Copyright (C) 2016 est31, 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 @@ -23,11 +24,20 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "pathfinder.h" #include "environment.h" +#include "gamedef.h" +#include "nodedef.h" #include "map.h" #include "log.h" +#include "irr_aabb3d.h" + +//#define PATHFINDER_DEBUG +//#define PATHFINDER_CALC_TIME #ifdef PATHFINDER_DEBUG -#include + #include +#endif +#ifdef PATHFINDER_DEBUG + #include #endif #ifdef PATHFINDER_CALC_TIME #include @@ -37,8 +47,6 @@ with this program; if not, write to the Free Software Foundation, Inc., /* Typedefs and macros */ /******************************************************************************/ -//#define PATHFINDER_CALC_TIME - /** shortcut to print a 3d pos */ #define PPOS(pos) "(" << pos.X << "," << pos.Y << "," << pos.Z << ")" @@ -51,32 +59,349 @@ with this program; if not, write to the Free Software Foundation, Inc., #define ERROR_TARGET std::cout #else #define DEBUG_OUT(a) while(0) -#define INFO_TARGET infostream << "pathfinder: " -#define VERBOSE_TARGET verbosestream << "pathfinder: " -#define ERROR_TARGET errorstream << "pathfinder: " +#define INFO_TARGET infostream << "Pathfinder: " +#define VERBOSE_TARGET verbosestream << "Pathfinder: " +#define ERROR_TARGET errorstream << "Pathfinder: " #endif +/******************************************************************************/ +/* Class definitions */ +/******************************************************************************/ + + +/** representation of cost in specific direction */ +class PathCost { +public: + + /** default constructor */ + PathCost(); + + /** copy constructor */ + PathCost(const PathCost &b); + + /** assignment operator */ + PathCost &operator= (const PathCost &b); + + bool valid; /**< movement is possible */ + int value; /**< cost of movement */ + int direction; /**< y-direction of movement */ + bool updated; /**< this cost has ben calculated */ + +}; + + +/** representation of a mapnode to be used for pathfinding */ +class PathGridnode { + +public: + /** default constructor */ + PathGridnode(); + + /** copy constructor */ + PathGridnode(const PathGridnode &b); + + /** + * assignment operator + * @param b node to copy + */ + PathGridnode &operator= (const PathGridnode &b); + + /** + * read cost in a specific direction + * @param dir direction of cost to fetch + */ + PathCost getCost(v3s16 dir); + + /** + * set cost value for movement + * @param dir direction to set cost for + * @cost cost to set + */ + void setCost(v3s16 dir, PathCost cost); + + bool valid; /**< node is on surface */ + bool target; /**< node is target position */ + bool source; /**< node is stating position */ + int totalcost; /**< cost to move here from starting point */ + v3s16 sourcedir; /**< origin of movement for current cost */ + v3s16 pos; /**< real position of node */ + PathCost directions[4]; /**< cost in different directions */ + + /* debug values */ + bool is_element; /**< node is element of path detected */ + char type; /**< type of node */ +}; + +class Pathfinder; + +/** Abstract class to manage the map data */ +class GridNodeContainer { +public: + virtual PathGridnode &access(v3s16 p)=0; + virtual ~GridNodeContainer() {} +protected: + Pathfinder *m_pathf; + + void initNode(v3s16 ipos, PathGridnode *p_node); +}; + +class ArrayGridNodeContainer : public GridNodeContainer { +public: + virtual ~ArrayGridNodeContainer() {} + ArrayGridNodeContainer(Pathfinder *pathf, v3s16 dimensions); + virtual PathGridnode &access(v3s16 p); +private: + v3s16 m_dimensions; + + int m_x_stride; + int m_y_stride; + std::vector m_nodes_array; +}; + +class MapGridNodeContainer : public GridNodeContainer { +public: + virtual ~MapGridNodeContainer() {} + MapGridNodeContainer(Pathfinder *pathf); + virtual PathGridnode &access(v3s16 p); +private: + std::map m_nodes; +}; + +/** class doing pathfinding */ +class Pathfinder { + +public: + /** + * default constructor + */ + Pathfinder(); + + ~Pathfinder(); + + /** + * path evaluation function + * @param env environment to look for path + * @param source origin of path + * @param destination end position of path + * @param searchdistance maximum number of nodes to look in each direction + * @param max_jump maximum number of blocks a path may jump up + * @param max_drop maximum number of blocks a path may drop + * @param algo Algorithm to use for finding a path + */ + std::vector getPath(ServerEnvironment *env, + v3s16 source, + v3s16 destination, + unsigned int searchdistance, + unsigned int max_jump, + unsigned int max_drop, + PathAlgorithm algo); + +private: + /* helper functions */ + + /** + * transform index pos to mappos + * @param ipos a index position + * @return map position + */ + v3s16 getRealPos(v3s16 ipos); + + /** + * transform mappos to index pos + * @param pos a real pos + * @return index position + */ + v3s16 getIndexPos(v3s16 pos); + + /** + * get gridnode at a specific index position + * @param ipos index position + * @return gridnode for index + */ + PathGridnode &getIndexElement(v3s16 ipos); + + /** + * Get gridnode at a specific index position + * @return gridnode for index + */ + PathGridnode &getIdxElem(s16 x, s16 y, s16 z); + + /** + * invert a 3d position + * @param pos 3d position + * @return pos *-1 + */ + v3s16 invert(v3s16 pos); + + /** + * check if a index is within current search area + * @param index position to validate + * @return true/false + */ + bool isValidIndex(v3s16 index); + + /** + * translate position to float position + * @param pos integer position + * @return float position + */ + v3f tov3f(v3s16 pos); + + + /* algorithm functions */ + + /** + * calculate 2d manahttan distance to target on the xz plane + * @param pos position to calc distance + * @return integer distance + */ + int getXZManhattanDist(v3s16 pos); + + /** + * get best direction based uppon heuristics + * @param directions list of unchecked directions + * @param g_pos mapnode to start from + * @return direction to check + */ + v3s16 getDirHeuristic(std::vector &directions, PathGridnode &g_pos); + + /** + * build internal data representation of search area + * @return true/false if costmap creation was successfull + */ + bool buildCostmap(); + + /** + * calculate cost of movement + * @param pos real world position to start movement + * @param dir direction to move to + * @return cost information + */ + PathCost calcCost(v3s16 pos, v3s16 dir); + + /** + * recursive update whole search areas total cost information + * @param ipos position to check next + * @param srcdir positionc checked last time + * @param total_cost cost of moving to ipos + * @param level current recursion depth + * @return true/false path to destination has been found + */ + bool updateAllCosts(v3s16 ipos, v3s16 srcdir, int total_cost, int level); + + /** + * recursive try to find a patrh to destionation + * @param ipos position to check next + * @param srcdir positionc checked last time + * @param total_cost cost of moving to ipos + * @param level current recursion depth + * @return true/false path to destination has been found + */ + bool updateCostHeuristic(v3s16 ipos, v3s16 srcdir, int current_cost, int level); + + /** + * recursive build a vector containing all nodes from source to destination + * @param path vector to add nodes to + * @param pos pos to check next + * @param level recursion depth + */ + void buildPath(std::vector &path, v3s16 pos, int level); + + /* variables */ + int m_max_index_x; /**< max index of search area in x direction */ + int m_max_index_y; /**< max index of search area in y direction */ + int m_max_index_z; /**< max index of search area in z direction */ + + + int m_searchdistance; /**< max distance to search in each direction */ + int m_maxdrop; /**< maximum number of blocks a path may drop */ + int m_maxjump; /**< maximum number of blocks a path may jump */ + int m_min_target_distance; /**< current smalest path to target */ + + bool m_prefetch; /**< prefetch cost data */ + + v3s16 m_start; /**< source position */ + v3s16 m_destination; /**< destination position */ + + core::aabbox3d m_limits; /**< position limits in real map coordinates */ + + /** contains all map data already collected and analyzed. + Access it via the getIndexElement/getIdxElem methods. */ + friend class GridNodeContainer; + GridNodeContainer *m_nodes_container; + + ServerEnvironment *m_env; /**< minetest environment pointer */ + +#ifdef PATHFINDER_DEBUG + + /** + * print collected cost information + */ + void printCost(); + + /** + * print collected cost information in a specific direction + * @param dir direction to print + */ + void printCost(PathDirections dir); + + /** + * print type of node as evaluated + */ + void printType(); + + /** + * print pathlenght for all nodes in search area + */ + void printPathLen(); + + /** + * print a path + * @param path path to show + */ + void printPath(std::vector path); + + /** + * print y direction for all movements + */ + void printYdir(); + + /** + * print y direction for moving in a specific direction + * @param dir direction to show data + */ + void printYdir(PathDirections dir); + + /** + * helper function to translate a direction to speaking text + * @param dir direction to translate + * @return textual name of direction + */ + std::string dirToName(PathDirections dir); +#endif +}; + /******************************************************************************/ /* implementation */ /******************************************************************************/ -std::vector get_Path(ServerEnvironment* env, +std::vector get_path(ServerEnvironment* env, v3s16 source, v3s16 destination, unsigned int searchdistance, unsigned int max_jump, unsigned int max_drop, - algorithm algo) { + PathAlgorithm algo) +{ + Pathfinder searchclass; - pathfinder searchclass; - - return searchclass.get_Path(env, - source,destination, - searchdistance,max_jump,max_drop,algo); + return searchclass.getPath(env, + source, destination, + searchdistance, max_jump, max_drop, algo); } /******************************************************************************/ -path_cost::path_cost() +PathCost::PathCost() : valid(false), value(0), direction(0), @@ -86,7 +411,8 @@ path_cost::path_cost() } /******************************************************************************/ -path_cost::path_cost(const path_cost& b) { +PathCost::PathCost(const PathCost &b) +{ valid = b.valid; direction = b.direction; value = b.value; @@ -94,7 +420,8 @@ path_cost::path_cost(const path_cost& b) { } /******************************************************************************/ -path_cost& path_cost::operator= (const path_cost& b) { +PathCost &PathCost::operator= (const PathCost &b) +{ valid = b.valid; direction = b.direction; value = b.value; @@ -104,14 +431,13 @@ path_cost& path_cost::operator= (const path_cost& b) { } /******************************************************************************/ -path_gridnode::path_gridnode() +PathGridnode::PathGridnode() : valid(false), target(false), source(false), totalcost(-1), - sourcedir(v3s16(0,0,0)), - surfaces(0), - pos(v3s16(0,0,0)), + sourcedir(v3s16(0, 0, 0)), + pos(v3s16(0, 0, 0)), is_element(false), type('u') { @@ -119,17 +445,16 @@ path_gridnode::path_gridnode() } /******************************************************************************/ -path_gridnode::path_gridnode(const path_gridnode& b) +PathGridnode::PathGridnode(const PathGridnode &b) : valid(b.valid), target(b.target), source(b.source), totalcost(b.totalcost), sourcedir(b.sourcedir), - surfaces(b.surfaces), pos(b.pos), is_element(b.is_element), type(b.type) - { +{ directions[DIR_XP] = b.directions[DIR_XP]; directions[DIR_XM] = b.directions[DIR_XM]; @@ -138,14 +463,14 @@ path_gridnode::path_gridnode(const path_gridnode& b) } /******************************************************************************/ -path_gridnode& path_gridnode::operator= (const path_gridnode& b) { +PathGridnode &PathGridnode::operator= (const PathGridnode &b) +{ valid = b.valid; target = b.target; source = b.source; is_element = b.is_element; totalcost = b.totalcost; sourcedir = b.sourcedir; - surfaces = b.surfaces; pos = b.pos; type = b.type; @@ -158,7 +483,8 @@ path_gridnode& path_gridnode::operator= (const path_gridnode& b) { } /******************************************************************************/ -path_cost path_gridnode::get_cost(v3s16 dir) { +PathCost PathGridnode::getCost(v3s16 dir) +{ if (dir.X > 0) { return directions[DIR_XP]; } @@ -171,12 +497,13 @@ path_cost path_gridnode::get_cost(v3s16 dir) { if (dir.Z < 0) { return directions[DIR_ZM]; } - path_cost retval; + PathCost retval; return retval; } /******************************************************************************/ -void path_gridnode::set_cost(v3s16 dir,path_cost cost) { +void PathGridnode::setCost(v3s16 dir, PathCost cost) +{ if (dir.X > 0) { directions[DIR_XP] = cost; } @@ -191,14 +518,105 @@ void path_gridnode::set_cost(v3s16 dir,path_cost cost) { } } +void GridNodeContainer::initNode(v3s16 ipos, PathGridnode *p_node) +{ + INodeDefManager *ndef = m_pathf->m_env->getGameDef()->ndef(); + PathGridnode &elem = *p_node; + + v3s16 realpos = m_pathf->getRealPos(ipos); + + MapNode current = m_pathf->m_env->getMap().getNodeNoEx(realpos); + MapNode below = m_pathf->m_env->getMap().getNodeNoEx(realpos + v3s16(0, -1, 0)); + + + if ((current.param0 == CONTENT_IGNORE) || + (below.param0 == CONTENT_IGNORE)) { + DEBUG_OUT("Pathfinder: " << PPOS(realpos) << + " current or below is invalid element" << std::endl); + if (current.param0 == CONTENT_IGNORE) { + elem.type = 'i'; + DEBUG_OUT(PPOS(ipos) << ": " << 'i' << std::endl); + } + return; + } + + //don't add anything if it isn't an air node + if (ndef->get(current).walkable || !ndef->get(below).walkable) { + DEBUG_OUT("Pathfinder: " << PPOS(realpos) + << " not on surface" << std::endl); + if (ndef->get(current).walkable) { + elem.type = 's'; + DEBUG_OUT(PPOS(ipos) << ": " << 's' << std::endl); + } else { + elem.type = '-'; + DEBUG_OUT(PPOS(ipos) << ": " << '-' << std::endl); + } + return; + } + + elem.valid = true; + elem.pos = realpos; + elem.type = 'g'; + DEBUG_OUT(PPOS(ipos) << ": " << 'a' << std::endl); + + if (m_pathf->m_prefetch) { + elem.directions[DIR_XP] = m_pathf->calcCost(realpos, v3s16( 1, 0, 0)); + elem.directions[DIR_XM] = m_pathf->calcCost(realpos, v3s16(-1, 0, 0)); + elem.directions[DIR_ZP] = m_pathf->calcCost(realpos, v3s16( 0, 0, 1)); + elem.directions[DIR_ZM] = m_pathf->calcCost(realpos, v3s16( 0, 0,-1)); + } +} + +ArrayGridNodeContainer::ArrayGridNodeContainer(Pathfinder *pathf, v3s16 dimensions) : + m_x_stride(dimensions.Y * dimensions.Z), + m_y_stride(dimensions.Z) +{ + m_pathf = pathf; + + m_nodes_array.resize(dimensions.X * dimensions.Y * dimensions.Z); + INFO_TARGET << "Pathfinder ArrayGridNodeContainer constructor." << std::endl; + for (int x = 0; x < dimensions.X; x++) { + for (int y = 0; y < dimensions.Y; y++) { + for (int z= 0; z < dimensions.Z; z++) { + v3s16 ipos(x, y, z); + initNode(ipos, &access(ipos)); + } + } + } +} + +PathGridnode &ArrayGridNodeContainer::access(v3s16 p) +{ + return m_nodes_array[p.X * m_x_stride + p.Y * m_y_stride + p.Z]; +} + +MapGridNodeContainer::MapGridNodeContainer(Pathfinder *pathf) +{ + m_pathf = pathf; +} + +PathGridnode &MapGridNodeContainer::access(v3s16 p) +{ + std::map::iterator it = m_nodes.find(p); + if (it != m_nodes.end()) { + return it->second; + } + PathGridnode &n = m_nodes[p]; + initNode(p, &n); + return n; +} + + + /******************************************************************************/ -std::vector pathfinder::get_Path(ServerEnvironment* env, +std::vector Pathfinder::getPath(ServerEnvironment *env, v3s16 source, v3s16 destination, unsigned int searchdistance, unsigned int max_jump, unsigned int max_drop, - algorithm algo) { + PathAlgorithm algo) +{ #ifdef PATHFINDER_CALC_TIME timespec ts; clock_gettime(CLOCK_REALTIME, &ts); @@ -220,47 +638,51 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, m_min_target_distance = -1; m_prefetch = true; - if (algo == A_PLAIN_NP) { + if (algo == PA_PLAIN_NP) { m_prefetch = false; } - int min_x = MYMIN(source.X,destination.X); - int max_x = MYMAX(source.X,destination.X); + int min_x = MYMIN(source.X, destination.X); + int max_x = MYMAX(source.X, destination.X); - int min_y = MYMIN(source.Y,destination.Y); - int max_y = MYMAX(source.Y,destination.Y); + int min_y = MYMIN(source.Y, destination.Y); + int max_y = MYMAX(source.Y, destination.Y); - int min_z = MYMIN(source.Z,destination.Z); - int max_z = MYMAX(source.Z,destination.Z); + int min_z = MYMIN(source.Z, destination.Z); + int max_z = MYMAX(source.Z, destination.Z); - m_limits.X.min = min_x - searchdistance; - m_limits.X.max = max_x + searchdistance; - m_limits.Y.min = min_y - searchdistance; - m_limits.Y.max = max_y + searchdistance; - m_limits.Z.min = min_z - searchdistance; - m_limits.Z.max = max_z + searchdistance; + m_limits.MinEdge.X = min_x - searchdistance; + m_limits.MinEdge.Y = min_y - searchdistance; + m_limits.MinEdge.Z = min_z - searchdistance; - m_max_index_x = m_limits.X.max - m_limits.X.min; - m_max_index_y = m_limits.Y.max - m_limits.Y.min; - m_max_index_z = m_limits.Z.max - m_limits.Z.min; + m_limits.MaxEdge.X = max_x + searchdistance; + m_limits.MaxEdge.Y = max_y + searchdistance; + m_limits.MaxEdge.Z = max_z + searchdistance; - //build data map - if (!build_costmap()) { - ERROR_TARGET << "failed to build costmap" << std::endl; - return retval; + v3s16 diff = m_limits.MaxEdge - m_limits.MinEdge; + + m_max_index_x = diff.X; + m_max_index_y = diff.Y; + m_max_index_z = diff.Z; + + delete m_nodes_container; + if (diff.getLength() > 5) { + m_nodes_container = new MapGridNodeContainer(this); + } else { + m_nodes_container = new ArrayGridNodeContainer(this, diff); } #ifdef PATHFINDER_DEBUG - print_type(); - print_cost(); - print_ydir(); + printType(); + printCost(); + printYdir(); #endif //validate and mark start and end pos v3s16 StartIndex = getIndexPos(source); v3s16 EndIndex = getIndexPos(destination); - path_gridnode& startpos = getIndexElement(StartIndex); - path_gridnode& endpos = getIndexElement(EndIndex); + PathGridnode &startpos = getIndexElement(StartIndex); + PathGridnode &endpos = getIndexElement(EndIndex); if (!startpos.valid) { VERBOSE_TARGET << "invalid startpos" << @@ -282,15 +704,15 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, bool update_cost_retval = false; switch (algo) { - case DIJKSTRA: - update_cost_retval = update_all_costs(StartIndex,v3s16(0,0,0),0,0); + case PA_DIJKSTRA: + update_cost_retval = updateAllCosts(StartIndex, v3s16(0, 0, 0), 0, 0); break; - case A_PLAIN_NP: - case A_PLAIN: - update_cost_retval = update_cost_heuristic(StartIndex,v3s16(0,0,0),0,0); + case PA_PLAIN_NP: + case PA_PLAIN: + update_cost_retval = updateCostHeuristic(StartIndex, v3s16(0, 0, 0), 0, 0); break; default: - ERROR_TARGET << "missing algorithm"<< std::endl; + ERROR_TARGET << "missing PathAlgorithm"<< std::endl; break; } @@ -298,16 +720,16 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, #ifdef PATHFINDER_DEBUG std::cout << "Path to target found!" << std::endl; - print_pathlen(); + printPathLen(); #endif //find path std::vector path; - build_path(path,EndIndex,0); + buildPath(path, EndIndex, 0); #ifdef PATHFINDER_DEBUG std::cout << "Full index path:" << std::endl; - print_path(path); + printPath(path); #endif //finalize path @@ -319,7 +741,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, #ifdef PATHFINDER_DEBUG std::cout << "full path:" << std::endl; - print_path(full_path); + printPath(full_path); #endif #ifdef PATHFINDER_CALC_TIME timespec ts2; @@ -337,7 +759,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, } else { #ifdef PATHFINDER_DEBUG - print_pathlen(); + printPathLen(); #endif ERROR_TARGET << "failed to update cost map"<< std::endl; } @@ -348,7 +770,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, } /******************************************************************************/ -pathfinder::pathfinder() : +Pathfinder::Pathfinder() : m_max_index_x(0), m_max_index_y(0), m_max_index_z(0), @@ -357,123 +779,36 @@ pathfinder::pathfinder() : m_maxjump(0), m_min_target_distance(0), m_prefetch(true), - m_start(0,0,0), - m_destination(0,0,0), - m_limits(), - m_data(), + m_start(0, 0, 0), + m_destination(0, 0, 0), + m_nodes_container(NULL), m_env(0) { //intentionaly empty } -/******************************************************************************/ -v3s16 pathfinder::getRealPos(v3s16 ipos) { - - v3s16 retval = ipos; - - retval.X += m_limits.X.min; - retval.Y += m_limits.Y.min; - retval.Z += m_limits.Z.min; - - return retval; -} - -/******************************************************************************/ -bool pathfinder::build_costmap() +Pathfinder::~Pathfinder() { - INFO_TARGET << "Pathfinder build costmap: (" << m_limits.X.min << "," - << m_limits.Z.min << ") (" - << m_limits.X.max << "," - << m_limits.Z.max << ")" - << std::endl; - m_data.resize(m_max_index_x); - for (int x = 0; x < m_max_index_x; x++) { - m_data[x].resize(m_max_index_z); - for (int z = 0; z < m_max_index_z; z++) { - m_data[x][z].resize(m_max_index_y); - - int surfaces = 0; - for (int y = 0; y < m_max_index_y; y++) { - v3s16 ipos(x,y,z); - - v3s16 realpos = getRealPos(ipos); - - MapNode current = m_env->getMap().getNodeNoEx(realpos); - MapNode below = m_env->getMap().getNodeNoEx(realpos + v3s16(0,-1,0)); - - - if ((current.param0 == CONTENT_IGNORE) || - (below.param0 == CONTENT_IGNORE)) { - DEBUG_OUT("Pathfinder: " << PPOS(realpos) << - " current or below is invalid element" << std::endl); - if (current.param0 == CONTENT_IGNORE) { - m_data[x][z][y].type = 'i'; - DEBUG_OUT(x << "," << y << "," << z << ": " << 'i' << std::endl); - } - continue; - } - - //don't add anything if it isn't an air node - if ((current.param0 != CONTENT_AIR) || - (below.param0 == CONTENT_AIR )) { - DEBUG_OUT("Pathfinder: " << PPOS(realpos) - << " not on surface" << std::endl); - if (current.param0 != CONTENT_AIR) { - m_data[x][z][y].type = 's'; - DEBUG_OUT(x << "," << y << "," << z << ": " << 's' << std::endl); - } - else { - m_data[x][z][y].type = '-'; - DEBUG_OUT(x << "," << y << "," << z << ": " << '-' << std::endl); - } - continue; - } - - surfaces++; - - m_data[x][z][y].valid = true; - m_data[x][z][y].pos = realpos; - m_data[x][z][y].type = 'g'; - DEBUG_OUT(x << "," << y << "," << z << ": " << 'a' << std::endl); - - if (m_prefetch) { - m_data[x][z][y].directions[DIR_XP] = - calc_cost(realpos,v3s16( 1,0, 0)); - m_data[x][z][y].directions[DIR_XM] = - calc_cost(realpos,v3s16(-1,0, 0)); - m_data[x][z][y].directions[DIR_ZP] = - calc_cost(realpos,v3s16( 0,0, 1)); - m_data[x][z][y].directions[DIR_ZM] = - calc_cost(realpos,v3s16( 0,0,-1)); - } - - } - - if (surfaces >= 1 ) { - for (int y = 0; y < m_max_index_y; y++) { - if (m_data[x][z][y].valid) { - m_data[x][z][y].surfaces = surfaces; - } - } - } - } - } - return true; + delete m_nodes_container; +} +/******************************************************************************/ +v3s16 Pathfinder::getRealPos(v3s16 ipos) +{ + return m_limits.MinEdge + ipos; } /******************************************************************************/ -path_cost pathfinder::calc_cost(v3s16 pos,v3s16 dir) { - path_cost retval; +PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) +{ + INodeDefManager *ndef = m_env->getGameDef()->ndef(); + PathCost retval; retval.updated = true; v3s16 pos2 = pos + dir; //check limits - if ( (pos2.X < m_limits.X.min) || - (pos2.X >= m_limits.X.max) || - (pos2.Z < m_limits.Z.min) || - (pos2.Z >= m_limits.Z.max)) { + if (!m_limits.isPointInside(pos2)) { DEBUG_OUT("Pathfinder: " << PPOS(pos2) << " no cost -> out of limits" << std::endl); return retval; @@ -488,18 +823,18 @@ path_cost pathfinder::calc_cost(v3s16 pos,v3s16 dir) { return retval; } - if (node_at_pos2.param0 == CONTENT_AIR) { + if (!ndef->get(node_at_pos2).walkable) { MapNode node_below_pos2 = - m_env->getMap().getNodeNoEx(pos2 + v3s16(0,-1,0)); + m_env->getMap().getNodeNoEx(pos2 + v3s16(0, -1, 0)); //did we get information about node? if (node_below_pos2.param0 == CONTENT_IGNORE ) { VERBOSE_TARGET << "Pathfinder: (2) area at pos: " - << PPOS((pos2 + v3s16(0,-1,0))) << " not loaded"; + << PPOS((pos2 + v3s16(0, -1, 0))) << " not loaded"; return retval; } - if (node_below_pos2.param0 != CONTENT_AIR) { + if (ndef->get(node_below_pos2).walkable) { retval.valid = true; retval.value = 1; retval.direction = 0; @@ -507,20 +842,20 @@ path_cost pathfinder::calc_cost(v3s16 pos,v3s16 dir) { << " cost same height found" << std::endl); } else { - v3s16 testpos = pos2 - v3s16(0,-1,0); + v3s16 testpos = pos2 - v3s16(0, -1, 0); MapNode node_at_pos = m_env->getMap().getNodeNoEx(testpos); while ((node_at_pos.param0 != CONTENT_IGNORE) && - (node_at_pos.param0 == CONTENT_AIR) && - (testpos.Y > m_limits.Y.min)) { - testpos += v3s16(0,-1,0); + (!ndef->get(node_at_pos).walkable) && + (testpos.Y > m_limits.MinEdge.Y)) { + testpos += v3s16(0, -1, 0); node_at_pos = m_env->getMap().getNodeNoEx(testpos); } //did we find surface? - if ((testpos.Y >= m_limits.Y.min) && + if ((testpos.Y >= m_limits.MinEdge.Y) && (node_at_pos.param0 != CONTENT_IGNORE) && - (node_at_pos.param0 != CONTENT_AIR)) { + (ndef->get(node_at_pos).walkable)) { if ((pos2.Y - testpos.Y - 1) <= m_maxdrop) { retval.valid = true; retval.value = 2; @@ -545,15 +880,15 @@ path_cost pathfinder::calc_cost(v3s16 pos,v3s16 dir) { MapNode node_at_pos = m_env->getMap().getNodeNoEx(testpos); while ((node_at_pos.param0 != CONTENT_IGNORE) && - (node_at_pos.param0 != CONTENT_AIR) && - (testpos.Y < m_limits.Y.max)) { - testpos += v3s16(0,1,0); + (ndef->get(node_at_pos).walkable) && + (testpos.Y < m_limits.MaxEdge.Y)) { + testpos += v3s16(0, 1, 0); node_at_pos = m_env->getMap().getNodeNoEx(testpos); } //did we find surface? - if ((testpos.Y <= m_limits.Y.max) && - (node_at_pos.param0 == CONTENT_AIR)) { + if ((testpos.Y <= m_limits.MaxEdge.Y) && + (!ndef->get(node_at_pos).walkable)) { if (testpos.Y - pos2.Y <= m_maxjump) { retval.valid = true; @@ -575,23 +910,26 @@ path_cost pathfinder::calc_cost(v3s16 pos,v3s16 dir) { } /******************************************************************************/ -v3s16 pathfinder::getIndexPos(v3s16 pos) { - - v3s16 retval = pos; - retval.X -= m_limits.X.min; - retval.Y -= m_limits.Y.min; - retval.Z -= m_limits.Z.min; - - return retval; +v3s16 Pathfinder::getIndexPos(v3s16 pos) +{ + return pos - m_limits.MinEdge; } /******************************************************************************/ -path_gridnode& pathfinder::getIndexElement(v3s16 ipos) { - return m_data[ipos.X][ipos.Z][ipos.Y]; +PathGridnode &Pathfinder::getIndexElement(v3s16 ipos) +{ + return m_nodes_container->access(ipos); } /******************************************************************************/ -bool pathfinder::valid_index(v3s16 index) { +inline PathGridnode &Pathfinder::getIdxElem(s16 x, s16 y, s16 z) +{ + return m_nodes_container->access(v3s16(x,y,z)); +} + +/******************************************************************************/ +bool Pathfinder::isValidIndex(v3s16 index) +{ if ( (index.X < m_max_index_x) && (index.Y < m_max_index_y) && (index.Z < m_max_index_z) && @@ -604,7 +942,8 @@ bool pathfinder::valid_index(v3s16 index) { } /******************************************************************************/ -v3s16 pathfinder::invert(v3s16 pos) { +v3s16 Pathfinder::invert(v3s16 pos) +{ v3s16 retval = pos; retval.X *=-1; @@ -615,12 +954,12 @@ v3s16 pathfinder::invert(v3s16 pos) { } /******************************************************************************/ -bool pathfinder::update_all_costs( v3s16 ipos, - v3s16 srcdir, - int current_cost, - int level) { - - path_gridnode& g_pos = getIndexElement(ipos); +bool Pathfinder::updateAllCosts(v3s16 ipos, + v3s16 srcdir, + int current_cost, + int level) +{ + PathGridnode &g_pos = getIndexElement(ipos); g_pos.totalcost = current_cost; g_pos.sourcedir = srcdir; @@ -644,22 +983,20 @@ bool pathfinder::update_all_costs( v3s16 ipos, for (unsigned int i=0; i < directions.size(); i++) { if (directions[i] != srcdir) { - path_cost cost = g_pos.get_cost(directions[i]); + PathCost cost = g_pos.getCost(directions[i]); if (cost.valid) { directions[i].Y = cost.direction; v3s16 ipos2 = ipos + directions[i]; - if (!valid_index(ipos2)) { + if (!isValidIndex(ipos2)) { DEBUG_OUT(LVL " Pathfinder: " << PPOS(ipos2) << - " out of range (" << m_limits.X.max << "," << - m_limits.Y.max << "," << m_limits.Z.max - <<")" << std::endl); + " out of range, max=" << PPOS(m_limits.MaxEdge) << std::endl); continue; } - path_gridnode& g_pos2 = getIndexElement(ipos2); + PathGridnode &g_pos2 = getIndexElement(ipos2); if (!g_pos2.valid) { VERBOSE_TARGET << LVL "Pathfinder: no data for new position: " @@ -682,8 +1019,8 @@ bool pathfinder::update_all_costs( v3s16 ipos, DEBUG_OUT(LVL "Pathfinder: updating path at: "<< PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<< new_cost << std::endl); - if (update_all_costs(ipos2,invert(directions[i]), - new_cost,level)) { + if (updateAllCosts(ipos2, invert(directions[i]), + new_cost, level)) { retval = true; } } @@ -704,20 +1041,21 @@ bool pathfinder::update_all_costs( v3s16 ipos, } /******************************************************************************/ -int pathfinder::get_manhattandistance(v3s16 pos) { - - int min_x = MYMIN(pos.X,m_destination.X); - int max_x = MYMAX(pos.X,m_destination.X); - int min_z = MYMIN(pos.Z,m_destination.Z); - int max_z = MYMAX(pos.Z,m_destination.Z); +int Pathfinder::getXZManhattanDist(v3s16 pos) +{ + int min_x = MYMIN(pos.X, m_destination.X); + int max_x = MYMAX(pos.X, m_destination.X); + int min_z = MYMIN(pos.Z, m_destination.Z); + int max_z = MYMAX(pos.Z, m_destination.Z); return (max_x - min_x) + (max_z - min_z); } /******************************************************************************/ -v3s16 pathfinder::get_dir_heuristic(std::vector& directions,path_gridnode& g_pos) { +v3s16 Pathfinder::getDirHeuristic(std::vector &directions, PathGridnode &g_pos) +{ int minscore = -1; - v3s16 retdir = v3s16(0,0,0); + v3s16 retdir = v3s16(0, 0, 0); v3s16 srcpos = g_pos.pos; DEBUG_OUT("Pathfinder: remaining dirs at beginning:" << directions.size() << std::endl); @@ -726,14 +1064,14 @@ v3s16 pathfinder::get_dir_heuristic(std::vector& directions,path_gridnode iter != directions.end(); ++iter) { - v3s16 pos1 = v3s16(srcpos.X + iter->X,0,srcpos.Z+iter->Z); + v3s16 pos1 = v3s16(srcpos.X + iter->X, 0, srcpos.Z+iter->Z); - int cur_manhattan = get_manhattandistance(pos1); - path_cost cost = g_pos.get_cost(*iter); + int cur_manhattan = getXZManhattanDist(pos1); + PathCost cost = g_pos.getCost(*iter); if (!cost.updated) { - cost = calc_cost(g_pos.pos,*iter); - g_pos.set_cost(*iter,cost); + cost = calcCost(g_pos.pos, *iter); + g_pos.setCost(*iter, cost); } if (cost.valid) { @@ -746,7 +1084,7 @@ v3s16 pathfinder::get_dir_heuristic(std::vector& directions,path_gridnode } } - if (retdir != v3s16(0,0,0)) { + if (retdir != v3s16(0, 0, 0)) { for (std::vector::iterator iter = directions.begin(); iter != directions.end(); ++iter) { @@ -768,12 +1106,13 @@ v3s16 pathfinder::get_dir_heuristic(std::vector& directions,path_gridnode } /******************************************************************************/ -bool pathfinder::update_cost_heuristic( v3s16 ipos, - v3s16 srcdir, - int current_cost, - int level) { +bool Pathfinder::updateCostHeuristic( v3s16 ipos, + v3s16 srcdir, + int current_cost, + int level) +{ - path_gridnode& g_pos = getIndexElement(ipos); + PathGridnode &g_pos = getIndexElement(ipos); g_pos.totalcost = current_cost; g_pos.sourcedir = srcdir; @@ -790,38 +1129,36 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, std::vector directions; - directions.push_back(v3s16( 1,0, 0)); - directions.push_back(v3s16(-1,0, 0)); - directions.push_back(v3s16( 0,0, 1)); - directions.push_back(v3s16( 0,0,-1)); + directions.push_back(v3s16( 1, 0, 0)); + directions.push_back(v3s16(-1, 0, 0)); + directions.push_back(v3s16( 0, 0, 1)); + directions.push_back(v3s16( 0, 0, -1)); - v3s16 direction = get_dir_heuristic(directions,g_pos); + v3s16 direction = getDirHeuristic(directions, g_pos); - while (direction != v3s16(0,0,0) && (!retval)) { + while (direction != v3s16(0, 0, 0) && (!retval)) { if (direction != srcdir) { - path_cost cost = g_pos.get_cost(direction); + PathCost cost = g_pos.getCost(direction); if (cost.valid) { direction.Y = cost.direction; v3s16 ipos2 = ipos + direction; - if (!valid_index(ipos2)) { + if (!isValidIndex(ipos2)) { DEBUG_OUT(LVL " Pathfinder: " << PPOS(ipos2) << - " out of range (" << m_limits.X.max << "," << - m_limits.Y.max << "," << m_limits.Z.max - <<")" << std::endl); - direction = get_dir_heuristic(directions,g_pos); + " out of range, max=" << PPOS(m_limits.MaxEdge) << std::endl); + direction = getDirHeuristic(directions, g_pos); continue; } - path_gridnode& g_pos2 = getIndexElement(ipos2); + PathGridnode &g_pos2 = getIndexElement(ipos2); if (!g_pos2.valid) { VERBOSE_TARGET << LVL "Pathfinder: no data for new position: " << PPOS(ipos2) << std::endl; - direction = get_dir_heuristic(directions,g_pos); + direction = getDirHeuristic(directions, g_pos); continue; } @@ -844,8 +1181,8 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<< new_cost << " srcdir=" << PPOS(invert(direction))<< std::endl); - if (update_cost_heuristic(ipos2,invert(direction), - new_cost,level)) { + if (updateCostHeuristic(ipos2, invert(direction), + new_cost, level)) { retval = true; } } @@ -866,24 +1203,25 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, " skipping srcdir: " << PPOS(direction) << std::endl); } - direction = get_dir_heuristic(directions,g_pos); + direction = getDirHeuristic(directions, g_pos); } return retval; } /******************************************************************************/ -void pathfinder::build_path(std::vector& path,v3s16 pos, int level) { +void Pathfinder::buildPath(std::vector &path, v3s16 pos, int level) +{ level ++; if (level > 700) { ERROR_TARGET - << LVL "Pathfinder: path is too long aborting" << std::endl; + << LVL "Pathfinder: path is too long aborting" << std::endl; return; } - path_gridnode& g_pos = getIndexElement(pos); + PathGridnode &g_pos = getIndexElement(pos); if (!g_pos.valid) { ERROR_TARGET - << LVL "Pathfinder: invalid next pos detected aborting" << std::endl; + << LVL "Pathfinder: invalid next pos detected aborting" << std::endl; return; } @@ -895,37 +1233,40 @@ void pathfinder::build_path(std::vector& path,v3s16 pos, int level) { return; } - build_path(path,pos + g_pos.sourcedir,level); + buildPath(path, pos + g_pos.sourcedir, level); path.push_back(pos); } /******************************************************************************/ -v3f pathfinder::tov3f(v3s16 pos) { - return v3f(BS*pos.X,BS*pos.Y,BS*pos.Z); +v3f Pathfinder::tov3f(v3s16 pos) +{ + return v3f(BS * pos.X, BS * pos.Y, BS * pos.Z); } #ifdef PATHFINDER_DEBUG /******************************************************************************/ -void pathfinder::print_cost() { - print_cost(DIR_XP); - print_cost(DIR_XM); - print_cost(DIR_ZP); - print_cost(DIR_ZM); +void Pathfinder::printCost() +{ + printCost(DIR_XP); + printCost(DIR_XM); + printCost(DIR_ZP); + printCost(DIR_ZM); } /******************************************************************************/ -void pathfinder::print_ydir() { - print_ydir(DIR_XP); - print_ydir(DIR_XM); - print_ydir(DIR_ZP); - print_ydir(DIR_ZM); +void Pathfinder::printYdir() +{ + printYdir(DIR_XP); + printYdir(DIR_XM); + printYdir(DIR_ZP); + printYdir(DIR_ZM); } /******************************************************************************/ -void pathfinder::print_cost(path_directions dir) { - - std::cout << "Cost in direction: " << dir_to_name(dir) << std::endl; +void Pathfinder::printCost(PathDirections dir) +{ + std::cout << "Cost in direction: " << dirToName(dir) << std::endl; std::cout << std::setfill('-') << std::setw(80) << "-" << std::endl; std::cout << std::setfill(' '); for (int y = 0; y < m_max_index_y; y++) { @@ -941,9 +1282,9 @@ void pathfinder::print_cost(path_directions dir) { for (int z = 0; z < m_max_index_z; z++) { std::cout << std::setw(4) << z <<": "; for (int x = 0; x < m_max_index_x; x++) { - if (m_data[x][z][y].directions[dir].valid) + if (getIdxElem(x, y, z).directions[dir].valid) std::cout << std::setw(4) - << m_data[x][z][y].directions[dir].value; + << getIdxElem(x, y, z).directions[dir].value; else std::cout << std::setw(4) << "-"; } @@ -954,9 +1295,9 @@ void pathfinder::print_cost(path_directions dir) { } /******************************************************************************/ -void pathfinder::print_ydir(path_directions dir) { - - std::cout << "Height difference in direction: " << dir_to_name(dir) << std::endl; +void Pathfinder::printYdir(PathDirections dir) +{ + std::cout << "Height difference in direction: " << dirToName(dir) << std::endl; std::cout << std::setfill('-') << std::setw(80) << "-" << std::endl; std::cout << std::setfill(' '); for (int y = 0; y < m_max_index_y; y++) { @@ -972,9 +1313,9 @@ void pathfinder::print_ydir(path_directions dir) { for (int z = 0; z < m_max_index_z; z++) { std::cout << std::setw(4) << z <<": "; for (int x = 0; x < m_max_index_x; x++) { - if (m_data[x][z][y].directions[dir].valid) + if (getIdxElem(x, y, z).directions[dir].valid) std::cout << std::setw(4) - << m_data[x][z][y].directions[dir].direction; + << getIdxElem(x, y, z).directions[dir].direction; else std::cout << std::setw(4) << "-"; } @@ -985,7 +1326,8 @@ void pathfinder::print_ydir(path_directions dir) { } /******************************************************************************/ -void pathfinder::print_type() { +void Pathfinder::printType() +{ std::cout << "Type of node:" << std::endl; std::cout << std::setfill('-') << std::setw(80) << "-" << std::endl; std::cout << std::setfill(' '); @@ -1002,7 +1344,7 @@ void pathfinder::print_type() { for (int z = 0; z < m_max_index_z; z++) { std::cout << std::setw(3) << z <<": "; for (int x = 0; x < m_max_index_x; x++) { - char toshow = m_data[x][z][y].type; + char toshow = getIdxElem(x, y, z).type; std::cout << std::setw(3) << toshow; } std::cout << std::endl; @@ -1013,7 +1355,8 @@ void pathfinder::print_type() { } /******************************************************************************/ -void pathfinder::print_pathlen() { +void Pathfinder::printPathLen() +{ std::cout << "Pathlen:" << std::endl; std::cout << std::setfill('-') << std::setw(80) << "-" << std::endl; std::cout << std::setfill(' '); @@ -1030,7 +1373,7 @@ void pathfinder::print_pathlen() { for (int z = 0; z < m_max_index_z; z++) { std::cout << std::setw(3) << z <<": "; for (int x = 0; x < m_max_index_x; x++) { - std::cout << std::setw(3) << m_data[x][z][y].totalcost; + std::cout << std::setw(3) << getIdxElem(x, y, z).totalcost; } std::cout << std::endl; } @@ -1040,7 +1383,8 @@ void pathfinder::print_pathlen() { } /******************************************************************************/ -std::string pathfinder::dir_to_name(path_directions dir) { +std::string Pathfinder::dirToName(PathDirections dir) +{ switch (dir) { case DIR_XP: return "XP"; @@ -1060,8 +1404,8 @@ std::string pathfinder::dir_to_name(path_directions dir) { } /******************************************************************************/ -void pathfinder::print_path(std::vector path) { - +void Pathfinder::printPath(std::vector path) +{ unsigned int current = 0; for (std::vector::iterator i = path.begin(); i != path.end(); ++i) { diff --git a/src/pathfinder.h b/src/pathfinder.h index dd41227f..ba95aaf1 100644 --- a/src/pathfinder.h +++ b/src/pathfinder.h @@ -24,10 +24,8 @@ with this program; if not, write to the Free Software Foundation, Inc., /* Includes */ /******************************************************************************/ #include - #include "irr_v3d.h" - /******************************************************************************/ /* Forward declarations */ /******************************************************************************/ @@ -38,313 +36,31 @@ class ServerEnvironment; /* Typedefs and macros */ /******************************************************************************/ -//#define PATHFINDER_DEBUG - typedef enum { DIR_XP, DIR_XM, DIR_ZP, DIR_ZM -} path_directions; +} PathDirections; /** List of supported algorithms */ typedef enum { - DIJKSTRA, /**< Dijkstra shortest path algorithm */ - A_PLAIN, /**< A* algorithm using heuristics to find a path */ - A_PLAIN_NP /**< A* algorithm without prefetching of map data */ -} algorithm; + PA_DIJKSTRA, /**< Dijkstra shortest path algorithm */ + PA_PLAIN, /**< A* algorithm using heuristics to find a path */ + PA_PLAIN_NP /**< A* algorithm without prefetching of map data */ +} PathAlgorithm; /******************************************************************************/ /* declarations */ /******************************************************************************/ /** c wrapper function to use from scriptapi */ -std::vector get_Path(ServerEnvironment* env, +std::vector get_path(ServerEnvironment *env, v3s16 source, v3s16 destination, unsigned int searchdistance, unsigned int max_jump, unsigned int max_drop, - algorithm algo); - -/** representation of cost in specific direction */ -class path_cost { -public: - - /** default constructor */ - path_cost(); - - /** copy constructor */ - path_cost(const path_cost& b); - - /** assignment operator */ - path_cost& operator= (const path_cost& b); - - bool valid; /**< movement is possible */ - int value; /**< cost of movement */ - int direction; /**< y-direction of movement */ - bool updated; /**< this cost has ben calculated */ - -}; - - -/** representation of a mapnode to be used for pathfinding */ -class path_gridnode { - -public: - /** default constructor */ - path_gridnode(); - - /** copy constructor */ - path_gridnode(const path_gridnode& b); - - /** - * assignment operator - * @param b node to copy - */ - path_gridnode& operator= (const path_gridnode& b); - - /** - * read cost in a specific direction - * @param dir direction of cost to fetch - */ - path_cost get_cost(v3s16 dir); - - /** - * set cost value for movement - * @param dir direction to set cost for - * @cost cost to set - */ - void set_cost(v3s16 dir,path_cost cost); - - bool valid; /**< node is on surface */ - bool target; /**< node is target position */ - bool source; /**< node is stating position */ - int totalcost; /**< cost to move here from starting point */ - v3s16 sourcedir; /**< origin of movement for current cost */ - int surfaces; /**< number of surfaces with same x,z value*/ - v3s16 pos; /**< real position of node */ - path_cost directions[4]; /**< cost in different directions */ - - /* debug values */ - bool is_element; /**< node is element of path detected */ - char type; /**< type of node */ -}; - -/** class doing pathfinding */ -class pathfinder { - -public: - /** - * default constructor - */ - pathfinder(); - - /** - * path evaluation function - * @param env environment to look for path - * @param source origin of path - * @param destination end position of path - * @param searchdistance maximum number of nodes to look in each direction - * @param max_jump maximum number of blocks a path may jump up - * @param max_drop maximum number of blocks a path may drop - * @param algo algorithm to use for finding a path - */ - std::vector get_Path(ServerEnvironment* env, - v3s16 source, - v3s16 destination, - unsigned int searchdistance, - unsigned int max_jump, - unsigned int max_drop, - algorithm algo); - -private: - /** data struct for storing internal information */ - struct limits { - struct limit { - int min; - int max; - }; - - limit X; - limit Y; - limit Z; - }; - - /* helper functions */ - - /** - * transform index pos to mappos - * @param ipos a index position - * @return map position - */ - v3s16 getRealPos(v3s16 ipos); - - /** - * transform mappos to index pos - * @param pos a real pos - * @return index position - */ - v3s16 getIndexPos(v3s16 pos); - - /** - * get gridnode at a specific index position - * @param ipos index position - * @return gridnode for index - */ - path_gridnode& getIndexElement(v3s16 ipos); - - /** - * invert a 3d position - * @param pos 3d position - * @return pos *-1 - */ - v3s16 invert(v3s16 pos); - - /** - * check if a index is within current search area - * @param index position to validate - * @return true/false - */ - bool valid_index(v3s16 index); - - /** - * translate position to float position - * @param pos integer position - * @return float position - */ - v3f tov3f(v3s16 pos); - - - /* algorithm functions */ - - /** - * calculate 2d manahttan distance to target - * @param pos position to calc distance - * @return integer distance - */ - int get_manhattandistance(v3s16 pos); - - /** - * get best direction based uppon heuristics - * @param directions list of unchecked directions - * @param g_pos mapnode to start from - * @return direction to check - */ - v3s16 get_dir_heuristic(std::vector& directions,path_gridnode& g_pos); - - /** - * build internal data representation of search area - * @return true/false if costmap creation was successfull - */ - bool build_costmap(); - - /** - * calculate cost of movement - * @param pos real world position to start movement - * @param dir direction to move to - * @return cost information - */ - path_cost calc_cost(v3s16 pos,v3s16 dir); - - /** - * recursive update whole search areas total cost information - * @param ipos position to check next - * @param srcdir positionc checked last time - * @param total_cost cost of moving to ipos - * @param level current recursion depth - * @return true/false path to destination has been found - */ - bool update_all_costs(v3s16 ipos,v3s16 srcdir,int total_cost,int level); - - /** - * recursive try to find a patrh to destionation - * @param ipos position to check next - * @param srcdir positionc checked last time - * @param total_cost cost of moving to ipos - * @param level current recursion depth - * @return true/false path to destination has been found - */ - bool update_cost_heuristic(v3s16 ipos,v3s16 srcdir,int current_cost,int level); - - /** - * recursive build a vector containing all nodes from source to destination - * @param path vector to add nodes to - * @param pos pos to check next - * @param level recursion depth - */ - void build_path(std::vector& path,v3s16 pos, int level); - - /* variables */ - int m_max_index_x; /**< max index of search area in x direction */ - int m_max_index_y; /**< max index of search area in y direction */ - int m_max_index_z; /**< max index of search area in z direction */ - - - int m_searchdistance; /**< max distance to search in each direction */ - int m_maxdrop; /**< maximum number of blocks a path may drop */ - int m_maxjump; /**< maximum number of blocks a path may jump */ - int m_min_target_distance; /**< current smalest path to target */ - - bool m_prefetch; /**< prefetch cost data */ - - v3s16 m_start; /**< source position */ - v3s16 m_destination; /**< destination position */ - - limits m_limits; /**< position limits in real map coordinates */ - - /** 3d grid containing all map data already collected and analyzed */ - std::vector > > m_data; - - ServerEnvironment* m_env; /**< minetest environment pointer */ - -#ifdef PATHFINDER_DEBUG - - /** - * print collected cost information - */ - void print_cost(); - - /** - * print collected cost information in a specific direction - * @param dir direction to print - */ - void print_cost(path_directions dir); - - /** - * print type of node as evaluated - */ - void print_type(); - - /** - * print pathlenght for all nodes in search area - */ - void print_pathlen(); - - /** - * print a path - * @param path path to show - */ - void print_path(std::vector path); - - /** - * print y direction for all movements - */ - void print_ydir(); - - /** - * print y direction for moving in a specific direction - * @param dir direction to show data - */ - void print_ydir(path_directions dir); - - /** - * helper function to translate a direction to speaking text - * @param dir direction to translate - * @return textual name of direction - */ - std::string dir_to_name(path_directions dir); -#endif -}; + PathAlgorithm algo); #endif /* PATHFINDER_H_ */ diff --git a/src/player.cpp b/src/player.cpp index 3ee34d41..5949712a 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., Player::Player(IGameDef *gamedef, const char *name): + got_teleported(false), touching_ground(false), in_liquid(false), in_liquid_stable(false), @@ -111,41 +112,6 @@ Player::~Player() clearHud(); } -// Horizontal acceleration (X and Z), Y direction is ignored -void Player::accelerateHorizontal(v3f target_speed, f32 max_increase) -{ - if(max_increase == 0) - return; - - v3f d_wanted = target_speed - m_speed; - d_wanted.Y = 0; - f32 dl = d_wanted.getLength(); - if(dl > max_increase) - dl = max_increase; - - v3f d = d_wanted.normalize() * dl; - - m_speed.X += d.X; - m_speed.Z += d.Z; - -} - -// Vertical acceleration (Y), X and Z directions are ignored -void Player::accelerateVertical(v3f target_speed, f32 max_increase) -{ - if(max_increase == 0) - return; - - f32 d_wanted = target_speed.Y - m_speed.Y; - if(d_wanted > max_increase) - d_wanted = max_increase; - else if(d_wanted < -max_increase) - d_wanted = -max_increase; - - m_speed.Y += d_wanted; - -} - v3s16 Player::getLightPosition() const { return floatToInt(m_position + v3f(0,BS+BS/2,0), BS); @@ -261,6 +227,23 @@ void Player::clearHud() } } +RemotePlayer::RemotePlayer(IGameDef *gamedef, const char *name): + Player(gamedef, name), + m_sao(NULL) +{ + movement_acceleration_default = g_settings->getFloat("movement_acceleration_default") * BS; + movement_acceleration_air = g_settings->getFloat("movement_acceleration_air") * BS; + movement_acceleration_fast = g_settings->getFloat("movement_acceleration_fast") * BS; + movement_speed_walk = g_settings->getFloat("movement_speed_walk") * BS; + movement_speed_crouch = g_settings->getFloat("movement_speed_crouch") * BS; + movement_speed_fast = g_settings->getFloat("movement_speed_fast") * BS; + movement_speed_climb = g_settings->getFloat("movement_speed_climb") * BS; + movement_speed_jump = g_settings->getFloat("movement_speed_jump") * BS; + movement_liquid_fluidity = g_settings->getFloat("movement_liquid_fluidity") * BS; + movement_liquid_fluidity_smooth = g_settings->getFloat("movement_liquid_fluidity_smooth") * BS; + movement_liquid_sink = g_settings->getFloat("movement_liquid_sink") * BS; + movement_gravity = g_settings->getFloat("movement_gravity") * BS; +} void RemotePlayer::save(std::string savedir) { diff --git a/src/player.h b/src/player.h index c1126187..b317cda4 100644 --- a/src/player.h +++ b/src/player.h @@ -119,9 +119,6 @@ public: m_speed = speed; } - void accelerateHorizontal(v3f target_speed, f32 max_increase); - void accelerateVertical(v3f target_speed, f32 max_increase); - v3f getPosition() { return m_position; @@ -198,7 +195,7 @@ public: return m_name; } - core::aabbox3d getCollisionbox() + aabb3f getCollisionbox() { return m_collisionbox; } @@ -321,6 +318,7 @@ public: // Use a function, if isDead can be defined by other conditions bool isDead() { return hp == 0; } + bool got_teleported; bool touching_ground; // This oscillates so that the player jumps a bit above the surface bool in_liquid; @@ -398,7 +396,7 @@ protected: f32 m_yaw; v3f m_speed; v3f m_position; - core::aabbox3d m_collisionbox; + aabb3f m_collisionbox; bool m_dirty; @@ -424,10 +422,7 @@ private: class RemotePlayer : public Player { public: - RemotePlayer(IGameDef *gamedef, const char *name): - Player(gamedef, name), - m_sao(NULL) - {} + RemotePlayer(IGameDef *gamedef, const char *name); virtual ~RemotePlayer() {} void save(std::string savedir); diff --git a/src/porting.cpp b/src/porting.cpp index ced41d4f..98b85b7d 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -29,6 +29,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #elif defined(_WIN32) + #include + #include #include #endif #if !defined(_WIN32) @@ -137,6 +139,7 @@ void signal_handler_init(void) std::string path_share = ".."; std::string path_user = ".."; std::string path_locale = path_share + DIR_DELIM + "locale"; +std::string path_cache = path_user + DIR_DELIM + "cache"; std::string getDataPath(const char *subpath) @@ -160,6 +163,8 @@ bool detectMSVCBuildDir(const std::string &path) { const char *ends[] = { "bin\\Release", + "bin\\MinSizeRel", + "bin\\RelWithDebInfo", "bin\\Debug", "bin\\Build", NULL @@ -461,6 +466,25 @@ bool setSystemPaths() #endif +void migrateCachePath() +{ + const std::string local_cache_path = path_user + DIR_DELIM + "cache"; + + // Delete tmp folder if it exists (it only ever contained + // a temporary ogg file, which is no longer used). + if (fs::PathExists(local_cache_path + DIR_DELIM + "tmp")) + fs::RecursiveDelete(local_cache_path + DIR_DELIM + "tmp"); + + // Bail if migration impossible + if (path_cache == local_cache_path || !fs::PathExists(local_cache_path) + || fs::PathExists(path_cache)) { + return; + } + if (!fs::Rename(local_cache_path, path_cache)) { + errorstream << "Failed to migrate local cache path " + "to system path!" << std::endl; + } +} void initializePaths() { @@ -505,19 +529,38 @@ void initializePaths() path_share = execpath; path_user = execpath; } + path_cache = path_user + DIR_DELIM + "cache"; #else infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl; if (!setSystemPaths()) errorstream << "Failed to get one or more system-wide path" << std::endl; + // Initialize path_cache + // First try $XDG_CACHE_HOME/PROJECT_NAME + const char *cache_dir = getenv("XDG_CACHE_HOME"); + const char *home_dir = getenv("HOME"); + if (cache_dir) { + path_cache = std::string(cache_dir) + DIR_DELIM + PROJECT_NAME; + } else if (home_dir) { + // Then try $HOME/.cache/PROJECT_NAME + path_cache = std::string(home_dir) + DIR_DELIM + ".cache" + + DIR_DELIM + PROJECT_NAME; + } else { + // If neither works, use $PATH_USER/cache + path_cache = path_user + DIR_DELIM + "cache"; + } + // Migrate cache folder to new location if possible + migrateCachePath(); #endif infostream << "Detected share path: " << path_share << std::endl; infostream << "Detected user path: " << path_user << std::endl; + infostream << "Detected cache path: " << path_cache << std::endl; +#ifdef USE_GETTEXT bool found_localedir = false; -#ifdef STATIC_LOCALEDIR +# ifdef STATIC_LOCALEDIR if (STATIC_LOCALEDIR[0] && fs::PathExists(STATIC_LOCALEDIR)) { found_localedir = true; path_locale = STATIC_LOCALEDIR; @@ -531,16 +574,16 @@ void initializePaths() << "(RUN_IN_PLACE or CUSTOM_LOCALEDIR)." << std::endl; } } -#else +# else path_locale = getDataPath("locale"); if (fs::PathExists(path_locale)) { found_localedir = true; } -#endif +# endif if (!found_localedir) { - errorstream << "Couldn't find a locale directory!" << std::endl; + warningstream << "Couldn't find a locale directory!" << std::endl; } - +#endif // USE_GETTEXT } @@ -701,5 +744,44 @@ v2u32 getDisplaySize() # endif // __ANDROID__ #endif // SERVER -} //namespace porting +//// +//// OS-specific Secure Random +//// + +#ifdef WIN32 + +bool secure_rand_fill_buf(void *buf, size_t len) +{ + HCRYPTPROV wctx; + + if (!CryptAcquireContext(&wctx, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) + return false; + + CryptGenRandom(wctx, len, (BYTE *)buf); + CryptReleaseContext(wctx, 0); + return true; +} + +#else + +bool secure_rand_fill_buf(void *buf, size_t len) +{ + // N.B. This function checks *only* for /dev/urandom, because on most + // common OSes it is non-blocking, whereas /dev/random is blocking, and it + // is exceptionally uncommon for there to be a situation where /dev/random + // exists but /dev/urandom does not. This guesswork is necessary since + // random devices are not covered by any POSIX standard... + FILE *fp = fopen("/dev/urandom", "rb"); + if (!fp) + return false; + + bool success = fread(buf, len, 1, fp) == 1; + + fclose(fp); + return success; +} + +#endif + +} //namespace porting diff --git a/src/porting.h b/src/porting.h index a86d37fb..4d51c505 100644 --- a/src/porting.h +++ b/src/porting.h @@ -147,12 +147,23 @@ extern std::string path_user; */ extern std::string path_locale; +/* + Path to directory for storing caches. +*/ +extern std::string path_cache; + /* Get full path of stuff in data directory. Example: "stone.png" -> "../data/stone.png" */ std::string getDataPath(const char *subpath); +/* + Move cache folder from path_user to the + system cache location if possible. +*/ +void migrateCachePath(); + /* Initialize path_*. */ @@ -200,43 +211,56 @@ void initIrrlicht(irr::IrrlichtDevice * ); } #else // Posix - - inline u32 getTimeS() + inline void _os_get_clock(struct timespec *ts) { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec; - } - - inline u32 getTimeMs() - { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000 + tv.tv_usec / 1000; - } - - inline u32 getTimeUs() - { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000000 + tv.tv_usec; - } - - inline u32 getTimeNs() - { - struct timespec ts; - // from http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x -#if defined(__MACH__) && defined(__APPLE__) // OS X does not have clock_gettime, use clock_get_time +#if defined(__MACH__) && defined(__APPLE__) + // from http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x + // OS X does not have clock_gettime, use clock_get_time clock_serv_t cclock; mach_timespec_t mts; host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); clock_get_time(cclock, &mts); mach_port_deallocate(mach_task_self(), cclock); - ts.tv_sec = mts.tv_sec; - ts.tv_nsec = mts.tv_nsec; + ts->tv_sec = mts.tv_sec; + ts->tv_nsec = mts.tv_nsec; +#elif defined(CLOCK_MONOTONIC_RAW) + clock_gettime(CLOCK_MONOTONIC_RAW, ts); +#elif defined(_POSIX_MONOTONIC_CLOCK) + clock_gettime(CLOCK_MONOTONIC, ts); #else - clock_gettime(CLOCK_REALTIME, &ts); -#endif + struct timeval tv; + gettimeofday(&tv, NULL); + TIMEVAL_TO_TIMESPEC(&tv, ts); +#endif // defined(__MACH__) && defined(__APPLE__) + } + + // Note: these clock functions do not return wall time, but + // generally a clock that starts at 0 when the process starts. + inline u32 getTimeS() + { + struct timespec ts; + _os_get_clock(&ts); + return ts.tv_sec; + } + + inline u32 getTimeMs() + { + struct timespec ts; + _os_get_clock(&ts); + return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + } + + inline u32 getTimeUs() + { + struct timespec ts; + _os_get_clock(&ts); + return ts.tv_sec * 1000000 + ts.tv_nsec / 1000; + } + + inline u32 getTimeNs() + { + struct timespec ts; + _os_get_clock(&ts); return ts.tv_sec * 1000000000 + ts.tv_nsec; } @@ -343,6 +367,7 @@ void setXorgClassHint(const video::SExposedVideoData &video_data, // threads in the process inherit this exception handler void setWin32ExceptionHandler(); +bool secure_rand_fill_buf(void *buf, size_t len); } // namespace porting #ifdef __ANDROID__ diff --git a/src/porting_android.cpp b/src/porting_android.cpp index c7e28cc9..72b625d7 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -164,29 +164,63 @@ void cleanupAndroid() jvm->DetachCurrentThread(); } -void setExternalStorageDir(JNIEnv* lJNIEnv) +static std::string javaStringToUTF8(jstring js) { - // Android: Retrieve ablsolute path to external storage device (sdcard) - jclass ClassEnv = lJNIEnv->FindClass("android/os/Environment"); - jmethodID MethodDir = - lJNIEnv->GetStaticMethodID(ClassEnv, - "getExternalStorageDirectory","()Ljava/io/File;"); - jobject ObjectFile = lJNIEnv->CallStaticObjectMethod(ClassEnv, MethodDir); - jclass ClassFile = lJNIEnv->FindClass("java/io/File"); + std::string str; + // Get string as a UTF-8 c-string + const char *c_str = jnienv->GetStringUTFChars(js, NULL); + // Save it + str = c_str; + // And free the c-string + jnienv->ReleaseStringUTFChars(js, c_str); + return str; +} - jmethodID MethodPath = - lJNIEnv->GetMethodID(ClassFile, "getAbsolutePath", - "()Ljava/lang/String;"); - jstring StringPath = - (jstring) lJNIEnv->CallObjectMethod(ObjectFile, MethodPath); +// Calls static method if obj is NULL +static std::string getAndroidPath(jclass cls, jobject obj, jclass cls_File, + jmethodID mt_getAbsPath, const char *getter) +{ + // Get getter method + jmethodID mt_getter; + if (obj) + mt_getter = jnienv->GetMethodID(cls, getter, + "()Ljava/io/File;"); + else + mt_getter = jnienv->GetStaticMethodID(cls, getter, + "()Ljava/io/File;"); - const char *externalPath = lJNIEnv->GetStringUTFChars(StringPath, NULL); - std::string userPath(externalPath); - lJNIEnv->ReleaseStringUTFChars(StringPath, externalPath); + // Call getter + jobject ob_file; + if (obj) + ob_file = jnienv->CallObjectMethod(obj, mt_getter); + else + ob_file = jnienv->CallStaticObjectMethod(cls, mt_getter); - path_storage = userPath; - path_user = userPath + DIR_DELIM + PROJECT_NAME_C; - path_share = userPath + DIR_DELIM + PROJECT_NAME_C; + // Call getAbsolutePath + jstring js_path = (jstring) jnienv->CallObjectMethod(ob_file, + mt_getAbsPath); + + return javaStringToUTF8(js_path); +} + +void initializePathsAndroid() +{ + // Get Environment class + jclass cls_Env = jnienv->FindClass("android/os/Environment"); + // Get File class + jclass cls_File = jnienv->FindClass("java/io/File"); + // Get getAbsolutePath method + jmethodID mt_getAbsPath = jnienv->GetMethodID(cls_File, + "getAbsolutePath", "()Ljava/lang/String;"); + + path_cache = getAndroidPath(nativeActivity, app_global->activity->clazz, + cls_File, mt_getAbsPath, "getCacheDir"); + path_storage = getAndroidPath(cls_Env, NULL, cls_File, mt_getAbsPath, + "getExternalStorageDirectory"); + path_user = path_storage + DIR_DELIM + PROJECT_NAME_C; + path_share = path_storage + DIR_DELIM + PROJECT_NAME_C; + + migrateCachePath(); } void showInputDialog(const std::string& acceptButton, const std::string& hint, diff --git a/src/porting_android.h b/src/porting_android.h index bfdadfbf..e4be0740 100644 --- a/src/porting_android.h +++ b/src/porting_android.h @@ -43,10 +43,10 @@ void initAndroid(); void cleanupAndroid(); /** - * set storage dir on external sdcard# - * @param lJNIEnv environment from android + * Initializes path_* variables for Android + * @param env Android JNI environment */ -void setExternalStorageDir(JNIEnv* lJNIEnv); +void initializePathsAndroid(); /** * use java function to copy media from assets to external storage diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index fe429b5d..06e20c2a 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -201,6 +201,22 @@ void read_object_properties(lua_State *L, int index, } lua_pop(L, 1); getboolfield(L, -1, "backface_culling", prop->backface_culling); + + getstringfield(L, -1, "nametag", prop->nametag); + lua_getfield(L, -1, "nametag_color"); + if (!lua_isnil(L, -1)) { + video::SColor color = prop->nametag_color; + if (read_color(L, -1, &color)) + prop->nametag_color = color; + } + lua_pop(L, 1); + + lua_getfield(L, -1, "automatic_face_movement_max_rotation_per_sec"); + if (lua_isnumber(L, -1)) { + prop->automatic_face_movement_max_rotation_per_sec = luaL_checknumber(L, -1); + } + lua_pop(L, 1); + getstringfield(L, -1, "infotext", prop->infotext); } /******************************************************************************/ @@ -261,6 +277,14 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) lua_setfield(L, -2, "automatic_face_movement_dir"); lua_pushboolean(L, prop->backface_culling); lua_setfield(L, -2, "backface_culling"); + lua_pushlstring(L, prop->nametag.c_str(), prop->nametag.size()); + lua_setfield(L, -2, "nametag"); + push_ARGB8(L, prop->nametag_color); + lua_setfield(L, -2, "nametag_color"); + lua_pushnumber(L, prop->automatic_face_movement_max_rotation_per_sec); + lua_setfield(L, -2, "automatic_face_movement_max_rotation_per_sec"); + lua_pushlstring(L, prop->infotext.c_str(), prop->infotext.size()); + lua_setfield(L, -2, "infotext"); } /******************************************************************************/ @@ -270,14 +294,31 @@ TileDef read_tiledef(lua_State *L, int index, u8 drawtype) index = lua_gettop(L) + 1 + index; TileDef tiledef; - bool default_tiling = (drawtype == NDT_PLANTLIKE || drawtype == NDT_FIRELIKE) - ? false : true; + + bool default_tiling = true; + bool default_culling = true; + switch (drawtype) { + case NDT_PLANTLIKE: + case NDT_FIRELIKE: + default_tiling = false; + // "break" is omitted here intentionaly, as PLANTLIKE + // FIRELIKE drawtype both should default to having + // backface_culling to false. + case NDT_MESH: + case NDT_LIQUID: + default_culling = false; + break; + default: + break; + } + // key at index -2 and value at index if(lua_isstring(L, index)){ // "default_lava.png" tiledef.name = lua_tostring(L, index); tiledef.tileable_vertical = default_tiling; tiledef.tileable_horizontal = default_tiling; + tiledef.backface_culling = default_culling; } else if(lua_istable(L, index)) { @@ -286,7 +327,7 @@ TileDef read_tiledef(lua_State *L, int index, u8 drawtype) getstringfield(L, index, "name", tiledef.name); getstringfield(L, index, "image", tiledef.name); // MaterialSpec compat. tiledef.backface_culling = getboolfield_default( - L, index, "backface_culling", true); + L, index, "backface_culling", default_culling); tiledef.tileable_horizontal = getboolfield_default( L, index, "tileable_horizontal", default_tiling); tiledef.tileable_vertical = getboolfield_default( @@ -460,6 +501,8 @@ ContentFeatures read_content_features(lua_State *L, int index) getboolfield(L, index, "climbable", f.climbable); // Player can build on these getboolfield(L, index, "buildable_to", f.buildable_to); + // Liquids flow into and replace node + getboolfield(L, index, "floodable", f.floodable); // Whether the node is non-liquid, source liquid or flowing liquid f.liquid_type = (LiquidType)getenumfield(L, index, "liquidtype", ScriptApiNode::es_LiquidType, LIQUID_NONE); @@ -492,6 +535,46 @@ ContentFeatures read_content_features(lua_State *L, int index) f.node_box = read_nodebox(L, -1); lua_pop(L, 1); + lua_getfield(L, index, "connects_to"); + if (lua_istable(L, -1)) { + int table = lua_gettop(L); + lua_pushnil(L); + while (lua_next(L, table) != 0) { + // Value at -1 + f.connects_to.push_back(lua_tostring(L, -1)); + lua_pop(L, 1); + } + } + lua_pop(L, 1); + + lua_getfield(L, index, "connect_sides"); + if (lua_istable(L, -1)) { + int table = lua_gettop(L); + lua_pushnil(L); + while (lua_next(L, table) != 0) { + // Value at -1 + std::string side(lua_tostring(L, -1)); + // Note faces are flipped to make checking easier + if (side == "top") + f.connect_sides |= 2; + else if (side == "bottom") + f.connect_sides |= 1; + else if (side == "front") + f.connect_sides |= 16; + else if (side == "left") + f.connect_sides |= 32; + else if (side == "back") + f.connect_sides |= 4; + else if (side == "right") + f.connect_sides |= 8; + else + warningstream << "Unknown value for \"connect_sides\": " + << side << std::endl; + lua_pop(L, 1); + } + } + lua_pop(L, 1); + lua_getfield(L, index, "selection_box"); if(lua_istable(L, -1)) f.selection_box = read_nodebox(L, -1); @@ -584,25 +667,31 @@ NodeBox read_nodebox(lua_State *L, int index) nodebox.type = (NodeBoxType)getenumfield(L, index, "type", ScriptApiNode::es_NodeBoxType, NODEBOX_REGULAR); - lua_getfield(L, index, "fixed"); - if(lua_istable(L, -1)) - nodebox.fixed = read_aabb3f_vector(L, -1, BS); - lua_pop(L, 1); +#define NODEBOXREAD(n, s) \ + do { \ + lua_getfield(L, index, (s)); \ + if (lua_istable(L, -1)) \ + (n) = read_aabb3f(L, -1, BS); \ + lua_pop(L, 1); \ + } while (0) - lua_getfield(L, index, "wall_top"); - if(lua_istable(L, -1)) - nodebox.wall_top = read_aabb3f(L, -1, BS); - lua_pop(L, 1); - - lua_getfield(L, index, "wall_bottom"); - if(lua_istable(L, -1)) - nodebox.wall_bottom = read_aabb3f(L, -1, BS); - lua_pop(L, 1); - - lua_getfield(L, index, "wall_side"); - if(lua_istable(L, -1)) - nodebox.wall_side = read_aabb3f(L, -1, BS); - lua_pop(L, 1); +#define NODEBOXREADVEC(n, s) \ + do { \ + lua_getfield(L, index, (s)); \ + if (lua_istable(L, -1)) \ + (n) = read_aabb3f_vector(L, -1, BS); \ + lua_pop(L, 1); \ + } while (0) + NODEBOXREADVEC(nodebox.fixed, "fixed"); + NODEBOXREAD(nodebox.wall_top, "wall_top"); + NODEBOXREAD(nodebox.wall_bottom, "wall_bottom"); + NODEBOXREAD(nodebox.wall_side, "wall_side"); + NODEBOXREADVEC(nodebox.connect_top, "connect_top"); + NODEBOXREADVEC(nodebox.connect_bottom, "connect_bottom"); + NODEBOXREADVEC(nodebox.connect_front, "connect_front"); + NODEBOXREADVEC(nodebox.connect_left, "connect_left"); + NODEBOXREADVEC(nodebox.connect_back, "connect_back"); + NODEBOXREADVEC(nodebox.connect_right, "connect_right"); } return nodebox; } diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index f1d3cc42..55c4a5f5 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -517,6 +517,15 @@ bool getboolfield_default(lua_State *L, int table, return result; } +void setstringfield(lua_State *L, int table, + const char *fieldname, const char *value) +{ + lua_pushstring(L, value); + if(table < 0) + table -= 1; + lua_setfield(L, table, fieldname); +} + void setintfield(lua_State *L, int table, const char *fieldname, int value) { diff --git a/src/script/common/c_converter.h b/src/script/common/c_converter.h index 18a045d2..eefac0ed 100644 --- a/src/script/common/c_converter.h +++ b/src/script/common/c_converter.h @@ -69,6 +69,8 @@ bool getfloatfield(lua_State *L, int table, std::string checkstringfield(lua_State *L, int table, const char *fieldname); +void setstringfield(lua_State *L, int table, + const char *fieldname, const char *value); void setintfield(lua_State *L, int table, const char *fieldname, int value); void setfloatfield(lua_State *L, int table, diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index 71369e3d..679a517e 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -68,7 +68,7 @@ public: */ ScriptApiBase::ScriptApiBase() : - m_luastackmutex(true) + m_luastackmutex() { #ifdef SCRIPTAPI_LOCK_DEBUG m_lock_recursion_count = 0; diff --git a/src/script/cpp_api/s_base.h b/src/script/cpp_api/s_base.h index d30373ce..f52474f0 100644 --- a/src/script/cpp_api/s_base.h +++ b/src/script/cpp_api/s_base.h @@ -83,6 +83,7 @@ public: protected: friend class LuaABM; + friend class LuaLBM; friend class InvRef; friend class ObjectRef; friend class NodeMetaRef; @@ -108,7 +109,7 @@ protected: void objectrefGetOrCreate(lua_State *L, ServerActiveObject *cobj); void objectrefGet(lua_State *L, u16 id); - Mutex m_luastackmutex; + RecursiveMutex m_luastackmutex; std::string m_last_run_mod; bool m_secure; #ifdef SCRIPTAPI_LOCK_DEBUG diff --git a/src/script/cpp_api/s_env.cpp b/src/script/cpp_api/s_env.cpp index a1b11bfe..82d0d4f0 100644 --- a/src/script/cpp_api/s_env.cpp +++ b/src/script/cpp_api/s_env.cpp @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "server.h" void ScriptApiEnv::environment_OnGenerated(v3s16 minp, v3s16 maxp, - u32 blockseed) + u32 blockseed) { SCRIPTAPI_PRECHECKHEADER @@ -44,7 +44,7 @@ void ScriptApiEnv::environment_OnGenerated(v3s16 minp, v3s16 maxp, void ScriptApiEnv::environment_Step(float dtime) { SCRIPTAPI_PRECHECKHEADER - //infostream<<"scriptapi_environment_step"< trigger_contents; - lua_getfield(L, current_abm, "nodenames"); - if(lua_istable(L, -1)){ - int table = lua_gettop(L); - lua_pushnil(L); - while(lua_next(L, table) != 0){ - // key at index -2 and value at index -1 - luaL_checktype(L, -1, LUA_TSTRING); - trigger_contents.insert(lua_tostring(L, -1)); - // removes value, keeps key for next iteration - lua_pop(L, 1); - } - } else if(lua_isstring(L, -1)){ + std::set trigger_contents; + lua_getfield(L, current_abm, "nodenames"); + if (lua_istable(L, -1)) { + int table = lua_gettop(L); + lua_pushnil(L); + while (lua_next(L, table)) { + // key at index -2 and value at index -1 + luaL_checktype(L, -1, LUA_TSTRING); trigger_contents.insert(lua_tostring(L, -1)); + // removes value, keeps key for next iteration + lua_pop(L, 1); } - lua_pop(L, 1); - - std::set required_neighbors; - lua_getfield(L, current_abm, "neighbors"); - if(lua_istable(L, -1)){ - int table = lua_gettop(L); - lua_pushnil(L); - while(lua_next(L, table) != 0){ - // key at index -2 and value at index -1 - luaL_checktype(L, -1, LUA_TSTRING); - required_neighbors.insert(lua_tostring(L, -1)); - // removes value, keeps key for next iteration - lua_pop(L, 1); - } - } else if(lua_isstring(L, -1)){ - required_neighbors.insert(lua_tostring(L, -1)); - } - lua_pop(L, 1); - - float trigger_interval = 10.0; - getfloatfield(L, current_abm, "interval", trigger_interval); - - int trigger_chance = 50; - getintfield(L, current_abm, "chance", trigger_chance); - - bool simple_catch_up = true; - getboolfield(L, current_abm, "catch_up", simple_catch_up); - - LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors, - trigger_interval, trigger_chance, simple_catch_up); - - env->addActiveBlockModifier(abm); - - // removes value, keeps key for next iteration - lua_pop(L, 1); + } else if (lua_isstring(L, -1)) { + trigger_contents.insert(lua_tostring(L, -1)); } + lua_pop(L, 1); + + std::set required_neighbors; + lua_getfield(L, current_abm, "neighbors"); + if (lua_istable(L, -1)) { + int table = lua_gettop(L); + lua_pushnil(L); + while (lua_next(L, table)) { + // key at index -2 and value at index -1 + luaL_checktype(L, -1, LUA_TSTRING); + required_neighbors.insert(lua_tostring(L, -1)); + // removes value, keeps key for next iteration + lua_pop(L, 1); + } + } else if (lua_isstring(L, -1)) { + required_neighbors.insert(lua_tostring(L, -1)); + } + lua_pop(L, 1); + + float trigger_interval = 10.0; + getfloatfield(L, current_abm, "interval", trigger_interval); + + int trigger_chance = 50; + getintfield(L, current_abm, "chance", trigger_chance); + + bool simple_catch_up = true; + getboolfield(L, current_abm, "catch_up", simple_catch_up); + + LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors, + trigger_interval, trigger_chance, simple_catch_up); + + env->addActiveBlockModifier(abm); + + // removes value, keeps key for next iteration + lua_pop(L, 1); + } + lua_pop(L, 1); + + // Get core.registered_lbms + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_lbms"); + int registered_lbms = lua_gettop(L); + + if (!lua_istable(L, registered_lbms)) { + lua_pop(L, 1); + throw LuaError("core.registered_lbms was not a lua table, as expected."); + } + + lua_pushnil(L); + while (lua_next(L, registered_lbms)) { + // key at index -2 and value at index -1 + int id = lua_tonumber(L, -2); + int current_lbm = lua_gettop(L); + + std::set trigger_contents; + lua_getfield(L, current_lbm, "nodenames"); + if (lua_istable(L, -1)) { + int table = lua_gettop(L); + lua_pushnil(L); + while (lua_next(L, table)) { + // key at index -2 and value at index -1 + luaL_checktype(L, -1, LUA_TSTRING); + trigger_contents.insert(lua_tostring(L, -1)); + // removes value, keeps key for next iteration + lua_pop(L, 1); + } + } else if (lua_isstring(L, -1)) { + trigger_contents.insert(lua_tostring(L, -1)); + } + lua_pop(L, 1); + + std::string name; + getstringfield(L, current_lbm, "name", name); + + bool run_at_every_load = getboolfield_default(L, current_lbm, + "run_at_every_load", false); + + LuaLBM *lbm = new LuaLBM(L, id, trigger_contents, name, + run_at_every_load); + + env->addLoadingBlockModifierDef(lbm); + + // removes value, keeps key for next iteration + lua_pop(L, 1); } lua_pop(L, 1); } diff --git a/src/script/cpp_api/s_env.h b/src/script/cpp_api/s_env.h index 0d98e627..e0702456 100644 --- a/src/script/cpp_api/s_env.h +++ b/src/script/cpp_api/s_env.h @@ -26,7 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., class ServerEnvironment; struct ScriptCallbackState; -class ScriptApiEnv : virtual public ScriptApiBase { +class ScriptApiEnv : virtual public ScriptApiBase +{ public: // Called on environment step void environment_Step(float dtime); @@ -35,7 +36,7 @@ public: void environment_OnGenerated(v3s16 minp, v3s16 maxp, u32 blockseed); // Called on player event - void player_event(ServerActiveObject *player, std::string type); + void player_event(ServerActiveObject *player, const std::string &type); // Called after emerge of a block queued from core.emerge_area() void on_emerge_area_completion(v3s16 blockpos, int action, diff --git a/src/script/cpp_api/s_internal.h b/src/script/cpp_api/s_internal.h index 651fed95..37473c49 100644 --- a/src/script/cpp_api/s_internal.h +++ b/src/script/cpp_api/s_internal.h @@ -75,7 +75,7 @@ private: #endif #define SCRIPTAPI_PRECHECKHEADER \ - MutexAutoLock scriptlock(this->m_luastackmutex); \ + RecursiveMutexAutoLock scriptlock(this->m_luastackmutex); \ SCRIPTAPI_LOCK_CHECK; \ realityCheck(); \ lua_State *L = getStack(); \ diff --git a/src/script/cpp_api/s_item.cpp b/src/script/cpp_api/s_item.cpp index d9a545b4..3c84fb8c 100644 --- a/src/script/cpp_api/s_item.cpp +++ b/src/script/cpp_api/s_item.cpp @@ -110,6 +110,32 @@ bool ScriptApiItem::item_OnUse(ItemStack &item, return true; } +bool ScriptApiItem::item_OnSecondaryUse(ItemStack &item, ServerActiveObject *user) +{ + SCRIPTAPI_PRECHECKHEADER + + int error_handler = PUSH_ERROR_HANDLER(L); + + if (!getItemCallback(item.name.c_str(), "on_secondary_use")) + return false; + + LuaItemStack::create(L, item); + objectrefGetOrCreate(L, user); + PointedThing pointed; + pointed.type = POINTEDTHING_NOTHING; + pushPointedThing(pointed); + PCALL_RES(lua_pcall(L, 3, 1, error_handler)); + if (!lua_isnil(L, -1)) { + try { + item = read_item(L, -1, getServer()); + } catch (LuaError &e) { + throw LuaError(std::string(e.what()) + ". item=" + item.name); + } + } + lua_pop(L, 2); // Pop item and error handler + return true; +} + bool ScriptApiItem::item_OnCraft(ItemStack &item, ServerActiveObject *user, const InventoryList *old_craft_grid, const InventoryLocation &craft_inv) { diff --git a/src/script/cpp_api/s_item.h b/src/script/cpp_api/s_item.h index 88cc1909..7350a71c 100644 --- a/src/script/cpp_api/s_item.h +++ b/src/script/cpp_api/s_item.h @@ -42,6 +42,8 @@ public: ServerActiveObject *placer, const PointedThing &pointed); bool item_OnUse(ItemStack &item, ServerActiveObject *user, const PointedThing &pointed); + bool item_OnSecondaryUse(ItemStack &item, + ServerActiveObject *user); bool item_OnCraft(ItemStack &item, ServerActiveObject *user, const InventoryList *old_craft_grid, const InventoryLocation &craft_inv); bool item_CraftPredict(ItemStack &item, ServerActiveObject *user, diff --git a/src/script/cpp_api/s_node.cpp b/src/script/cpp_api/s_node.cpp index a905f843..17f0f0da 100644 --- a/src/script/cpp_api/s_node.cpp +++ b/src/script/cpp_api/s_node.cpp @@ -82,6 +82,7 @@ struct EnumString ScriptApiNode::es_NodeBoxType[] = {NODEBOX_FIXED, "fixed"}, {NODEBOX_WALLMOUNTED, "wallmounted"}, {NODEBOX_LEVELED, "leveled"}, + {NODEBOX_CONNECTED, "connected"}, {0, NULL}, }; diff --git a/src/script/cpp_api/s_security.cpp b/src/script/cpp_api/s_security.cpp index 36f8e9c0..730235c7 100644 --- a/src/script/cpp_api/s_security.cpp +++ b/src/script/cpp_api/s_security.cpp @@ -116,7 +116,6 @@ void ScriptApiSecurity::initializeSecurity() "upvaluejoin", "sethook", "debug", - "getupvalue", "setlocal", }; static const char *package_whitelist[] = { diff --git a/src/script/cpp_api/s_security.h b/src/script/cpp_api/s_security.h index 4a4389cf..97bc5c06 100644 --- a/src/script/cpp_api/s_security.h +++ b/src/script/cpp_api/s_security.h @@ -25,9 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #define CHECK_SECURE_PATH(L, path) \ if (!ScriptApiSecurity::checkPath(L, path)) { \ - lua_pushstring(L, (std::string("Attempt to access external file ") + \ - path + " with mod security on.").c_str()); \ - lua_error(L); \ + throw LuaError(std::string("Attempt to access external file ") + \ + path + " with mod security on."); \ } #define CHECK_SECURE_PATH_OPTIONAL(L, path) \ if (ScriptApiSecurity::isSecure(L)) { \ diff --git a/src/script/lua_api/CMakeLists.txt b/src/script/lua_api/CMakeLists.txt index 2501ce6d..d507dcf7 100644 --- a/src/script/lua_api/CMakeLists.txt +++ b/src/script/lua_api/CMakeLists.txt @@ -16,6 +16,7 @@ set(common_SCRIPT_LUA_API_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/l_util.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_vmanip.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_settings.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/l_http.cpp PARENT_SCOPE) set(client_SCRIPT_LUA_API_SRCS diff --git a/src/script/lua_api/l_areastore.cpp b/src/script/lua_api/l_areastore.cpp index 72fe24b2..20e7875c 100644 --- a/src/script/lua_api/l_areastore.cpp +++ b/src/script/lua_api/l_areastore.cpp @@ -22,11 +22,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_internal.h" #include "common/c_converter.h" #include "cpp_api/s_security.h" -#include "areastore.h" +#include "irr_v3d.h" +#include "util/areastore.h" #include "filesys.h" -#ifndef ANDROID - #include "cmake_config.h" -#endif #include static inline void get_data_and_border_flags(lua_State *L, u8 start_i, @@ -72,6 +70,22 @@ static inline void push_areas(lua_State *L, const std::vector &areas, } } +// Deserializes value and handles errors +static int deserialization_helper(lua_State *L, AreaStore *as, + std::istream &is) +{ + try { + as->deserialize(is); + } catch (const SerializationError &e) { + lua_pushboolean(L, false); + lua_pushstring(L, e.what()); + return 2; + } + + lua_pushboolean(L, true); + return 1; +} + // garbage collector int LuaAreaStore::gc_object(lua_State *L) { @@ -150,7 +164,7 @@ int LuaAreaStore::l_get_areas_in_area(lua_State *L) return 1; } -// insert_area(edge1, edge2, data) +// insert_area(edge1, edge2, data, id) int LuaAreaStore::l_insert_area(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -158,26 +172,18 @@ int LuaAreaStore::l_insert_area(lua_State *L) LuaAreaStore *o = checkobject(L, 1); AreaStore *ast = o->as; - Area a; - - a.minedge = check_v3s16(L, 2); - a.maxedge = check_v3s16(L, 3); - - a.extremifyEdges(); - a.id = ast->getFreeId(a.minedge, a.maxedge); - - if (a.id == AREA_ID_INVALID) { - // couldn't get free id - lua_pushnil(L); - return 1; - } + Area a(check_v3s16(L, 2), check_v3s16(L, 3)); size_t d_len; const char *data = luaL_checklstring(L, 4, &d_len); a.data = std::string(data, d_len); - ast->insertArea(a); + if (lua_isnumber(L, 5)) + a.id = lua_tonumber(L, 5); + + if (!ast->insertArea(&a)) + return 0; lua_pushnumber(L, a.id); return 1; @@ -230,17 +236,15 @@ int LuaAreaStore::l_set_cache_params(lua_State *L) return 0; } -#if 0 // to_string() int LuaAreaStore::l_to_string(lua_State *L) { NO_MAP_LOCK_REQUIRED; LuaAreaStore *o = checkobject(L, 1); - AreaStore *ast = o->as; std::ostringstream os(std::ios_base::binary); - ast->serialize(os); + o->as->serialize(os); std::string str = os.str(); lua_pushlstring(L, str.c_str(), str.length()); @@ -271,16 +275,12 @@ int LuaAreaStore::l_from_string(lua_State *L) NO_MAP_LOCK_REQUIRED; LuaAreaStore *o = checkobject(L, 1); - AreaStore *ast = o->as; size_t len; const char *str = luaL_checklstring(L, 2, &len); std::istringstream is(std::string(str, len), std::ios::binary); - bool success = ast->deserialize(is); - - lua_pushboolean(L, success); - return 1; + return deserialization_helper(L, o->as, is); } // from_file(filename) @@ -289,26 +289,17 @@ int LuaAreaStore::l_from_file(lua_State *L) NO_MAP_LOCK_REQUIRED; LuaAreaStore *o = checkobject(L, 1); - AreaStore *ast = o->as; const char *filename = luaL_checkstring(L, 2); CHECK_SECURE_PATH_OPTIONAL(L, filename); std::ifstream is(filename, std::ios::binary); - bool success = ast->deserialize(is); - - lua_pushboolean(L, success); - return 1; + return deserialization_helper(L, o->as, is); } -#endif LuaAreaStore::LuaAreaStore() { -#if USE_SPATIAL - this->as = new SpatialAreaStore(); -#else - this->as = new VectorAreaStore(); -#endif + this->as = AreaStore::getOptimalImplementation(); } LuaAreaStore::LuaAreaStore(const std::string &type) @@ -394,9 +385,9 @@ const luaL_reg LuaAreaStore::methods[] = { luamethod(LuaAreaStore, reserve), luamethod(LuaAreaStore, remove_area), luamethod(LuaAreaStore, set_cache_params), - /* luamethod(LuaAreaStore, to_string), + luamethod(LuaAreaStore, to_string), luamethod(LuaAreaStore, to_file), luamethod(LuaAreaStore, from_string), - luamethod(LuaAreaStore, from_file),*/ + luamethod(LuaAreaStore, from_file), {0,0} }; diff --git a/src/script/lua_api/l_areastore.h b/src/script/lua_api/l_areastore.h index a2552962..4bd94ceb 100644 --- a/src/script/lua_api/l_areastore.h +++ b/src/script/lua_api/l_areastore.h @@ -17,16 +17,14 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef L_AREASTORE_H_ -#define L_AREASTORE_H_ +#ifndef L_AREA_STORE_H_ +#define L_AREA_STORE_H_ #include "lua_api/l_base.h" -#include "irr_v3d.h" -#include "areastore.h" -/* - AreaStore - */ + +class AreaStore; + class LuaAreaStore : public ModApiBase { private: @@ -45,11 +43,11 @@ private: static int l_set_cache_params(lua_State *L); - /* static int l_to_string(lua_State *L); + static int l_to_string(lua_State *L); static int l_to_file(lua_State *L); static int l_from_string(lua_State *L); - static int l_from_file(lua_State *L); */ + static int l_from_file(lua_State *L); public: AreaStore *as; @@ -67,4 +65,4 @@ public: static void Register(lua_State *L); }; -#endif /* L_AREASTORE_H_ */ +#endif // L_AREA_STORE_H_ diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 084b1b44..8284c3fc 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -36,6 +36,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "emerge.h" #include "pathfinder.h" +struct EnumString ModApiEnvMod::es_ClearObjectsMode[] = +{ + {CLEAR_OBJECTS_MODE_FULL, "full"}, + {CLEAR_OBJECTS_MODE_QUICK, "quick"}, + {0, NULL}, +}; + /////////////////////////////////////////////////////////////////////////////// @@ -83,6 +90,46 @@ void LuaABM::trigger(ServerEnvironment *env, v3s16 p, MapNode n, lua_pop(L, 1); // Pop error handler } +void LuaLBM::trigger(ServerEnvironment *env, v3s16 p, MapNode n) +{ + GameScripting *scriptIface = env->getScriptIface(); + scriptIface->realityCheck(); + + lua_State *L = scriptIface->getStack(); + sanity_check(lua_checkstack(L, 20)); + StackUnroller stack_unroller(L); + + int error_handler = PUSH_ERROR_HANDLER(L); + + // Get registered_lbms + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_lbms"); + luaL_checktype(L, -1, LUA_TTABLE); + lua_remove(L, -2); // Remove core + + // Get registered_lbms[m_id] + lua_pushnumber(L, m_id); + lua_gettable(L, -2); + FATAL_ERROR_IF(lua_isnil(L, -1), "Entry with given id not found in registered_lbms table"); + lua_remove(L, -2); // Remove registered_lbms + + scriptIface->setOriginFromTable(-1); + + // Call action + luaL_checktype(L, -1, LUA_TTABLE); + lua_getfield(L, -1, "action"); + luaL_checktype(L, -1, LUA_TFUNCTION); + lua_remove(L, -2); // Remove registered_lbms[m_id] + push_v3s16(L, p); + pushnode(L, n, env->getGameDef()->ndef()); + + int result = lua_pcall(L, 2, 0, error_handler); + if (result) + scriptIface->scriptError(result, "LuaLBM::trigger"); + + lua_pop(L, 1); // Pop error handler +} + void LuaEmergeAreaCallback(v3s16 blockpos, EmergeAction action, void *param) { ScriptCallbackState *state = (ScriptCallbackState *)param; @@ -514,6 +561,15 @@ int ModApiEnvMod::l_get_timeofday(lua_State *L) return 1; } +// get_day_count() -> int +int ModApiEnvMod::l_get_day_count(lua_State *L) +{ + GET_ENV_PTR; + + lua_pushnumber(L, env->getDayCount()); + return 1; +} + // get_gametime() int ModApiEnvMod::l_get_gametime(lua_State *L) { @@ -727,13 +783,20 @@ int ModApiEnvMod::l_get_voxel_manip(lua_State *L) return 1; } -// clear_objects() +// clear_objects([options]) // clear all objects in the environment +// where options = {mode = "full" or "quick"} int ModApiEnvMod::l_clear_objects(lua_State *L) { GET_ENV_PTR; - env->clearAllObjects(); + ClearObjectsMode mode = CLEAR_OBJECTS_MODE_FULL; + if (lua_istable(L, 1)) { + mode = (ClearObjectsMode)getenumfield(L, 1, "mode", + ModApiEnvMod::es_ClearObjectsMode, mode); + } + + env->clearObjects(mode); return 0; } @@ -852,19 +915,19 @@ int ModApiEnvMod::l_find_path(lua_State *L) unsigned int searchdistance = luaL_checkint(L, 3); unsigned int max_jump = luaL_checkint(L, 4); unsigned int max_drop = luaL_checkint(L, 5); - algorithm algo = A_PLAIN_NP; + PathAlgorithm algo = PA_PLAIN_NP; if (!lua_isnil(L, 6)) { std::string algorithm = luaL_checkstring(L,6); if (algorithm == "A*") - algo = A_PLAIN; + algo = PA_PLAIN; if (algorithm == "Dijkstra") - algo = DIJKSTRA; + algo = PA_DIJKSTRA; } - std::vector path = - get_Path(env,pos1,pos2,searchdistance,max_jump,max_drop,algo); + std::vector path = get_path(env, pos1, pos2, + searchdistance, max_jump, max_drop, algo); if (path.size() > 0) { @@ -1001,6 +1064,7 @@ void ModApiEnvMod::Initialize(lua_State *L, int top) API_FCT(set_timeofday); API_FCT(get_timeofday); API_FCT(get_gametime); + API_FCT(get_day_count); API_FCT(find_node_near); API_FCT(find_nodes_in_area); API_FCT(find_nodes_in_area_under_air); diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h index 424556d4..89dd7978 100644 --- a/src/script/lua_api/l_env.h +++ b/src/script/lua_api/l_env.h @@ -113,6 +113,9 @@ private: // get_gametime() static int l_get_gametime(lua_State *L); + // get_day_count() -> int + static int l_get_day_count(lua_State *L); + // find_node_near(pos, radius, nodenames) -> pos or nil // nodenames: eg. {"ignore", "group:tree"} or "default:dirt" static int l_find_node_near(lua_State *L); @@ -170,6 +173,8 @@ private: public: static void Initialize(lua_State *L, int top); + + static struct EnumString es_ClearObjectsMode[]; }; class LuaABM : public ActiveBlockModifier { @@ -218,6 +223,24 @@ public: u32 active_object_count, u32 active_object_count_wider); }; +class LuaLBM : public LoadingBlockModifierDef +{ +private: + int m_id; +public: + LuaLBM(lua_State *L, int id, + const std::set &trigger_contents, + const std::string &name, + bool run_at_every_load): + m_id(id) + { + this->run_at_every_load = run_at_every_load; + this->trigger_contents = trigger_contents; + this->name = name; + } + virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n); +}; + struct ScriptCallbackState { GameScripting *script; int callback_ref; diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp new file mode 100644 index 00000000..8bd39b6e --- /dev/null +++ b/src/script/lua_api/l_http.cpp @@ -0,0 +1,193 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "lua_api/l_internal.h" +#include "common/c_converter.h" +#include "common/c_content.h" +#include "lua_api/l_http.h" +#include "httpfetch.h" +#include "settings.h" +#include "debug.h" +#include "log.h" + +#include +#include +#include + +#define HTTP_API(name) \ + lua_pushstring(L, #name); \ + lua_pushcfunction(L, l_http_##name); \ + lua_settable(L, -3); + +#if USE_CURL +void ModApiHttp::read_http_fetch_request(lua_State *L, HTTPFetchRequest &req) +{ + luaL_checktype(L, 1, LUA_TTABLE); + + req.caller = httpfetch_caller_alloc_secure(); + getstringfield(L, 1, "url", req.url); + lua_getfield(L, 1, "user_agent"); + if (lua_isstring(L, -1)) + req.useragent = getstringfield_default(L, 1, "user_agent", ""); + lua_pop(L, 1); + req.multipart = getboolfield_default(L, 1, "multipart", false); + req.timeout = getintfield_default(L, 1, "timeout", 3) * 1000; + + // post_data: if table, post form data, otherwise raw data + lua_getfield(L, 1, "post_data"); + if (lua_istable(L, 2)) { + lua_pushnil(L); + while (lua_next(L, 2) != 0) + { + req.post_fields[luaL_checkstring(L, -2)] = luaL_checkstring(L, -1); + lua_pop(L, 1); + } + } else if (lua_isstring(L, 2)) { + req.post_data = lua_tostring(L, 2); + } + lua_pop(L, 1); + + lua_getfield(L, 1, "extra_headers"); + if (lua_istable(L, 2)) { + lua_pushnil(L); + while (lua_next(L, 2) != 0) + { + const char *header = luaL_checkstring(L, -1); + req.extra_headers.push_back(header); + lua_pop(L, 1); + } + } + lua_pop(L, 1); +} + +void ModApiHttp::push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool completed) +{ + lua_newtable(L); + setboolfield(L, -1, "succeeded", res.succeeded); + setboolfield(L, -1, "timeout", res.timeout); + setboolfield(L, -1, "completed", completed); + setintfield(L, -1, "code", res.response_code); + setstringfield(L, -1, "data", res.data.c_str()); +} + +// http_api.fetch_async(HTTPRequest definition) +int ModApiHttp::l_http_fetch_async(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + HTTPFetchRequest req; + read_http_fetch_request(L, req); + + actionstream << "Mod performs HTTP request with URL " << req.url << std::endl; + httpfetch_async(req); + + // Convert handle to hex string since lua can't handle 64-bit integers + std::stringstream handle_conversion_stream; + handle_conversion_stream << std::hex << req.caller; + std::string caller_handle(handle_conversion_stream.str()); + + lua_pushstring(L, caller_handle.c_str()); + return 1; +} + +// http_api.fetch_async_get(handle) +int ModApiHttp::l_http_fetch_async_get(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + std::string handle_str = luaL_checkstring(L, 1); + + // Convert hex string back to 64-bit handle + u64 handle; + std::stringstream handle_conversion_stream; + handle_conversion_stream << std::hex << handle_str; + handle_conversion_stream >> handle; + + HTTPFetchResult res; + bool completed = httpfetch_async_get(handle, res); + + push_http_fetch_result(L, res, completed); + + return 1; +} + +int ModApiHttp::l_request_http_api(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + // We have to make sure that this function is being called directly by + // a mod, otherwise a malicious mod could override this function and + // steal its return value. + lua_Debug info; + + // Make sure there's only one item below this function on the stack... + if (lua_getstack(L, 2, &info)) { + return 0; + } + FATAL_ERROR_IF(!lua_getstack(L, 1, &info), "lua_getstack() failed"); + FATAL_ERROR_IF(!lua_getinfo(L, "S", &info), "lua_getinfo() failed"); + + // ...and that that item is the main file scope. + if (strcmp(info.what, "main") != 0) { + return 0; + } + + // Mod must be listed in secure.http_mods or secure.trusted_mods + lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_CURRENT_MOD_NAME); + if (!lua_isstring(L, -1)) { + return 0; + } + + const char *mod_name = lua_tostring(L, -1); + std::string http_mods = g_settings->get("secure.http_mods"); + http_mods.erase(std::remove(http_mods.begin(), http_mods.end(), ' '), http_mods.end()); + std::vector mod_list_http = str_split(http_mods, ','); + + std::string trusted_mods = g_settings->get("secure.trusted_mods"); + trusted_mods.erase(std::remove(trusted_mods.begin(), trusted_mods.end(), ' '), trusted_mods.end()); + std::vector mod_list_trusted = str_split(trusted_mods, ','); + + mod_list_http.insert(mod_list_http.end(), mod_list_trusted.begin(), mod_list_trusted.end()); + if (std::find(mod_list_http.begin(), mod_list_http.end(), mod_name) == mod_list_http.end()) { + lua_pushnil(L); + return 1; + } + + lua_getglobal(L, "core"); + lua_getfield(L, -1, "http_add_fetch"); + + lua_newtable(L); + HTTP_API(fetch_async); + HTTP_API(fetch_async_get); + + // Stack now looks like this: + // + // Now call core.http_add_fetch to append .fetch(request, callback) to table + lua_call(L, 1, 1); + + return 1; +} +#endif + +void ModApiHttp::Initialize(lua_State *L, int top) +{ +#if USE_CURL + API_FCT(request_http_api); +#endif +} diff --git a/src/luaentity_common.h b/src/script/lua_api/l_http.h similarity index 51% rename from src/luaentity_common.h rename to src/script/lua_api/l_http.h index 35b079ad..077ade69 100644 --- a/src/luaentity_common.h +++ b/src/script/lua_api/l_http.h @@ -17,14 +17,34 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef LUAENTITY_COMMON_HEADER -#define LUAENTITY_COMMON_HEADER +#ifndef L_HTTP_H_ +#define L_HTTP_H_ -#define LUAENTITY_CMD_UPDATE_POSITION 0 -#define LUAENTITY_CMD_SET_TEXTURE_MOD 1 -#define LUAENTITY_CMD_SET_SPRITE 2 -#define LUAENTITY_CMD_PUNCHED 3 -#define LUAENTITY_CMD_UPDATE_ARMOR_GROUPS 4 +#include "lua_api/l_base.h" +#include "config.h" +struct HTTPFetchRequest; +struct HTTPFetchResult; + +class ModApiHttp : public ModApiBase { +private: +#if USE_CURL + // Helpers for HTTP fetch functions + static void read_http_fetch_request(lua_State *L, HTTPFetchRequest &req); + static void push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool completed = true); + + // http_fetch_async({url=, timeout=, post_data=}) + static int l_http_fetch_async(lua_State *L); + + // http_fetch_async_get(handle) + static int l_http_fetch_async_get(lua_State *L); + + // request_http_api() + static int l_request_http_api(lua_State *L); #endif +public: + static void Initialize(lua_State *L, int top); +}; + +#endif /* L_HTTP_H_ */ diff --git a/src/script/lua_api/l_item.cpp b/src/script/lua_api/l_item.cpp index 842b1570..5381cba7 100644 --- a/src/script/lua_api/l_item.cpp +++ b/src/script/lua_api/l_item.cpp @@ -94,7 +94,7 @@ int LuaItemStack::l_set_count(lua_State *L) bool status; lua_Integer count = luaL_checkinteger(L, 2); - if (count <= 65535) { + if (count > 0 && count <= 65535) { item.count = count; status = true; } else { diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index c924a5d9..7b29db15 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -1095,7 +1095,9 @@ int ModApiMainMenu::l_get_screen_info(lua_State *L) /******************************************************************************/ int ModApiMainMenu::l_get_min_supp_proto(lua_State *L) { - lua_pushinteger(L, CLIENT_PROTOCOL_VERSION_MIN); + u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ? + CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN; + lua_pushinteger(L, proto_version_min); return 1; } diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index d5cf54f2..fb839176 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -944,10 +944,19 @@ int ModApiMapgen::l_register_ore(lua_State *L) ore->clust_scarcity = getintfield_default(L, index, "clust_scarcity", 1); ore->clust_num_ores = getintfield_default(L, index, "clust_num_ores", 1); ore->clust_size = getintfield_default(L, index, "clust_size", 0); - ore->nthresh = getfloatfield_default(L, index, "noise_threshhold", 0); ore->noise = NULL; ore->flags = 0; + //// Get noise_threshold + warn_if_field_exists(L, index, "noise_threshhold", + "Deprecated: new name is \"noise_threshold\"."); + + float nthresh; + if (!getfloatfield(L, index, "noise_threshold", nthresh) && + !getfloatfield(L, index, "noise_threshhold", nthresh)) + nthresh = 0; + ore->nthresh = nthresh; + //// Get y_min/y_max warn_if_field_exists(L, index, "height_min", "Deprecated: new name is \"y_min\"."); diff --git a/src/script/lua_api/l_noise.cpp b/src/script/lua_api/l_noise.cpp index 6dcffa31..04dc6048 100644 --- a/src/script/lua_api/l_noise.cpp +++ b/src/script/lua_api/l_noise.cpp @@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_converter.h" #include "common/c_content.h" #include "log.h" +#include "porting.h" +#include "util/numeric.h" /////////////////////////////////////// /* @@ -600,3 +602,116 @@ const luaL_reg LuaPcgRandom::methods[] = { luamethod(LuaPcgRandom, rand_normal_dist), {0,0} }; + +/////////////////////////////////////// +/* + LuaSecureRandom +*/ + +bool LuaSecureRandom::fillRandBuf() +{ + return porting::secure_rand_fill_buf(m_rand_buf, RAND_BUF_SIZE); +} + +int LuaSecureRandom::l_next_bytes(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + LuaSecureRandom *o = checkobject(L, 1); + u32 count = lua_isnumber(L, 2) ? lua_tointeger(L, 2) : 1; + + // Limit count + count = MYMIN(RAND_BUF_SIZE, count); + + // Find out whether we can pass directly from our array, or have to do some gluing + size_t count_remaining = RAND_BUF_SIZE - o->m_rand_idx; + if (count_remaining >= count) { + lua_pushlstring(L, o->m_rand_buf + o->m_rand_idx, count); + o->m_rand_idx += count; + } else { + char output_buf[RAND_BUF_SIZE]; + + // Copy over with what we have left from our current buffer + memcpy(output_buf, o->m_rand_buf + o->m_rand_idx, count_remaining); + + // Refill buffer and copy over the remainder of what was requested + o->fillRandBuf(); + memcpy(output_buf + count_remaining, o->m_rand_buf, count - count_remaining); + + // Update index + o->m_rand_idx = count - count_remaining; + + lua_pushlstring(L, output_buf, count); + } + + return 1; +} + + +int LuaSecureRandom::create_object(lua_State *L) +{ + LuaSecureRandom *o = new LuaSecureRandom(); + + // Fail and return nil if we can't securely fill the buffer + if (!o->fillRandBuf()) { + delete o; + return 0; + } + + *(void **)(lua_newuserdata(L, sizeof(void *))) = o; + luaL_getmetatable(L, className); + lua_setmetatable(L, -2); + return 1; +} + + +int LuaSecureRandom::gc_object(lua_State *L) +{ + LuaSecureRandom *o = *(LuaSecureRandom **)(lua_touserdata(L, 1)); + delete o; + return 0; +} + + +LuaSecureRandom *LuaSecureRandom::checkobject(lua_State *L, int narg) +{ + luaL_checktype(L, narg, LUA_TUSERDATA); + void *ud = luaL_checkudata(L, narg, className); + if (!ud) + luaL_typerror(L, narg, className); + return *(LuaSecureRandom **)ud; +} + + +void LuaSecureRandom::Register(lua_State *L) +{ + lua_newtable(L); + int methodtable = lua_gettop(L); + luaL_newmetatable(L, className); + int metatable = lua_gettop(L); + + lua_pushliteral(L, "__metatable"); + lua_pushvalue(L, methodtable); + lua_settable(L, metatable); + + lua_pushliteral(L, "__index"); + lua_pushvalue(L, methodtable); + lua_settable(L, metatable); + + lua_pushliteral(L, "__gc"); + lua_pushcfunction(L, gc_object); + lua_settable(L, metatable); + + lua_pop(L, 1); + + luaL_openlib(L, 0, methods, 0); + lua_pop(L, 1); + + lua_register(L, className, create_object); +} + +const char LuaSecureRandom::className[] = "SecureRandom"; +const luaL_reg LuaSecureRandom::methods[] = { + luamethod(LuaSecureRandom, next_bytes), + {0,0} +}; diff --git a/src/script/lua_api/l_noise.h b/src/script/lua_api/l_noise.h index e958c5a2..492eb755 100644 --- a/src/script/lua_api/l_noise.h +++ b/src/script/lua_api/l_noise.h @@ -160,4 +160,37 @@ public: static void Register(lua_State *L); }; + +/* + LuaSecureRandom +*/ +class LuaSecureRandom : public ModApiBase { +private: + static const size_t RAND_BUF_SIZE = 2048; + static const char className[]; + static const luaL_reg methods[]; + + u32 m_rand_idx; + char m_rand_buf[RAND_BUF_SIZE]; + + // Exported functions + + // garbage collector + static int gc_object(lua_State *L); + + // next_bytes(self, count) -> get count many bytes + static int l_next_bytes(lua_State *L); + +public: + bool fillRandBuf(); + + // LuaSecureRandom() + // Creates an LuaSecureRandom and leaves it on top of stack + static int create_object(lua_State *L); + + static LuaSecureRandom *checkobject(lua_State *L, int narg); + + static void Register(lua_State *L); +}; + #endif /* L_NOISE_H_ */ diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 52190d60..6d6614e7 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -767,6 +767,59 @@ int ObjectRef::l_is_player(lua_State *L) return 1; } +// set_nametag_attributes(self, attributes) +int ObjectRef::l_set_nametag_attributes(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + ObjectRef *ref = checkobject(L, 1); + ServerActiveObject *co = getobject(ref); + + if (co == NULL) + return 0; + ObjectProperties *prop = co->accessObjectProperties(); + if (!prop) + return 0; + + lua_getfield(L, 2, "color"); + if (!lua_isnil(L, -1)) { + video::SColor color = prop->nametag_color; + read_color(L, -1, &color); + prop->nametag_color = color; + } + lua_pop(L, 1); + + std::string nametag = getstringfield_default(L, 2, "text", ""); + if (nametag != "") + prop->nametag = nametag; + + co->notifyObjectPropertiesModified(); + lua_pushboolean(L, true); + return 1; +} + +// get_nametag_attributes(self) +int ObjectRef::l_get_nametag_attributes(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + ObjectRef *ref = checkobject(L, 1); + ServerActiveObject *co = getobject(ref); + + if (co == NULL) + return 0; + ObjectProperties *prop = co->accessObjectProperties(); + if (!prop) + return 0; + + video::SColor color = prop->nametag_color; + + lua_newtable(L); + push_ARGB8(L, color); + lua_setfield(L, -2, "color"); + lua_pushstring(L, prop->nametag.c_str()); + lua_setfield(L, -2, "text"); + return 1; +} + /* LuaEntitySAO-only */ // setvelocity(self, {x=num, y=num, z=num}) @@ -1593,45 +1646,6 @@ int ObjectRef::l_get_day_night_ratio(lua_State *L) return 1; } -// set_nametag_attributes(self, attributes) -int ObjectRef::l_set_nametag_attributes(lua_State *L) -{ - NO_MAP_LOCK_REQUIRED; - ObjectRef *ref = checkobject(L, 1); - PlayerSAO *playersao = getplayersao(ref); - if (playersao == NULL) - return 0; - - lua_getfield(L, 2, "color"); - if (!lua_isnil(L, -1)) { - video::SColor color = playersao->getNametagColor(); - if (!read_color(L, -1, &color)) - return 0; - playersao->setNametagColor(color); - } - - lua_pushboolean(L, true); - return 1; -} - -// get_nametag_attributes(self) -int ObjectRef::l_get_nametag_attributes(lua_State *L) -{ - NO_MAP_LOCK_REQUIRED; - ObjectRef *ref = checkobject(L, 1); - PlayerSAO *playersao = getplayersao(ref); - if (playersao == NULL) - return 0; - - video::SColor color = playersao->getNametagColor(); - - lua_newtable(L); - push_ARGB8(L, color); - lua_setfield(L, -2, "color"); - - return 1; -} - ObjectRef::ObjectRef(ServerActiveObject *object): m_object(object) { @@ -1719,6 +1733,8 @@ const luaL_reg ObjectRef::methods[] = { luamethod(ObjectRef, set_detach), luamethod(ObjectRef, set_properties), luamethod(ObjectRef, get_properties), + luamethod(ObjectRef, set_nametag_attributes), + luamethod(ObjectRef, get_nametag_attributes), // LuaEntitySAO-only luamethod(ObjectRef, setvelocity), luamethod(ObjectRef, getvelocity), @@ -1768,7 +1784,5 @@ const luaL_reg ObjectRef::methods[] = { luamethod(ObjectRef, get_local_animation), luamethod(ObjectRef, set_eye_offset), luamethod(ObjectRef, get_eye_offset), - luamethod(ObjectRef, set_nametag_attributes), - luamethod(ObjectRef, get_nametag_attributes), {0,0} }; diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 3f7e15ac..c3e6c896 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -25,8 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "serialization.h" #include "json/json.h" #include "cpp_api/s_security.h" -#include "areastore.h" #include "porting.h" +#include "debug.h" #include "log.h" #include "tool.h" #include "filesys.h" @@ -74,9 +74,9 @@ int ModApiUtil::l_get_us_time(lua_State *L) } #define CHECK_SECURE_SETTING(L, name) \ - if (name.compare(0, 7, "secure.") == 0) {\ - lua_pushliteral(L, "Attempt to set secure setting.");\ - lua_error(L);\ + if (ScriptApiSecurity::isSecure(L) && \ + name.compare(0, 7, "secure.") == 0) { \ + throw LuaError("Attempt to set secure setting."); \ } // setting_set(name, value) @@ -161,8 +161,14 @@ int ModApiUtil::l_parse_json(lua_State *L) if (!reader.parse(stream, root)) { errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages(); - errorstream << "data: \"" << jsonstr << "\"" - << std::endl; + size_t jlen = strlen(jsonstr); + if (jlen > 100) { + errorstream << "Data (" << jlen + << " bytes) printed to warningstream." << std::endl; + warningstream << "data: \"" << jsonstr << "\"" << std::endl; + } else { + errorstream << "data: \"" << jsonstr << "\"" << std::endl; + } lua_pushnil(L); return 1; } @@ -245,7 +251,7 @@ int ModApiUtil::l_get_password_hash(lua_State *L) NO_MAP_LOCK_REQUIRED; std::string name = luaL_checkstring(L, 1); std::string raw_password = luaL_checkstring(L, 2); - std::string hash = translatePassword(name, raw_password); + std::string hash = translate_password(name, raw_password); lua_pushstring(L, hash.c_str()); return 1; } @@ -351,22 +357,46 @@ int ModApiUtil::l_get_dir_list(lua_State *L) int ModApiUtil::l_request_insecure_environment(lua_State *L) { NO_MAP_LOCK_REQUIRED; + + // Just return _G if security is disabled if (!ScriptApiSecurity::isSecure(L)) { lua_getglobal(L, "_G"); return 1; } + + // We have to make sure that this function is being called directly by + // a mod, otherwise a malicious mod could override this function and + // steal its return value. + lua_Debug info; + // Make sure there's only one item below this function on the stack... + if (lua_getstack(L, 2, &info)) { + return 0; + } + FATAL_ERROR_IF(!lua_getstack(L, 1, &info), "lua_getstack() failed"); + FATAL_ERROR_IF(!lua_getinfo(L, "S", &info), "lua_getinfo() failed"); + // ...and that that item is the main file scope. + if (strcmp(info.what, "main") != 0) { + return 0; + } + + // Get mod name lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_CURRENT_MOD_NAME); if (!lua_isstring(L, -1)) { - lua_pushnil(L); - return 1; + return 0; } + + // Check secure.trusted_mods const char *mod_name = lua_tostring(L, -1); std::string trusted_mods = g_settings->get("secure.trusted_mods"); + trusted_mods.erase(std::remove(trusted_mods.begin(), + trusted_mods.end(), ' '), trusted_mods.end()); std::vector mod_list = str_split(trusted_mods, ','); - if (std::find(mod_list.begin(), mod_list.end(), mod_name) == mod_list.end()) { - lua_pushnil(L); - return 1; + if (std::find(mod_list.begin(), mod_list.end(), mod_name) == + mod_list.end()) { + return 0; } + + // Push insecure environment lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_GLOBALS_BACKUP); return 1; } diff --git a/src/script/lua_api/l_vmanip.cpp b/src/script/lua_api/l_vmanip.cpp index ec9be8fb..f1386640 100644 --- a/src/script/lua_api/l_vmanip.cpp +++ b/src/script/lua_api/l_vmanip.cpp @@ -181,6 +181,7 @@ int LuaVoxelManip::l_calc_lighting(lua_State *L) v3s16 fpmax = vm->m_area.MaxEdge; v3s16 pmin = lua_istable(L, 2) ? check_v3s16(L, 2) : fpmin + yblock; v3s16 pmax = lua_istable(L, 3) ? check_v3s16(L, 3) : fpmax - yblock; + bool propagate_shadow = lua_isboolean(L, 4) ? lua_toboolean(L, 4) : true; sortBoxVerticies(pmin, pmax); if (!vm->m_area.contains(VoxelArea(pmin, pmax))) @@ -191,7 +192,7 @@ int LuaVoxelManip::l_calc_lighting(lua_State *L) mg.ndef = ndef; mg.water_level = emerge->params.water_level; - mg.calcLighting(pmin, pmax, fpmin, fpmax); + mg.calcLighting(pmin, pmax, fpmin, fpmax, propagate_shadow); return 0; } diff --git a/src/script/scripting_game.cpp b/src/script/scripting_game.cpp index 4f0350d4..e313d55f 100644 --- a/src/script/scripting_game.cpp +++ b/src/script/scripting_game.cpp @@ -39,6 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_util.h" #include "lua_api/l_vmanip.h" #include "lua_api/l_settings.h" +#include "lua_api/l_http.h" extern "C" { #include "lualib.h" @@ -89,6 +90,7 @@ void GameScripting::InitializeModApi(lua_State *L, int top) ModApiRollback::Initialize(L, top); ModApiServer::Initialize(L, top); ModApiUtil::Initialize(L, top); + ModApiHttp::Initialize(L, top); // Register reference classes (userdata) InvRef::Register(L); @@ -98,6 +100,7 @@ void GameScripting::InitializeModApi(lua_State *L, int top) LuaPerlinNoiseMap::Register(L); LuaPseudoRandom::Register(L); LuaPcgRandom::Register(L); + LuaSecureRandom::Register(L); LuaVoxelManip::Register(L); NodeMetaRef::Register(L); NodeTimerRef::Register(L); diff --git a/src/serialization.cpp b/src/serialization.cpp index c0fbe10e..79f66fca 100644 --- a/src/serialization.cpp +++ b/src/serialization.cpp @@ -133,7 +133,8 @@ void decompressZlib(std::istream &is, std::ostream &os) if(z.avail_in == 0) { z.next_in = (Bytef*)input_buffer; - input_buffer_len = is.readsome(input_buffer, bufsize); + is.read(input_buffer, bufsize); + input_buffer_len = is.gcount(); z.avail_in = input_buffer_len; //dstream<<"read fail="<loadMeta(); + } else { + m_env->loadDefaultMeta(); } // Add some test ActiveBlockModifiers to environment @@ -585,21 +589,7 @@ void Server::AsyncRunStep(bool initial_step) MutexAutoLock lock(m_env_mutex); while (!m_admin_chat->command_queue.empty()) { ChatEvent *evt = m_admin_chat->command_queue.pop_frontNoEx(); - if (evt->type == CET_NICK_ADD) { - // The terminal informed us of its nick choice - m_admin_nick = ((ChatEventNick *)evt)->nick; - if (!m_script->getAuth(m_admin_nick, NULL, NULL)) { - errorstream << "You haven't set up an account." << std::endl - << "Please log in using the client as '" - << m_admin_nick << "' with a secure password." << std::endl - << "Until then, you can't execute admin tasks via the console," << std::endl - << "and everybody can claim the user account instead of you," << std::endl - << "giving them full control over this server." << std::endl; - } - } else { - assert(evt->type == CET_CHAT); - handleAdminChat((ChatEventChat *)evt); - } + handleChatInterfaceEvent(evt); delete evt; } } @@ -685,16 +675,18 @@ void Server::AsyncRunStep(bool initial_step) ScopeProfiler sp(g_profiler, "Server: checking added and deleted objs"); // Radius inside which objects are active - s16 radius = g_settings->getS16("active_object_send_range_blocks"); - s16 player_radius = g_settings->getS16("player_transfer_distance"); + static const s16 radius = + g_settings->getS16("active_object_send_range_blocks") * MAP_BLOCKSIZE; - if (player_radius == 0 && g_settings->exists("unlimited_player_transfer_distance") && - !g_settings->getBool("unlimited_player_transfer_distance")) + // Radius inside which players are active + static const bool is_transfer_limited = + g_settings->exists("unlimited_player_transfer_distance") && + !g_settings->getBool("unlimited_player_transfer_distance"); + static const s16 player_transfer_dist = g_settings->getS16("player_transfer_distance") * MAP_BLOCKSIZE; + s16 player_radius = player_transfer_dist; + if (player_radius == 0 && is_transfer_limited) player_radius = radius; - radius *= MAP_BLOCKSIZE; - player_radius *= MAP_BLOCKSIZE; - for (std::map::iterator i = clients.begin(); i != clients.end(); ++i) { @@ -998,8 +990,7 @@ void Server::AsyncRunStep(bool initial_step) { float &counter = m_emergethread_trigger_timer; counter += dtime; - if(counter >= 2.0) - { + if (counter >= 2.0) { counter = 0.0; m_emerge->startThreads(); @@ -1010,8 +1001,9 @@ void Server::AsyncRunStep(bool initial_step) { float &counter = m_savemap_timer; counter += dtime; - if(counter >= g_settings->getFloat("server_map_save_interval")) - { + static const float save_interval = + g_settings->getFloat("server_map_save_interval"); + if (counter >= save_interval) { counter = 0.0; MutexAutoLock lock(m_env_mutex); @@ -1473,7 +1465,7 @@ void Server::printToConsoleOnly(const std::string &text) m_admin_chat->outgoing_queue.push_back( new ChatEventChat("", utf8_to_wide(text))); } else { - std::cout << text; + std::cout << text << std::endl; } } @@ -1854,7 +1846,7 @@ void Server::SendPlayerHP(u16 peer_id) { DSTACK(FUNCTION_NAME); PlayerSAO *playersao = getPlayerSAO(peer_id); - // In some rare case, if the player is disconnected + // In some rare case if the player is disconnected // while Lua call l_punch, for example, this can be NULL if (!playersao) return; @@ -2523,9 +2515,11 @@ void Server::sendDetachedInventories(u16 peer_id) void Server::DiePlayer(u16 peer_id) { DSTACK(FUNCTION_NAME); - PlayerSAO *playersao = getPlayerSAO(peer_id); - assert(playersao); + // In some rare cases this can be NULL -- if the player is disconnected + // when a Lua function modifies l_punch, for example + if (!playersao) + return; infostream << "Server::DiePlayer(): Player " << playersao->getPlayer()->getName() @@ -2579,7 +2573,7 @@ void Server::DenyAccessVerCompliant(u16 peer_id, u16 proto_ver, AccessDeniedCode const std::string &str_reason, bool reconnect) { if (proto_ver >= 25) { - SendAccessDenied(peer_id, reason, str_reason); + SendAccessDenied(peer_id, reason, str_reason, reconnect); } else { std::wstring wreason = utf8_to_wide( reason == SERVER_ACCESSDENIED_CUSTOM_STRING ? str_reason : @@ -2749,8 +2743,28 @@ void Server::UpdateCrafting(Player* player) plist->changeItem(0, preview); } +void Server::handleChatInterfaceEvent(ChatEvent *evt) +{ + if (evt->type == CET_NICK_ADD) { + // The terminal informed us of its nick choice + m_admin_nick = ((ChatEventNick *)evt)->nick; + if (!m_script->getAuth(m_admin_nick, NULL, NULL)) { + errorstream << "You haven't set up an account." << std::endl + << "Please log in using the client as '" + << m_admin_nick << "' with a secure password." << std::endl + << "Until then, you can't execute admin tasks via the console," << std::endl + << "and everybody can claim the user account instead of you," << std::endl + << "giving them full control over this server." << std::endl; + } + } else { + assert(evt->type == CET_CHAT); + handleAdminChat((ChatEventChat *)evt); + } +} + std::wstring Server::handleChat(const std::string &name, const std::wstring &wname, - const std::wstring &wmessage, u16 peer_id_to_avoid_sending) + const std::wstring &wmessage, bool check_shout_priv, + u16 peer_id_to_avoid_sending) { // If something goes wrong, this player is to blame RollbackScopeActor rollback_scope(m_rollback, @@ -2778,10 +2792,15 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna else line += L"-!- Invalid command: " + str_split(wcmd, L' ')[0]; } else { - line += L"<"; - line += wname; - line += L"> "; - line += wmessage; + if (check_shout_priv && !checkPriv(name, "shout")) { + line += L"-!- You don't have permission to shout."; + broadcast_line = false; + } else { + line += L"<"; + line += wname; + line += L"> "; + line += wmessage; + } } /* @@ -3023,7 +3042,8 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask) return false; SendHUDSetFlags(player->peer_id, flags, mask); - player->hud_flags = flags; + player->hud_flags &= ~mask; + player->hud_flags |= flags; PlayerSAO* playersao = player->getPlayerSAO(); @@ -3176,19 +3196,7 @@ u32 Server::addParticleSpawner(u16 amount, float spawntime, peer_id = player->peer_id; } - u32 id = 0; - for(;;) // look for unused particlespawner id - { - id++; - if (std::find(m_particlespawner_ids.begin(), - m_particlespawner_ids.end(), id) - == m_particlespawner_ids.end()) - { - m_particlespawner_ids.push_back(id); - break; - } - } - + u32 id = m_env->addParticleSpawner(spawntime); SendAddParticleSpawner(peer_id, amount, spawntime, minpos, maxpos, minvel, maxvel, minacc, maxacc, minexptime, maxexptime, minsize, maxsize, @@ -3211,13 +3219,16 @@ void Server::deleteParticleSpawner(const std::string &playername, u32 id) peer_id = player->peer_id; } - m_particlespawner_ids.erase( - std::remove(m_particlespawner_ids.begin(), - m_particlespawner_ids.end(), id), - m_particlespawner_ids.end()); + m_env->deleteParticleSpawner(id); SendDeleteParticleSpawner(peer_id, id); } +void Server::deleteParticleSpawnerAll(u32 id) +{ + m_env->deleteParticleSpawner(id); + SendDeleteParticleSpawner(PEER_ID_INEXISTENT, id); +} + Inventory* Server::createDetachedInventory(const std::string &name) { if(m_detached_inventories.count(name) > 0){ @@ -3371,26 +3382,24 @@ v3f Server::findSpawnPos() return nodeposf * BS; } - s16 water_level = map.getWaterLevel(); - s16 vertical_spawn_range = g_settings->getS16("vertical_spawn_range"); bool is_good = false; // Try to find a good place a few times - for(s32 i = 0; i < 1000 && !is_good; i++) { + for(s32 i = 0; i < 4000 && !is_good; i++) { s32 range = 1 + i; // We're going to try to throw the player to this position v2s16 nodepos2d = v2s16( -range + (myrand() % (range * 2)), -range + (myrand() % (range * 2))); - // Get ground height at point - s16 groundheight = map.findGroundLevel(nodepos2d); - // Don't go underwater or to high places - if (groundheight <= water_level || - groundheight > water_level + vertical_spawn_range) + // Get spawn level at point + s16 spawn_level = m_emerge->getSpawnLevelAtPoint(nodepos2d); + // Continue if MAX_MAP_GENERATION_LIMIT was returned by + // the mapgen to signify an unsuitable spawn position + if (spawn_level == MAX_MAP_GENERATION_LIMIT) continue; - v3s16 nodepos(nodepos2d.X, groundheight, nodepos2d.Y); + v3s16 nodepos(nodepos2d.X, spawn_level, nodepos2d.Y); s32 air_count = 0; for (s32 i = 0; i < 10; i++) { @@ -3502,9 +3511,11 @@ void dedicated_server_loop(Server &server, bool &kill) IntervalLimiter m_profiler_interval; - for(;;) - { - float steplen = g_settings->getFloat("dedicated_server_step"); + static const float steplen = g_settings->getFloat("dedicated_server_step"); + static const float profiler_print_interval = + g_settings->getFloat("profiler_print_interval"); + + for(;;) { // This is kind of a hack but can be done like this // because server.step() is very light { @@ -3526,10 +3537,7 @@ void dedicated_server_loop(Server &server, bool &kill) /* Profiler */ - float profiler_print_interval = - g_settings->getFloat("profiler_print_interval"); - if(profiler_print_interval != 0) - { + if (profiler_print_interval != 0) { if(m_profiler_interval.step(steplen, profiler_print_interval)) { infostream<<"Profiler:"< m_detached_inventories; - /* - Particles - */ - std::vector m_particlespawner_ids; - DISABLE_CLASS_COPY(Server); }; diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 6e79b55a..de7962a6 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -69,8 +69,12 @@ std::vector getLocal() std::vector getOnline() { std::ostringstream geturl; + + u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ? + CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN; + geturl << g_settings->get("serverlist_url") << - "/list?proto_version_min=" << CLIENT_PROTOCOL_VERSION_MIN << + "/list?proto_version_min=" << proto_version_min << "&proto_version_max=" << CLIENT_PROTOCOL_VERSION_MAX; Json::Value root = fetchJsonValue(geturl.str(), NULL); diff --git a/src/settings.cpp b/src/settings.cpp index e1e01e81..56afa613 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -21,7 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlichttypes_bloated.h" #include "exceptions.h" #include "threading/mutex_auto_lock.h" -#include "strfnd.h" +#include "util/strfnd.h" #include #include #include @@ -880,8 +880,14 @@ bool Settings::remove(const std::string &name) { MutexAutoLock lock(m_mutex); - delete m_settings[name].group; - return m_settings.erase(name); + std::map::iterator it = m_settings.find(name); + if (it != m_settings.end()) { + delete it->second.group; + m_settings.erase(it); + return true; + } else { + return false; + } } diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp index bdeb1b82..f7e14dd6 100644 --- a/src/settings_translation_file.cpp +++ b/src/settings_translation_file.cpp @@ -88,9 +88,9 @@ fake_function() { gettext("Toggle camera mode key"); gettext("Key for switching between first- and third-person camera.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); gettext("View range increase key"); - gettext("Key for increasing the viewing range. Modifies the minimum viewing range.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); + gettext("Key for increasing the viewing range.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); gettext("View range decrease key"); - gettext("Key for decreasing the viewing range. Modifies the minimum viewing range.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); + gettext("Key for decreasing the viewing range.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); gettext("Print stacks"); gettext("Key for printing debug stacks. Used for development.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3"); gettext("Network"); @@ -98,8 +98,12 @@ fake_function() { gettext("Address to connect to.\nLeave this blank to start a local server.\nNote that the address field in the main menu overrides this setting."); gettext("Remote port"); gettext("Port to connect to (UDP).\nNote that the port field in the main menu overrides this setting."); + gettext("Support older servers"); + gettext("Whether to support older servers before protocol version 25.\nEnable if you want to connect to 0.4.12 servers and before.\nServers starting with 0.4.13 will work, 0.4.12-dev servers may work.\nDisabling this option will protect your password better."); gettext("Saving map received from server"); gettext("Save the map received by the client on disk."); + gettext("Show entity selection boxes"); + gettext("Show entity selection boxes"); gettext("Connect to external media server"); gettext("Enable usage of remote media server (if provided by server).\nRemote servers offer a significantly faster way to download media (e.g. textures)\nwhen connecting to the server."); gettext("Serverlist URL"); @@ -109,10 +113,10 @@ fake_function() { gettext("Graphics"); gettext("In-Game"); gettext("Basic"); + gettext("VBO"); + gettext("Enable VBO"); gettext("Fog"); gettext("Whether to fog out the end of the visible area."); - gettext("New style water"); - gettext("Enable a bit lower water surface, so it doesn't \"fill\" the node completely.\nNote that this is not quite optimized and that smooth lighting on the\nwater surface doesn't work with this."); gettext("Leaves style"); gettext("Leaves style:\n- Fancy: all faces visible\n- Simple: only outer faces, if defined special_tiles are used\n- Opaque: disable transparency"); gettext("Connect glass"); @@ -123,6 +127,8 @@ fake_function() { gettext("Clouds are a client side effect."); gettext("3D clouds"); gettext("Use 3D cloud look instead of flat."); + gettext("Node highlighting"); + gettext("Method used to highlight selected object."); gettext("Filtering"); gettext("Mipmapping"); gettext("Use mip mapping to scale textures. May slightly increase performance."); @@ -136,13 +142,14 @@ fake_function() { gettext("Filtered textures can blend RGB values with fully-transparent neighbors,\nwhich PNG optimizers usually discard, sometimes resulting in a dark or\nlight edge to transparent textures. Apply this filter to clean that up\nat texture load time."); gettext("Minimum texture size for filters"); gettext("When using bilinear/trilinear/anisotropic filters, low-resolution textures\ncan be blurred, so automatically upscale them with nearest-neighbor\ninterpolation to preserve crisp pixels. This sets the minimum texture size\nfor the upscaled textures; higher values look sharper, but require more\nmemory. Powers of 2 are recommended. Setting this higher than 1 may not\nhave a visible effect unless bilinear/trilinear/anisotropic filtering is\nenabled."); - gettext("Preload inventory textures"); - gettext("Pre-generate all item visuals used in the inventory.\nThis increases startup time, but runs smoother in-game.\nThe generated textures can easily exceed your VRAM, causing artifacts in the inventory."); gettext("FSAA"); gettext("Experimental option, might cause visible spaces between blocks\nwhen set to higher number than 0."); gettext("Shaders"); gettext("Shaders"); gettext("Shaders allow advanced visul effects and may increase performance on some video cards.\nThy only work with the OpenGL video backend."); + gettext("Tone Mapping"); + gettext("Filmic tone mapping"); + gettext("Enables filmic tone mapping"); gettext("Bumpmapping"); gettext("Bumpmapping"); gettext("Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack\nor need to be auto-generated.\nRequires shaders to be enabled."); @@ -176,20 +183,16 @@ fake_function() { gettext("Waving plants"); gettext("Set to true enables waving plants.\nRequires shaders to be enabled."); gettext("Advanced"); - gettext("Wanted FPS"); - gettext("Minimum wanted FPS.\nThe amount of rendered stuff is dynamically set according to this. and viewing range min and max."); gettext("Maximum FPS"); gettext("If FPS would go higher than this, limit it by sleeping\nto not waste CPU power for no benefit."); gettext("FPS in pause menu"); gettext("Maximum FPS when game is paused."); - gettext("Viewing range maximum"); - gettext("The allowed adjustment range for the automatic rendering range adjustment.\nSet this to be equal to viewing range minimum to disable the auto-adjustment algorithm."); - gettext("Viewing range minimum"); - gettext("The allowed adjustment range for the automatic rendering range adjustment.\nSet this to be equal to viewing range minimum to disable the auto-adjustment algorithm."); + gettext("Viewing range"); + gettext("View distance in nodes.\nMin = 20"); gettext("Screen width"); - gettext("Vertical initial window size."); + gettext("Width component of the initial window size."); gettext("Screen height"); - gettext("Horizontal initial window size."); + gettext("Height component of the initial window size."); gettext("Full screen"); gettext("Fullscreen mode."); gettext("Full screen BPP"); @@ -213,7 +216,7 @@ fake_function() { gettext("Fall bobbing"); gettext("Multiplier for fall bobbing.\nFor example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."); gettext("3D mode"); - gettext("3D support.\nCurrently supported:\n- none: no 3d output.\n- anaglyph: cyan/magenta color 3d.\n- interlaced: odd/even line based polarisation screen support.\n- topbottom: split screen top/bottom.\n- sidebyside: split screen side by side."); + gettext("3D support.\nCurrently supported:\n- none: no 3d output.\n- anaglyph: cyan/magenta color 3d.\n- interlaced: odd/even line based polarisation screen support.\n- topbottom: split screen top/bottom.\n- sidebyside: split screen side by side.\n- pageflip: quadbuffer based 3d."); gettext("Console color"); gettext("In-game chat console background color (R,G,B)."); gettext("Console alpha"); @@ -230,8 +233,6 @@ fake_function() { gettext("Whether node texture animations should be desynchronized per mapblock."); gettext("Maximum hotbar width"); gettext("Maximum proportion of current window to be used for hotbar.\nUseful if there's something to be displayed right or left of hotbar."); - gettext("Node highlighting"); - gettext("Enable selection highlighting for nodes (disables selectionbox)."); gettext("Mesh cache"); gettext("Enables caching of facedir rotated meshes."); gettext("Minimap"); @@ -244,6 +245,8 @@ fake_function() { gettext("Make fog and sky colors depend on daytime (dawn/sunset) and view direction."); gettext("Ambient occlusion gamma"); gettext("The strength (darkness) of node ambient-occlusion shading.\nLower is darker, Higher is lighter. The valid range of values for this\nsetting is 0.25 to 4.0 inclusive. If the value is out of range it will be\nset to the nearest valid value."); + gettext("Inventory items animations"); + gettext("Enables animation of inventory items."); gettext("Menus"); gettext("Clouds in menu"); gettext("Use a cloud animation for the main menu background."); @@ -273,6 +276,10 @@ fake_function() { gettext("Fallback font shadow alpha"); gettext("Screenshot folder"); gettext("Path to save screenshots at."); + gettext("Screenshot format"); + gettext("Format of screenshots."); + gettext("Screenshot quality"); + gettext("Screenshot quality. Only used for JPEG format.\n1 means worst quality; 100 means best quality.\nUse 0 for default quality."); gettext("Advanced"); gettext("DPI"); gettext("Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens."); @@ -337,6 +344,8 @@ fake_function() { gettext("New users need to input this password."); gettext("Default privileges"); gettext("The privileges that new users automatically get.\nSee /privs in game for a full list on your server and mod configuration."); + gettext("Basic Privileges"); + gettext("Privileges that players with basic_privs can grant"); gettext("Unlimited player transfer distance"); gettext("Whether players are shown to clients without any range limit.\nDeprecated, use the setting player_transfer_distance instead."); gettext("Player transfer distance"); @@ -404,6 +413,12 @@ fake_function() { gettext("See http://www.sqlite.org/pragma.html#pragma_synchronous"); gettext("Dedicated server step"); gettext("Length of a server tick and the interval at which objects are generally updated over network."); + gettext("Active Block Management interval"); + gettext("Time in between active block management cycles"); + gettext("Active Block Modifier interval"); + gettext("Length of time between ABM execution cycles"); + gettext("NodeTimer interval"); + gettext("Length of time between NodeTimer execution cycles"); gettext("Ignore world errors"); gettext("If enabled, invalid world data won't cause the server to shut down.\nOnly enable this if you know what you are doing."); gettext("Liquid loop max"); @@ -422,7 +437,7 @@ fake_function() { gettext("Map generation limit"); gettext("Where the map generator stops.\nPlease note:\n- Limited to 31000 (setting above has no effect)\n- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n- Those groups have an offset of -32, -32 nodes from the origin.\n- Only groups which are within the map_generation_limit are generated"); gettext("Mapgen flags"); - gettext("Global map generation attributes.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with \"no\" are used to explicitly disable them.\n'trees' and 'flat' flags only have effect in mgv6."); + gettext("Global map generation attributes.\nIn Mapgen v6 the 'decorations' flag controls all decorations except trees\nand junglegrass, in all other mapgens this flag controls all decorations.\nThe default flags set in the engine are: caves, light, decorations\nThe flags string modifies the engine defaults.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with 'no' are used to explicitly disable them."); gettext("Advanced"); gettext("Chunk size"); gettext("Size of chunks to be generated at once by mapgen, stated in mapblocks (16 nodes)."); @@ -442,6 +457,8 @@ fake_function() { gettext("Mapgen biome humidity noise parameters"); gettext("Mapgen biome humidity blend noise parameters"); gettext("Mapgen v5"); + gettext("Mapgen v5 cave width"); + gettext("Controls width of tunnels, a smaller value creates wider tunnels."); gettext("Mapgen v5 filler depth noise parameters"); gettext("Mapgen v5 factor noise parameters"); gettext("Mapgen v5 height noise parameters"); @@ -449,9 +466,9 @@ fake_function() { gettext("Mapgen v5 cave2 noise parameters"); gettext("Mapgen v6"); gettext("Mapgen v6 flags"); - gettext("Map generation attributes specific to Mapgen V6.\nWhen snowbiomes are enabled jungles are enabled and the jungles flag is ignored.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with \"no\" are used to explicitly disable them."); + gettext("Map generation attributes specific to Mapgen v6.\nWhen snowbiomes are enabled jungles are automatically enabled, the 'jungles' flag is ignored.\nThe default flags set in the engine are: biomeblend, mudflow\nThe flags string modifies the engine defaults.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with 'no' are used to explicitly disable them."); gettext("Mapgen v6 desert frequency"); - gettext("Controls size of deserts and beaches in Mapgen V6.\nWhen snowbiomes are enabled 'mgv6_freq_desert' is ignored."); + gettext("Controls size of deserts and beaches in Mapgen v6.\nWhen snowbiomes are enabled 'mgv6_freq_desert' is ignored."); gettext("Mapgen v6 beach frequency"); gettext("Mapgen v6 terrain base noise parameters"); gettext("Mapgen v6 terrain altitude noise parameters"); @@ -466,7 +483,9 @@ fake_function() { gettext("Mapgen v6 apple trees noise parameters"); gettext("Mapgen v7"); gettext("Mapgen v7 flags"); - gettext("Map generation attributes specific to Mapgen V7.\n'ridges' are the rivers.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with \"no\" are used to explicitly disable them."); + gettext("Map generation attributes specific to Mapgen v7.\nThe 'ridges' flag controls the rivers.\nThe default flags set in the engine are: mountains, ridges\nThe flags string modifies the engine defaults.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with 'no' are used to explicitly disable them."); + gettext("Mapgen v7 cave width"); + gettext("Controls width of tunnels, a smaller value creates wider tunnels."); gettext("Mapgen v7 terrain base noise parameters"); gettext("Mapgen v7 terrain altitude noise parameters"); gettext("Mapgen v7 terrain persistation noise parameters"); @@ -478,11 +497,101 @@ fake_function() { gettext("Mapgen v7 ridge noise parameters"); gettext("Mapgen v7 cave1 noise parameters"); gettext("Mapgen v7 cave2 noise parameters"); + gettext("Mapgen flat"); + gettext("Mapgen flat flags"); + gettext("Map generation attributes specific to Mapgen flat.\nOccasional lakes and hills can be added to the flat world.\nThe default flags set in the engine are: none\nThe flags string modifies the engine defaults.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with 'no' are used to explicitly disable them."); + gettext("Mapgen flat ground level"); + gettext("Y of flat ground."); + gettext("Mapgen flat large cave depth"); + gettext("Y of upper limit of large pseudorandom caves."); + gettext("Mapgen flat cave width"); + gettext("Controls width of tunnels, a smaller value creates wider tunnels."); + gettext("Mapgen flat lake threshold"); + gettext("Terrain noise threshold for lakes.\nControls proportion of world area covered by lakes.\nAdjust towards 0.0 for a larger proportion."); + gettext("Mapgen flat lake steepness"); + gettext("Controls steepness/depth of lake depressions."); + gettext("Mapgen flat hill threshold"); + gettext("Terrain noise threshold for hills.\nControls proportion of world area covered by hills.\nAdjust towards 0.0 for a larger proportion."); + gettext("Mapgen flat hill steepness"); + gettext("Controls steepness/height of hills."); + gettext("Mapgen flat terrain noise parameters"); + gettext("Determines terrain shape.\nThe 3 numbers in brackets control the scale of the\nterrain, the 3 numbers should be identical."); + gettext("Mapgen flat filler depth noise parameters"); + gettext("Mapgen flat cave1 noise parameters"); + gettext("Mapgen flat cave2 noise parameters"); + gettext("Mapgen fractal"); + gettext("Mapgen fractal cave width"); + gettext("Controls width of tunnels, a smaller value creates wider tunnels."); + gettext("Mapgen fractal fractal"); + gettext("Choice of 18 fractals from 9 formulas.\n1 = 4D \"Roundy\" mandelbrot set.\n2 = 4D \"Roundy\" julia set.\n3 = 4D \"Squarry\" mandelbrot set.\n4 = 4D \"Squarry\" julia set.\n5 = 4D \"Mandy Cousin\" mandelbrot set.\n6 = 4D \"Mandy Cousin\" julia set.\n7 = 4D \"Variation\" mandelbrot set.\n8 = 4D \"Variation\" julia set.\n9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n11 = 3D \"Christmas Tree\" mandelbrot set.\n12 = 3D \"Christmas Tree\" julia set.\n13 = 3D \"Mandelbulb\" mandelbrot set.\n14 = 3D \"Mandelbulb\" julia set.\n15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n16 = 3D \"Cosine Mandelbulb\" julia set.\n17 = 4D \"Mandelbulb\" mandelbrot set.\n18 = 4D \"Mandelbulb\" julia set."); + gettext("Mapgen fractal iterations"); + gettext("Iterations of the recursive function.\nControls the amount of fine detail."); + gettext("Mapgen fractal scale"); + gettext("Approximate (X,Y,Z) scale of fractal in nodes."); + gettext("Mapgen fractal offset"); + gettext("(X,Y,Z) offset of fractal from world centre in units of 'scale'.\nUsed to move a suitable spawn area of low land close to (0, 0).\nThe default is suitable for mandelbrot sets, it needs to be edited for julia sets.\nRange roughly -2 to 2. Multiply by 'scale' for offset in nodes."); + gettext("Mapgen fractal slice w"); + gettext("W co-ordinate of the generated 3D slice of a 4D fractal.\nDetermines which 3D slice of the 4D shape is generated.\nHas no effect on 3D fractals.\nRange roughly -2 to 2."); + gettext("Mapgen fractal julia x"); + gettext("Julia set only: X component of hypercomplex constant determining julia shape.\nRange roughly -2 to 2."); + gettext("Mapgen fractal julia y"); + gettext("Julia set only: Y component of hypercomplex constant determining julia shape.\nRange roughly -2 to 2."); + gettext("Mapgen fractal julia z"); + gettext("Julia set only: Z component of hypercomplex constant determining julia shape.\nRange roughly -2 to 2."); + gettext("Mapgen fractal julia w"); + gettext("Julia set only: W component of hypercomplex constant determining julia shape.\nHas no effect on 3D fractals.\nRange roughly -2 to 2."); + gettext("Mapgen fractal seabed noise parameters"); + gettext("Mapgen fractal filler depth noise parameters"); + gettext("Mapgen fractal cave1 noise parameters"); + gettext("Mapgen fractal cave2 noise parameters"); + gettext("Mapgen Valleys"); + gettext("General"); + gettext("Valleys C Flags"); + gettext("Map generation attributes specific to Mapgen Valleys.\n'altitude_chill' makes higher elevations colder, which may cause biome issues.\n'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool,\nit may interfere with delicately adjusted biomes.\nThe default flags set in the engine are: altitude_chill, humid_rivers\nThe flags string modifies the engine defaults.\nFlags that are not specified in the flag string are not modified from the default.\nFlags starting with 'no' are used to explicitly disable them."); + gettext("Altitude Chill"); + gettext("The altitude at which temperature drops by 20C"); + gettext("Large cave depth"); + gettext("Depth below which you'll find large caves."); + gettext("Lava Features"); + gettext("Creates unpredictable lava features in caves.\nThese can make mining difficult. Zero disables them. (0-10)"); + gettext("Massive cave depth"); + gettext("Depth below which you'll find massive caves."); + gettext("River Depth"); + gettext("How deep to make rivers"); + gettext("River Size"); + gettext("How wide to make rivers"); + gettext("Water Features"); + gettext("Creates unpredictable water features in caves.\nThese can make mining difficult. Zero disables them. (0-10)"); + gettext("Cave width"); + gettext("Controls width of tunnels, a smaller value creates wider tunnels."); + gettext("Noises"); + gettext("Cave noise #1"); + gettext("Caves and tunnels form at the intersection of the two noises"); + gettext("Cave noise #2"); + gettext("Caves and tunnels form at the intersection of the two noises"); + gettext("Filler Depth"); + gettext("The depth of dirt or other filler"); + gettext("Massive cave noise"); + gettext("Massive caves form here."); + gettext("River Noise"); + gettext("River noise -- rivers occur close to zero"); + gettext("Terrain Height"); + gettext("Base terrain height"); + gettext("Valley Depth"); + gettext("Raises terrain to make valleys around the rivers"); + gettext("Valley Fill"); + gettext("Slope and fill work together to modify the heights"); + gettext("Valley Profile"); + gettext("Amplifies the valleys"); + gettext("Valley Slope"); + gettext("Slope and fill work together to modify the heights"); gettext("Security"); gettext("Enable mod security"); gettext("Prevent mods from doing insecure things like running shell commands."); gettext("Trusted mods"); gettext("Comma-separated list of trusted mods that are allowed to access insecure\nfunctions even when mod security is on (via request_insecure_environment())."); + gettext("HTTP Mods"); + gettext("Comma-seperated list of mods that are allowed to access HTTP APIs, which\nallow them to upload and download data to/from the internet."); gettext("Client and Server"); gettext("Player name"); gettext("Name of the player.\nWhen running a server, clients connecting with this name are admins.\nWhen starting from the main menu, this is overridden."); diff --git a/src/shader.cpp b/src/shader.cpp index 917d878b..e13ab8df 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -35,7 +35,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "EShaderTypes.h" #include "log.h" #include "gamedef.h" -#include "strfnd.h" // trim() #include "client/tile.h" /* @@ -764,22 +763,25 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype, else shaders_header += "0\n"; - if(pixel_program != "") - pixel_program = shaders_header + pixel_program; - if(vertex_program != "") - vertex_program = shaders_header + vertex_program; - if(geometry_program != "") - geometry_program = shaders_header + geometry_program; + if (g_settings->getBool("tone_mapping")) + shaders_header += "#define ENABLE_TONE_MAPPING\n"; + // Call addHighLevelShaderMaterial() or addShaderMaterial() const c8* vertex_program_ptr = 0; const c8* pixel_program_ptr = 0; const c8* geometry_program_ptr = 0; - if(vertex_program != "") + if (!vertex_program.empty()) { + vertex_program = shaders_header + vertex_program; vertex_program_ptr = vertex_program.c_str(); - if(pixel_program != "") + } + if (!pixel_program.empty()) { + pixel_program = shaders_header + pixel_program; pixel_program_ptr = pixel_program.c_str(); - if(geometry_program != "") + } + if (!geometry_program.empty()) { + geometry_program = shaders_header + geometry_program; geometry_program_ptr = geometry_program.c_str(); + } s32 shadermat = -1; if(is_highlevel){ infostream<<"Compiling high level shaders for "<& Sky::getBoundingBox() const -{ - return Box; -} - //! renders the node. void Sky::render() { diff --git a/src/sky.h b/src/sky.h index 5023cc68..f1989177 100644 --- a/src/sky.h +++ b/src/sky.h @@ -42,7 +42,8 @@ public: //! renders the node. virtual void render(); - virtual const core::aabbox3d& getBoundingBox() const; + virtual const aabb3f &getBoundingBox() const + { return m_box; } // Used by Irrlicht for optimizing rendering virtual video::SMaterial& getMaterial(u32 i) @@ -74,7 +75,7 @@ public: } private: - core::aabbox3d Box; + aabb3f m_box; video::SMaterial m_materials[SKY_MATERIAL_COUNT]; // How much sun & moon transition should affect horizon color diff --git a/src/socket.cpp b/src/socket.cpp index 47fffcc4..17fa1924 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -44,8 +44,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include -typedef SOCKET socket_t; -typedef int socklen_t; + #define LAST_SOCKET_ERR() WSAGetLastError() + typedef SOCKET socket_t; + typedef int socklen_t; #else #include #include @@ -54,7 +55,8 @@ typedef int socklen_t; #include #include #include -typedef int socket_t; + #define LAST_SOCKET_ERR() (errno) + typedef int socket_t; #endif // Set to true to enable verbose debug output @@ -339,7 +341,8 @@ bool UDPSocket::init(bool ipv6, bool noExceptions) if (noExceptions) { return false; } else { - throw SocketException("Failed to create socket"); + throw SocketException(std::string("Failed to create socket: error ") + + itos(LAST_SOCKET_ERR())); } } diff --git a/src/socket.h b/src/socket.h index c7dd78f6..8d1ad70f 100644 --- a/src/socket.h +++ b/src/socket.h @@ -45,7 +45,7 @@ extern bool socket_enable_debug_output; class SocketException : public BaseException { public: - SocketException(const char *s): + SocketException(const std::string &s): BaseException(s) { } @@ -54,7 +54,7 @@ public: class ResolveError : public BaseException { public: - ResolveError(const char *s): + ResolveError(const std::string &s): BaseException(s) { } @@ -63,7 +63,7 @@ public: class SendFailedException : public BaseException { public: - SendFailedException(const char *s): + SendFailedException(const std::string &s): BaseException(s) { } diff --git a/src/sound_openal.cpp b/src/sound_openal.cpp index df316fbf..e2b6d937 100644 --- a/src/sound_openal.cpp +++ b/src/sound_openal.cpp @@ -39,7 +39,6 @@ with this program; ifnot, write to the Free Software Foundation, Inc., #include #include #include "log.h" -#include "filesys.h" #include "util/numeric.h" // myrand() #include "porting.h" #include @@ -111,31 +110,19 @@ struct SoundBuffer std::vector buffer; }; -SoundBuffer* loadOggFile(const std::string &filepath) +SoundBuffer *load_opened_ogg_file(OggVorbis_File *oggFile, + const std::string &filename_for_logging) { int endian = 0; // 0 for Little-Endian, 1 for Big-Endian int bitStream; long bytes; char array[BUFFER_SIZE]; // Local fixed size array vorbis_info *pInfo; - OggVorbis_File oggFile; - - // Do a dumb-ass static string copy for old versions of ov_fopen - // because they expect a non-const char* - char nonconst[10000]; - snprintf(nonconst, 10000, "%s", filepath.c_str()); - // Try opening the given file - //if(ov_fopen(filepath.c_str(), &oggFile) != 0) - if(ov_fopen(nonconst, &oggFile) != 0) - { - infostream<<"Audio: Error opening "<channels == 1) @@ -150,12 +137,13 @@ SoundBuffer* loadOggFile(const std::string &filepath) do { // Read up to a buffer's worth of decoded sound data - bytes = ov_read(&oggFile, array, BUFFER_SIZE, endian, 2, 1, &bitStream); + bytes = ov_read(oggFile, array, BUFFER_SIZE, endian, 2, 1, &bitStream); if(bytes < 0) { - ov_clear(&oggFile); - infostream<<"Audio: Error decoding "<= 1.3.2, as + // previous versions expect a non-const char * + if (ov_fopen(path.c_str(), &oggFile) != 0) { + infostream << "Audio: Error opening " << path + << " for decoding" << std::endl; + return NULL; + } + + return load_opened_ogg_file(&oggFile, path); +} + +struct BufferSource { + const char *buf; + size_t cur_offset; + size_t len; +}; + +size_t buffer_sound_read_func(void *ptr, size_t size, size_t nmemb, void *datasource) +{ + BufferSource *s = (BufferSource *)datasource; + size_t copied_size = MYMIN(s->len - s->cur_offset, size); + memcpy(ptr, s->buf + s->cur_offset, copied_size); + s->cur_offset += copied_size; + return copied_size; +} + +int buffer_sound_seek_func(void *datasource, ogg_int64_t offset, int whence) +{ + BufferSource *s = (BufferSource *)datasource; + if (whence == SEEK_SET) { + if (offset < 0 || (size_t)MYMAX(offset, 0) >= s->len) { + // offset out of bounds + return -1; + } + s->cur_offset = offset; + return 0; + } else if (whence == SEEK_CUR) { + if ((size_t)MYMIN(-offset, 0) > s->cur_offset + || s->cur_offset + offset > s->len) { + // offset out of bounds + return -1; + } + s->cur_offset += offset; + return 0; + } + // invalid whence param (SEEK_END doesn't have to be supported) + return -1; +} + +long BufferSourceell_func(void *datasource) +{ + BufferSource *s = (BufferSource *)datasource; + return s->cur_offset; +} + +static ov_callbacks g_buffer_ov_callbacks = { + &buffer_sound_read_func, + &buffer_sound_seek_func, + NULL, + &BufferSourceell_func +}; + +SoundBuffer *load_ogg_from_buffer(const std::string &buf, const std::string &id_for_log) +{ + OggVorbis_File oggFile; + + BufferSource s; + s.buf = buf.c_str(); + s.cur_offset = 0; + s.len = buf.size(); + + if (ov_open_callbacks(&s, &oggFile, NULL, 0, g_buffer_ov_callbacks) != 0) { + infostream << "Audio: Error opening " << id_for_log + << " for decoding" << std::endl; + return NULL; + } + + return load_opened_ogg_file(&oggFile, id_for_log); +} + struct PlayingSound { ALuint source_id; @@ -195,7 +269,6 @@ private: OnDemandSoundFetcher *m_fetcher; ALCdevice *m_device; ALCcontext *m_context; - bool m_can_vorbis; int m_next_id; std::map > m_buffers; std::map m_sounds_playing; @@ -206,12 +279,11 @@ public: m_fetcher(fetcher), m_device(NULL), m_context(NULL), - m_can_vorbis(false), m_next_id(1), m_is_initialized(false) { ALCenum error = ALC_NO_ERROR; - + infostream<<"Audio: Initializing..."< >::iterator i = @@ -375,7 +439,7 @@ public: m_sounds_playing[id] = sound; return id; } - + void deleteSound(int id) { std::map::iterator i = @@ -383,7 +447,7 @@ public: if(i == m_sounds_playing.end()) return; PlayingSound *sound = i->second; - + alDeleteSources(1, &sound->source_id); delete sound; @@ -411,7 +475,7 @@ public: } return getBuffer(name); } - + // Remove stopped sounds void maintain() { @@ -449,26 +513,18 @@ public: bool loadSoundFile(const std::string &name, const std::string &filepath) { - SoundBuffer *buf = loadOggFile(filepath); - if(buf) + SoundBuffer *buf = load_ogg_from_file(filepath); + if (buf) addBuffer(name, buf); return false; } bool loadSoundData(const std::string &name, const std::string &filedata) { - // The vorbis API sucks; just write it to a file and use vorbisfile - // TODO: Actually load it directly from memory - std::string basepath = porting::path_user + DIR_DELIM + "cache" + - DIR_DELIM + "tmp"; - std::string path = basepath + DIR_DELIM + "tmp.ogg"; - verbosestream<<"OpenALSoundManager::loadSoundData(): Writing " - <<"temporary file to ["< - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#ifndef STRFND_HEADER -#define STRFND_HEADER - -#include - -class Strfnd{ - std::string tek; - unsigned int p; -public: - void start(std::string niinq){ - tek = niinq; - p=0; - } - unsigned int where(){ - return p; - } - void to(unsigned int i){ - p = i; - } - std::string what(){ - return tek; - } - std::string next(std::string plop){ - //std::cout<<"tek=\""<=tek.size()"<= tek.size()) - return ""; - - realp = p; - do { - n = tek.find(plop, p); - if (n == std::string::npos || plop == "") - n = tek.length(); - p = n + plop.length(); - } while (n > 0 && tek[n - 1] == '\\'); - - return tek.substr(realp, n - realp); - } - - void skip_over(std::string chars){ - while(p < tek.size()){ - bool is = false; - for(unsigned int i=0; i=tek.size()) return true; - return false; - } - Strfnd(std::string s){ - start(s); - } -}; - -class WStrfnd{ - std::wstring tek; - unsigned int p; -public: - void start(std::wstring niinq){ - tek = niinq; - p=0; - } - unsigned int where(){ - return p; - } - void to(unsigned int i){ - p = i; - } - std::wstring what(){ - return tek; - } - std::wstring next(std::wstring plop){ - //std::cout<<"tek=\""<=tek.size()"<= tek.size()) - return L""; - - realp = p; - do { - n = tek.find(plop, p); - if (n == std::wstring::npos || plop == L"") - n = tek.length(); - p = n + plop.length(); - } while (n > 0 && tek[n - 1] == '\\'); - - return tek.substr(realp, n - realp); - } - - bool atend(){ - if(p>=tek.size()) return true; - return false; - } - WStrfnd(std::wstring s){ - start(s); - } -}; - -#endif - diff --git a/src/subgame.cpp b/src/subgame.cpp index 20f5116e..7e9a0b36 100644 --- a/src/subgame.cpp +++ b/src/subgame.cpp @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "filesys.h" #include "settings.h" #include "log.h" -#include "strfnd.h" +#include "util/strfnd.h" #include "defaultsettings.h" // for override_default_settings #include "mapgen.h" // for MapgenParams #include "util/string.h" @@ -79,7 +79,7 @@ SubgameSpec findSubgame(const std::string &id) Strfnd search_paths(getSubgamePathEnv()); - while (!search_paths.atend()) { + while (!search_paths.at_end()) { std::string path = search_paths.next(PATH_DELIM); find_paths.push_back(GameFindPath( path + DIR_DELIM + id, false)); @@ -153,7 +153,7 @@ std::set getAvailableGameIds() Strfnd search_paths(getSubgamePathEnv()); - while (!search_paths.atend()) + while (!search_paths.at_end()) gamespaths.insert(search_paths.next(PATH_DELIM)); for (std::set::const_iterator i = gamespaths.begin(); @@ -230,7 +230,7 @@ std::vector getAvailableWorlds() Strfnd search_paths(getWorldPathEnv()); - while (!search_paths.atend()) + while (!search_paths.at_end()) worldspaths.insert(search_paths.next(PATH_DELIM)); worldspaths.insert(porting::path_user + DIR_DELIM + "worlds"); diff --git a/src/terminal_chat_console.cpp b/src/terminal_chat_console.cpp index ac06285e..c86a960f 100644 --- a/src/terminal_chat_console.cpp +++ b/src/terminal_chat_console.cpp @@ -146,6 +146,7 @@ void TerminalChatConsole::typeChatMessage(const std::wstring &msg) void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) { + ChatPrompt &prompt = m_chat_backend.getPrompt(); // Helpful if you want to collect key codes that aren't documented /*if (ch != ERR) { m_chat_backend.addMessage(L"", @@ -177,20 +178,20 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_ENTER: case '\r': case '\n': { - std::wstring text = m_chat_backend.getPrompt().submit(); - typeChatMessage(text); + prompt.addToHistory(prompt.getLine()); + typeChatMessage(prompt.replace(L"")); break; } case KEY_UP: - m_chat_backend.getPrompt().historyPrev(); + prompt.historyPrev(); break; case KEY_DOWN: - m_chat_backend.getPrompt().historyNext(); + prompt.historyNext(); break; case KEY_LEFT: // Left pressed // move character to the left - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_CHARACTER); @@ -198,7 +199,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 545: // Ctrl-Left pressed // move word to the left - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_WORD); @@ -206,7 +207,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_RIGHT: // Right pressed // move character to the right - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_CHARACTER); @@ -214,7 +215,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 560: // Ctrl-Right pressed // move word to the right - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_WORD); @@ -222,7 +223,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_HOME: // Home pressed // move to beginning of line - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -230,7 +231,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_END: // End pressed // move to end of line - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_MOVE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -240,7 +241,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 127: // Backspace pressed // delete character to the left - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_CHARACTER); @@ -248,7 +249,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_DC: // Delete pressed // delete character to the right - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_CHARACTER); @@ -256,7 +257,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 519: // Ctrl-Delete pressed // delete word to the right - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_WORD); @@ -264,7 +265,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 21: // Ctrl-U pressed // kill line to left end - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_LEFT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -272,7 +273,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case 11: // Ctrl-K pressed // kill line to right end - m_chat_backend.getPrompt().cursorOperation( + prompt.cursorOperation( ChatPrompt::CURSOROP_DELETE, ChatPrompt::CURSOROP_DIR_RIGHT, ChatPrompt::CURSOROP_SCOPE_LINE); @@ -280,7 +281,7 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) case KEY_TAB: // Tab pressed // Nick completion - m_chat_backend.getPrompt().nickCompletion(m_nicks, false); + prompt.nickCompletion(m_nicks, false); break; default: // Add character to the prompt, @@ -296,11 +297,11 @@ void TerminalChatConsole::handleInput(int ch, bool &complete_redraw_needed) m_pending_utf8_bytes = ""; // hopefully only one char in the wstring... for (size_t i = 0; i < w.size(); i++) { - m_chat_backend.getPrompt().input(w.c_str()[i]); + prompt.input(w.c_str()[i]); } } } else if (IS_ASCII_PRINTABLE_CHAR(ch)) { - m_chat_backend.getPrompt().input(ch); + prompt.input(ch); } else { // Silently ignore characters we don't handle diff --git a/src/threading/CMakeLists.txt b/src/threading/CMakeLists.txt index f3d0efc1..5dd60ef1 100644 --- a/src/threading/CMakeLists.txt +++ b/src/threading/CMakeLists.txt @@ -1,4 +1,5 @@ set(JTHREAD_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/event.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mutex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/thread.cpp ${CMAKE_CURRENT_SOURCE_DIR}/semaphore.cpp diff --git a/src/threading/event.cpp b/src/threading/event.cpp new file mode 100644 index 00000000..165f9d83 --- /dev/null +++ b/src/threading/event.cpp @@ -0,0 +1,89 @@ +/* +This file is a part of the JThread package, which contains some object- +oriented thread wrappers for different thread implementations. + +Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + +#include "threading/event.h" + +Event::Event() +{ +#if __cplusplus < 201103L +# ifdef _WIN32 + event = CreateEvent(NULL, false, false, NULL); +# else + pthread_cond_init(&cv, NULL); + pthread_mutex_init(&mutex, NULL); + notified = false; +# endif +#endif +} + +#if __cplusplus < 201103L +Event::~Event() +{ +#ifdef _WIN32 + CloseHandle(event); +#else + pthread_cond_destroy(&cv); + pthread_mutex_destroy(&mutex); +#endif +} +#endif + + +void Event::wait() +{ +#if __cplusplus >= 201103L + MutexAutoLock lock(mutex); + while (!notified) { + cv.wait(lock); + } + notified = false; +#elif defined(_WIN32) + WaitForSingleObject(event, INFINITE); +#else + pthread_mutex_lock(&mutex); + while (!notified) { + pthread_cond_wait(&cv, &mutex); + } + notified = false; + pthread_mutex_unlock(&mutex); +#endif +} + + +void Event::signal() +{ +#if __cplusplus >= 201103L + MutexAutoLock lock(mutex); + notified = true; + cv.notify_one(); +#elif defined(_WIN32) + SetEvent(event); +#else + pthread_mutex_lock(&mutex); + notified = true; + pthread_cond_signal(&cv); + pthread_mutex_unlock(&mutex); +#endif +} diff --git a/src/threading/event.h b/src/threading/event.h index 0105630e..dd516457 100644 --- a/src/threading/event.h +++ b/src/threading/event.h @@ -26,32 +26,47 @@ DEALINGS IN THE SOFTWARE. #ifndef THREADING_EVENT_H #define THREADING_EVENT_H -#ifdef _WIN32 +#if __cplusplus >= 201103L + #include + #include "threading/mutex.h" + #include "threading/mutex_auto_lock.h" +#elif defined(_WIN32) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #else - #include "threading/semaphore.h" + #include #endif +/** A syncronization primitive that will wake up one waiting thread when signaled. + * Calling @c signal() multiple times before a waiting thread has had a chance + * to notice the signal will wake only one thread. Additionally, if no threads + * are waiting on the event when it is signaled, the next call to @c wait() + * will return (almost) immediately. + */ class Event { public: -#ifdef _WIN32 - Event() { event = CreateEvent(NULL, false, false, NULL); } - ~Event() { CloseHandle(event); } - void wait() { WaitForSingleObject(event, INFINITE); } - void signal() { SetEvent(event); } -#else - void wait() { sem.wait(); } - void signal() { sem.post(); } + Event(); +#if __cplusplus < 201103L + ~Event(); #endif + void wait(); + void signal(); private: -#ifdef _WIN32 +#if __cplusplus >= 201103L + std::condition_variable cv; + Mutex mutex; + bool notified; +#elif defined(_WIN32) HANDLE event; #else - Semaphore sem; + pthread_cond_t cv; + pthread_mutex_t mutex; + bool notified; #endif }; #endif - diff --git a/src/threading/mutex.cpp b/src/threading/mutex.cpp index e12b7918..f2b07bec 100644 --- a/src/threading/mutex.cpp +++ b/src/threading/mutex.cpp @@ -34,7 +34,18 @@ DEALINGS IN THE SOFTWARE. #define UNUSED(expr) do { (void)(expr); } while (0) +Mutex::Mutex() +{ + init_mutex(false); +} + + Mutex::Mutex(bool recursive) +{ + init_mutex(recursive); +} + +void Mutex::init_mutex(bool recursive) { #ifdef _WIN32 // Windows critical sections are recursive by default @@ -89,5 +100,9 @@ void Mutex::unlock() #endif } +RecursiveMutex::RecursiveMutex() + : Mutex(true) +{} + #endif diff --git a/src/threading/mutex.h b/src/threading/mutex.h index 40b10a2e..dadbd050 100644 --- a/src/threading/mutex.h +++ b/src/threading/mutex.h @@ -30,6 +30,7 @@ DEALINGS IN THE SOFTWARE. #if __cplusplus >= 201103L && !defined(_WIN32) #include using Mutex = std::mutex; + using RecursiveMutex = std::recursive_mutex; #else #ifdef _WIN32 @@ -49,11 +50,14 @@ DEALINGS IN THE SOFTWARE. class Mutex { public: - Mutex(bool recursive=false); + Mutex(); ~Mutex(); void lock(); void unlock(); +protected: + Mutex(bool recursive); + void init_mutex(bool recursive); private: #ifdef _WIN32 CRITICAL_SECTION mutex; @@ -64,6 +68,14 @@ private: DISABLE_CLASS_COPY(Mutex); }; +class RecursiveMutex : public Mutex +{ +public: + RecursiveMutex(); + + DISABLE_CLASS_COPY(RecursiveMutex); +}; + #endif // C++11 #endif diff --git a/src/threading/mutex_auto_lock.h b/src/threading/mutex_auto_lock.h index 1c39349e..25caf7e1 100644 --- a/src/threading/mutex_auto_lock.h +++ b/src/threading/mutex_auto_lock.h @@ -28,7 +28,8 @@ DEALINGS IN THE SOFTWARE. #if __cplusplus >= 201103L #include - using MutexAutoLock = std::lock_guard; + using MutexAutoLock = std::unique_lock; + using RecursiveMutexAutoLock = std::unique_lock; #else #include "threading/mutex.h" @@ -44,6 +45,15 @@ private: Mutex &mutex; }; +class RecursiveMutexAutoLock +{ +public: + RecursiveMutexAutoLock(RecursiveMutex &m) : mutex(m) { mutex.lock(); } + ~RecursiveMutexAutoLock() { mutex.unlock(); } + +private: + RecursiveMutex &mutex; +}; #endif #endif diff --git a/src/threading/thread.cpp b/src/threading/thread.cpp index 57b55150..5161a6c0 100644 --- a/src/threading/thread.cpp +++ b/src/threading/thread.cpp @@ -116,9 +116,7 @@ bool Thread::start() #if USE_CPP11_THREADS try { - m_thread_obj = new std::thread(threadProc, this); - m_thread_id = m_thread_obj->get_id(); - m_thread_handle = m_thread_obj->native_handle(); + m_thread_obj = new std::thread(threadProc, this); } catch (const std::system_error &e) { return false; } @@ -135,8 +133,6 @@ bool Thread::start() if (status) return false; - m_thread_id = m_thread_handle; - #endif while (!m_running) @@ -209,9 +205,9 @@ bool Thread::kill() // We need to pthread_kill instead on Android since NDKv5's pthread // implementation is incomplete. # ifdef __ANDROID__ - pthread_kill(m_thread_handle, SIGKILL); + pthread_kill(getThreadHandle(), SIGKILL); # else - pthread_cancel(m_thread_handle); + pthread_cancel(getThreadHandle()); # endif wait(); #endif @@ -234,12 +230,6 @@ bool Thread::getReturnValue(void **ret) } -bool Thread::isCurrentThread() -{ - return thr_is_current_thread(m_thread_id); -} - - #if USE_CPP11_THREADS || USE_POSIX_THREADS void *Thread::threadProc(void *param) #elif defined(_WIN32_WCE) @@ -264,7 +254,8 @@ DWORD WINAPI Thread::threadProc(LPVOID param) thr->m_running = false; g_logger.deregisterThread(); - return NULL; + // 0 is returned here to avoid an unnecessary ifdef clause + return 0; } @@ -370,7 +361,7 @@ bool Thread::bindToProcessor(unsigned int proc_number) #elif defined(_WIN32) - return SetThreadAffinityMask(m_thread_handle, 1 << proc_number); + return SetThreadAffinityMask(getThreadHandle(), 1 << proc_number); #elif __FreeBSD_version >= 702106 || defined(__linux) || defined(linux) @@ -379,7 +370,7 @@ bool Thread::bindToProcessor(unsigned int proc_number) CPU_ZERO(&cpuset); CPU_SET(proc_number, &cpuset); - return pthread_setaffinity_np(m_thread_handle, sizeof(cpuset), &cpuset) == 0; + return pthread_setaffinity_np(getThreadHandle(), sizeof(cpuset), &cpuset) == 0; #elif defined(__sun) || defined(sun) @@ -394,13 +385,13 @@ bool Thread::bindToProcessor(unsigned int proc_number) pthread_spu_t answer; return pthread_processor_bind_np(PTHREAD_BIND_ADVISORY_NP, - &answer, proc_number, m_thread_handle) == 0; + &answer, proc_number, getThreadHandle()) == 0; #elif defined(__APPLE__) struct thread_affinity_policy tapol; - thread_port_t threadport = pthread_mach_thread_np(m_thread_handle); + thread_port_t threadport = pthread_mach_thread_np(getThreadHandle()); tapol.affinity_tag = proc_number + 1; return thread_policy_set(threadport, THREAD_AFFINITY_POLICY, (thread_policy_t)&tapol, @@ -418,21 +409,21 @@ bool Thread::setPriority(int prio) { #if defined(_WIN32) - return SetThreadPriority(m_thread_handle, prio); + return SetThreadPriority(getThreadHandle(), prio); #else struct sched_param sparam; int policy; - if (pthread_getschedparam(m_thread_handle, &policy, &sparam) != 0) + if (pthread_getschedparam(getThreadHandle(), &policy, &sparam) != 0) return false; int min = sched_get_priority_min(policy); int max = sched_get_priority_max(policy); sparam.sched_priority = min + prio * (max - min) / THREAD_PRIORITY_HIGHEST; - return pthread_setschedparam(m_thread_handle, policy, &sparam) == 0; + return pthread_setschedparam(getThreadHandle(), policy, &sparam) == 0; #endif } diff --git a/src/threading/thread.h b/src/threading/thread.h index 6a24afff..de800ecb 100644 --- a/src/threading/thread.h +++ b/src/threading/thread.h @@ -90,12 +90,22 @@ public: /* * Returns true if the calling thread is this Thread object. */ - bool isCurrentThread(); + bool isCurrentThread() { return thr_is_current_thread(getThreadId()); } inline bool isRunning() { return m_running; } inline bool stopRequested() { return m_request_stop; } + +#if USE_CPP11_THREADS + inline threadid_t getThreadId() { return m_thread_obj->get_id(); } + inline threadhandle_t getThreadHandle() { return m_thread_obj->native_handle(); } +#else +# if USE_WIN_THREADS inline threadid_t getThreadId() { return m_thread_id; } +# else + inline threadid_t getThreadId() { return m_thread_handle; } +# endif inline threadhandle_t getThreadHandle() { return m_thread_handle; } +#endif /* * Gets the thread return value. @@ -147,8 +157,12 @@ private: Atomic m_running; Mutex m_mutex; - threadid_t m_thread_id; +#ifndef USE_CPP11_THREADS threadhandle_t m_thread_handle; +# if _WIN32 + threadid_t m_thread_id; +# endif +#endif static ThreadStartFunc threadProc; diff --git a/src/touchscreengui.cpp b/src/touchscreengui.cpp index e4f785f6..f51b2d5f 100644 --- a/src/touchscreengui.cpp +++ b/src/touchscreengui.cpp @@ -44,17 +44,8 @@ const char** touchgui_button_imagenames = (const char*[]) { "down_arrow.png", "left_arrow.png", "right_arrow.png", - "inventory_btn.png", - "drop_btn.png", "jump_btn.png", - "down.png", - "fly_btn.png", - "noclip_btn.png", - "fast_btn.png", - "debug_btn.png", - "chat_btn.png", - "camera_btn.png", - "rangeview_btn.png" + "down.png" }; static irr::EKEY_CODE id2keycode(touch_gui_button_id id) @@ -113,29 +104,13 @@ static irr::EKEY_CODE id2keycode(touch_gui_button_id id) TouchScreenGUI *g_touchscreengui; -TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver* receiver): - m_device(device), - m_guienv(device->getGUIEnvironment()), - m_camera_yaw(0.0), - m_camera_pitch(0.0), - m_visible(false), - m_move_id(-1), - m_receiver(receiver) -{ - for (unsigned int i=0; i < after_last_element_id; i++) { - m_buttons[i].guibutton = 0; - m_buttons[i].repeatcounter = -1; - m_buttons[i].repeatdelay = BUTTON_REPEAT_DELAY; - } - - m_screensize = m_device->getVideoDriver()->getScreenSize(); -} - -void TouchScreenGUI::loadButtonTexture(button_info* btn, const char* path, rect button_rect) +static void load_button_texture(button_info* btn, const char* path, + rect button_rect, ISimpleTextureSource* tsrc, video::IVideoDriver *driver) { unsigned int tid; - video::ITexture *texture = guiScalingImageButton(m_device->getVideoDriver(), - m_texturesource->getTexture(path, &tid), button_rect.getWidth(), button_rect.getHeight()); + video::ITexture *texture = guiScalingImageButton(driver, + tsrc->getTexture(path, &tid), button_rect.getWidth(), + button_rect.getHeight()); if (texture) { btn->guibutton->setUseAlphaChannel(true); if (g_settings->getBool("gui_scaling_filter")) { @@ -153,6 +128,314 @@ void TouchScreenGUI::loadButtonTexture(button_info* btn, const char* path, rect< } } +AutoHideButtonBar::AutoHideButtonBar(IrrlichtDevice *device, + IEventReceiver* receiver) : + m_texturesource(NULL), + m_driver(device->getVideoDriver()), + m_guienv(device->getGUIEnvironment()), + m_receiver(receiver), + m_active(false), + m_visible(true), + m_timeout(0), + m_timeout_value(3), + m_initialized(false), + m_dir(AHBB_Dir_Right_Left) +{ + m_screensize = device->getVideoDriver()->getScreenSize(); + +} + +void AutoHideButtonBar::init(ISimpleTextureSource* tsrc, + const char* starter_img, int button_id, v2s32 UpperLeft, + v2s32 LowerRight, autohide_button_bar_dir dir, float timeout) +{ + m_texturesource = tsrc; + + m_upper_left = UpperLeft; + m_lower_right = LowerRight; + + /* init settings bar */ + + irr::core::rect current_button = rect(UpperLeft.X, UpperLeft.Y, + LowerRight.X, LowerRight.Y); + + m_starter.guibutton = m_guienv->addButton(current_button, 0, button_id, L"", 0); + m_starter.guibutton->grab(); + m_starter.repeatcounter = -1; + m_starter.keycode = KEY_OEM_8; // use invalid keycode as it's not relevant + m_starter.immediate_release = true; + m_starter.ids.clear(); + + load_button_texture(&m_starter, starter_img, current_button, + m_texturesource, m_driver); + + m_dir = dir; + m_timeout_value = timeout; + + m_initialized = true; +} + +AutoHideButtonBar::~AutoHideButtonBar() +{ + m_starter.guibutton->setVisible(false); + m_starter.guibutton->drop(); +} + +void AutoHideButtonBar::addButton(touch_gui_button_id button_id, + const wchar_t* caption, const char* btn_image) +{ + + if (!m_initialized) { + errorstream << "AutoHideButtonBar::addButton not yet initialized!" + << std::endl; + return; + } + int button_size = 0; + + if ((m_dir == AHBB_Dir_Top_Bottom) || (m_dir == AHBB_Dir_Bottom_Top)) { + button_size = m_lower_right.X - m_upper_left.X; + } else { + button_size = m_lower_right.Y - m_upper_left.Y; + } + + irr::core::rect current_button; + + if ((m_dir == AHBB_Dir_Right_Left) || (m_dir == AHBB_Dir_Left_Right)) { + + int x_start = 0; + int x_end = 0; + + if (m_dir == AHBB_Dir_Left_Right) { + x_start = m_lower_right.X + (button_size * 1.25 * m_buttons.size()) + + (button_size * 0.25); + x_end = x_start + button_size; + } else { + x_end = m_upper_left.X - (button_size * 1.25 * m_buttons.size()) + - (button_size * 0.25); + x_start = x_end - button_size; + } + + current_button = rect(x_start, m_upper_left.Y, x_end, + m_lower_right.Y); + } else { + int y_start = 0; + int y_end = 0; + + if (m_dir == AHBB_Dir_Top_Bottom) { + y_start = m_lower_right.X + (button_size * 1.25 * m_buttons.size()) + + (button_size * 0.25); + y_end = y_start + button_size; + } else { + y_end = m_upper_left.X - (button_size * 1.25 * m_buttons.size()) + - (button_size * 0.25); + y_start = y_end - button_size; + } + + current_button = rect(m_upper_left.X, y_start, m_lower_right.Y, + y_end); + } + + button_info* btn = new button_info(); + btn->guibutton = m_guienv->addButton(current_button, 0, button_id, caption, 0); + btn->guibutton->grab(); + btn->guibutton->setVisible(false); + btn->guibutton->setEnabled(false); + btn->repeatcounter = -1; + btn->keycode = id2keycode(button_id); + btn->immediate_release = true; + btn->ids.clear(); + + load_button_texture(btn, btn_image, current_button, m_texturesource, + m_driver); + + m_buttons.push_back(btn); +} + +bool AutoHideButtonBar::isButton(const SEvent &event) +{ + IGUIElement* rootguielement = m_guienv->getRootGUIElement(); + + if (rootguielement == NULL) { + return false; + } + + gui::IGUIElement *element = rootguielement->getElementFromPoint( + core::position2d(event.TouchInput.X, event.TouchInput.Y)); + + if (element == NULL) { + return false; + } + + if (m_active) { + /* check for all buttons in vector */ + + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + if ((*iter)->guibutton == element) { + + SEvent* translated = new SEvent(); + memset(translated, 0, sizeof(SEvent)); + translated->EventType = irr::EET_KEY_INPUT_EVENT; + translated->KeyInput.Key = (*iter)->keycode; + translated->KeyInput.Control = false; + translated->KeyInput.Shift = false; + translated->KeyInput.Char = 0; + + /* add this event */ + translated->KeyInput.PressedDown = true; + m_receiver->OnEvent(*translated); + + /* remove this event */ + translated->KeyInput.PressedDown = false; + m_receiver->OnEvent(*translated); + + delete translated; + + (*iter)->ids.push_back(event.TouchInput.ID); + + m_timeout = 0; + + return true; + } + ++iter; + } + } else { + /* check for starter button only */ + if (element == m_starter.guibutton) { + m_starter.ids.push_back(event.TouchInput.ID); + m_starter.guibutton->setVisible(false); + m_starter.guibutton->setEnabled(false); + m_active = true; + m_timeout = 0; + + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + (*iter)->guibutton->setVisible(true); + (*iter)->guibutton->setEnabled(true); + ++iter; + } + + return true; + } + } + return false; +} + +bool AutoHideButtonBar::isReleaseButton(int eventID) +{ + std::vector::iterator id = std::find(m_starter.ids.begin(), + m_starter.ids.end(), eventID); + + if (id != m_starter.ids.end()) { + m_starter.ids.erase(id); + return true; + } + + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + std::vector::iterator id = std::find((*iter)->ids.begin(), + (*iter)->ids.end(), eventID); + + if (id != (*iter)->ids.end()) { + (*iter)->ids.erase(id); + // TODO handle settings button release + return true; + } + ++iter; + } + + return false; +} + +void AutoHideButtonBar::step(float dtime) +{ + if (m_active) { + m_timeout += dtime; + + if (m_timeout > m_timeout_value) { + deactivate(); + } + } +} + +void AutoHideButtonBar::deactivate() +{ + if (m_visible == true) { + m_starter.guibutton->setVisible(true); + m_starter.guibutton->setEnabled(true); + } + m_active = false; + + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + (*iter)->guibutton->setVisible(false); + (*iter)->guibutton->setEnabled(false); + ++iter; + } +} + +void AutoHideButtonBar::hide() +{ + m_visible = false; + m_starter.guibutton->setVisible(false); + m_starter.guibutton->setEnabled(false); + + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + (*iter)->guibutton->setVisible(false); + (*iter)->guibutton->setEnabled(false); + ++iter; + } +} + +void AutoHideButtonBar::show() +{ + m_visible = true; + + if (m_active) { + std::vector::iterator iter = m_buttons.begin(); + + while (iter != m_buttons.end()) { + (*iter)->guibutton->setVisible(true); + (*iter)->guibutton->setEnabled(true); + ++iter; + } + } else { + m_starter.guibutton->setVisible(true); + m_starter.guibutton->setEnabled(true); + } +} + +TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver* receiver): + m_device(device), + m_guienv(device->getGUIEnvironment()), + m_camera_yaw(0.0), + m_camera_pitch(0.0), + m_visible(false), + m_move_id(-1), + m_receiver(receiver), + m_move_has_really_moved(false), + m_move_downtime(0), + m_move_sent_as_mouse_event(false), + // use some downlocation way off screen as init value to avoid invalid behaviour + m_move_downlocation(v2s32(-10000, -10000)), + m_settingsbar(device, receiver), + m_rarecontrolsbar(device, receiver) +{ + for (unsigned int i=0; i < after_last_element_id; i++) { + m_buttons[i].guibutton = 0; + m_buttons[i].repeatcounter = -1; + m_buttons[i].repeatdelay = BUTTON_REPEAT_DELAY; + } + + m_screensize = m_device->getVideoDriver()->getScreenSize(); +} + void TouchScreenGUI::initButton(touch_gui_button_id id, rect button_rect, std::wstring caption, bool immediate_release, float repeat_delay) { @@ -166,21 +449,27 @@ void TouchScreenGUI::initButton(touch_gui_button_id id, rect button_rect, btn->immediate_release = immediate_release; btn->ids.clear(); - loadButtonTexture(btn,touchgui_button_imagenames[id], button_rect); + load_button_texture(btn,touchgui_button_imagenames[id],button_rect, + m_texturesource, m_device->getVideoDriver()); } static int getMaxControlPadSize(float density) { return 200 * density * g_settings->getFloat("hud_scaling"); } -void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density) +int TouchScreenGUI::getGuiButtonSize() +{ + u32 control_pad_size = MYMIN((2 * m_screensize.Y) / 3, + getMaxControlPadSize(porting::getDisplayDensity())); + + return control_pad_size / 3; +} + +void TouchScreenGUI::init(ISimpleTextureSource* tsrc) { assert(tsrc != 0); - u32 control_pad_size = - MYMIN((2 * m_screensize.Y) / 3,getMaxControlPadSize(density)); - - u32 button_size = control_pad_size / 3; + u32 button_size = getGuiButtonSize(); m_visible = true; m_texturesource = tsrc; m_control_pad_rect = rect(0, m_screensize.Y - 3 * button_size, @@ -223,16 +512,6 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density) } } - /* init inventory button */ - initButton(inventory_id, - rect(0, m_screensize.Y - (button_size/2), - (button_size/2), m_screensize.Y), L"inv", true); - - /* init drop button */ - initButton(drop_id, - rect(2.5*button_size, m_screensize.Y - (button_size/2), - 3*button_size, m_screensize.Y), L"drop", true); - /* init jump button */ initButton(jump_id, rect(m_screensize.X-(1.75*button_size), @@ -249,48 +528,37 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density) m_screensize.Y), L"H",false); - /* init fly button */ - initButton(fly_id, - rect(m_screensize.X - (0.75*button_size), - m_screensize.Y - (2.25*button_size), - m_screensize.X, m_screensize.Y - (button_size*1.5)), - L"fly", false, SLOW_BUTTON_REPEAT); + m_settingsbar.init(m_texturesource, "gear_icon.png", settings_starter_id, + v2s32(m_screensize.X - (button_size / 2), + m_screensize.Y - ((SETTINGS_BAR_Y_OFFSET + 1) * button_size) + + (button_size * 0.5)), + v2s32(m_screensize.X, + m_screensize.Y - (SETTINGS_BAR_Y_OFFSET * button_size) + + (button_size * 0.5)), AHBB_Dir_Right_Left, + 3.0); - /* init noclip button */ - initButton(noclip_id, - rect(m_screensize.X - (0.75*button_size), 2.25*button_size, - m_screensize.X, 3*button_size), - L"clip", false, SLOW_BUTTON_REPEAT); + m_settingsbar.addButton(fly_id, L"fly", "fly_btn.png"); + m_settingsbar.addButton(noclip_id, L"noclip", "noclip_btn.png"); + m_settingsbar.addButton(fast_id, L"fast", "fast_btn.png"); + m_settingsbar.addButton(debug_id, L"debug", "debug_btn.png"); + m_settingsbar.addButton(camera_id, L"camera", "camera_btn.png"); + m_settingsbar.addButton(range_id, L"rangeview", "rangeview_btn.png"); - /* init fast button */ - initButton(fast_id, - rect(m_screensize.X - (0.75*button_size), 1.5*button_size, - m_screensize.X, 2.25*button_size), - L"fast", false, SLOW_BUTTON_REPEAT); + m_rarecontrolsbar.init(m_texturesource, "rare_controls.png", + rare_controls_starter_id, + v2s32(0, + m_screensize.Y + - ((RARE_CONTROLS_BAR_Y_OFFSET + 1) * button_size) + + (button_size * 0.5)), + v2s32(button_size / 2, + m_screensize.Y - (RARE_CONTROLS_BAR_Y_OFFSET * button_size) + + (button_size * 0.5)), AHBB_Dir_Left_Right, + 2); - /* init debug button */ - initButton(debug_id, - rect(m_screensize.X - (0.75*button_size), 0.75*button_size, - m_screensize.X, 1.5*button_size), - L"dbg", false, SLOW_BUTTON_REPEAT); + m_rarecontrolsbar.addButton(chat_id, L"Chat", "chat_btn.png"); + m_rarecontrolsbar.addButton(inventory_id, L"inv", "inventory_btn.png"); + m_rarecontrolsbar.addButton(drop_id, L"drop", "drop_btn.png"); - /* init chat button */ - initButton(chat_id, - rect(m_screensize.X - (0.75*button_size), 0, - m_screensize.X, 0.75*button_size), - L"Chat", true); - - /* init camera button */ - initButton(camera_id, - rect(m_screensize.X - (1.5*button_size), 0, - m_screensize.X - (0.75*button_size), 0.75*button_size), - L"cam", false, SLOW_BUTTON_REPEAT); - - /* init rangeselect button */ - initButton(range_id, - rect(m_screensize.X - (2.25*button_size), 0, - m_screensize.X - (1.5*button_size), 0.75*button_size), - L"far", false, SLOW_BUTTON_REPEAT); } touch_gui_button_id TouchScreenGUI::getButtonID(s32 x, s32 y) @@ -374,7 +642,7 @@ bool TouchScreenGUI::isReleaseHUDButton(int eventID) return false; } -void TouchScreenGUI::ButtonEvent(touch_gui_button_id button, +void TouchScreenGUI::handleButtonEvent(touch_gui_button_id button, int eventID, bool action) { button_info* btn = &m_buttons[button]; @@ -417,6 +685,61 @@ void TouchScreenGUI::ButtonEvent(touch_gui_button_id button, delete translated; } + +void TouchScreenGUI::handleReleaseEvent(int evt_id) +{ + touch_gui_button_id button = getButtonID(evt_id); + + /* handle button events */ + if (button != after_last_element_id) { + handleButtonEvent(button, evt_id, false); + } + /* handle hud button events */ + else if (isReleaseHUDButton(evt_id)) { + /* nothing to do here */ + } else if (m_settingsbar.isReleaseButton(evt_id)) { + /* nothing to do here */ + } else if (m_rarecontrolsbar.isReleaseButton(evt_id)) { + /* nothing to do here */ + } + /* handle the point used for moving view */ + else if (evt_id == m_move_id) { + m_move_id = -1; + + /* if this pointer issued a mouse event issue symmetric release here */ + if (m_move_sent_as_mouse_event) { + SEvent* translated = new SEvent; + memset(translated,0,sizeof(SEvent)); + translated->EventType = EET_MOUSE_INPUT_EVENT; + translated->MouseInput.X = m_move_downlocation.X; + translated->MouseInput.Y = m_move_downlocation.Y; + translated->MouseInput.Shift = false; + translated->MouseInput.Control = false; + translated->MouseInput.ButtonStates = 0; + translated->MouseInput.Event = EMIE_LMOUSE_LEFT_UP; + m_receiver->OnEvent(*translated); + delete translated; + } + else { + /* do double tap detection */ + doubleTapDetection(); + } + } + else { + infostream + << "TouchScreenGUI::translateEvent released unknown button: " + << evt_id << std::endl; + } + + for (std::vector::iterator iter = m_known_ids.begin(); + iter != m_known_ids.end(); ++iter) { + if (iter->id == evt_id) { + m_known_ids.erase(iter); + break; + } + } +} + void TouchScreenGUI::translateEvent(const SEvent &event) { if (!m_visible) { @@ -447,14 +770,24 @@ void TouchScreenGUI::translateEvent(const SEvent &event) /* handle button events */ if (button != after_last_element_id) { - ButtonEvent(button,eventID,true); - } - else if (isHUDButton(event)) - { + handleButtonEvent(button, eventID, true); + m_settingsbar.deactivate(); + m_rarecontrolsbar.deactivate(); + } else if (isHUDButton(event)) { + m_settingsbar.deactivate(); + m_rarecontrolsbar.deactivate(); /* already handled in isHUDButton() */ + } else if (m_settingsbar.isButton(event)) { + m_rarecontrolsbar.deactivate(); + /* already handled in isSettingsBarButton() */ + } else if (m_rarecontrolsbar.isButton(event)) { + m_settingsbar.deactivate(); + /* already handled in isSettingsBarButton() */ } /* handle non button events */ else { + m_settingsbar.deactivate(); + m_rarecontrolsbar.deactivate(); /* if we don't already have a moving point make this the moving one */ if (m_move_id == -1) { m_move_id = event.TouchInput.ID; @@ -469,53 +802,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) } else if (event.TouchInput.Event == ETIE_LEFT_UP) { verbosestream << "Up event for pointerid: " << event.TouchInput.ID << std::endl; - - touch_gui_button_id button = getButtonID(event.TouchInput.ID); - - /* handle button events */ - if (button != after_last_element_id) { - ButtonEvent(button,event.TouchInput.ID,false); - } - /* handle hud button events */ - else if (isReleaseHUDButton(event.TouchInput.ID)) { - /* nothing to do here */ - } - /* handle the point used for moving view */ - else if (event.TouchInput.ID == m_move_id) { - m_move_id = -1; - - /* if this pointer issued a mouse event issue symmetric release here */ - if (m_move_sent_as_mouse_event) { - SEvent* translated = new SEvent; - memset(translated,0,sizeof(SEvent)); - translated->EventType = EET_MOUSE_INPUT_EVENT; - translated->MouseInput.X = m_move_downlocation.X; - translated->MouseInput.Y = m_move_downlocation.Y; - translated->MouseInput.Shift = false; - translated->MouseInput.Control = false; - translated->MouseInput.ButtonStates = 0; - translated->MouseInput.Event = EMIE_LMOUSE_LEFT_UP; - m_receiver->OnEvent(*translated); - delete translated; - } - else { - /* do double tap detection */ - doubleTapDetection(); - } - } - else { - infostream - << "TouchScreenGUI::translateEvent released unknown button: " - << event.TouchInput.ID << std::endl; - } - - for (std::vector::iterator iter = m_known_ids.begin(); - iter != m_known_ids.end(); ++iter) { - if (iter->id == event.TouchInput.ID) { - m_known_ids.erase(iter); - break; - } - } + handleReleaseEvent(event.TouchInput.ID); } else { assert(event.TouchInput.Event == ETIE_MOVED); @@ -576,8 +863,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) ->getRayFromScreenCoordinates( v2s32(event.TouchInput.X,event.TouchInput.Y)); } - } - else { + } else { handleChangedButton(event); } } @@ -590,7 +876,7 @@ void TouchScreenGUI::handleChangedButton(const SEvent &event) if (m_buttons[i].ids.empty()) { continue; } - for(std::vector::iterator iter = m_buttons[i].ids.begin(); + for (std::vector::iterator iter = m_buttons[i].ids.begin(); iter != m_buttons[i].ids.end(); ++iter) { if (event.TouchInput.ID == *iter) { @@ -603,12 +889,12 @@ void TouchScreenGUI::handleChangedButton(const SEvent &event) } /* remove old button */ - ButtonEvent((touch_gui_button_id) i,*iter,false); + handleButtonEvent((touch_gui_button_id) i,*iter,false); if (current_button_id == after_last_element_id) { return; } - ButtonEvent((touch_gui_button_id) current_button_id,*iter,true); + handleButtonEvent((touch_gui_button_id) current_button_id,*iter,true); return; } @@ -622,8 +908,11 @@ void TouchScreenGUI::handleChangedButton(const SEvent &event) } button_info* btn = &m_buttons[current_button_id]; - if (std::find(btn->ids.begin(),btn->ids.end(), event.TouchInput.ID) == btn->ids.end()) { - ButtonEvent((touch_gui_button_id) current_button_id,event.TouchInput.ID,true); + if (std::find(btn->ids.begin(),btn->ids.end(), event.TouchInput.ID) + == btn->ids.end()) + { + handleButtonEvent((touch_gui_button_id) current_button_id, + event.TouchInput.ID, true); } } @@ -637,7 +926,7 @@ bool TouchScreenGUI::doubleTapDetection() m_key_events[1].x = m_move_downlocation.X; m_key_events[1].y = m_move_downlocation.Y; - u32 delta = porting::getDeltaMs(m_key_events[0].down_time,getTimeMs()); + u32 delta = porting::getDeltaMs(m_key_events[0].down_time, getTimeMs()); if (delta > 400) return false; @@ -646,11 +935,11 @@ bool TouchScreenGUI::doubleTapDetection() (m_key_events[0].y - m_key_events[1].y) * (m_key_events[0].y - m_key_events[1].y)); - if (distance >(20 + g_settings->getU16("touchscreen_threshold"))) + if (distance > (20 + g_settings->getU16("touchscreen_threshold"))) return false; SEvent* translated = new SEvent(); - memset(translated,0,sizeof(SEvent)); + memset(translated, 0, sizeof(SEvent)); translated->EventType = EET_MOUSE_INPUT_EVENT; translated->MouseInput.X = m_key_events[0].x; translated->MouseInput.Y = m_key_events[0].y; @@ -679,7 +968,7 @@ bool TouchScreenGUI::doubleTapDetection() TouchScreenGUI::~TouchScreenGUI() { - for (unsigned int i=0; i < after_last_element_id; i++) { + for (unsigned int i = 0; i < after_last_element_id; i++) { button_info* btn = &m_buttons[i]; if (btn->guibutton != 0) { btn->guibutton->drop(); @@ -691,7 +980,7 @@ TouchScreenGUI::~TouchScreenGUI() void TouchScreenGUI::step(float dtime) { /* simulate keyboard repeats */ - for (unsigned int i=0; i < after_last_element_id; i++) { + for (unsigned int i = 0; i < after_last_element_id; i++) { button_info* btn = &m_buttons[i]; if (btn->ids.size() > 0) { @@ -705,7 +994,7 @@ void TouchScreenGUI::step(float dtime) btn->repeatcounter = 0; SEvent translated; - memset(&translated,0,sizeof(SEvent)); + memset(&translated, 0, sizeof(SEvent)); translated.EventType = irr::EET_KEY_INPUT_EVENT; translated.KeyInput.Key = btn->keycode; translated.KeyInput.PressedDown = false; @@ -731,7 +1020,7 @@ void TouchScreenGUI::step(float dtime) v2s32(m_move_downlocation.X,m_move_downlocation.Y)); SEvent translated; - memset(&translated,0,sizeof(SEvent)); + memset(&translated, 0, sizeof(SEvent)); translated.EventType = EET_MOUSE_INPUT_EVENT; translated.MouseInput.X = m_move_downlocation.X; translated.MouseInput.Y = m_move_downlocation.Y; @@ -744,6 +1033,9 @@ void TouchScreenGUI::step(float dtime) m_move_sent_as_mouse_event = true; } } + + m_settingsbar.step(dtime); + m_rarecontrolsbar.step(dtime); } void TouchScreenGUI::resetHud() @@ -759,20 +1051,39 @@ void TouchScreenGUI::registerHudItem(int index, const rect &rect) void TouchScreenGUI::Toggle(bool visible) { m_visible = visible; - for (unsigned int i=0; i < after_last_element_id; i++) { + for (unsigned int i = 0; i < after_last_element_id; i++) { button_info* btn = &m_buttons[i]; if (btn->guibutton != 0) { btn->guibutton->setVisible(visible); } } + + /* clear all active buttons */ + if (!visible) { + while (m_known_ids.size() > 0) { + handleReleaseEvent(m_known_ids.begin()->id); + } + + m_settingsbar.hide(); + m_rarecontrolsbar.hide(); + } else { + m_settingsbar.show(); + m_rarecontrolsbar.show(); + } } -void TouchScreenGUI::Hide() +void TouchScreenGUI::hide() { + if (!m_visible) + return; + Toggle(false); } -void TouchScreenGUI::Show() +void TouchScreenGUI::show() { + if (m_visible) + return; + Toggle(true); } diff --git a/src/touchscreengui.h b/src/touchscreengui.h index bb323179..d8106a26 100644 --- a/src/touchscreengui.h +++ b/src/touchscreengui.h @@ -38,26 +38,105 @@ typedef enum { backward_id, left_id, right_id, - inventory_id, - drop_id, jump_id, crunch_id, + after_last_element_id, + settings_starter_id, + rare_controls_starter_id, fly_id, noclip_id, fast_id, debug_id, - chat_id, camera_id, range_id, - after_last_element_id + chat_id, + inventory_id, + drop_id } touch_gui_button_id; +typedef enum { + AHBB_Dir_Top_Bottom, + AHBB_Dir_Bottom_Top, + AHBB_Dir_Left_Right, + AHBB_Dir_Right_Left +} autohide_button_bar_dir; + #define MIN_DIG_TIME_MS 500 #define MAX_TOUCH_COUNT 64 #define BUTTON_REPEAT_DELAY 0.2f +#define SETTINGS_BAR_Y_OFFSET 6.5 +#define RARE_CONTROLS_BAR_Y_OFFSET 4 + extern const char** touchgui_button_imagenames; +struct button_info { + float repeatcounter; + float repeatdelay; + irr::EKEY_CODE keycode; + std::vector ids; + IGUIButton* guibutton; + bool immediate_release; +}; + +class AutoHideButtonBar +{ +public: + + AutoHideButtonBar( IrrlichtDevice *device, IEventReceiver* receiver ); + + void init(ISimpleTextureSource* tsrc, const char* starter_img, + int button_id, v2s32 UpperLeft, v2s32 LowerRight, + autohide_button_bar_dir dir, float timeout); + + ~AutoHideButtonBar(); + + /* add button to be shown */ + void addButton(touch_gui_button_id id, const wchar_t* caption, + const char* btn_image); + + /* detect settings bar button events */ + bool isButton(const SEvent &event); + + /* handle released hud buttons */ + bool isReleaseButton(int eventID); + + /* step handler */ + void step(float dtime); + + /* deactivate button bar */ + void deactivate(); + + /* hide the whole buttonbar */ + void hide(); + + /* unhide the buttonbar */ + void show(); + +private: + ISimpleTextureSource* m_texturesource; + irr::video::IVideoDriver* m_driver; + IGUIEnvironment* m_guienv; + IEventReceiver* m_receiver; + v2u32 m_screensize; + button_info m_starter; + std::vector m_buttons; + + v2s32 m_upper_left; + v2s32 m_lower_right; + + /* show settings bar */ + bool m_active; + + bool m_visible; + + /* settings bar timeout */ + float m_timeout; + float m_timeout_value; + bool m_initialized; + autohide_button_bar_dir m_dir; +}; + class TouchScreenGUI { public: @@ -66,7 +145,7 @@ public: void translateEvent(const SEvent &event); - void init(ISimpleTextureSource* tsrc,float density); + void init(ISimpleTextureSource* tsrc); double getYaw() { return m_camera_yaw; } double getPitch() { return m_camera_pitch; } @@ -77,8 +156,8 @@ public: void registerHudItem(int index, const rect &rect); void Toggle(bool visible); - void Hide(); - void Show(); + void hide(); + void show(); private: IrrlichtDevice* m_device; @@ -104,15 +183,6 @@ private: bool m_move_sent_as_mouse_event; v2s32 m_move_downlocation; - struct button_info { - float repeatcounter; - float repeatdelay; - irr::EKEY_CODE keycode; - std::vector ids; - IGUIButton* guibutton; - bool immediate_release; - }; - button_info m_buttons[after_last_element_id]; /* gui button detection */ @@ -142,7 +212,7 @@ private: std::vector m_known_ids; /* handle a button event */ - void ButtonEvent(touch_gui_button_id bID, int eventID, bool action); + void handleButtonEvent(touch_gui_button_id bID, int eventID, bool action); /* handle pressed hud buttons */ bool isHUDButton(const SEvent &event); @@ -153,6 +223,12 @@ private: /* handle double taps */ bool doubleTapDetection(); + /* handle release event */ + void handleReleaseEvent(int evt_id); + + /* get size of regular gui control button */ + int getGuiButtonSize(); + /* doubleclick detection variables */ struct key_event { unsigned int down_time; @@ -165,6 +241,12 @@ private: /* array for doubletap detection */ key_event m_key_events[2]; + + /* settings bar */ + AutoHideButtonBar m_settingsbar; + + /* rare controls bar */ + AutoHideButtonBar m_rarecontrolsbar; }; extern TouchScreenGUI *g_touchscreengui; #endif diff --git a/src/unittest/test_areastore.cpp b/src/unittest/test_areastore.cpp index a0dcada9..62d446f5 100644 --- a/src/unittest/test_areastore.cpp +++ b/src/unittest/test_areastore.cpp @@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "test.h" -#include "areastore.h" +#include "util/areastore.h" class TestAreaStore : public TestBase { public: @@ -31,6 +31,7 @@ public: void genericStoreTest(AreaStore *store); void testVectorStore(); void testSpatialStore(); + void testSerialization(); }; static TestAreaStore g_test_instance; @@ -41,6 +42,7 @@ void TestAreaStore::runTests(IGameDef *gamedef) #if USE_SPATIAL TEST(testSpatialStore); #endif + TEST(testSerialization); } //////////////////////////////////////////////////////////////////////////////// @@ -62,18 +64,15 @@ void TestAreaStore::testSpatialStore() void TestAreaStore::genericStoreTest(AreaStore *store) { Area a(v3s16(-10, -3, 5), v3s16(0, 29, 7)); - a.id = 1; Area b(v3s16(-5, -2, 5), v3s16(0, 28, 6)); - b.id = 2; Area c(v3s16(-7, -3, 6), v3s16(-1, 27, 7)); - c.id = 3; std::vector res; UASSERTEQ(size_t, store->size(), 0); store->reserve(2); // sic - store->insertArea(a); - store->insertArea(b); - store->insertArea(c); + store->insertArea(&a); + store->insertArea(&b); + store->insertArea(&c); UASSERTEQ(size_t, store->size(), 3); store->getAreasForPos(&res, v3s16(-1, 0, 6)); @@ -81,20 +80,18 @@ void TestAreaStore::genericStoreTest(AreaStore *store) res.clear(); store->getAreasForPos(&res, v3s16(0, 0, 7)); UASSERTEQ(size_t, res.size(), 1); - UASSERTEQ(u32, res[0]->id, 1); res.clear(); - store->removeArea(1); + store->removeArea(a.id); store->getAreasForPos(&res, v3s16(0, 0, 7)); UASSERTEQ(size_t, res.size(), 0); res.clear(); - store->insertArea(a); + store->insertArea(&a); store->getAreasForPos(&res, v3s16(0, 0, 7)); UASSERTEQ(size_t, res.size(), 1); - UASSERTEQ(u32, res[0]->id, 1); res.clear(); store->getAreasInArea(&res, v3s16(-10, -3, 5), v3s16(0, 29, 7), false); @@ -109,21 +106,57 @@ void TestAreaStore::genericStoreTest(AreaStore *store) UASSERTEQ(size_t, res.size(), 3); res.clear(); - store->removeArea(1); - store->removeArea(2); - store->removeArea(3); + store->removeArea(a.id); + store->removeArea(b.id); + store->removeArea(c.id); Area d(v3s16(-100, -300, -200), v3s16(-50, -200, -100)); - d.id = 4; d.data = "Hi!"; - store->insertArea(d); + store->insertArea(&d); store->getAreasForPos(&res, v3s16(-75, -250, -150)); UASSERTEQ(size_t, res.size(), 1); - UASSERTEQ(u32, res[0]->id, 4); UASSERTEQ(u16, res[0]->data.size(), 3); UASSERT(strncmp(res[0]->data.c_str(), "Hi!", 3) == 0); res.clear(); - store->removeArea(4); + store->removeArea(d.id); } + +void TestAreaStore::testSerialization() +{ + VectorAreaStore store; + + Area a(v3s16(-1, 0, 1), v3s16(0, 1, 2)); + a.data = "Area A"; + store.insertArea(&a); + + Area b(v3s16(123, 456, 789), v3s16(32000, 100, 10)); + b.data = "Area B"; + store.insertArea(&b); + + std::ostringstream os; + store.serialize(os); + std::string str = os.str(); + + std::string str_wanted("\x00" // Version + "\x00\x02" // Count + "\xFF\xFF\x00\x00\x00\x01" // Area A min edge + "\x00\x00\x00\x01\x00\x02" // Area A max edge + "\x00\x06" // Area A data length + "Area A" // Area A data + "\x00\x7B\x00\x64\x00\x0A" // Area B min edge (last two swapped with max edge for sorting) + "\x7D\x00\x01\xC8\x03\x15" // Area B max edge (^) + "\x00\x06" // Area B data length + "Area B", // Area B data + 1 + 2 + + 6 + 6 + 2 + 6 + + 6 + 6 + 2 + 6); + UASSERTEQ(std::string, str, str_wanted); + + std::istringstream is(str); + store.deserialize(is); + + UASSERTEQ(size_t, store.size(), 4); // deserialize() doesn't clear the store +} + diff --git a/src/unittest/test_collision.cpp b/src/unittest/test_collision.cpp index e505de45..332d3fa1 100644 --- a/src/unittest/test_collision.cpp +++ b/src/unittest/test_collision.cpp @@ -51,7 +51,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-2, by, bz, bx-1, by+1, bz+1); v3f v(1, 0, 0); f32 dtime = 0; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 1.000) < 0.001); } { @@ -59,21 +59,21 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-2, by, bz, bx-1, by+1, bz+1); v3f v(-1, 0, 0); f32 dtime = 0; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == -1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by+1.5, bz, bx-1, by+2.5, bz-1); v3f v(1, 0, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == -1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by-1.5, bz, bx-1.5, by+0.5, bz+1); v3f v(0.5, 0.1, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 3.000) < 0.001); } { @@ -81,7 +81,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-2, by-1.5, bz, bx-1.5, by+0.5, bz+1); v3f v(0.5, 0.1, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 3.000) < 0.001); } @@ -91,7 +91,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2, by, bz, bx+3, by+1, bz+1); v3f v(-1, 0, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 1.000) < 0.001); } { @@ -99,21 +99,21 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2, by, bz, bx+3, by+1, bz+1); v3f v(1, 0, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == -1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by, bz+1.5, bx+3, by+1, bz+3.5); v3f v(-1, 0, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == -1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by-1.5, bz, bx+2.5, by-0.5, bz+1); v3f v(-0.5, 0.2, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 1); // Y, not X! + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); // Y, not X! UASSERT(fabs(dtime - 2.500) < 0.001); } { @@ -121,7 +121,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2, by-1.5, bz, bx+2.5, by-0.5, bz+1); v3f v(-0.5, 0.3, 0); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 2.000) < 0.001); } @@ -133,7 +133,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2.3, by+2.29, bz+2.29, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 0.9) < 0.001); } { @@ -141,7 +141,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2.29, by+2.3, bz+2.29, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); UASSERT(fabs(dtime - 0.9) < 0.001); } { @@ -149,7 +149,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx+2.29, by+2.29, bz+2.3, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 2); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 2); UASSERT(fabs(dtime - 0.9) < 0.001); } { @@ -157,7 +157,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.3, by-2.29, bz-2.29); v3f v(1./7, 1./7, 1./7); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 0); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); UASSERT(fabs(dtime - 16.1) < 0.001); } { @@ -165,7 +165,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.29, by-2.3, bz-2.29); v3f v(1./7, 1./7, 1./7); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 1); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); UASSERT(fabs(dtime - 16.1) < 0.001); } { @@ -173,7 +173,7 @@ void TestCollision::testAxisAlignedCollision() aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.29, by-2.29, bz-2.3); v3f v(1./7, 1./7, 1./7); f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, dtime) == 2); + UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 2); UASSERT(fabs(dtime - 16.1) < 0.001); } } diff --git a/src/unittest/test_utilities.cpp b/src/unittest/test_utilities.cpp index 1785997d..d73975b9 100644 --- a/src/unittest/test_utilities.cpp +++ b/src/unittest/test_utilities.cpp @@ -45,6 +45,7 @@ public: void testStringAllowed(); void testAsciiPrintableHelper(); void testUTF8(); + void testRemoveEscapes(); void testWrapRows(); void testIsNumber(); void testIsPowerOfTwo(); @@ -71,6 +72,7 @@ void TestUtilities::runTests(IGameDef *gamedef) TEST(testStringAllowed); TEST(testAsciiPrintableHelper); TEST(testUTF8); + TEST(testRemoveEscapes); TEST(testWrapRows); TEST(testIsNumber); TEST(testIsPowerOfTwo); @@ -253,6 +255,23 @@ void TestUtilities::testUTF8() == "the shovel dug a crumbly node!"); } +void TestUtilities::testRemoveEscapes() +{ + UASSERT(unescape_enriched( + L"abc\x1bXdef") == L"abcdef"); + UASSERT(unescape_enriched( + L"abc\x1b(escaped)def") == L"abcdef"); + UASSERT(unescape_enriched( + L"abc\x1b((escaped with parenthesis\\))def") == L"abcdef"); + UASSERT(unescape_enriched( + L"abc\x1b(incomplete") == L"abc"); + UASSERT(unescape_enriched( + L"escape at the end\x1b") == L"escape at the end"); + // Nested escapes not supported + UASSERT(unescape_enriched( + L"abc\x1b(outer \x1b(inner escape)escape)def") == L"abcescape)def"); +} + void TestUtilities::testWrapRows() { UASSERT(wrap_rows("12345678",4) == "1234\n5678"); diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 33900a43..0e7cbad0 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -1,4 +1,5 @@ set(UTIL_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/areastore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/auth.cpp ${CMAKE_CURRENT_SOURCE_DIR}/base64.cpp ${CMAKE_CURRENT_SOURCE_DIR}/directiontables.cpp diff --git a/src/areastore.cpp b/src/util/areastore.cpp similarity index 64% rename from src/areastore.cpp rename to src/util/areastore.cpp index f9362c4a..58f08a8c 100644 --- a/src/areastore.cpp +++ b/src/util/areastore.cpp @@ -17,7 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "areastore.h" +#include "util/areastore.h" #include "util/serialize.h" #include "util/container.h" @@ -44,97 +44,70 @@ with this program; if not, write to the Free Software Foundation, Inc., AST_OVERLAPS_IN_DIMENSION((amine), (amaxe), (b), Y) && \ AST_OVERLAPS_IN_DIMENSION((amine), (amaxe), (b), Z)) -u16 AreaStore::size() const -{ - return areas_map.size(); -} -u32 AreaStore::getFreeId(v3s16 minedge, v3s16 maxedge) +AreaStore *AreaStore::getOptimalImplementation() { - int keep_on = 100; - while (keep_on--) { - m_highest_id++; - // Handle overflows, we dont want to return 0 - if (m_highest_id == AREA_ID_INVALID) - m_highest_id++; - if (areas_map.find(m_highest_id) == areas_map.end()) - return m_highest_id; - } - // search failed - return AREA_ID_INVALID; +#if USE_SPATIAL + return new SpatialAreaStore(); +#else + return new VectorAreaStore(); +#endif } const Area *AreaStore::getArea(u32 id) const { - const Area *res = NULL; - std::map::const_iterator itr = areas_map.find(id); - if (itr != areas_map.end()) { - res = &itr->second; - } - return res; + AreaMap::const_iterator it = areas_map.find(id); + if (it == areas_map.end()) + return NULL; + return &it->second; } -#if 0 -Currently, serialisation is commented out. This is because of multiple reasons: -1. Why do we store the areastore into a file, why not into the database? -2. We don't use libspatial's serialisation, but we should, or perhaps not, because - it would remove the ability to switch. Perhaps write migration routines? -3. Various things need fixing, e.g. the size is serialized as - c++ implementation defined size_t -bool AreaStore::deserialize(std::istream &is) -{ - u8 ver = readU8(is); - if (ver != 1) - return false; - u16 count_areas = readU16(is); - for (u16 i = 0; i < count_areas; i++) { - // deserialize an area - Area a; - a.id = readU32(is); - a.minedge = readV3S16(is); - a.maxedge = readV3S16(is); - a.datalen = readU16(is); - a.data = new char[a.datalen]; - is.read((char *) a.data, a.datalen); - insertArea(a); - } - return true; -} - - -static bool serialize_area(void *ostr, Area *a) -{ - std::ostream &os = *((std::ostream *) ostr); - writeU32(os, a->id); - writeV3S16(os, a->minedge); - writeV3S16(os, a->maxedge); - writeU16(os, a->datalen); - os.write(a->data, a->datalen); - - return false; -} - - void AreaStore::serialize(std::ostream &os) const { - // write initial data - writeU8(os, 1); // serialisation version - writeU16(os, areas_map.size()); //DANGER: not platform independent - forEach(&serialize_area, &os); + writeU8(os, 0); // Serialisation version + + // TODO: Compression? + writeU16(os, areas_map.size()); + for (AreaMap::const_iterator it = areas_map.begin(); + it != areas_map.end(); ++it) { + const Area &a = it->second; + writeV3S16(os, a.minedge); + writeV3S16(os, a.maxedge); + writeU16(os, a.data.size()); + os.write(a.data.data(), a.data.size()); + } } -#endif +void AreaStore::deserialize(std::istream &is) +{ + u8 ver = readU8(is); + if (ver != 0) + throw SerializationError("Unknown AreaStore " + "serialization version!"); + + u16 num_areas = readU16(is); + for (u32 i = 0; i < num_areas; ++i) { + Area a; + a.minedge = readV3S16(is); + a.maxedge = readV3S16(is); + u16 data_len = readU16(is); + char *data = new char[data_len]; + is.read(data, data_len); + a.data = std::string(data, data_len); + insertArea(&a); + } +} void AreaStore::invalidateCache() { - if (cache_enabled) { + if (m_cache_enabled) { m_res_cache.invalidate(); } } void AreaStore::setCacheParams(bool enabled, u8 block_radius, size_t limit) { - cache_enabled = enabled; + m_cache_enabled = enabled; m_cacheblock_radius = MYMAX(block_radius, 16); m_res_cache.setLimit(MYMAX(limit, 20)); invalidateCache(); @@ -163,7 +136,7 @@ void AreaStore::cacheMiss(void *data, const v3s16 &mpos, std::vector *de void AreaStore::getAreasForPos(std::vector *result, v3s16 pos) { - if (cache_enabled) { + if (m_cache_enabled) { v3s16 mblock = getContainerPos(pos, m_cacheblock_radius); const std::vector *pre_list = m_res_cache.lookupCache(mblock); @@ -185,42 +158,41 @@ void AreaStore::getAreasForPos(std::vector *result, v3s16 pos) //// -void VectorAreaStore::insertArea(const Area &a) +bool VectorAreaStore::insertArea(Area *a) { - areas_map[a.id] = a; - m_areas.push_back(&(areas_map[a.id])); + if (a->id == U32_MAX) + a->id = getNextId(); + std::pair res = + areas_map.insert(std::make_pair(a->id, *a)); + if (!res.second) + // ID is not unique + return false; + m_areas.push_back(&res.first->second); invalidateCache(); -} - -void VectorAreaStore::reserve(size_t count) -{ - m_areas.reserve(count); + return true; } bool VectorAreaStore::removeArea(u32 id) { - std::map::iterator itr = areas_map.find(id); - if (itr != areas_map.end()) { - size_t msiz = m_areas.size(); - for (size_t i = 0; i < msiz; i++) { - Area * b = m_areas[i]; - if (b->id == id) { - areas_map.erase(itr); - m_areas.erase(m_areas.begin() + i); - invalidateCache(); - return true; - } + AreaMap::iterator it = areas_map.find(id); + if (it == areas_map.end()) + return false; + Area *a = &it->second; + for (std::vector::iterator v_it = m_areas.begin(); + v_it != m_areas.end(); ++v_it) { + if (*v_it == a) { + m_areas.erase(v_it); + break; } - // we should never get here, it means we did find it in map, - // but not in the vector } - return false; + areas_map.erase(it); + invalidateCache(); + return true; } void VectorAreaStore::getAreasForPosImpl(std::vector *result, v3s16 pos) { - size_t msiz = m_areas.size(); - for (size_t i = 0; i < msiz; i++) { + for (size_t i = 0; i < m_areas.size(); ++i) { Area *b = m_areas[i]; if (AST_CONTAINS_PT(b, pos)) { result->push_back(b); @@ -231,9 +203,8 @@ void VectorAreaStore::getAreasForPosImpl(std::vector *result, v3s16 pos) void VectorAreaStore::getAreasInArea(std::vector *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap) { - size_t msiz = m_areas.size(); - for (size_t i = 0; i < msiz; i++) { - Area * b = m_areas[i]; + for (size_t i = 0; i < m_areas.size(); ++i) { + Area *b = m_areas[i]; if (accept_overlap ? AST_AREAS_OVERLAP(minedge, maxedge, b) : AST_CONTAINS_AREA(minedge, maxedge, b)) { result->push_back(b); @@ -241,19 +212,6 @@ void VectorAreaStore::getAreasInArea(std::vector *result, } } -#if 0 -bool VectorAreaStore::forEach(bool (*callback)(void *args, Area *a), void *args) const -{ - size_t msiz = m_areas.size(); - for (size_t i = 0; i < msiz; i++) { - if (callback(args, m_areas[i])) { - return true; - } - } - return false; -} -#endif - #if USE_SPATIAL static inline SpatialIndex::Region get_spatial_region(const v3s16 minedge, @@ -273,11 +231,16 @@ static inline SpatialIndex::Point get_spatial_point(const v3s16 pos) } -void SpatialAreaStore::insertArea(const Area &a) +bool SpatialAreaStore::insertArea(Area *a) { - areas_map[a.id] = a; - m_tree->insertData(0, NULL, get_spatial_region(a.minedge, a.maxedge), a.id); + if (a->id == U32_MAX) + a->id = getNextId(); + if (!areas_map.insert(std::make_pair(a->id, *a)).second) + // ID is not unique + return false; + m_tree->insertData(0, NULL, get_spatial_region(a->minedge, a->maxedge), a->id); invalidateCache(); + return true; } bool SpatialAreaStore::removeArea(u32 id) @@ -287,6 +250,7 @@ bool SpatialAreaStore::removeArea(u32 id) Area *a = &itr->second; bool result = m_tree->deleteData(get_spatial_region(a->minedge, a->maxedge), id); + areas_map.erase(itr); invalidateCache(); return result; } else { @@ -312,14 +276,6 @@ void SpatialAreaStore::getAreasInArea(std::vector *result, } } -#if 0 -bool SpatialAreaStore::forEach(bool (*callback)(void *args, Area *a), void *args) const -{ - // TODO ?? (this is only needed for serialisation, but libspatial has its own serialisation) - return false; -} -#endif - SpatialAreaStore::~SpatialAreaStore() { delete m_tree; diff --git a/src/areastore.h b/src/util/areastore.h similarity index 58% rename from src/areastore.h rename to src/util/areastore.h index 57d96450..bebecfd7 100644 --- a/src/areastore.h +++ b/src/util/areastore.h @@ -17,8 +17,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef AREASTORE_H_ -#define AREASTORE_H_ +#ifndef AREA_STORE_H_ +#define AREA_STORE_H_ #include "irr_v3d.h" #include "noise.h" // for PcgRandom @@ -36,141 +36,147 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/serialize.h" #endif -#define AST_EXTREMIFY(min, max, pa, pb) \ - (min).X = MYMIN((pa).X, (pb).X); \ - (min).Y = MYMIN((pa).Y, (pb).Y); \ - (min).Z = MYMIN((pa).Z, (pb).Z); \ - (max).X = MYMAX((pa).X, (pb).X); \ - (max).Y = MYMAX((pa).Y, (pb).Y); \ - (max).Z = MYMAX((pa).Z, (pb).Z); - -#define AREA_ID_INVALID 0 struct Area { - Area(const v3s16 &minedge, const v3s16 &maxedge) + Area() : id(U32_MAX) {} + Area(const v3s16 &mine, const v3s16 &maxe) : + id(U32_MAX), minedge(mine), maxedge(maxe) { - this->minedge = minedge; - this->maxedge = maxedge; - } - - Area() {} - - void extremifyEdges() - { - v3s16 nminedge; - v3s16 nmaxedge; - - AST_EXTREMIFY(nminedge, nmaxedge, minedge, maxedge) - - maxedge = nmaxedge; - minedge = nminedge; + sortBoxVerticies(minedge, maxedge); } u32 id; - v3s16 minedge; - v3s16 maxedge; + v3s16 minedge, maxedge; std::string data; }; -std::vector get_areastore_typenames(); class AreaStore { -protected: - // TODO change to unordered_map when we can - std::map areas_map; - void invalidateCache(); - virtual void getAreasForPosImpl(std::vector *result, v3s16 pos) = 0; - bool cache_enabled; // don't write to this from subclasses, only read. public: - virtual void insertArea(const Area &a) = 0; + AreaStore() : + m_cache_enabled(true), + m_cacheblock_radius(64), + m_res_cache(1000, &cacheMiss, this), + m_next_id(0) + {} + + virtual ~AreaStore() {} + + static AreaStore *getOptimalImplementation(); + virtual void reserve(size_t count) {}; + size_t size() const { return areas_map.size(); } + + /// Add an area to the store. + /// Updates the area's ID if it hasn't already been set. + /// @return Whether the area insertion was successful. + virtual bool insertArea(Area *a) = 0; + + /// Removes an area from the store by ID. + /// @return Whether the area was in the store and removed. virtual bool removeArea(u32 id) = 0; + + /// Finds areas that the passed position is contained in. + /// Stores output in passed vector. void getAreasForPos(std::vector *result, v3s16 pos); + + /// Finds areas that are completely contained inside the area defined + /// by the passed edges. If @p accept_overlap is true this finds any + /// areas that intersect with the passed area at any point. virtual void getAreasInArea(std::vector *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap) = 0; -#if 0 - // calls a passed function for every stored area, until the - // callback returns true. If that happens, it returns true, - // if the search is exhausted, it returns false - virtual bool forEach(bool (*callback)(void *args, Area *a), void *args) const = 0; -#endif - - virtual ~AreaStore() - {} - - AreaStore() : - cache_enabled(true), - m_cacheblock_radius(64), - m_res_cache(1000, &cacheMiss, this), - m_highest_id(0) - { - } - + /// Sets cache parameters. void setCacheParams(bool enabled, u8 block_radius, size_t limit); - u32 getFreeId(v3s16 minedge, v3s16 maxedge); + /// Returns a pointer to the area coresponding to the passed ID, + /// or NULL if it doesn't exist. const Area *getArea(u32 id) const; - u16 size() const; -#if 0 - bool deserialize(std::istream &is); - void serialize(std::ostream &is) const; -#endif -private: - static void cacheMiss(void *data, const v3s16 &mpos, std::vector *dest); - u8 m_cacheblock_radius; // if you modify this, call invalidateCache() - LRUCache > m_res_cache; - u32 m_highest_id; + /// Serializes the store's areas to a binary ostream. + void serialize(std::ostream &is) const; + + /// Deserializes the Areas from a binary istream. + /// This does not currently clear the AreaStore before adding the + /// areas, making it possible to deserialize multiple serialized + /// AreaStores. + void deserialize(std::istream &is); + +protected: + /// Invalidates the getAreasForPos cache. + /// Call after adding or removing an area. + void invalidateCache(); + + /// Implementation of getAreasForPos. + /// getAreasForPos calls this if the cache is disabled. + virtual void getAreasForPosImpl(std::vector *result, v3s16 pos) = 0; + + /// Returns the next area ID and increments it. + u32 getNextId() { return m_next_id++; } + + // Note: This can't be an unordered_map, since all + // references would be invalidated on rehash. + typedef std::map AreaMap; + AreaMap areas_map; + +private: + /// Called by the cache when a value isn't found in the cache. + static void cacheMiss(void *data, const v3s16 &mpos, std::vector *dest); + + bool m_cache_enabled; + /// Range, in nodes, of the getAreasForPos cache. + /// If you modify this, call invalidateCache() + u8 m_cacheblock_radius; + LRUCache > m_res_cache; + + u32 m_next_id; }; class VectorAreaStore : public AreaStore { -protected: - virtual void getAreasForPosImpl(std::vector *result, v3s16 pos); public: - virtual void insertArea(const Area &a); - virtual void reserve(size_t count); + virtual void reserve(size_t count) { m_areas.reserve(count); } + virtual bool insertArea(Area *a); virtual bool removeArea(u32 id); virtual void getAreasInArea(std::vector *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap); - // virtual bool forEach(bool (*callback)(void *args, Area *a), void *args) const; + +protected: + virtual void getAreasForPosImpl(std::vector *result, v3s16 pos); + private: std::vector m_areas; }; + #if USE_SPATIAL class SpatialAreaStore : public AreaStore { -protected: - virtual void getAreasForPosImpl(std::vector *result, v3s16 pos); public: SpatialAreaStore(); - virtual void insertArea(const Area &a); + virtual ~SpatialAreaStore(); + + virtual bool insertArea(Area *a); virtual bool removeArea(u32 id); virtual void getAreasInArea(std::vector *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap); - // virtual bool forEach(bool (*callback)(void *args, Area *a), void *args) const; - virtual ~SpatialAreaStore(); +protected: + virtual void getAreasForPosImpl(std::vector *result, v3s16 pos); + private: SpatialIndex::ISpatialIndex *m_tree; SpatialIndex::IStorageManager *m_storagemanager; class VectorResultVisitor : public SpatialIndex::IVisitor { - private: - SpatialAreaStore *m_store; - std::vector *m_result; public: - VectorResultVisitor(std::vector *result, SpatialAreaStore *store) - { - m_store = store; - m_result = result; - } + VectorResultVisitor(std::vector *result, SpatialAreaStore *store) : + m_store(store), + m_result(result) + {} + ~VectorResultVisitor() {} - virtual void visitNode(const SpatialIndex::INode &in) - { - } + virtual void visitNode(const SpatialIndex::INode &in) {} virtual void visitData(const SpatialIndex::IData &in) { @@ -187,10 +193,12 @@ private: visitData(*(v[i])); } - ~VectorResultVisitor() {} + private: + SpatialAreaStore *m_store; + std::vector *m_result; }; }; -#endif +#endif // USE_SPATIAL -#endif /* AREASTORE_H_ */ +#endif // AREA_STORE_H_ diff --git a/src/util/auth.cpp b/src/util/auth.cpp index 0c17a923..91298725 100644 --- a/src/util/auth.cpp +++ b/src/util/auth.cpp @@ -1,6 +1,6 @@ /* Minetest -Copyright (C) 2015 est31 +Copyright (C) 2015, 2016 est31 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 @@ -31,7 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., // their password. (Exception : if the password field is // blank, we send a blank password - this is for backwards // compatibility with password-less players). -std::string translatePassword(const std::string &name, +std::string translate_password(const std::string &name, const std::string &password) { if (password.length() == 0) @@ -46,7 +46,11 @@ std::string translatePassword(const std::string &name, return pwd; } -void getSRPVerifier(const std::string &name, +// Call lower level SRP code to generate a verifier with the +// given pointers. Contains the preparations, call parameters +// and error checking common to all srp verifier generation code. +// See docs of srp_create_salted_verification_key for more info. +static inline void gen_srp_v(const std::string &name, const std::string &password, char **salt, size_t *salt_len, char **bytes_v, size_t *len_v) { @@ -58,72 +62,76 @@ void getSRPVerifier(const std::string &name, FATAL_ERROR_IF(res != SRP_OK, "Couldn't create salted SRP verifier"); } -// Get a db-ready SRP verifier -// If the salt param is NULL, one is automatically generated. -// Please free() it afterwards. You shouldn't use it for other purposes, -// as you will need the contents of salt_len too. -inline static std::string getSRPVerifier(const std::string &name, - const std::string &password, char ** salt, size_t salt_len) -{ - char * bytes_v = NULL; - size_t len_v; - getSRPVerifier(name, password, salt, &salt_len, - &bytes_v, &len_v); - assert(*salt); // usually, srp_create_salted_verification_key promises us to return SRP_ERR when *salt == NULL - std::string ret_val = encodeSRPVerifier(std::string(bytes_v, len_v), - std::string(*salt, salt_len)); - free(bytes_v); - return ret_val; -} - -// Get a db-ready SRP verifier -std::string getSRPVerifier(const std::string &name, - const std::string &password) -{ - char * salt = NULL; - std::string ret_val = getSRPVerifier(name, - password, &salt, 0); - free(salt); - return ret_val; -} - -// Get a db-ready SRP verifier -std::string getSRPVerifier(const std::string &name, +/// Creates a verification key with given salt and password. +std::string generate_srp_verifier(const std::string &name, const std::string &password, const std::string &salt) { - // The implementation won't change the salt if its set, - // therefore we can cast. - char *salt_cstr = (char *)salt.c_str(); - return getSRPVerifier(name, password, - &salt_cstr, salt.size()); + size_t salt_len = salt.size(); + // The API promises us that the salt doesn't + // get modified if &salt_ptr isn't NULL. + char *salt_ptr = (char *)salt.c_str(); + + char *bytes_v = NULL; + size_t verifier_len = 0; + gen_srp_v(name, password, &salt_ptr, &salt_len, &bytes_v, &verifier_len); + std::string verifier = std::string(bytes_v, verifier_len); + free(bytes_v); + return verifier; } -// Make a SRP verifier db-ready -std::string encodeSRPVerifier(const std::string &verifier, +/// Creates a verification key and salt with given password. +void generate_srp_verifier_and_salt(const std::string &name, + const std::string &password, std::string *verifier, + std::string *salt) +{ + char *bytes_v = NULL; + size_t verifier_len; + char *salt_ptr = NULL; + size_t salt_len; + gen_srp_v(name, password, &salt_ptr, &salt_len, &bytes_v, &verifier_len); + *verifier = std::string(bytes_v, verifier_len); + *salt = std::string(salt_ptr, salt_len); + free(bytes_v); + free(salt_ptr); +} + +/// Gets an SRP verifier, generating a salt, +/// and encodes it as DB-ready string. +std::string get_encoded_srp_verifier(const std::string &name, + const std::string &password) +{ + std::string verifier; + std::string salt; + generate_srp_verifier_and_salt(name, password, &verifier, &salt); + return encode_srp_verifier(verifier, salt); +} + +/// Converts the passed SRP verifier into a DB-ready format. +std::string encode_srp_verifier(const std::string &verifier, const std::string &salt) { std::ostringstream ret_str; ret_str << "#1#" - << base64_encode((unsigned char*) salt.c_str(), salt.size()) << "#" - << base64_encode((unsigned char*) verifier.c_str(), verifier.size()); + << base64_encode((unsigned char *)salt.c_str(), salt.size()) << "#" + << base64_encode((unsigned char *)verifier.c_str(), verifier.size()); return ret_str.str(); } -bool decodeSRPVerifier(const std::string &enc_pwd, - std::string *salt, std::string *bytes_v) +/// Reads the DB-formatted SRP verifier and gets the verifier +/// and salt components. +bool decode_srp_verifier_and_salt(const std::string &encoded, + std::string *verifier, std::string *salt) { - std::vector pwd_components = str_split(enc_pwd, '#'); + std::vector components = str_split(encoded, '#'); - if ((pwd_components.size() != 4) - || (pwd_components[1] != "1") // 1 means srp - || !base64_is_valid(pwd_components[2]) - || !base64_is_valid(pwd_components[3])) + if ((components.size() != 4) + || (components[1] != "1") // 1 means srp + || !base64_is_valid(components[2]) + || !base64_is_valid(components[3])) return false; - std::string salt_str = base64_decode(pwd_components[2]); - std::string bytes_v_str = base64_decode(pwd_components[3]); - *salt = salt_str; - *bytes_v = bytes_v_str; + *salt = base64_decode(components[2]); + *verifier = base64_decode(components[3]); return true; } diff --git a/src/util/auth.h b/src/util/auth.h index 36d8c20a..1fd6ab45 100644 --- a/src/util/auth.h +++ b/src/util/auth.h @@ -1,6 +1,6 @@ /* Minetest -Copyright (C) 2015 est31 +Copyright (C) 2015, 2016 est31 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 @@ -20,18 +20,31 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef AUTH_H #define AUTH_H -std::string translatePassword(const std::string &name, +/// Gets the base64 encoded legacy password db entry. +std::string translate_password(const std::string &name, const std::string &password); -void getSRPVerifier(const std::string &name, - const std::string &password, char **salt, size_t *salt_len, - char **bytes_v, size_t *len_v); -std::string getSRPVerifier(const std::string &name, - const std::string &password); -std::string getSRPVerifier(const std::string &name, + +/// Creates a verification key with given salt and password. +std::string generate_srp_verifier(const std::string &name, const std::string &password, const std::string &salt); -std::string encodeSRPVerifier(const std::string &verifier, + +/// Creates a verification key and salt with given password. +void generate_srp_verifier_and_salt(const std::string &name, + const std::string &password, std::string *verifier, + std::string *salt); + +/// Gets an SRP verifier, generating a salt, +/// and encodes it as DB-ready string. +std::string get_encoded_srp_verifier(const std::string &name, + const std::string &password); + +/// Converts the passed SRP verifier into a DB-ready format. +std::string encode_srp_verifier(const std::string &verifier, const std::string &salt); -bool decodeSRPVerifier(const std::string &enc_pwd, + +/// Reads the DB-formatted SRP verifier and gets the verifier +/// and salt components. +bool decode_srp_verifier_and_salt(const std::string &encoded, std::string *salt, std::string *bytes_v); -#endif \ No newline at end of file +#endif diff --git a/src/util/numeric.cpp b/src/util/numeric.cpp index bfd5d6e3..42ebd902 100644 --- a/src/util/numeric.cpp +++ b/src/util/numeric.cpp @@ -244,7 +244,10 @@ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 cosangle = dforward / blockpos_adj.getLength(); // If block is not in the field of view, skip it - if(cosangle < cos(camera_fov / 2)) + // HOTFIX: use sligthly increased angle (+10%) to fix too agressive + // culling. Somebody have to find out whats wrong with the math here. + // Previous value: camera_fov / 2 + if(cosangle < cos(camera_fov * 0.55)) return false; return true; diff --git a/src/util/numeric.h b/src/util/numeric.h index e742ab24..61532786 100644 --- a/src/util/numeric.h +++ b/src/util/numeric.h @@ -310,9 +310,9 @@ inline v3f intToFloat(v3s16 p, f32 d) } // Random helper. Usually d=BS -inline core::aabbox3d getNodeBox(v3s16 p, float d) +inline aabb3f getNodeBox(v3s16 p, float d) { - return core::aabbox3d( + return aabb3f( (float)p.X * d - 0.5*d, (float)p.Y * d - 0.5*d, (float)p.Z * d - 0.5*d, diff --git a/src/util/serialize.cpp b/src/util/serialize.cpp index ced5fc7c..99cb990f 100644 --- a/src/util/serialize.cpp +++ b/src/util/serialize.cpp @@ -229,7 +229,7 @@ std::string deSerializeLongString(std::istream &is) Buffer buf2(s_size); is.read(&buf2[0], s_size); - if (is.gcount() != s_size) + if ((u32)is.gcount() != s_size) throw SerializationError("deSerializeLongString: couldn't read all chars"); s.reserve(s_size); diff --git a/src/util/serialize.h b/src/util/serialize.h index 58e59df2..36324a67 100644 --- a/src/util/serialize.h +++ b/src/util/serialize.h @@ -26,7 +26,17 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "config.h" #if HAVE_ENDIAN_H - #include + #ifdef _WIN32 + #define __BYTE_ORDER 0 + #define __LITTLE_ENDIAN 0 + #define __BIG_ENDIAN 1 + #elif defined(__MACH__) && defined(__APPLE__) + #include + #elif defined(__FreeBSD__) + #include + #else + #include + #endif #endif #include // for memcpy #include diff --git a/src/util/srp.cpp b/src/util/srp.cpp index b4af58d6..0d3c938a 100644 --- a/src/util/srp.cpp +++ b/src/util/srp.cpp @@ -26,12 +26,14 @@ * */ +// clang-format off #ifdef WIN32 #include #include #else #include #endif +// clang-format on #include #include @@ -69,116 +71,116 @@ static int g_initialized = 0; static unsigned int g_rand_idx; static unsigned char g_rand_buff[RAND_BUFF_MAX]; -void *(*srp_alloc) (size_t) = &malloc; -void *(*srp_realloc) (void *, size_t) = &realloc; -void (*srp_free) (void *) = &free; +void *(*srp_alloc)(size_t) = &malloc; +void *(*srp_realloc)(void *, size_t) = &realloc; +void (*srp_free)(void *) = &free; +// clang-format off void srp_set_memory_functions( - void *(*new_srp_alloc) (size_t), - void *(*new_srp_realloc) (void *, size_t), - void (*new_srp_free) (void *)) { + void *(*new_srp_alloc)(size_t), + void *(*new_srp_realloc)(void *, size_t), + void (*new_srp_free)(void *)) +{ srp_alloc = new_srp_alloc; srp_realloc = new_srp_realloc; srp_free = new_srp_free; } +// clang-format on -typedef struct -{ +typedef struct { mpz_t N; mpz_t g; } NGConstant; -struct NGHex -{ - const char* n_hex; - const char* g_hex; +struct NGHex { + const char *n_hex; + const char *g_hex; }; /* All constants here were pulled from Appendix A of RFC 5054 */ static struct NGHex global_Ng_constants[] = { - { /* 1024 */ - "EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576D674DF7496" - "EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD15DC7D7B46154D6B6CE8E" - "F4AD69B15D4982559B297BCF1885C529F566660E57EC68EDBC3C05726CC02FD4CBF4976EAA" - "9AFD5138FE8376435B9FC61D2FC0EB06E3", - "2" - }, - { /* 2048 */ - "AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC3192943DB56050A37329CBB4" - "A099ED8193E0757767A13DD52312AB4B03310DCD7F48A9DA04FD50E8083969EDB767B0CF60" - "95179A163AB3661A05FBD5FAAAE82918A9962F0B93B855F97993EC975EEAA80D740ADBF4FF" - "747359D041D5C33EA71D281E446B14773BCA97B43A23FB801676BD207A436C6481F1D2B907" - "8717461A5B9D32E688F87748544523B524B0D57D5EA77A2775D2ECFA032CFBDBF52FB37861" - "60279004E57AE6AF874E7303CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DB" - "FBB694B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F9E4AFF73", - "2" - }, - { /* 4096 */ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC" - "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26" - "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB" - "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2" - "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127" - "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" - "FFFFFFFFFFFFFFFF", - "5" - }, - { /* 8192 */ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC" - "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26" - "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB" - "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2" - "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127" - "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406" - "AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918" - "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B33205151" - "2BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03" - "F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97F" - "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58B" - "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632" - "387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E" - "6DBE115974A3926F12FEE5E438777CB6A932DF8CD8BEC4D073B931BA" - "3BC832B68D9DD300741FA7BF8AFC47ED2576F6936BA424663AAB639C" - "5AE4F5683423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" - "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B4BCBC886" - "2F8385DDFA9D4B7FA2C087E879683303ED5BDD3A062B3CF5B3A278A6" - "6D2A13F83F44F82DDF310EE074AB6A364597E899A0255DC164F31CC5" - "0846851DF9AB48195DED7EA1B1D510BD7EE74D73FAF36BC31ECFA268" - "359046F4EB879F924009438B481C6CD7889A002ED5EE382BC9190DA6" - "FC026E479558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" - "60C980DD98EDD3DFFFFFFFFFFFFFFFFF", - "13" - }, - {0,0} /* null sentinel */ + {/* 1024 */ + "EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C" + "9C256576D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE4" + "8E495C1D6089DAD15DC7D7B46154D6B6CE8EF4AD69B15D4982559B29" + "7BCF1885C529F566660E57EC68EDBC3C05726CC02FD4CBF4976EAA9A" + "FD5138FE8376435B9FC61D2FC0EB06E3", + "2"}, + {/* 2048 */ + "AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC319294" + "3DB56050A37329CBB4A099ED8193E0757767A13DD52312AB4B03310D" + "CD7F48A9DA04FD50E8083969EDB767B0CF6095179A163AB3661A05FB" + "D5FAAAE82918A9962F0B93B855F97993EC975EEAA80D740ADBF4FF74" + "7359D041D5C33EA71D281E446B14773BCA97B43A23FB801676BD207A" + "436C6481F1D2B9078717461A5B9D32E688F87748544523B524B0D57D" + "5EA77A2775D2ECFA032CFBDBF52FB3786160279004E57AE6AF874E73" + "03CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DBFBB6" + "94B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F" + "9E4AFF73", + "2"}, + {/* 4096 */ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08" + "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B" + "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9" + "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6" + "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8" + "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C" + "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718" + "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D" + "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D" + "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226" + "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC" + "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26" + "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB" + "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2" + "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127" + "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" + "FFFFFFFFFFFFFFFF", + "5"}, + {/* 8192 */ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08" + "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B" + "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9" + "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6" + "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8" + "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C" + "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718" + "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D" + "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D" + "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226" + "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC" + "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26" + "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB" + "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2" + "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127" + "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406" + "AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918" + "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B33205151" + "2BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03" + "F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97F" + "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58B" + "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632" + "387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E" + "6DBE115974A3926F12FEE5E438777CB6A932DF8CD8BEC4D073B931BA" + "3BC832B68D9DD300741FA7BF8AFC47ED2576F6936BA424663AAB639C" + "5AE4F5683423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" + "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B4BCBC886" + "2F8385DDFA9D4B7FA2C087E879683303ED5BDD3A062B3CF5B3A278A6" + "6D2A13F83F44F82DDF310EE074AB6A364597E899A0255DC164F31CC5" + "0846851DF9AB48195DED7EA1B1D510BD7EE74D73FAF36BC31ECFA268" + "359046F4EB879F924009438B481C6CD7889A002ED5EE382BC9190DA6" + "FC026E479558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" + "60C980DD98EDD3DFFFFFFFFFFFFFFFFF", + "13"}, + {0, 0} /* null sentinel */ }; - static void delete_ng(NGConstant *ng) { if (ng) { @@ -188,18 +190,18 @@ static void delete_ng(NGConstant *ng) } } -static NGConstant *new_ng( SRP_NGType ng_type, const char *n_hex, const char *g_hex ) +static NGConstant *new_ng(SRP_NGType ng_type, const char *n_hex, const char *g_hex) { - NGConstant *ng = (NGConstant *) srp_alloc(sizeof(NGConstant)); + NGConstant *ng = (NGConstant *)srp_alloc(sizeof(NGConstant)); + + if (!ng) return 0; + mpz_init(ng->N); mpz_init(ng->g); - if (!ng) - return 0; - if (ng_type != SRP_NG_CUSTOM) { - n_hex = global_Ng_constants[ ng_type ].n_hex; - g_hex = global_Ng_constants[ ng_type ].g_hex; + n_hex = global_Ng_constants[ng_type].n_hex; + g_hex = global_Ng_constants[ng_type].g_hex; } int rv = 0; @@ -214,17 +216,13 @@ static NGConstant *new_ng( SRP_NGType ng_type, const char *n_hex, const char *g_ return ng; } - -typedef union -{ - SHA_CTX sha; +typedef union { + SHA_CTX sha; SHA256_CTX sha256; - //SHA512_CTX sha512; + // SHA512_CTX sha512; } HashCTX; - -struct SRPVerifier -{ +struct SRPVerifier { SRP_HashAlgorithm hash_alg; NGConstant *ng; @@ -237,9 +235,7 @@ struct SRPVerifier unsigned char session_key[SHA512_DIGEST_LENGTH]; }; - -struct SRPUser -{ +struct SRPUser { SRP_HashAlgorithm hash_alg; NGConstant *ng; @@ -260,19 +256,23 @@ struct SRPUser unsigned char session_key[SHA512_DIGEST_LENGTH]; }; - +// clang-format off static int hash_init(SRP_HashAlgorithm alg, HashCTX *c) { switch (alg) { #ifdef CSRP_USE_SHA1 case SRP_SHA1: return SHA1_Init(&c->sha); #endif - /*case SRP_SHA224: return SHA224_Init(&c->sha256);*/ + /* + case SRP_SHA224: return SHA224_Init(&c->sha256); + */ #ifdef CSRP_USE_SHA256 case SRP_SHA256: return SHA256_Init(&c->sha256); #endif - /*case SRP_SHA384: return SHA384_Init(&c->sha512); - case SRP_SHA512: return SHA512_Init(&c->sha512);*/ + /* + case SRP_SHA384: return SHA384_Init(&c->sha512); + case SRP_SHA512: return SHA512_Init(&c->sha512); + */ default: return -1; }; } @@ -282,12 +282,16 @@ static int hash_update( SRP_HashAlgorithm alg, HashCTX *c, const void *data, siz #ifdef CSRP_USE_SHA1 case SRP_SHA1: return SHA1_Update(&c->sha, data, len); #endif - /*case SRP_SHA224: return SHA224_Update(&c->sha256, data, len);*/ + /* + case SRP_SHA224: return SHA224_Update(&c->sha256, data, len); + */ #ifdef CSRP_USE_SHA256 case SRP_SHA256: return SHA256_Update(&c->sha256, data, len); #endif - /*case SRP_SHA384: return SHA384_Update( &c->sha512, data, len ); - case SRP_SHA512: return SHA512_Update( &c->sha512, data, len );*/ + /* + case SRP_SHA384: return SHA384_Update(&c->sha512, data, len); + case SRP_SHA512: return SHA512_Update(&c->sha512, data, len); + */ default: return -1; }; } @@ -297,12 +301,16 @@ static int hash_final( SRP_HashAlgorithm alg, HashCTX *c, unsigned char *md ) #ifdef CSRP_USE_SHA1 case SRP_SHA1: return SHA1_Final(md, &c->sha); #endif - /*case SRP_SHA224: return SHA224_Final(md, &c->sha256);*/ + /* + case SRP_SHA224: return SHA224_Final(md, &c->sha256); + */ #ifdef CSRP_USE_SHA256 case SRP_SHA256: return SHA256_Final(md, &c->sha256); #endif - /*case SRP_SHA384: return SHA384_Final(md, &c->sha512); - case SRP_SHA512: return SHA512_Final(md, &c->sha512);*/ + /* + case SRP_SHA384: return SHA384_Final(md, &c->sha512); + case SRP_SHA512: return SHA512_Final(md, &c->sha512); + */ default: return -1; }; } @@ -312,12 +320,16 @@ static unsigned char *hash(SRP_HashAlgorithm alg, const unsigned char *d, size_t #ifdef CSRP_USE_SHA1 case SRP_SHA1: return SHA1(d, n, md); #endif - /*case SRP_SHA224: return SHA224( d, n, md );*/ + /* + case SRP_SHA224: return SHA224( d, n, md ); + */ #ifdef CSRP_USE_SHA256 case SRP_SHA256: return SHA256(d, n, md); #endif - /*case SRP_SHA384: return SHA384( d, n, md ); - case SRP_SHA512: return SHA512( d, n, md );*/ + /* + case SRP_SHA384: return SHA384( d, n, md ); + case SRP_SHA512: return SHA512( d, n, md ); + */ default: return 0; }; } @@ -327,19 +339,24 @@ static size_t hash_length(SRP_HashAlgorithm alg) #ifdef CSRP_USE_SHA1 case SRP_SHA1: return SHA_DIGEST_LENGTH; #endif - /*case SRP_SHA224: return SHA224_DIGEST_LENGTH;*/ + /* + case SRP_SHA224: return SHA224_DIGEST_LENGTH; + */ #ifdef CSRP_USE_SHA256 case SRP_SHA256: return SHA256_DIGEST_LENGTH; #endif - /*case SRP_SHA384: return SHA384_DIGEST_LENGTH; - case SRP_SHA512: return SHA512_DIGEST_LENGTH;*/ + /* + case SRP_SHA384: return SHA384_DIGEST_LENGTH; + case SRP_SHA512: return SHA512_DIGEST_LENGTH; + */ default: return -1; }; } +// clang-format on inline static int mpz_num_bytes(const mpz_t op) { - return (mpz_sizeinbase (op, 2) + 7) / 8; + return (mpz_sizeinbase(op, 2) + 7) / 8; } inline static void mpz_to_bin(const mpz_t op, unsigned char *to) @@ -353,72 +370,77 @@ inline static void mpz_from_bin(const unsigned char *s, size_t len, mpz_t ret) } // set op to (op1 * op2) mod d, using tmp for the calculation -inline static void mpz_mulm(mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp) +inline static void mpz_mulm( + mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp) { mpz_mul(tmp, op1, op2); mpz_mod(op, tmp, d); } // set op to (op1 + op2) mod d, using tmp for the calculation -inline static void mpz_addm( mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp ) +inline static void mpz_addm( + mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp) { mpz_add(tmp, op1, op2); mpz_mod(op, tmp, d); } // set op to (op1 - op2) mod d, using tmp for the calculation -inline static void mpz_subm(mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp) +inline static void mpz_subm( + mpz_t op, const mpz_t op1, const mpz_t op2, const mpz_t d, mpz_t tmp) { mpz_sub(tmp, op1, op2); mpz_mod(op, tmp, d); } -static int H_nn(mpz_t result, SRP_HashAlgorithm alg, const mpz_t N, const mpz_t n1, const mpz_t n2) +static SRP_Result H_nn( + mpz_t result, SRP_HashAlgorithm alg, const mpz_t N, const mpz_t n1, const mpz_t n2) { unsigned char buff[SHA512_DIGEST_LENGTH]; size_t len_N = mpz_num_bytes(N); size_t len_n1 = mpz_num_bytes(n1); size_t len_n2 = mpz_num_bytes(n2); size_t nbytes = len_N + len_N; - unsigned char *bin = (unsigned char *) srp_alloc(nbytes); - if (!bin) - return 0; + unsigned char *bin = (unsigned char *)srp_alloc(nbytes); + if (!bin) return SRP_ERR; if (len_n1 > len_N || len_n2 > len_N) { srp_free(bin); - return 0; + return SRP_ERR; } memset(bin, 0, nbytes); mpz_to_bin(n1, bin + (len_N - len_n1)); mpz_to_bin(n2, bin + (len_N + len_N - len_n2)); - hash( alg, bin, nbytes, buff ); + hash(alg, bin, nbytes, buff); srp_free(bin); mpz_from_bin(buff, hash_length(alg), result); - return 1; + return SRP_OK; } -static int H_ns(mpz_t result, SRP_HashAlgorithm alg, const unsigned char *n, size_t len_n, const unsigned char *bytes, size_t len_bytes) +static SRP_Result H_ns(mpz_t result, SRP_HashAlgorithm alg, const unsigned char *n, + size_t len_n, const unsigned char *bytes, size_t len_bytes) { unsigned char buff[SHA512_DIGEST_LENGTH]; size_t nbytes = len_n + len_bytes; - unsigned char *bin = (unsigned char *) srp_alloc(nbytes); - if (!bin) - return 0; + unsigned char *bin = (unsigned char *)srp_alloc(nbytes); + if (!bin) return SRP_ERR; memcpy(bin, n, len_n); memcpy(bin + len_n, bytes, len_bytes); hash(alg, bin, nbytes, buff); srp_free(bin); mpz_from_bin(buff, hash_length(alg), result); - return 1; + return SRP_OK; } -static int calculate_x(mpz_t result, SRP_HashAlgorithm alg, const unsigned char *salt, size_t salt_len, const char *username, const unsigned char *password, size_t password_len) +static int calculate_x(mpz_t result, SRP_HashAlgorithm alg, const unsigned char *salt, + size_t salt_len, const char *username, const unsigned char *password, + size_t password_len) { unsigned char ucp_hash[SHA512_DIGEST_LENGTH]; HashCTX ctx; hash_init(alg, &ctx); - srp_dbg_data((char*) username, strlen(username), "Username for x: "); - srp_dbg_data((char*) password, password_len, "Password for x: "); + srp_dbg_data((char *)username, strlen(username), "Username for x: "); + srp_dbg_data((char *)password, password_len, "Password for x: "); hash_update(alg, &ctx, username, strlen(username)); hash_update(alg, &ctx, ":", 1); hash_update(alg, &ctx, password, password_len); @@ -428,31 +450,31 @@ static int calculate_x(mpz_t result, SRP_HashAlgorithm alg, const unsigned char return H_ns(result, alg, salt, salt_len, ucp_hash, hash_length(alg)); } -static void update_hash_n(SRP_HashAlgorithm alg, HashCTX *ctx, const mpz_t n) +static SRP_Result update_hash_n(SRP_HashAlgorithm alg, HashCTX *ctx, const mpz_t n) { size_t len = mpz_num_bytes(n); - unsigned char* n_bytes = (unsigned char *) srp_alloc(len); - if (!n_bytes) - return; + unsigned char *n_bytes = (unsigned char *)srp_alloc(len); + if (!n_bytes) return SRP_ERR; mpz_to_bin(n, n_bytes); hash_update(alg, ctx, n_bytes, len); srp_free(n_bytes); + return SRP_OK; } -static void hash_num( SRP_HashAlgorithm alg, const mpz_t n, unsigned char *dest ) +static SRP_Result hash_num(SRP_HashAlgorithm alg, const mpz_t n, unsigned char *dest) { int nbytes = mpz_num_bytes(n); - unsigned char *bin = (unsigned char *) srp_alloc(nbytes); - if(!bin) - return; + unsigned char *bin = (unsigned char *)srp_alloc(nbytes); + if (!bin) return SRP_ERR; mpz_to_bin(n, bin); hash(alg, bin, nbytes, dest); srp_free(bin); + return SRP_OK; } -static void calculate_M(SRP_HashAlgorithm alg, NGConstant *ng, unsigned char *dest, - const char *I, const unsigned char *s_bytes, size_t s_len, - const mpz_t A, const mpz_t B, const unsigned char *K) +static SRP_Result calculate_M(SRP_HashAlgorithm alg, NGConstant *ng, unsigned char *dest, + const char *I, const unsigned char *s_bytes, size_t s_len, const mpz_t A, + const mpz_t B, const unsigned char *K) { unsigned char H_N[SHA512_DIGEST_LENGTH]; unsigned char H_g[SHA512_DIGEST_LENGTH]; @@ -462,13 +484,12 @@ static void calculate_M(SRP_HashAlgorithm alg, NGConstant *ng, unsigned char *de size_t i = 0; size_t hash_len = hash_length(alg); - hash_num(alg, ng->N, H_N); - hash_num(alg, ng->g, H_g); + if (!hash_num(alg, ng->N, H_N)) return SRP_ERR; + if (!hash_num(alg, ng->g, H_g)) return SRP_ERR; hash(alg, (const unsigned char *)I, strlen(I), H_I); - - for (i = 0; i < hash_len; i++ ) + for (i = 0; i < hash_len; i++) H_xor[i] = H_N[i] ^ H_g[i]; hash_init(alg, &ctx); @@ -476,53 +497,29 @@ static void calculate_M(SRP_HashAlgorithm alg, NGConstant *ng, unsigned char *de hash_update(alg, &ctx, H_xor, hash_len); hash_update(alg, &ctx, H_I, hash_len); hash_update(alg, &ctx, s_bytes, s_len); - update_hash_n(alg, &ctx, A); - update_hash_n(alg, &ctx, B); + if (!update_hash_n(alg, &ctx, A)) return SRP_ERR; + if (!update_hash_n(alg, &ctx, B)) return SRP_ERR; hash_update(alg, &ctx, K, hash_len); hash_final(alg, &ctx, dest); + return SRP_OK; } -static void calculate_H_AMK(SRP_HashAlgorithm alg, unsigned char *dest, const mpz_t A, const unsigned char *M, const unsigned char *K) +static SRP_Result calculate_H_AMK(SRP_HashAlgorithm alg, unsigned char *dest, + const mpz_t A, const unsigned char *M, const unsigned char *K) { HashCTX ctx; hash_init(alg, &ctx); - update_hash_n(alg, &ctx, A); + if (!update_hash_n(alg, &ctx, A)) return SRP_ERR; hash_update(alg, &ctx, M, hash_length(alg)); hash_update(alg, &ctx, K, hash_length(alg)); hash_final(alg, &ctx, dest); + return SRP_OK; } - -struct srp_pcgrandom { - unsigned long long int m_state; - unsigned long long int m_inc; -}; typedef struct srp_pcgrandom srp_pcgrandom; - -static unsigned long int srp_pcgrandom_next(srp_pcgrandom *r) -{ - unsigned long long int oldstate = r->m_state; - r->m_state = oldstate * 6364136223846793005ULL + r->m_inc; - - unsigned long int xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u; - unsigned long int rot = oldstate >> 59u; - return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); -} - -static void srp_pcgrandom_seed(srp_pcgrandom *r, unsigned long long int state, - unsigned long long int seq) -{ - r->m_state = 0U; - r->m_inc = (seq << 1u) | 1u; - srp_pcgrandom_next(r); - r->m_state += state; - srp_pcgrandom_next(r); -} - - static SRP_Result fill_buff() { g_rand_idx = 0; @@ -535,29 +532,18 @@ static SRP_Result fill_buff() #ifdef WIN32 - CryptAcquireContext(&wctx, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); - CryptGenRandom(wctx, sizeof(g_rand_buff), (BYTE*) g_rand_buff); - CryptReleaseContext(wctx, 0); - - return SRP_OK; + if (!CryptAcquireContext(&wctx, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) + return SRP_ERR; + if (!CryptGenRandom(wctx, sizeof(g_rand_buff), (BYTE *)g_rand_buff)) return SRP_ERR; + if (!CryptReleaseContext(wctx, 0)) return SRP_ERR; #else fp = fopen("/dev/urandom", "r"); - if (fp) { - fread(g_rand_buff, sizeof(g_rand_buff), 1, fp); - fclose(fp); - } else { - srp_pcgrandom *r = (srp_pcgrandom *) srp_alloc(sizeof(srp_pcgrandom)); - if (!r) - return SRP_ERR; - srp_pcgrandom_seed(r, time(NULL) ^ clock(), 0xda3e39cb94b95bdbULL); - size_t i = 0; - for (i = 0; i < RAND_BUFF_MAX; i++) { - g_rand_buff[i] = srp_pcgrandom_next(r); - } - srp_free(r); - } + if (!fp) return SRP_ERR; + + if (fread(g_rand_buff, sizeof(g_rand_buff), 1, fp) != 1) return SRP_ERR; + if (fclose(fp)) return SRP_ERR; #endif return SRP_OK; } @@ -566,17 +552,15 @@ static SRP_Result mpz_fill_random(mpz_t num) { // was call: BN_rand(num, 256, -1, 0); if (RAND_BUFF_MAX - g_rand_idx < 32) - if (fill_buff() != SRP_OK) - return SRP_ERR; - mpz_from_bin((const unsigned char *) (&g_rand_buff[g_rand_idx]), 32, num); + if (fill_buff() != SRP_OK) return SRP_ERR; + mpz_from_bin((const unsigned char *)(&g_rand_buff[g_rand_idx]), 32, num); g_rand_idx += 32; return SRP_OK; } static SRP_Result init_random() { - if (g_initialized) - return SRP_OK; + if (g_initialized) return SRP_OK; SRP_Result ret = fill_buff(); g_initialized = (ret == SRP_OK); return ret; @@ -599,6 +583,7 @@ static SRP_Result init_random() * ***********************************************************************************************************/ +// clang-format off SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg, SRP_NGType ng_type, const char *username_for_verifier, const unsigned char *password, size_t len_password, @@ -610,10 +595,11 @@ SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg, mpz_t v; mpz_init(v); mpz_t x; mpz_init(x); + // clang-format on + NGConstant *ng = new_ng(ng_type, n_hex, g_hex); - if (!ng) - goto error_and_exit; + if (!ng) goto error_and_exit; if (init_random() != SRP_OK) /* Only happens once */ goto error_and_exit; @@ -622,18 +608,15 @@ SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg, size_t size_to_fill = 16; *len_s = size_to_fill; if (RAND_BUFF_MAX - g_rand_idx < size_to_fill) - if (fill_buff() != SRP_OK) - goto error_and_exit; - *bytes_s = (unsigned char*)srp_alloc(size_to_fill); - if (!*bytes_s) - goto error_and_exit; + if (fill_buff() != SRP_OK) goto error_and_exit; + *bytes_s = (unsigned char *)srp_alloc(size_to_fill); + if (!*bytes_s) goto error_and_exit; memcpy(*bytes_s, &g_rand_buff + g_rand_idx, size_to_fill); g_rand_idx += size_to_fill; } - - if (!calculate_x(x, alg, *bytes_s, *len_s, username_for_verifier, - password, len_password)) + if (!calculate_x( + x, alg, *bytes_s, *len_s, username_for_verifier, password, len_password)) goto error_and_exit; srp_dbg_num(x, "Server calculated x: "); @@ -642,15 +625,14 @@ SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg, *len_v = mpz_num_bytes(v); - *bytes_v = (unsigned char*)srp_alloc(*len_v); + *bytes_v = (unsigned char *)srp_alloc(*len_v); - if (!bytes_v) - goto error_and_exit; + if (!*bytes_v) goto error_and_exit; mpz_to_bin(v, *bytes_v); cleanup_and_exit: - delete_ng( ng ); + delete_ng(ng); mpz_clear(v); mpz_clear(x); return ret; @@ -659,7 +641,7 @@ error_and_exit: goto cleanup_and_exit; } - +// clang-format off /* Out: bytes_B, len_B. * @@ -684,6 +666,7 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, mpz_t tmp1; mpz_init(tmp1); mpz_t tmp2; mpz_init(tmp2); mpz_t tmp3; mpz_init(tmp3); + // clang-format on size_t ulen = strlen(username) + 1; NGConstant *ng = new_ng(ng_type, n_hex, g_hex); struct SRPVerifier *ver = 0; @@ -691,13 +674,11 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, *len_B = 0; *bytes_B = 0; - if (!ng) - goto cleanup_and_exit; + if (!ng) goto cleanup_and_exit; - ver = (struct SRPVerifier *) srp_alloc( sizeof(struct SRPVerifier) ); + ver = (struct SRPVerifier *)srp_alloc(sizeof(struct SRPVerifier)); - if (!ver) - goto cleanup_and_exit; + if (!ver) goto cleanup_and_exit; if (init_random() != SRP_OK) { /* Only happens once */ srp_free(ver); @@ -705,7 +686,7 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, goto cleanup_and_exit; } - ver->username = (char *) srp_alloc(ulen); + ver->username = (char *)srp_alloc(ulen); ver->hash_alg = alg; ver->ng = ng; @@ -715,7 +696,7 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, goto cleanup_and_exit; } - memcpy((char*)ver->username, username, ulen); + memcpy((char *)ver->username, username, ulen); ver->authenticated = 0; @@ -725,29 +706,17 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, if (bytes_b) { mpz_from_bin(bytes_b, len_b, b); } else { - if (mpz_fill_random(b) != SRP_OK) { - srp_free(ver); - ver = 0; - goto cleanup_and_exit; - } + if (!mpz_fill_random(b)) goto ver_cleanup_and_exit; } - if (!H_nn(k, alg, ng->N, ng->N, ng->g)) { - srp_free(ver); - ver = 0; - goto cleanup_and_exit; - } + if (!H_nn(k, alg, ng->N, ng->N, ng->g)) goto ver_cleanup_and_exit; /* B = kv + g^b */ mpz_mulm(tmp1, k, v, ng->N, tmp3); mpz_powm(tmp2, ng->g, b, ng->N); mpz_addm(B, tmp1, tmp2, ng->N, tmp3); - if (!H_nn(u, alg, ng->N, A, B)) { - srp_free(ver); - ver = 0; - goto cleanup_and_exit; - } + if (!H_nn(u, alg, ng->N, A, B)) goto ver_cleanup_and_exit; srp_dbg_num(u, "Server calculated u: "); @@ -756,20 +725,22 @@ struct SRPVerifier *srp_verifier_new(SRP_HashAlgorithm alg, mpz_mulm(tmp2, A, tmp1, ng->N, tmp3); mpz_powm(S, tmp2, b, ng->N); - hash_num(alg, S, ver->session_key); + if (!hash_num(alg, S, ver->session_key)) goto ver_cleanup_and_exit; - calculate_M(alg, ng, ver->M, username, bytes_s, len_s, A, B, ver->session_key); - calculate_H_AMK(alg, ver->H_AMK, A, ver->M, ver->session_key); + if (!calculate_M( + alg, ng, ver->M, username, bytes_s, len_s, A, B, ver->session_key)) { + goto ver_cleanup_and_exit; + } + if (!calculate_H_AMK(alg, ver->H_AMK, A, ver->M, ver->session_key)) { + goto ver_cleanup_and_exit; + } *len_B = mpz_num_bytes(B); - *bytes_B = (unsigned char*)srp_alloc(*len_B); + *bytes_B = (unsigned char *)srp_alloc(*len_B); if (!*bytes_B) { - srp_free(ver->username); - srp_free(ver); - ver = 0; *len_B = 0; - goto cleanup_and_exit; + goto ver_cleanup_and_exit; } mpz_to_bin(B, *bytes_B); @@ -792,11 +763,13 @@ cleanup_and_exit: mpz_clear(tmp2); mpz_clear(tmp3); return ver; +ver_cleanup_and_exit: + srp_free(ver->username); + srp_free(ver); + ver = 0; + goto cleanup_and_exit; } - - - void srp_verifier_delete(struct SRPVerifier *ver) { if (ver) { @@ -808,36 +781,31 @@ void srp_verifier_delete(struct SRPVerifier *ver) } } - - int srp_verifier_is_authenticated(struct SRPVerifier *ver) { return ver->authenticated; } - const char *srp_verifier_get_username(struct SRPVerifier *ver) { return ver->username; } - -const unsigned char *srp_verifier_get_session_key(struct SRPVerifier *ver, size_t *key_length) +const unsigned char *srp_verifier_get_session_key( + struct SRPVerifier *ver, size_t *key_length) { - if (key_length) - *key_length = hash_length(ver->hash_alg); + if (key_length) *key_length = hash_length(ver->hash_alg); return ver->session_key; } - size_t srp_verifier_get_session_key_length(struct SRPVerifier *ver) { return hash_length(ver->hash_alg); } - /* user_M must be exactly SHA512_DIGEST_LENGTH bytes in size */ -void srp_verifier_verify_session(struct SRPVerifier *ver, const unsigned char *user_M, unsigned char **bytes_HAMK) +void srp_verifier_verify_session( + struct SRPVerifier *ver, const unsigned char *user_M, unsigned char **bytes_HAMK) { if (memcmp(ver->M, user_M, hash_length(ver->hash_alg)) == 0) { ver->authenticated = 1; @@ -850,15 +818,14 @@ void srp_verifier_verify_session(struct SRPVerifier *ver, const unsigned char *u struct SRPUser *srp_user_new(SRP_HashAlgorithm alg, SRP_NGType ng_type, const char *username, const char *username_for_verifier, - const unsigned char *bytes_password, size_t len_password, - const char *n_hex, const char *g_hex) + const unsigned char *bytes_password, size_t len_password, const char *n_hex, + const char *g_hex) { - struct SRPUser *usr = (struct SRPUser *) srp_alloc(sizeof(struct SRPUser)); - size_t ulen = strlen(username) + 1; + struct SRPUser *usr = (struct SRPUser *)srp_alloc(sizeof(struct SRPUser)); + size_t ulen = strlen(username) + 1; size_t uvlen = strlen(username_for_verifier) + 1; - if (!usr) - goto err_exit; + if (!usr) goto err_exit; if (init_random() != SRP_OK) /* Only happens once */ goto err_exit; @@ -870,16 +837,14 @@ struct SRPUser *srp_user_new(SRP_HashAlgorithm alg, SRP_NGType ng_type, mpz_init(usr->A); mpz_init(usr->S); - if (!usr->ng) - goto err_exit; + if (!usr->ng) goto err_exit; - usr->username = (char*)srp_alloc(ulen); - usr->username_verifier = (char*)srp_alloc(uvlen); - usr->password = (unsigned char*)srp_alloc(len_password); + usr->username = (char *)srp_alloc(ulen); + usr->username_verifier = (char *)srp_alloc(uvlen); + usr->password = (unsigned char *)srp_alloc(len_password); usr->password_len = len_password; - if (!usr->username || !usr->password || !usr->username_verifier) - goto err_exit; + if (!usr->username || !usr->password || !usr->username_verifier) goto err_exit; memcpy(usr->username, username, ulen); memcpy(usr->username_verifier, username_for_verifier, uvlen); @@ -896,8 +861,7 @@ err_exit: mpz_clear(usr->a); mpz_clear(usr->A); mpz_clear(usr->S); - if (usr->ng) - delete_ng(usr->ng); + if (usr->ng) delete_ng(usr->ng); srp_free(usr->username); srp_free(usr->username_verifier); if (usr->password) { @@ -910,11 +874,9 @@ err_exit: return 0; } - - void srp_user_delete(struct SRPUser *usr) { - if(usr) { + if (usr) { mpz_clear(usr->a); mpz_clear(usr->A); mpz_clear(usr->S); @@ -927,67 +889,58 @@ void srp_user_delete(struct SRPUser *usr) srp_free(usr->username_verifier); srp_free(usr->password); - if (usr->bytes_A) - srp_free(usr->bytes_A); + if (usr->bytes_A) srp_free(usr->bytes_A); memset(usr, 0, sizeof(*usr)); srp_free(usr); } } - - int srp_user_is_authenticated(struct SRPUser *usr) { return usr->authenticated; } - const char *srp_user_get_username(struct SRPUser *usr) { return usr->username; } - -const unsigned char* srp_user_get_session_key(struct SRPUser* usr, size_t* key_length) +const unsigned char *srp_user_get_session_key(struct SRPUser *usr, size_t *key_length) { - if (key_length) - *key_length = hash_length(usr->hash_alg); + if (key_length) *key_length = hash_length(usr->hash_alg); return usr->session_key; } - size_t srp_user_get_session_key_length(struct SRPUser *usr) { return hash_length(usr->hash_alg); } - +// clang-format off /* Output: username, bytes_A, len_A */ SRP_Result srp_user_start_authentication(struct SRPUser *usr, char **username, const unsigned char *bytes_a, size_t len_a, unsigned char **bytes_A, size_t *len_A) { + // clang-format on if (bytes_a) { mpz_from_bin(bytes_a, len_a, usr->a); } else { - if (mpz_fill_random(usr->a) != SRP_OK) - goto error_and_exit; + if (!mpz_fill_random(usr->a)) goto error_and_exit; } mpz_powm(usr->A, usr->ng->g, usr->a, usr->ng->N); *len_A = mpz_num_bytes(usr->A); - *bytes_A = (unsigned char*)srp_alloc(*len_A); + *bytes_A = (unsigned char *)srp_alloc(*len_A); - if (!*bytes_A) - goto error_and_exit; + if (!*bytes_A) goto error_and_exit; mpz_to_bin(usr->A, *bytes_A); usr->bytes_A = *bytes_A; - if (username) - *username = usr->username; + if (username) *username = usr->username; return SRP_OK; @@ -998,7 +951,7 @@ error_and_exit: return SRP_ERR; } - +// clang-format off /* Output: bytes_M. Buffer length is SHA512_DIGEST_LENGTH */ void srp_user_process_challenge(struct SRPUser *usr, const unsigned char *bytes_s, size_t len_s, @@ -1014,17 +967,17 @@ void srp_user_process_challenge(struct SRPUser *usr, mpz_t tmp2; mpz_init(tmp2); mpz_t tmp3; mpz_init(tmp3); mpz_t tmp4; mpz_init(tmp4); + // clang-format on *len_M = 0; *bytes_M = 0; - if (!H_nn(u, usr->hash_alg, usr->ng->N, usr->A, B)) - goto cleanup_and_exit; + if (!H_nn(u, usr->hash_alg, usr->ng->N, usr->A, B)) goto cleanup_and_exit; srp_dbg_num(u, "Client calculated u: "); - if (!calculate_x(x, usr->hash_alg, bytes_s, len_s, - usr->username_verifier, usr->password, usr->password_len)) + if (!calculate_x(x, usr->hash_alg, bytes_s, len_s, usr->username_verifier, + usr->password, usr->password_len)) goto cleanup_and_exit; srp_dbg_num(x, "Client calculated x: "); @@ -1033,11 +986,12 @@ void srp_user_process_challenge(struct SRPUser *usr, goto cleanup_and_exit; /* SRP-6a safety check */ - if ( mpz_sgn(B) != 0 && mpz_sgn(u) != 0 ) { + if (mpz_sgn(B) != 0 && mpz_sgn(u) != 0) { mpz_powm(v, usr->ng->g, x, usr->ng->N); srp_dbg_num(v, "Client calculated v: "); + // clang-format off /* S = (B - k*(g^x)) ^ (a + ux) */ mpz_mul(tmp1, u, x); mpz_add(tmp2, usr->a, tmp1); /* tmp2 = (a + ux) */ @@ -1045,23 +999,24 @@ void srp_user_process_challenge(struct SRPUser *usr, mpz_mulm(tmp3, k, tmp1, usr->ng->N, tmp4); /* tmp3 = k*(g^x) */ mpz_subm(tmp1, B, tmp3, usr->ng->N, tmp4); /* tmp1 = (B - K*(g^x)) */ mpz_powm(usr->S, tmp1, tmp2, usr->ng->N); + // clang-format on - hash_num(usr->hash_alg, usr->S, usr->session_key); + if (!hash_num(usr->hash_alg, usr->S, usr->session_key)) goto cleanup_and_exit; - calculate_M( usr->hash_alg, usr->ng, usr->M, usr->username, bytes_s, len_s, usr->A,B, usr->session_key ); - calculate_H_AMK( usr->hash_alg, usr->H_AMK, usr->A, usr->M, usr->session_key ); + if (!calculate_M(usr->hash_alg, usr->ng, usr->M, usr->username, bytes_s, len_s, + usr->A, B, usr->session_key)) + goto cleanup_and_exit; + if (!calculate_H_AMK(usr->hash_alg, usr->H_AMK, usr->A, usr->M, usr->session_key)) + goto cleanup_and_exit; *bytes_M = usr->M; - if (len_M) - *len_M = hash_length( usr->hash_alg ); + if (len_M) *len_M = hash_length(usr->hash_alg); } else { *bytes_M = NULL; - if (len_M) - *len_M = 0; + if (len_M) *len_M = 0; } cleanup_and_exit: - mpz_clear(B); mpz_clear(u); mpz_clear(x); @@ -1073,7 +1028,6 @@ cleanup_and_exit: mpz_clear(tmp4); } - void srp_user_verify_session(struct SRPUser *usr, const unsigned char *bytes_HAMK) { if (memcmp(usr->H_AMK, bytes_HAMK, hash_length(usr->hash_alg)) == 0) diff --git a/src/util/srp.h b/src/util/srp.h index c876e70e..2d49b076 100644 --- a/src/util/srp.h +++ b/src/util/srp.h @@ -56,12 +56,10 @@ #ifndef SRP_H #define SRP_H - struct SRPVerifier; struct SRPUser; -typedef enum -{ +typedef enum { SRP_NG_1024, SRP_NG_2048, SRP_NG_4096, @@ -69,8 +67,7 @@ typedef enum SRP_NG_CUSTOM } SRP_NGType; -typedef enum -{ +typedef enum { /*SRP_SHA1,*/ /*SRP_SHA224,*/ SRP_SHA256, @@ -78,12 +75,13 @@ typedef enum SRP_SHA512*/ } SRP_HashAlgorithm; -typedef enum -{ - SRP_OK, +typedef enum { SRP_ERR, + SRP_OK, } SRP_Result; +// clang-format off + /* Sets the memory functions used by srp. * Note: this doesn't set the memory functions used by gmp, * but it is supported to have different functions for srp and gmp. @@ -101,17 +99,18 @@ void srp_set_memory_functions( * The n_hex and g_hex parameters should be 0 unless SRP_NG_CUSTOM is used for ng_type. * If provided, they must contain ASCII text of the hexidecimal notation. * - * If bytes_s == NULL, it is filled with random data. The caller is responsible for freeing. + * If bytes_s == NULL, it is filled with random data. + * The caller is responsible for freeing. * * Returns SRP_OK on success, and SRP_ERR on error. * bytes_s might be in this case invalid, don't free it. */ -SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg, +SRP_Result srp_create_salted_verification_key(SRP_HashAlgorithm alg, SRP_NGType ng_type, const char *username_for_verifier, const unsigned char *password, size_t len_password, unsigned char **bytes_s, size_t *len_s, unsigned char **bytes_v, size_t *len_v, - const char * n_hex, const char *g_hex ); + const char *n_hex, const char *g_hex); /* Out: bytes_B, len_B. * @@ -132,54 +131,54 @@ struct SRPVerifier* srp_verifier_new(SRP_HashAlgorithm alg, SRP_NGType ng_type, unsigned char** bytes_B, size_t *len_B, const char* n_hex, const char* g_hex); +// clang-format on -void srp_verifier_delete( struct SRPVerifier* ver ); +void srp_verifier_delete(struct SRPVerifier *ver); // srp_verifier_verify_session must have been called before -int srp_verifier_is_authenticated( struct SRPVerifier* ver ); +int srp_verifier_is_authenticated(struct SRPVerifier *ver); - -const char * srp_verifier_get_username( struct SRPVerifier* ver ); +const char *srp_verifier_get_username(struct SRPVerifier *ver); /* key_length may be null */ -const unsigned char* srp_verifier_get_session_key( struct SRPVerifier* ver, - size_t *key_length ); - - -size_t srp_verifier_get_session_key_length(struct SRPVerifier* ver); +const unsigned char *srp_verifier_get_session_key( + struct SRPVerifier *ver, size_t *key_length); +size_t srp_verifier_get_session_key_length(struct SRPVerifier *ver); /* Verifies session, on success, it writes bytes_HAMK. * user_M must be exactly srp_verifier_get_session_key_length() bytes in size */ -void srp_verifier_verify_session( struct SRPVerifier* ver, - const unsigned char* user_M, unsigned char** bytes_HAMK ); +void srp_verifier_verify_session( + struct SRPVerifier *ver, const unsigned char *user_M, unsigned char **bytes_HAMK); /*******************************************************************************/ /* The n_hex and g_hex parameters should be 0 unless SRP_NG_CUSTOM is used for ng_type */ struct SRPUser *srp_user_new(SRP_HashAlgorithm alg, SRP_NGType ng_type, const char *username, const char *username_for_verifier, - const unsigned char *bytes_password, size_t len_password, - const char *n_hex, const char *g_hex); + const unsigned char *bytes_password, size_t len_password, const char *n_hex, + const char *g_hex); -void srp_user_delete(struct SRPUser * usr); +void srp_user_delete(struct SRPUser *usr); -int srp_user_is_authenticated(struct SRPUser * usr); +int srp_user_is_authenticated(struct SRPUser *usr); - -const char* srp_user_get_username(struct SRPUser * usr); +const char *srp_user_get_username(struct SRPUser *usr); /* key_length may be null */ -const unsigned char* srp_user_get_session_key(struct SRPUser* usr, size_t* key_length); +const unsigned char *srp_user_get_session_key(struct SRPUser *usr, size_t *key_length); -size_t srp_user_get_session_key_length(struct SRPUser* usr); +size_t srp_user_get_session_key_length(struct SRPUser *usr); -/* Output: username, bytes_A, len_A. If you don't want it get written, set username to NULL. +// clang-format off + +/* Output: username, bytes_A, len_A. + * If you don't want it get written, set username to NULL. * If bytes_a == NULL, random data is used for a. */ -SRP_Result srp_user_start_authentication(struct SRPUser* usr, char** username, - const unsigned char* bytes_a, size_t len_a, - unsigned char** bytes_A, size_t* len_A); +SRP_Result srp_user_start_authentication(struct SRPUser* usr, char **username, + const unsigned char *bytes_a, size_t len_a, + unsigned char **bytes_A, size_t* len_A); /* Output: bytes_M, len_M (len_M may be null and will always be * srp_user_get_session_key_length() bytes in size) */ @@ -187,8 +186,9 @@ void srp_user_process_challenge(struct SRPUser *usr, const unsigned char *bytes_s, size_t len_s, const unsigned char *bytes_B, size_t len_B, unsigned char **bytes_M, size_t *len_M); +// clang-format on /* bytes_HAMK must be exactly srp_user_get_session_key_length() bytes in size */ -void srp_user_verify_session(struct SRPUser* usr, const unsigned char* bytes_HAMK); +void srp_user_verify_session(struct SRPUser *usr, const unsigned char *bytes_HAMK); #endif /* Include Guard */ diff --git a/src/util/strfnd.h b/src/util/strfnd.h new file mode 100644 index 00000000..a7cd2bad --- /dev/null +++ b/src/util/strfnd.h @@ -0,0 +1,82 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef STRFND_HEADER +#define STRFND_HEADER + +#include + +template +class BasicStrfnd { + typedef std::basic_string String; + String str; + size_t pos; +public: + BasicStrfnd(const String &s) : str(s), pos(0) {} + void start(const String &s) { str = s; pos = 0; } + size_t where() { return pos; } + void to(size_t i) { pos = i; } + bool at_end() { return pos >= str.size(); } + String what() { return str; } + + String next(const String &sep) + { + if (pos >= str.size()) + return String(); + + size_t n; + if (sep.empty() || (n = str.find(sep, pos)) == String::npos) { + n = str.size(); + } + String ret = str.substr(pos, n - pos); + pos = n + sep.size(); + return ret; + } + + // Returns substr up to the next occurence of sep that isn't escaped with esc ('\\') + String next_esc(const String &sep, T esc=static_cast('\\')) + { + if (pos >= str.size()) + return String(); + + size_t n, old_p = pos; + do { + if (sep.empty() || (n = str.find(sep, pos)) == String::npos) { + pos = n = str.size(); + break; + } + pos = n + sep.length(); + } while (n > 0 && str[n - 1] == esc); + + return str.substr(old_p, n - old_p); + } + + void skip_over(const String &chars) + { + size_t p = str.find_first_not_of(chars, pos); + if (p != String::npos) + pos = p; + } +}; + +typedef BasicStrfnd Strfnd; +typedef BasicStrfnd WStrfnd; + +#endif + diff --git a/src/util/string.h b/src/util/string.h index c8f60b80..40ef3e4d 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -299,15 +299,6 @@ inline s32 mystoi(const std::string &str, s32 min, s32 max) } -/// Returns a 64-bit value represented by the string \p str (decimal). -inline s64 stoi64(const std::string &str) -{ - std::stringstream tmp(str); - s64 t; - tmp >> t; - return t; -} - // MSVC2010 includes it's own versions of these //#if !defined(_MSC_VER) || _MSC_VER < 1600 @@ -346,9 +337,22 @@ inline float mystof(const std::string &str) #define stoi mystoi #define stof mystof +/// Returns a value represented by the string \p val. +template +inline T from_string(const std::string &str) +{ + std::stringstream tmp(str); + T t; + tmp >> t; + return t; +} + +/// Returns a 64-bit signed value represented by the string \p str (decimal). +inline s64 stoi64(const std::string &str) { return from_string(str); } + // TODO: Replace with C++11 std::to_string. -/// Returns A string representing the value \p val. +/// Returns a string representing the value \p val. template inline std::string to_string(T val) { @@ -382,7 +386,6 @@ inline void str_replace(std::string &str, const std::string &pattern, } } - /** * Replace all occurrences of the character \p from in \p str with \p to. * @@ -465,7 +468,7 @@ inline std::string wrap_rows(const std::string &from, * Removes backslashes from an escaped string (FormSpec strings) */ template -inline std::basic_string unescape_string(std::basic_string &s) +inline std::basic_string unescape_string(const std::basic_string &s) { std::basic_string res; @@ -481,6 +484,40 @@ inline std::basic_string unescape_string(std::basic_string &s) return res; } +/** + * Remove all escape sequences in \p s. + * + * @param s The string in which to remove escape sequences. + * @return \p s, with escape sequences removed. + */ +template +std::basic_string unescape_enriched(const std::basic_string &s) +{ + std::basic_string output; + size_t i = 0; + while (i < s.length()) { + if (s[i] == '\x1b') { + ++i; + if (i == s.length()) continue; + if (s[i] == '(') { + ++i; + while (i < s.length() && s[i] != ')') { + if (s[i] == '\\') { + ++i; + } + ++i; + } + ++i; + } else { + ++i; + } + continue; + } + output += s[i]; + ++i; + } + return output; +} /** * Checks that all characters in \p to_check are a decimal digits. diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp index bc2977a0..9c4d5b64 100644 --- a/src/wieldmesh.cpp +++ b/src/wieldmesh.cpp @@ -114,9 +114,7 @@ static scene::IMesh *createExtrusionMesh(int resolution_x, int resolution_y) mesh->addMeshBuffer(buf); buf->drop(); scaleMesh(mesh, scale); // also recalculates bounding box - scene::IMesh *newmesh = createForsythOptimizedMesh(mesh); - mesh->drop(); - return newmesh; + return mesh; } /* @@ -283,7 +281,7 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename, // Customize material video::SMaterial &material = m_meshnode->getMaterial(0); - material.setTexture(0, tsrc->getTexture(imagename)); + material.setTexture(0, tsrc->getTextureForMesh(imagename)); material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE; material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE; material.MaterialType = m_material_type; @@ -436,3 +434,113 @@ void WieldMeshSceneNode::changeToMesh(scene::IMesh *mesh) m_meshnode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, m_lighting); m_meshnode->setVisible(true); } + +scene::IMesh *getItemMesh(IGameDef *gamedef, const ItemStack &item) +{ + ITextureSource *tsrc = gamedef->getTextureSource(); + IItemDefManager *idef = gamedef->getItemDefManager(); + INodeDefManager *ndef = gamedef->getNodeDefManager(); + const ItemDefinition &def = item.getDefinition(idef); + const ContentFeatures &f = ndef->get(def.name); + content_t id = ndef->getId(def.name); + + if (!g_extrusion_mesh_cache) { + g_extrusion_mesh_cache = new ExtrusionMeshCache(); + } else { + g_extrusion_mesh_cache->grab(); + } + + scene::IMesh *mesh; + + // If inventory_image is defined, it overrides everything else + if (def.inventory_image != "") { + mesh = getExtrudedMesh(tsrc, def.inventory_image); + return mesh; + } else if (def.type == ITEM_NODE) { + if (f.mesh_ptr[0]) { + mesh = cloneMesh(f.mesh_ptr[0]); + scaleMesh(mesh, v3f(0.12, 0.12, 0.12)); + setMeshColor(mesh, video::SColor (255, 255, 255, 255)); + } else if (f.drawtype == NDT_PLANTLIKE) { + mesh = getExtrudedMesh(tsrc, + tsrc->getTextureName(f.tiles[0].texture_id)); + return mesh; + } else if (f.drawtype == NDT_NORMAL || f.drawtype == NDT_ALLFACES + || f.drawtype == NDT_LIQUID || f.drawtype == NDT_FLOWINGLIQUID) { + mesh = cloneMesh(g_extrusion_mesh_cache->createCube()); + scaleMesh(mesh, v3f(1.2, 1.2, 1.2)); + } else { + MeshMakeData mesh_make_data(gamedef, false); + MapNode mesh_make_node(id, 255, 0); + mesh_make_data.fillSingleNode(&mesh_make_node); + MapBlockMesh mapblock_mesh(&mesh_make_data, v3s16(0, 0, 0)); + mesh = cloneMesh(mapblock_mesh.getMesh()); + translateMesh(mesh, v3f(-BS, -BS, -BS)); + scaleMesh(mesh, v3f(0.12, 0.12, 0.12)); + rotateMeshXZby(mesh, -45); + rotateMeshYZby(mesh, -30); + + u32 mc = mesh->getMeshBufferCount(); + for (u32 i = 0; i < mc; ++i) { + video::SMaterial &material1 = + mesh->getMeshBuffer(i)->getMaterial(); + video::SMaterial &material2 = + mapblock_mesh.getMesh()->getMeshBuffer(i)->getMaterial(); + material1.setTexture(0, material2.getTexture(0)); + material1.setTexture(1, material2.getTexture(1)); + material1.setTexture(2, material2.getTexture(2)); + material1.setTexture(3, material2.getTexture(3)); + material1.MaterialType = material2.MaterialType; + } + return mesh; + } + + shadeMeshFaces(mesh); + rotateMeshXZby(mesh, -45); + rotateMeshYZby(mesh, -30); + + u32 mc = mesh->getMeshBufferCount(); + for (u32 i = 0; i < mc; ++i) { + video::SMaterial &material = mesh->getMeshBuffer(i)->getMaterial(); + material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; + material.setFlag(video::EMF_BILINEAR_FILTER, false); + material.setFlag(video::EMF_TRILINEAR_FILTER, false); + material.setFlag(video::EMF_BACK_FACE_CULLING, true); + material.setFlag(video::EMF_LIGHTING, false); + if (f.tiles[i].animation_frame_count > 1) { + FrameSpec animation_frame = f.tiles[i].frames[0]; + material.setTexture(0, animation_frame.texture); + } else { + material.setTexture(0, f.tiles[i].texture); + } + } + return mesh; + } + return NULL; +} + +scene::IMesh * getExtrudedMesh(ITextureSource *tsrc, + const std::string &imagename) +{ + video::ITexture *texture = tsrc->getTextureForMesh(imagename); + if (!texture) { + return NULL; + } + + core::dimension2d dim = texture->getSize(); + scene::IMesh *mesh = cloneMesh(g_extrusion_mesh_cache->create(dim)); + + // Customize material + video::SMaterial &material = mesh->getMeshBuffer(0)->getMaterial(); + material.setTexture(0, tsrc->getTexture(imagename)); + material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE; + material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE; + material.setFlag(video::EMF_BILINEAR_FILTER, false); + material.setFlag(video::EMF_TRILINEAR_FILTER, false); + material.setFlag(video::EMF_BACK_FACE_CULLING, true); + material.setFlag(video::EMF_LIGHTING, false); + material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; + scaleMesh(mesh, v3f(2.0, 2.0, 2.0)); + + return mesh; +} diff --git a/src/wieldmesh.h b/src/wieldmesh.h index 3f4f4fc0..0b3136bc 100644 --- a/src/wieldmesh.h +++ b/src/wieldmesh.h @@ -53,7 +53,7 @@ public: virtual void render(); - virtual const core::aabbox3d& getBoundingBox() const + virtual const aabb3f &getBoundingBox() const { return m_bounding_box; } private: @@ -74,7 +74,11 @@ private: // Bounding box culling is disabled for this type of scene node, // so this variable is just required so we can implement // getBoundingBox() and is set to an empty box. - core::aabbox3d m_bounding_box; + aabb3f m_bounding_box; }; +scene::IMesh *getItemMesh(IGameDef *gamedef, const ItemStack &item); + +scene::IMesh *getExtrudedMesh(ITextureSource *tsrc, + const std::string &imagename); #endif diff --git a/textures/base/pack/dirt_bg.png b/textures/base/pack/dirt_bg.png deleted file mode 100644 index 29df4391..00000000 Binary files a/textures/base/pack/dirt_bg.png and /dev/null differ diff --git a/textures/base/pack/drop_btn.png b/textures/base/pack/drop_btn.png index 2db4a08f..5d777108 100644 Binary files a/textures/base/pack/drop_btn.png and b/textures/base/pack/drop_btn.png differ diff --git a/textures/base/pack/gear_icon.png b/textures/base/pack/gear_icon.png new file mode 100644 index 00000000..71825eb8 Binary files /dev/null and b/textures/base/pack/gear_icon.png differ diff --git a/textures/base/pack/halo.png b/textures/base/pack/halo.png index e13b5441..eaea782d 100644 Binary files a/textures/base/pack/halo.png and b/textures/base/pack/halo.png differ diff --git a/textures/base/pack/menu_bg.png b/textures/base/pack/menu_bg.png new file mode 100644 index 00000000..ed7e34f6 Binary files /dev/null and b/textures/base/pack/menu_bg.png differ diff --git a/textures/base/pack/menu_header.png b/textures/base/pack/menu_header.png index 5fcaf122..0769a018 100644 Binary files a/textures/base/pack/menu_header.png and b/textures/base/pack/menu_header.png differ diff --git a/textures/base/pack/minimap_overlay_round.png b/textures/base/pack/minimap_overlay_round.png index fd0f9a6d..16e3c41c 100644 Binary files a/textures/base/pack/minimap_overlay_round.png and b/textures/base/pack/minimap_overlay_round.png differ diff --git a/textures/base/pack/object_marker_red.png b/textures/base/pack/object_marker_red.png new file mode 100644 index 00000000..f345d037 Binary files /dev/null and b/textures/base/pack/object_marker_red.png differ diff --git a/textures/base/pack/rare_controls.png b/textures/base/pack/rare_controls.png new file mode 100644 index 00000000..48296493 Binary files /dev/null and b/textures/base/pack/rare_controls.png differ diff --git a/textures/base/pack/server_flags_favorite.png b/textures/base/pack/server_flags_favorite.png new file mode 100644 index 00000000..6a3fc5ef Binary files /dev/null and b/textures/base/pack/server_flags_favorite.png differ diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh index a9126b9f..78d189b8 100755 --- a/util/buildbot/buildwin32.sh +++ b/util/buildbot/buildwin32.sh @@ -30,31 +30,31 @@ mkdir -p $libdir cd $builddir # Get stuff -[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://sfan5.pf-control.de/irrlicht-$irrlicht_version-win32.zip \ +[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win32.zip \ -c -O $packagedir/irrlicht-$irrlicht_version.zip -[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://sfan5.pf-control.de/zlib-$zlib_version-win32.zip \ +[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win32.zip \ -c -O $packagedir/zlib-$zlib_version.zip -[ -e $packagedir/libogg-$ogg_version-dev.7z ] || wget http://sfan5.pf-control.de/libogg-$ogg_version-dev.7z \ +[ -e $packagedir/libogg-$ogg_version-dev.7z ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-dev.7z \ -c -O $packagedir/libogg-$ogg_version-dev.7z -[ -e $packagedir/libogg-$ogg_version-dll.7z ] || wget http://sfan5.pf-control.de/libogg-$ogg_version-dll.7z \ +[ -e $packagedir/libogg-$ogg_version-dll.7z ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-dll.7z \ -c -O $packagedir/libogg-$ogg_version-dll.7z -[ -e $packagedir/libvorbis-$vorbis_version-dev.7z ] || wget http://sfan5.pf-control.de/libvorbis-$vorbis_version-dev.7z \ +[ -e $packagedir/libvorbis-$vorbis_version-dev.7z ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-dev.7z \ -c -O $packagedir/libvorbis-$vorbis_version-dev.7z -[ -e $packagedir/libvorbis-$vorbis_version-dll.7z ] || wget http://sfan5.pf-control.de/libvorbis-$vorbis_version-dll.7z \ +[ -e $packagedir/libvorbis-$vorbis_version-dll.7z ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-dll.7z \ -c -O $packagedir/libvorbis-$vorbis_version-dll.7z -[ -e $packagedir/libcurl-$curl_version.zip ] || wget http://sfan5.pf-control.de/libcurl-$curl_version-win32.zip \ +[ -e $packagedir/libcurl-$curl_version.zip ] || wget http://minetest.kitsunemimi.pw/libcurl-$curl_version-win32.zip \ -c -O $packagedir/libcurl-$curl_version.zip -[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://sfan5.pf-control.de/gettext-$gettext_version.zip \ +[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://minetest.kitsunemimi.pw/gettext-$gettext_version.zip \ -c -O $packagedir/gettext-$gettext_version.zip -[ -e $packagedir/libfreetype-$freetype_version.zip ] || wget http://sfan5.pf-control.de/libfreetype-$freetype_version-win32.zip \ +[ -e $packagedir/libfreetype-$freetype_version.zip ] || wget http://minetest.kitsunemimi.pw/libfreetype-$freetype_version-win32.zip \ -c -O $packagedir/libfreetype-$freetype_version.zip -[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://sfan5.pf-control.de/sqlite3-$sqlite3_version-win32.zip \ +[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win32.zip \ -c -O $packagedir/sqlite3-$sqlite3_version.zip -[ -e $packagedir/luajit-$luajit_version-static-win32.zip ] || wget http://sfan5.pf-control.de/luajit-$luajit_version-static-win32.zip \ +[ -e $packagedir/luajit-$luajit_version-static-win32.zip ] || wget http://minetest.kitsunemimi.pw/luajit-$luajit_version-static-win32.zip \ -c -O $packagedir/luajit-$luajit_version-static-win32.zip -[ -e $packagedir/libleveldb-$leveldb_version-win32.zip ] || wget http://sfan5.pf-control.de/libleveldb-$leveldb_version-win32.zip \ +[ -e $packagedir/libleveldb-$leveldb_version-win32.zip ] || wget http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win32.zip \ -c -O $packagedir/libleveldb-$leveldb_version-win32.zip -[ -e $packagedir/openal_stripped.zip ] || wget http://sfan5.pf-control.de/openal_stripped.zip \ +[ -e $packagedir/openal_stripped.zip ] || wget http://minetest.kitsunemimi.pw/openal_stripped.zip \ -c -O $packagedir/openal_stripped.zip # Extract stuff diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh index 6ab56e72..e13cbd02 100755 --- a/util/buildbot/buildwin64.sh +++ b/util/buildbot/buildwin64.sh @@ -30,27 +30,27 @@ mkdir -p $libdir cd $builddir # Get stuff -[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://sfan5.pf-control.de/irrlicht-$irrlicht_version-win64.zip \ +[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win64.zip \ -c -O $packagedir/irrlicht-$irrlicht_version.zip -[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://sfan5.pf-control.de/zlib-$zlib_version-win64.zip \ +[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win64.zip \ -c -O $packagedir/zlib-$zlib_version.zip -[ -e $packagedir/libogg-$ogg_version.zip ] || wget http://sfan5.pf-control.de/libogg-$ogg_version-win64.zip \ +[ -e $packagedir/libogg-$ogg_version.zip ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-win64.zip \ -c -O $packagedir/libogg-$ogg_version.zip -[ -e $packagedir/libvorbis-$vorbis_version.zip ] || wget http://sfan5.pf-control.de/libvorbis-$vorbis_version-win64.zip \ +[ -e $packagedir/libvorbis-$vorbis_version.zip ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win64.zip \ -c -O $packagedir/libvorbis-$vorbis_version.zip -[ -e $packagedir/libcurl-$curl_version.zip ] || wget http://sfan5.pf-control.de/libcurl-$curl_version-win64.zip \ +[ -e $packagedir/libcurl-$curl_version.zip ] || wget http://minetest.kitsunemimi.pw/libcurl-$curl_version-win64.zip \ -c -O $packagedir/libcurl-$curl_version.zip -[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://sfan5.pf-control.de/gettext-$gettext_version-win64.zip \ +[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://minetest.kitsunemimi.pw/gettext-$gettext_version-win64.zip \ -c -O $packagedir/gettext-$gettext_version.zip -[ -e $packagedir/freetype-$freetype_version.zip ] || wget http://sfan5.pf-control.de/libfreetype-$freetype_version-win64.zip \ +[ -e $packagedir/freetype-$freetype_version.zip ] || wget http://minetest.kitsunemimi.pw/libfreetype-$freetype_version-win64.zip \ -c -O $packagedir/freetype-$freetype_version.zip -[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://sfan5.pf-control.de/sqlite3-$sqlite3_version-win64.zip \ +[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win64.zip \ -c -O $packagedir/sqlite3-$sqlite3_version.zip -[ -e $packagedir/luajit-$luajit_version.zip ] || wget http://sfan5.pf-control.de/luajit-$luajit_version-static-win64.zip \ +[ -e $packagedir/luajit-$luajit_version.zip ] || wget http://minetest.kitsunemimi.pw/luajit-$luajit_version-static-win64.zip \ -c -O $packagedir/luajit-$luajit_version.zip -[ -e $packagedir/libleveldb-$leveldb_version.zip ] || wget http://sfan5.pf-control.de/libleveldb-$leveldb_version-win64.zip \ +[ -e $packagedir/libleveldb-$leveldb_version.zip ] || wget http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win64.zip \ -c -O $packagedir/libleveldb-$leveldb_version.zip -[ -e $packagedir/openal_stripped.zip ] || wget http://sfan5.pf-control.de/openal_stripped64.zip \ +[ -e $packagedir/openal_stripped.zip ] || wget http://minetest.kitsunemimi.pw/openal_stripped64.zip \ -c -O $packagedir/openal_stripped.zip diff --git a/util/bump_version.sh b/util/bump_version.sh index 5ff69c8a..948561ac 100755 --- a/util/bump_version.sh +++ b/util/bump_version.sh @@ -32,12 +32,12 @@ cd ${0%/*}/.. grep -q -E '^set\(VERSION_MAJOR [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt" grep -q -E '^set\(VERSION_MINOR [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt" grep -q -E '^set\(VERSION_PATCH [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt" -grep -q -E '^ANDROID_VERSION_CODE = [0-9]+$' build/android/Makefile || die "error: Could not find build/android/Makefile" +grep -q -E 'versionCode [0-9]+$' build/android/build.gradle || die "error: Could not find Android version code" VERSION_MAJOR=$(grep -E '^set\(VERSION_MAJOR [0-9]+\)$' CMakeLists.txt | tr -dC 0-9) VERSION_MINOR=$(grep -E '^set\(VERSION_MINOR [0-9]+\)$' CMakeLists.txt | tr -dC 0-9) VERSION_PATCH=$(grep -E '^set\(VERSION_PATCH [0-9]+\)$' CMakeLists.txt | tr -dC 0-9) -ANDROID_VERSION_CODE=$(grep -E '^ANDROID_VERSION_CODE = [0-9]+$' build/android/Makefile | tr -dC 0-9) +ANDROID_VERSION_CODE=$(grep -E 'versionCode [0-9]+$' build/android/build.gradle | tr -dC 0-9) echo "Current Minetest version: $VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" echo "Current Android version code: $ANDROID_VERSION_CODE" @@ -89,13 +89,13 @@ sed -i -re "s/^set\(VERSION_PATCH [0-9]+\)$/set(VERSION_PATCH $NEW_VERSION_PATCH sed -i -re "s/^set\(DEVELOPMENT_BUILD TRUE\)$/set(DEVELOPMENT_BUILD FALSE)/" CMakeLists.txt || die "Failed to unset DEVELOPMENT_BUILD" -sed -i -re "s/^ANDROID_VERSION_CODE = [0-9]+$/ANDROID_VERSION_CODE = $NEW_ANDROID_VERSION_CODE/" build/android/Makefile || die "Failed to update ANDROID_VERSION_CODE" +sed -i -re "s/versionCode [0-9]+$/versionCode $NEW_ANDROID_VERSION_CODE/" build/android/build.gradle || die "Failed to update Android version code" sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEW_VERSION/g" doc/lua_api.txt || die "Failed to update doc/lua_api.txt" sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEW_VERSION/g" doc/menu_lua_api.txt || die "Failed to update doc/menu_lua_api.txt" -git add -f CMakeLists.txt build/android/Makefile doc/lua_api.txt doc/menu_lua_api.txt || die "git add failed" +git add -f CMakeLists.txt build/android/build.gradle doc/lua_api.txt doc/menu_lua_api.txt || die "git add failed" git commit -m "Bump version to $NEW_VERSION" || die "git commit failed" diff --git a/util/travis/before_install.sh b/util/travis/before_install.sh index b6111804..58dc42b1 100755 --- a/util/travis/before_install.sh +++ b/util/travis/before_install.sh @@ -1,32 +1,40 @@ #!/bin/bash -e -if [[ $CC == "clang" ]]; then - export PATH="/usr/bin/:$PATH" - sudo sh -c 'echo "deb http://ppa.launchpad.net/eudoxos/llvm-3.1/ubuntu precise main" >> /etc/apt/sources.list' - sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 92DE8183 +if [[ $TRAVIS_OS_NAME == "linux" ]]; then + if [[ $CC == "clang" ]]; then + export PATH="/usr/bin/:$PATH" + sudo sh -c 'echo "deb http://ppa.launchpad.net/eudoxos/llvm-3.1/ubuntu precise main" >> /etc/apt/sources.list' + sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 92DE8183 + sudo apt-get update + sudo apt-get install llvm-3.1 + sudo apt-get install clang + fi sudo apt-get update - sudo apt-get install llvm-3.1 - sudo apt-get install clang + sudo apt-get install p7zip-full fi -sudo apt-get install p7zip-full -if [[ $PLATFORM == "Linux" ]]; then - sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng12-dev \ - libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ - libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev gettext - # Linking to LevelDB is broken, use a custom build - wget http://sfan5.pf-control.de/libleveldb-1.18-ubuntu12.04.7z - sudo 7z x -o/usr libleveldb-1.18-ubuntu12.04.7z + +if [[ $PLATFORM == "Unix" ]]; then + if [[ $TRAVIS_OS_NAME == "linux" ]]; then + sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng12-dev \ + libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ + libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev gettext + # Linking to LevelDB is broken, use a custom build + wget http://minetest.kitsunemimi.pw/libleveldb-1.18-ubuntu12.04.7z + sudo 7z x -o/usr libleveldb-1.18-ubuntu12.04.7z + else + brew update + brew install freetype gettext hiredis irrlicht jpeg leveldb libogg libvorbis luajit + fi elif [[ $PLATFORM == "Win32" ]]; then - wget http://sfan5.pf-control.de/mingw_w64_i686_ubuntu12.04_4.9.1.7z -O mingw.7z + wget http://minetest.kitsunemimi.pw/mingw_w64_i686_ubuntu12.04_4.9.1.7z -O mingw.7z sed -e "s|%PREFIX%|i686-w64-mingw32|" \ -e "s|%ROOTPATH%|/usr/i686-w64-mingw32|" \ < util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw.cmake sudo 7z x -y -o/usr mingw.7z elif [[ $PLATFORM == "Win64" ]]; then - wget http://sfan5.pf-control.de/mingw_w64_x86_64_ubuntu12.04_4.9.1.7z -O mingw.7z + wget http://minetest.kitsunemimi.pw/mingw_w64_x86_64_ubuntu12.04_4.9.1.7z -O mingw.7z sed -e "s|%PREFIX%|x86_64-w64-mingw32|" \ -e "s|%ROOTPATH%|/usr/x86_64-w64-mingw32|" \ < util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw64.cmake sudo 7z x -y -o/usr mingw.7z fi - diff --git a/util/travis/script.sh b/util/travis/script.sh index 756cc1de..870954eb 100755 --- a/util/travis/script.sh +++ b/util/travis/script.sh @@ -1,16 +1,20 @@ #!/bin/bash -e -if [[ $PLATFORM == "Linux" ]]; then +if [[ $PLATFORM == "Unix" ]]; then mkdir -p travisbuild - cd travisbuild - CMAKE_FLAGS='-DCMAKE_BUILD_TYPE=Debug \ - -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE' + cd travisbuild || exit 1 + CMAKE_FLAGS='' # Clang builds with FreeType fail on Travis if [[ $CC == "clang" ]]; then CMAKE_FLAGS+=' -DENABLE_FREETYPE=FALSE' fi - cmake $CMAKE_FLAGS .. + if [[ $TRAVIS_OS_NAME == "osx" ]]; then + CMAKE_FLAGS+=' -DCUSTOM_GETTEXT_PATH=/usr/local/opt/gettext' + fi + cmake -DCMAKE_BUILD_TYPE=Debug \ + -DRUN_IN_PLACE=TRUE \ + -DENABLE_GETTEXT=TRUE \ + $CMAKE_FLAGS .. make -j2 echo "Running unit tests." ../bin/minetest --run-unittests && exit 0 @@ -31,9 +35,9 @@ elif [[ $PLATFORM == Win* ]]; then export EXISTING_MINETEST_DIR=$OLDDIR export NO_MINETEST_GAME=1 if [[ $PLATFORM == "Win32" ]]; then - $OLDDIR/util/buildbot/buildwin32.sh travisbuild && exit 0 + "$OLDDIR/util/buildbot/buildwin32.sh" travisbuild && exit 0 elif [[ $PLATFORM == "Win64" ]]; then - $OLDDIR/util/buildbot/buildwin64.sh travisbuild && exit 0 + "$OLDDIR/util/buildbot/buildwin64.sh" travisbuild && exit 0 fi else echo "Unknown platform \"${PLATFORM}\"."