wsc-dfc
Elias Fleckenstein 2021-03-26 14:00:57 +01:00
commit 880c9768a9
233 changed files with 51190 additions and 67341 deletions

View File

@ -29,3 +29,4 @@ AlignAfterOpenBracket: DontAlign
ContinuationIndentWidth: 16 ContinuationIndentWidth: 16
ConstructorInitializerIndentWidth: 16 ConstructorInitializerIndentWidth: 16
BreakConstructorInitializers: AfterColon BreakConstructorInitializers: AfterColon
AlwaysBreakTemplateDeclarations: Yes

View File

@ -124,7 +124,7 @@ jobs:
- name: Install deps - name: Install deps
run: | run: |
source ./util/ci/common.sh source ./util/ci/common.sh
install_linux_deps clang-9 install_linux_deps --old-irr clang-9
- name: Build prometheus-cpp - name: Build prometheus-cpp
run: | run: |
@ -212,7 +212,10 @@ jobs:
msvc: msvc:
name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }}
runs-on: windows-2019 runs-on: windows-2019
#### Disabled due to Irrlicht switch
if: false
#### Disabled due to Irrlicht switch
env: env:
VCPKG_VERSION: 0bf3923f9fab4001c00f0f429682a0853b5749e0 VCPKG_VERSION: 0bf3923f9fab4001c00f0f429682a0853b5749e0
# 2020.11 # 2020.11

View File

@ -24,20 +24,21 @@ on:
- '.github/workflows/**.yml' - '.github/workflows/**.yml'
jobs: jobs:
clang_format:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Install clang-format
run: |
sudo apt-get install clang-format-9 -qyy
- name: Run clang-format # clang_format:
run: | # runs-on: ubuntu-18.04
source ./util/ci/lint.sh # steps:
perform_lint # - uses: actions/checkout@v2
env: # - name: Install clang-format
CLANG_FORMAT: clang-format-9 # run: |
# sudo apt-get install clang-format-9 -qyy
#
# - name: Run clang-format
# run: |
# source ./util/ci/clang-format.sh
# check_format
# env:
# CLANG_FORMAT: clang-format-9
clang_tidy: clang_tidy:
runs-on: ubuntu-18.04 runs-on: ubuntu-18.04

3
.gitignore vendored
View File

@ -86,8 +86,7 @@ src/test_config.h
src/cmake_config.h src/cmake_config.h
src/cmake_config_githash.h src/cmake_config_githash.h
src/unittest/test_world/world.mt src/unittest/test_world/world.mt
src/lua/build/ /locale/
locale/
.directory .directory
*.cbp *.cbp
*.layout *.layout

View File

@ -9,16 +9,24 @@ stages:
- deploy - deploy
variables: variables:
IRRLICHT_TAG: "1.9.0mt0"
MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git" MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git"
CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
.build_template: .build_template:
stage: build stage: build
before_script:
- apt-get update
- apt-get -y install build-essential git cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libleveldb-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
script: script:
- git clone https://github.com/minetest/irrlicht -b $IRRLICHT_TAG
- cd irrlicht
- cmake . -DBUILD_SHARED_LIBS=OFF
- make -j2
- cd ..
- mkdir cmakebuild - mkdir cmakebuild
- mkdir -p artifact/minetest/usr/
- cd cmakebuild - cd cmakebuild
- cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DENABLE_SYSTEM_JSONCPP=TRUE -DBUILD_SERVER=TRUE .. - cmake -DIRRLICHT_LIBRARY=$PWD/../irrlicht/lib/Linux/libIrrlicht.a -DIRRLICHT_INCLUDE_DIR=$PWD/../irrlicht/include -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE ..
- make -j2 - make -j2
- make install - make install
artifacts: artifacts:
@ -30,7 +38,7 @@ variables:
.debpkg_template: .debpkg_template:
stage: package stage: package
before_script: before_script:
- apt-get update -y - apt-get update
- apt-get install -y git - apt-get install -y git
- mkdir -p build/deb/minetest/DEBIAN/ - mkdir -p build/deb/minetest/DEBIAN/
- cp misc/debpkg-control build/deb/minetest/DEBIAN/control - cp misc/debpkg-control build/deb/minetest/DEBIAN/control
@ -39,6 +47,7 @@ variables:
- git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game - git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game
- rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git - rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git
- sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control - sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control
- sed -i 's/JPEG_PLACEHOLDER/'$JPEG_PKG'/g' build/deb/minetest/DEBIAN/control
- sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control - sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control
- cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../ - cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../
artifacts: artifacts:
@ -49,7 +58,7 @@ variables:
.debpkg_install: .debpkg_install:
stage: deploy stage: deploy
before_script: before_script:
- apt-get update -y - apt-get update
script: script:
- apt-get install -y ./*.deb - apt-get install -y ./*.deb
- minetest --version - minetest --version
@ -63,9 +72,6 @@ variables:
build:debian-9: build:debian-9:
extends: .build_template extends: .build_template
image: debian:9 image: debian:9
before_script:
- apt-get update -y
- apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
package:debian-9: package:debian-9:
extends: .debpkg_template extends: .debpkg_template
@ -74,6 +80,7 @@ package:debian-9:
- build:debian-9 - build:debian-9
variables: variables:
LEVELDB_PKG: libleveldb1v5 LEVELDB_PKG: libleveldb1v5
JPEG_PKG: libjpeg62-turbo
deploy:debian-9: deploy:debian-9:
extends: .debpkg_install extends: .debpkg_install
@ -86,9 +93,6 @@ deploy:debian-9:
build:debian-10: build:debian-10:
extends: .build_template extends: .build_template
image: debian:10 image: debian:10
before_script:
- apt-get update -y
- apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
package:debian-10: package:debian-10:
extends: .debpkg_template extends: .debpkg_template
@ -97,6 +101,7 @@ package:debian-10:
- build:debian-10 - build:debian-10
variables: variables:
LEVELDB_PKG: libleveldb1d LEVELDB_PKG: libleveldb1d
JPEG_PKG: libjpeg62-turbo
deploy:debian-10: deploy:debian-10:
extends: .debpkg_install extends: .debpkg_install
@ -113,9 +118,6 @@ deploy:debian-10:
build:ubuntu-16.04: build:ubuntu-16.04:
extends: .build_template extends: .build_template
image: ubuntu:xenial image: ubuntu:xenial
before_script:
- apt-get update -y
- apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
package:ubuntu-16.04: package:ubuntu-16.04:
extends: .debpkg_template extends: .debpkg_template
@ -124,6 +126,7 @@ package:ubuntu-16.04:
- build:ubuntu-16.04 - build:ubuntu-16.04
variables: variables:
LEVELDB_PKG: libleveldb1v5 LEVELDB_PKG: libleveldb1v5
JPEG_PKG: libjpeg-turbo8
deploy:ubuntu-16.04: deploy:ubuntu-16.04:
extends: .debpkg_install extends: .debpkg_install
@ -136,9 +139,6 @@ deploy:ubuntu-16.04:
build:ubuntu-18.04: build:ubuntu-18.04:
extends: .build_template extends: .build_template
image: ubuntu:bionic image: ubuntu:bionic
before_script:
- apt-get update -y
- apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
package:ubuntu-18.04: package:ubuntu-18.04:
extends: .debpkg_template extends: .debpkg_template
@ -147,6 +147,7 @@ package:ubuntu-18.04:
- build:ubuntu-18.04 - build:ubuntu-18.04
variables: variables:
LEVELDB_PKG: libleveldb1v5 LEVELDB_PKG: libleveldb1v5
JPEG_PKG: libjpeg-turbo8
deploy:ubuntu-18.04: deploy:ubuntu-18.04:
extends: .debpkg_install extends: .debpkg_install
@ -163,7 +164,7 @@ build:fedora-28:
extends: .build_template extends: .build_template
image: fedora:28 image: fedora:28
before_script: before_script:
- dnf -y install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel - dnf -y install make git gcc gcc-c++ kernel-devel cmake libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel
## ##
## MinGW for Windows ## MinGW for Windows
@ -172,7 +173,7 @@ build:fedora-28:
.generic_win_template: .generic_win_template:
image: ubuntu:bionic image: ubuntu:bionic
before_script: before_script:
- apt-get update -y - apt-get update
- apt-get install -y wget xz-utils unzip git cmake gettext - apt-get install -y wget xz-utils unzip git cmake gettext
- wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz
- tar -xaf mingw.tar.xz -C /usr - tar -xaf mingw.tar.xz -C /usr
@ -183,13 +184,13 @@ build:fedora-28:
artifacts: artifacts:
expire_in: 1h expire_in: 1h
paths: paths:
- build/minetest/_build/* - _build/*
.package_win_template: .package_win_template:
extends: .generic_win_template extends: .generic_win_template
stage: package stage: package
script: script:
- unzip build/minetest/_build/minetest-*.zip - unzip _build/minetest-*.zip
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libgcc*.dll minetest-*-win*/bin/ - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libgcc*.dll minetest-*-win*/bin/
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libstdc++*.dll minetest-*-win*/bin/ - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libstdc++*.dll minetest-*-win*/bin/
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libwinpthread*.dll minetest-*-win*/bin/ - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libwinpthread*.dll minetest-*-win*/bin/
@ -201,7 +202,7 @@ build:fedora-28:
build:win32: build:win32:
extends: .build_win_template extends: .build_win_template
script: script:
- ./util/buildbot/buildwin32.sh build - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
variables: variables:
WIN_ARCH: "i686" WIN_ARCH: "i686"
@ -216,7 +217,7 @@ package:win32:
build:win64: build:win64:
extends: .build_win_template extends: .build_win_template
script: script:
- ./util/buildbot/buildwin64.sh build - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
variables: variables:
WIN_ARCH: "x86_64" WIN_ARCH: "x86_64"

View File

@ -1,33 +1,67 @@
# Documentation: https://git-scm.com/docs/git-check-mailmap#_mapping_authors
0gb.us <0gb.us@0gb.us> <us_0gb@laptop-0gb-us.0gb.us> 0gb.us <0gb.us@0gb.us> <us_0gb@laptop-0gb-us.0gb.us>
Calinou <calinou9999@gmail.com> <calinou9999spam@gmail.com> Calinou <calinou@opmbx.org> <calinou9999@gmail.com>
Perttu Ahola <celeron55@gmail.com> celeron55 <celeron55@gmail.com> Calinou <calinou@opmbx.org> <calinou9999spam@gmail.com>
Perttu Ahola <celeron55@gmail.com>
Perttu Ahola <celeron55@gmail.com> celeron55 <celeron55@armada.(none)> Perttu Ahola <celeron55@gmail.com> celeron55 <celeron55@armada.(none)>
Craig Robbins <kde.psych@gmail.com> <crobbins@localhost.localdomain> Zeno- <kde.psych@gmail.com>
Zeno- <kde.psych@gmail.com> <crobbins@localhost.localdomain>
Diego Martínez <kaeza@users.sf.net>
Diego Martínez <kaeza@users.sf.net> <lkaezadl3@gmail.com> Diego Martínez <kaeza@users.sf.net> <lkaezadl3@gmail.com>
Ilya Zhuravlev <zhuravlevilya@ya.ru>
Ilya Zhuravlev <zhuravlevilya@ya.ru> <whatever@xyz.is> Ilya Zhuravlev <zhuravlevilya@ya.ru> <whatever@xyz.is>
kwolekr <kwolekr@minetest.net> <mirrorisim@gmail.com> kwolekr <kwolekr@minetest.net> <mirrorisim@gmail.com>
PilzAdam <pilzadam@minetest.net> PilzAdam <adam-k@outlook.com> PilzAdam <pilzadam@minetest.net> <adam-k@outlook.com>
PilzAdam <pilzadam@minetest.net> Pilz Adam <PilzAdam@gmx.de> PilzAdam <pilzadam@minetest.net> <PilzAdam@gmx.de>
PilzAdam <pilzadam@minetest.net> PilzAdam <PilzAdam@gmx.de>
proller <proller@github.com> <proler@github.com> proller <proller@github.com> <proler@github.com>
proller <proller@github.com> <proler@gmail.com> proller <proller@github.com> <proler@gmail.com>
RealBadAngel <maciej.kasatkin@o2.pl> <mk@realbadangel.pl> RealBadAngel <maciej.kasatkin@o2.pl> <mk@realbadangel.pl>
RealBadAngel <maciej.kasatkin@o2.pl> <maciej.kasatkin@yahoo.com> RealBadAngel <maciej.kasatkin@o2.pl> <maciej.kasatkin@yahoo.com>
Selat <LongExampleTestName@gmail.com> <LongExampletestName@gmail.com> Selat <LongExampleTestName@gmail.com> <LongExampletestName@gmail.com>
ShadowNinja <shadowninja@minetest.net> ShadowNinja <noreply@gmail.com> ShadowNinja <shadowninja@minetest.net> ShadowNinja <noreply@gmail.com>
Shen Zheyu <arsdragonfly@gmail.com> arsdragonfly <arsdragonfly@gmail.com> Esteban I. Ruiz Moreno <exio4.com@gmail.com>
Pavel Elagin <elagin.pasha@gmail.com> elagin <elagin.pasha@gmail.com> Esteban I. Ruiz Moreno <exio4.com@gmail.com> <me@exio4.xyz>
Esteban I. Ruiz Moreno <exio4.com@gmail.com> Esteban I. RM <exio4.com@gmail.com> Lord James <neftali_dtctv@hotmail.com>
manuel duarte <ffrogger0@yahoo.com> manuel joaquim <ffrogger0@yahoo.com> BlockMen <nmuelll@web.de>
manuel duarte <ffrogger0@yahoo.com> sweetbomber <ffrogger _zero_ at yahoo dot com> sfan5 <sfan5@live.de>
Diego Martínez <kaeza@users.sf.net> kaeza <kaeza@users.sf.net> DannyDark <the_skeleton_of_a_child@yahoo.co.uk>
Diego Martínez <kaeza@users.sf.net> Diego Martinez <kaeza@users.sf.net> Ilya Pavlov <TTChangeTheWorld@gmail.com>
Lord James <neftali_dtctv@hotmail.com> Lord89James <neftali_dtctv@hotmail.com>
BlockMen <nmuelll@web.de> Block Men <nmuelll@web.de>
sfan5 <sfan5@live.de> Sfan5 <sfan5@live.de>
DannyDark <the_skeleton_of_a_child@yahoo.co.uk> dannydark <the_skeleton_of_a_child@yahoo.co.uk>
Ilya Pavlov <TTChangeTheWorld@gmail.com> Ilya <TTChangeTheWorld@gmail.com>
Ilya Zhuravlev <zhuravlevilya@ya.ru> xyzz <zhuravlevilya@ya.ru>
sapier <Sapier at GMX dot net> sapier <sapier AT gmx DOT net> sapier <Sapier at GMX dot net> sapier <sapier AT gmx DOT net>
sapier <Sapier at GMX dot net> sapier <sapier at gmx dot net> sapier <Sapier at GMX dot net> sapier <sapier at gmx dot net>
SmallJoker <SmallJoker@users.noreply.github.com> <mk939@ymail.com>
Loïc Blot <nerzhul@users.noreply.github.com>
Loïc Blot <nerzhul@users.noreply.github.com> <loic.blot@unix-experience.fr>
numzero <numzer0@yandex.ru> Vitaliy <numzer0@yandex.ru>
numzero <numzer0@yandex.ru> <silverunicorn2011@yandex.ru>
Jean-Patrick Guerrero <kilbith@users.noreply.github.com>
Jean-Patrick Guerrero <kilbith@users.noreply.github.com> <jeanpatrick.guerrero@gmail.com>
HybridDog <3192173+HybridDog@users.noreply.github.com> <ovvv@web.de>
srfqi <muhammadrifqipriyosusanto@gmail.com>
Dániel Juhász <juhdanad@gmail.com>
rubenwardy <rw@rubenwardy.com>
rubenwardy <rw@rubenwardy.com> <rubenwardy@gmail.com>
Paul Ouellette <oue.paul18@gmail.com>
Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com> <vanessaezekowitz@gmail.com>
ClobberXD <ClobberXD@gmail.com>
ClobberXD <ClobberXD@gmail.com> <ClobberXD@protonmail.com>
ClobberXD <ClobberXD@gmail.com> <36130650+ClobberXD@users.noreply.github.com>
Auke Kok <sofar+github@foo-projects.org>
Auke Kok <sofar+github@foo-projects.org> <sofar@foo-projects.org>
Desour <vorunbekannt75@web.de>
Nathanaël Courant <Ekdohibs@users.noreply.github.com> <nathanael.courant@laposte.net>
Ezhh <owlecho@live.com>
paramat <paramat@users.noreply.github.com>
paramat <paramat@users.noreply.github.com> <mat.gregory@virginmedia.com>
lhofhansl <lhofhansl@yahoo.com> <larsh@apache.org>
red-001 <red-001@outlook.ie> <red-001@openmailbox.org>
Wuzzy <wuzzy2@mail.ru> <Wuzzy2@mail.ru>
Wuzzy <wuzzy2@mail.ru> <almikes@aol.com>
Jordach <jordach.snelling@gmail.com>
MoNTE48 <MoNTE48@mail.ua>
v-rob <robinsonvincent89@gmail.com>
v-rob <robinsonvincent89@gmail.com> <31123645+v-rob@users.noreply.github.com>
EvidenceB <49488517+EvidenceBKidscode@users.noreply.github.com>
gregorycu <gregory.currie@gmail.com>
Rogier <rogier777@gmail.com>
Rogier <rogier777@gmail.com> <Rogier-5@users.noreply.github.com>

View File

@ -1,7 +1,5 @@
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0025 OLD)
# This can be read from ${PROJECT_NAME} after project() is called # This can be read from ${PROJECT_NAME} after project() is called
project(minetest) project(minetest)
set(PROJECT_NAME_CAPITALIZED "Dragonfire") set(PROJECT_NAME_CAPITALIZED "Dragonfire")
@ -12,9 +10,9 @@ set(CLANG_MINIMUM_VERSION "3.4")
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing # Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing
set(VERSION_MAJOR 5) set(VERSION_MAJOR 5)
set(VERSION_MINOR 4) set(VERSION_MINOR 5)
set(VERSION_PATCH 0) set(VERSION_PATCH 0)
set(VERSION_EXTRA "-dragonfire" CACHE STRING "Stuff to append to version string") set(VERSION_EXTRA "dragonfire" CACHE STRING "Stuff to append to version string")
# Change to false for releases # Change to false for releases
set(DEVELOPMENT_BUILD FALSE) set(DEVELOPMENT_BUILD FALSE)
@ -61,6 +59,29 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# This is done here so that relative search paths are more reasonable # This is done here so that relative search paths are more reasonable
find_package(Irrlicht) find_package(Irrlicht)
if(BUILD_CLIENT AND NOT IRRLICHT_FOUND)
message(FATAL_ERROR "Irrlicht is required to build the client, but it was not found.")
elseif(IRRLICHT_INCLUDE_DIR STREQUAL "")
message(FATAL_ERROR "Irrlicht headers are required to build the server, but none found.")
endif()
include(CheckSymbolExists)
set(CMAKE_REQUIRED_INCLUDES ${IRRLICHT_INCLUDE_DIR})
unset(HAS_FORKED_IRRLICHT CACHE)
check_symbol_exists(IRRLICHT_VERSION_MT "IrrCompileConfig.h" HAS_FORKED_IRRLICHT)
if(NOT HAS_FORKED_IRRLICHT)
string(CONCAT EXPLANATION_MSG
"Irrlicht found, but it is not Minetest's Irrlicht fork. "
"The Minetest team has forked Irrlicht to make their own customizations. "
"It can be found here: https://github.com/minetest/irrlicht")
if(BUILD_CLIENT)
message(FATAL_ERROR "${EXPLANATION_MSG}\n"
"Building the client with upstream Irrlicht is no longer possible.")
else()
message(WARNING "${EXPLANATION_MSG}\n"
"The server can still be built with upstream Irrlicht but this is DISCOURAGED.")
endif()
endif()
# Installation # Installation
@ -169,7 +190,6 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHA
if(BUILD_CLIENT) if(BUILD_CLIENT)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/shaders" DESTINATION "${SHAREDIR}/client") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/shaders" DESTINATION "${SHAREDIR}/client")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fonts" DESTINATION "${SHAREDIR}")
if(RUN_IN_PLACE) if(RUN_IN_PLACE)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clientmods" DESTINATION "${SHAREDIR}") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clientmods" DESTINATION "${SHAREDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/serverlist" DESTINATION "${SHAREDIR}/client") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/serverlist" DESTINATION "${SHAREDIR}/client")
@ -204,8 +224,8 @@ find_package(GMP REQUIRED)
find_package(Json REQUIRED) find_package(Json REQUIRED)
find_package(Lua REQUIRED) find_package(Lua REQUIRED)
# JsonCPP doesn't compile well on GCC 4.8 # JsonCpp doesn't compile well on GCC 4.8
if(NOT ENABLE_SYSTEM_JSONCPP) if(NOT USE_SYSTEM_JSONCPP)
set(GCC_MINIMUM_VERSION "4.9") set(GCC_MINIMUM_VERSION "4.9")
endif() endif()
@ -214,7 +234,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
message(FATAL_ERROR "Insufficient gcc version, found ${CMAKE_CXX_COMPILER_VERSION}. " message(FATAL_ERROR "Insufficient gcc version, found ${CMAKE_CXX_COMPILER_VERSION}. "
"Version ${GCC_MINIMUM_VERSION} or higher is required.") "Version ${GCC_MINIMUM_VERSION} or higher is required.")
endif() endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") elseif(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_MINIMUM_VERSION}") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_MINIMUM_VERSION}")
message(FATAL_ERROR "Insufficient clang version, found ${CMAKE_CXX_COMPILER_VERSION}. " message(FATAL_ERROR "Insufficient clang version, found ${CMAKE_CXX_COMPILER_VERSION}. "
"Version ${CLANG_MINIMUM_VERSION} or higher is required.") "Version ${CLANG_MINIMUM_VERSION} or higher is required.")

View File

@ -51,7 +51,7 @@ RUN mkdir build && \
FROM alpine:3.11 FROM alpine:3.11
RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq luajit && \ RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq luajit jsoncpp && \
adduser -D minetest --uid 30000 -h /var/lib/minetest && \ adduser -D minetest --uid 30000 -h /var/lib/minetest && \
chown -R minetest:minetest /var/lib/minetest chown -R minetest:minetest /var/lib/minetest

View File

@ -14,6 +14,9 @@ https://www.apache.org/licenses/LICENSE-2.0.html
Textures by Zughy are under CC BY-SA 4.0 Textures by Zughy are under CC BY-SA 4.0
https://creativecommons.org/licenses/by-sa/4.0/ https://creativecommons.org/licenses/by-sa/4.0/
textures/base/pack/server_public.png is under CC-BY 4.0, taken from Twitter's Twemoji set
https://creativecommons.org/licenses/by/4.0/
Authors of media files Authors of media files
----------------------- -----------------------
Everything not listed in here: Everything not listed in here:
@ -39,10 +42,10 @@ EliasFleckenstein03:
misc/dragonfire.svg misc/dragonfire.svg
textures/base/pack/logo.png textures/base/pack/logo.png
JRottm JRottm:
textures/base/pack/player_marker.png textures/base/pack/player_marker.png
srifqi srifqi:
textures/base/pack/chat_hide_btn.png textures/base/pack/chat_hide_btn.png
textures/base/pack/chat_show_btn.png textures/base/pack/chat_show_btn.png
textures/base/pack/joystick_bg.png textures/base/pack/joystick_bg.png
@ -58,6 +61,9 @@ Zughy:
textures/base/pack/cdb_update.png textures/base/pack/cdb_update.png
textures/base/pack/cdb_viewonline.png textures/base/pack/cdb_viewonline.png
appgurueu:
textures/base/pack/server_incompatible.png
License of Minetest source code License of Minetest source code
------------------------------- -------------------------------

View File

@ -68,7 +68,7 @@ Some can be changed in the key config dialog in the settings tab.
| P | Enable/disable pitch move mode | | P | Enable/disable pitch move mode |
| J | Enable/disable fast mode (needs fast privilege) | | J | Enable/disable fast mode (needs fast privilege) |
| H | Enable/disable noclip mode (needs noclip privilege) | | H | Enable/disable noclip mode (needs noclip privilege) |
| E | Move fast in fast mode | | E | Aux1 (Move fast in fast mode. Games may add special features) |
| C | Cycle through camera modes | | C | Cycle through camera modes |
| V | Cycle through minimap modes | | V | Cycle through minimap modes |
| Shift + V | Change minimap orientation | | Shift + V | Change minimap orientation |
@ -134,7 +134,7 @@ Compiling
|------------|---------|------------| |------------|---------|------------|
| GCC | 4.9+ | Can be replaced with Clang 3.4+ | | GCC | 4.9+ | Can be replaced with Clang 3.4+ |
| CMake | 2.6+ | | | CMake | 2.6+ | |
| Irrlicht | 1.7.3+ | | | Irrlicht | - | Custom version required, see https://github.com/minetest/irrlicht |
| SQLite3 | 3.0+ | | | SQLite3 | 3.0+ | |
| LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present | | LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present |
| GMP | 5.0.0+ | Bundled mini-GMP is used if not present | | GMP | 5.0.0+ | Bundled mini-GMP is used if not present |
@ -142,19 +142,19 @@ Compiling
For Debian/Ubuntu users: For Debian/Ubuntu users:
sudo apt install g++ make libc6-dev libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
For Fedora users: For Fedora users:
sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel
For Arch users: For Arch users:
sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm irrlicht libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses
For Alpine users: For Alpine users:
sudo apk add build-base irrlicht-dev cmake bzip2-dev libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev sudo apk add build-base cmake libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev
#### Download #### Download
@ -209,8 +209,8 @@ Run it:
- You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`. - You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`.
- You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`. - You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`.
- Debug build is slower, but gives much more useful output in a debugger. - Debug build is slower, but gives much more useful output in a debugger.
- If you build a bare server you don't need to have Irrlicht installed. - If you build a bare server you don't need to have the Irrlicht library installed.
- In that case use `-DIRRLICHT_SOURCE_DIR=/the/irrlicht/source`. - In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlicht/include`.
### CMake options ### CMake options
@ -238,7 +238,7 @@ General options and their default values:
ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua) ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua)
ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default) ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default)
ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp) ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp)
ENABLE_SYSTEM_JSONCPP=OFF - Use JsonCPP from system ENABLE_SYSTEM_JSONCPP=ON - Use JsonCPP from system
OPENGL_GL_PREFERENCE=LEGACY - Linux client build only; See CMake Policy CMP0072 for reference OPENGL_GL_PREFERENCE=LEGACY - Linux client build only; See CMake Policy CMP0072 for reference
RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory) RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory)
USE_GPROF=FALSE - Enable profiling using GProf USE_GPROF=FALSE - Enable profiling using GProf
@ -246,8 +246,6 @@ General options and their default values:
Library specific options: Library specific options:
BZIP2_INCLUDE_DIR - Linux only; directory where bzlib.h is located
BZIP2_LIBRARY - Linux only; path to libbz2.a/libbz2.so
CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll
CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located
CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
@ -257,8 +255,7 @@ Library specific options:
FREETYPE_INCLUDE_DIR_ft2build - Only if building with FreeType 2; directory that contains ft2build.h FREETYPE_INCLUDE_DIR_ft2build - Only if building with FreeType 2; directory that contains ft2build.h
FREETYPE_LIBRARY - Only if building with FreeType 2; path to libfreetype.a/libfreetype.so/freetype.lib FREETYPE_LIBRARY - Only if building with FreeType 2; path to libfreetype.a/libfreetype.so/freetype.lib
FREETYPE_DLL - Only if building with FreeType 2 on Windows; path to libfreetype.dll FREETYPE_DLL - Only if building with FreeType 2 on Windows; path to libfreetype.dll
GETTEXT_DLL - Only when building with gettext on Windows; path to libintl3.dll GETTEXT_DLL - Only when building with gettext on Windows; paths to libintl + libiconv DLLs
GETTEXT_ICONV_DLL - Only when building with gettext on Windows; path to libiconv2.dll
GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains iconv.h GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains iconv.h
GETTEXT_LIBRARY - Only when building with gettext on Windows; path to libintl.dll.a GETTEXT_LIBRARY - Only when building with gettext on Windows; path to libintl.dll.a
GETTEXT_MSGFMT - Only when building with gettext; path to msgfmt/msgfmt.exe GETTEXT_MSGFMT - Only when building with gettext; path to msgfmt/msgfmt.exe
@ -276,7 +273,6 @@ Library specific options:
SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib
LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located
LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so
MINGWM10_DLL - Only if compiling with MinGW; path to mingwm10.dll
OGG_DLL - Only if building with sound on Windows; path to libogg.dll OGG_DLL - Only if building with sound on Windows; path to libogg.dll
OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h
OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a
@ -287,9 +283,8 @@ Library specific options:
OPENGLES2_LIBRARY - Only if building with GLES; path to libGLESv2.a/libGLESv2.so OPENGLES2_LIBRARY - Only if building with GLES; path to libGLESv2.a/libGLESv2.so
SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h
SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib
VORBISFILE_DLL - Only if building with sound on Windows; path to libvorbisfile-3.dll
VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a
VORBIS_DLL - Only if building with sound on Windows; path to libvorbis-0.dll VORBIS_DLL - Only if building with sound on Windows; paths to vorbis DLLs
VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside
VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a
XXF86VM_LIBRARY - Only on Linux; path to libXXf86vm.a/libXXf86vm.so XXF86VM_LIBRARY - Only on Linux; path to libXXf86vm.a/libXXf86vm.so
@ -314,9 +309,10 @@ It is highly recommended to use vcpkg as package manager.
After you successfully built vcpkg you can easily install the required libraries: After you successfully built vcpkg you can easily install the required libraries:
```powershell ```powershell
vcpkg install irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows vcpkg install zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows
``` ```
- **Note that you currently need to build irrlicht on your own**
- `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store. - `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store.
- `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound. - `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound.
- `freetype` is optional, it allows true-type font rendering. - `freetype` is optional, it allows true-type font rendering.
@ -354,7 +350,7 @@ This is outdated and not recommended. Follow the instructions on https://dev.min
Run the following script in PowerShell: Run the following script in PowerShell:
```powershell ```powershell
cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF -DENABLE_SYSTEM_JSONCPP=ON cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF
cmake --build . --config Release cmake --build . --config Release
``` ```
Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct. Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct.

View File

@ -1,10 +1,10 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
project.ext.set("versionMajor", 5) // Version Major project.ext.set("versionMajor", 5) // Version Major
project.ext.set("versionMinor", 4) // Version Minor project.ext.set("versionMinor", 5) // Version Minor
project.ext.set("versionPatch", 0) // Version Patch project.ext.set("versionPatch", 0) // Version Patch
project.ext.set("versionExtra", "-dev") // Version Extra project.ext.set("versionExtra", "-dev") // Version Extra
project.ext.set("versionCode", 30) // Android Version Code project.ext.set("versionCode", 32) // Android Version Code
// NOTE: +2 after each release! // NOTE: +2 after each release!
// +1 for ARM and +1 for ARM64 APK's, because // +1 for ARM and +1 for ARM64 APK's, because
// each APK must have a larger `versionCode` than the previous // each APK must have a larger `versionCode` than the previous

View File

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="24.000002"
inkscape:export-xdpi="24.000002"
inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png"
sodipodi:docname="aux_btn.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 135.46666 135.46667"
height="512"
width="512">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="false"
inkscape:snap-to-guides="true"
inkscape:snap-bbox="true"
showguides="true"
inkscape:snap-page="true"
inkscape:snap-grids="false"
inkscape:pagecheckerboard="false"
inkscape:window-maximized="1"
inkscape:window-y="31"
inkscape:window-x="0"
inkscape:window-height="1024"
inkscape:window-width="1920"
units="px"
showgrid="true"
inkscape:current-layer="layer2"
inkscape:document-units="mm"
inkscape:cy="212.91276"
inkscape:cx="201.43176"
inkscape:zoom="1.4633894"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#404040"
id="base">
<inkscape:grid
empopacity="0.25098039"
empcolor="#40ff40"
opacity="0.1254902"
color="#40ff40"
empspacing="4"
spacingy="0.26458333"
spacingx="0.26458333"
id="grid16"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
style="display:inline"
inkscape:label="Layer 2"
id="layer2"
inkscape:groupmode="layer">
<path
inkscape:connector-curvature="0"
id="path7055"
d=""
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7035"
d=""
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7005"
d=""
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5127"
d=""
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
transform="scale(1.0078883,0.99217343)"
id="text4716"
y="85.59491"
x="67.78315"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.4785px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
xml:space="preserve"><tspan
style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
y="85.59491"
x="67.78315"
id="tspan4714"
sodipodi:role="line">Aux1</tspan></text>
<flowRoot
transform="scale(0.26458333)"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="flowRoot4718"
xml:space="preserve"><flowRegion
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="flowRegion4720"><rect
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
y="124.10143"
x="264.65997"
height="136.37059"
width="157.5838"
id="rect4722" /></flowRegion><flowPara
id="flowPara4724" /></flowRoot>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -1,411 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="aux_btn.svg"
inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png"
inkscape:export-xdpi="24.000002"
inkscape:export-ydpi="24.000002">
<defs
id="defs2">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Colorize"
id="filter4628">
<feComposite
in2="SourceGraphic"
operator="arithmetic"
k1="0"
k2="1"
result="composite1"
id="feComposite4614" />
<feColorMatrix
in="composite1"
values="1"
type="saturate"
result="colormatrix1"
id="feColorMatrix4616" />
<feFlood
flood-opacity="1"
flood-color="rgb(158,0,0)"
result="flood1"
id="feFlood4618" />
<feBlend
in="flood1"
in2="colormatrix1"
mode="multiply"
result="blend1"
id="feBlend4620" />
<feBlend
in2="blend1"
mode="screen"
result="blend2"
id="feBlend4622" />
<feColorMatrix
in="blend2"
values="1"
type="saturate"
result="colormatrix2"
id="feColorMatrix4624" />
<feComposite
in="colormatrix2"
in2="SourceGraphic"
operator="in"
k2="1"
result="composite2"
id="feComposite4626" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Sharpen More"
id="filter5109"
inkscape:menu="Image Effects"
inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
<feComposite
in2="SourceGraphic"
operator="arithmetic"
k1="0"
k2="1"
result="composite1"
id="feComposite5095" />
<feColorMatrix
in="composite1"
values="1"
type="saturate"
result="colormatrix1"
id="feColorMatrix5097" />
<feFlood
flood-opacity="1"
flood-color="rgb(158,67,0)"
result="flood1"
id="feFlood5099" />
<feBlend
in="flood1"
in2="colormatrix1"
mode="multiply"
result="blend1"
id="feBlend5101" />
<feBlend
in2="blend1"
mode="screen"
result="blend2"
id="feBlend5103" />
<feColorMatrix
in="blend2"
values="1"
type="saturate"
result="colormatrix2"
id="feColorMatrix5105" />
<feComposite
in="colormatrix2"
in2="SourceGraphic"
operator="in"
k2="1"
result="fbSourceGraphic"
id="feComposite5107" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix5111" />
<feComposite
in2="fbSourceGraphic"
id="feComposite5113"
operator="arithmetic"
k1="0"
k2="1"
result="composite1"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix5115"
in="composite1"
values="1"
type="saturate"
result="colormatrix1" />
<feFlood
id="feFlood5117"
flood-opacity="1"
flood-color="rgb(158,0,0)"
result="flood1" />
<feBlend
in2="colormatrix1"
id="feBlend5119"
in="flood1"
mode="multiply"
result="blend1" />
<feBlend
in2="blend1"
id="feBlend5121"
mode="screen"
result="blend2" />
<feColorMatrix
id="feColorMatrix5123"
in="blend2"
values="1"
type="saturate"
result="colormatrix2" />
<feComposite
in2="fbSourceGraphic"
id="feComposite5125"
in="colormatrix2"
operator="in"
k2="1"
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix7007" />
<feConvolveMatrix
id="feConvolveMatrix7009"
order="3 3"
kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
divisor="1"
in="fbSourceGraphic"
targetX="1"
targetY="1"
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix7011" />
<feConvolveMatrix
id="feConvolveMatrix7013"
targetY="1"
targetX="1"
in="fbSourceGraphic"
divisor="1"
kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
order="3 3"
result="result1" />
<feBlend
in2="fbSourceGraphic"
id="feBlend7015"
mode="normal"
result="result2" />
</filter>
<marker
style="overflow:visible"
refY="0.0"
refX="0.0"
orient="auto"
id="DistanceX">
<path
id="path7410"
style="stroke:#000000; stroke-width:0.5"
d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
</marker>
<pattern
y="0"
x="0"
width="8"
patternUnits="userSpaceOnUse"
id="Hatch"
height="8">
<path
id="path7413"
stroke-width="0.25"
stroke="#000000"
linecap="square"
d="M8 4 l-4,4" />
<path
id="path7415"
stroke-width="0.25"
stroke="#000000"
linecap="square"
d="M6 2 l-4,4" />
<path
id="path7417"
stroke-width="0.25"
stroke="#000000"
linecap="square"
d="M4 0 l-4,4" />
</pattern>
<symbol
id="*Model_Space" />
<symbol
id="*Paper_Space" />
<symbol
id="*Paper_Space0" />
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Colorize"
id="filter4883">
<feComposite
in2="SourceGraphic"
operator="arithmetic"
k1="0"
k2="1"
result="composite1"
id="feComposite4869" />
<feColorMatrix
in="composite1"
values="1"
type="saturate"
result="colormatrix1"
id="feColorMatrix4871" />
<feFlood
flood-opacity="1"
flood-color="rgb(158,21,0)"
result="flood1"
id="feFlood4873" />
<feBlend
in="flood1"
in2="colormatrix1"
mode="multiply"
result="blend1"
id="feBlend4875" />
<feBlend
in2="blend1"
mode="screen"
result="blend2"
id="feBlend4877" />
<feColorMatrix
in="blend2"
values="1"
type="saturate"
result="colormatrix2"
id="feColorMatrix4879" />
<feComposite
in="colormatrix2"
in2="SourceGraphic"
operator="in"
k2="1"
result="composite2"
id="feComposite4881" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#404040"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="-341.34157"
inkscape:cy="210.02973"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="true"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="false"
inkscape:snap-grids="false"
inkscape:snap-page="true"
showguides="true"
inkscape:snap-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-object-midpoints="false"
inkscape:snap-others="true"
inkscape:snap-bbox-midpoints="true">
<inkscape:grid
type="xygrid"
id="grid16"
spacingx="0.26458333"
spacingy="0.26458333"
empspacing="4"
color="#40ff40"
opacity="0.1254902"
empcolor="#40ff40"
empopacity="0.25098039" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path7055"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path7035"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path7005"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path5127"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.47851181px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="67.78315"
y="85.59491"
id="text4716"
transform="scale(1.0078883,0.99217343)"><tspan
sodipodi:role="line"
id="tspan4714"
x="67.78315"
y="85.59491"
style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AUX</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot4718"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
transform="scale(0.26458333)"><flowRegion
id="flowRegion4720"
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
id="rect4722"
width="157.5838"
height="136.37059"
x="264.65997"
y="124.10143"
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
id="flowPara4724" /></flowRoot> </g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -7,7 +7,7 @@ core.register_on_sending_chat_message(function(message)
local first_char = message:sub(1,1) local first_char = message:sub(1,1)
if first_char == "/" or first_char == "." then if first_char == "/" or first_char == "." then
core.display_chat_message(core.gettext("issued command: ") .. message) core.display_chat_message(core.gettext("Issued command: ") .. message)
end end
if first_char ~= "." then if first_char ~= "." then
@ -18,7 +18,7 @@ core.register_on_sending_chat_message(function(message)
param = param or "" param = param or ""
if not cmd then if not cmd then
core.display_chat_message(core.gettext("-!- Empty command")) core.display_chat_message("-!- " .. core.gettext("Empty command."))
return true return true
end end
@ -35,7 +35,7 @@ core.register_on_sending_chat_message(function(message)
core.display_chat_message(result) core.display_chat_message(result)
end end
else else
core.display_chat_message(core.gettext("-!- Invalid command: ") .. cmd) core.display_chat_message("-!- " .. core.gettext("Invalid command: ") .. cmd)
end end
return true return true

View File

@ -11,12 +11,12 @@ core.register_on_death(function()
if core.settings:get_bool("autorespawn") then if core.settings:get_bool("autorespawn") then
core.send_respawn() core.send_respawn()
else else
core.show_formspec("__builtin__:death", death_formspec) core.show_formspec("bultin:death", death_formspec)
end end
end) end)
core.register_on_formspec_input(function(formname, fields) core.register_on_formspec_input(function(formname, fields)
if formname == "__builtin__:death" then if formname == "bultin:death" then
if fields.btn_ghost_mode then if fields.btn_ghost_mode then
core.display_chat_message("You are in ghost mode. Use .respawn to Respawn.") core.display_chat_message("You are in ghost mode. Use .respawn to Respawn.")
else else

View File

@ -1,5 +1,9 @@
-- Minetest: builtin/common/chatcommands.lua -- Minetest: builtin/common/chatcommands.lua
-- For server-side translations (if INIT == "game")
-- Otherwise, use core.gettext
local S = core.get_translator("__builtin")
core.registered_chatcommands = {} core.registered_chatcommands = {}
function core.register_chatcommand(cmd, def) function core.register_chatcommand(cmd, def)
@ -74,25 +78,12 @@ if INIT == "client" then
end end
end end
local cmd_marker = "/"
local function gettext(...)
return ...
end
local function gettext_replace(text, replace)
return text:gsub("$1", replace)
end
if INIT == "client" then
cmd_marker = "."
gettext = core.gettext
gettext_replace = fgettext_ne
end
local function do_help_cmd(name, param) local function do_help_cmd(name, param)
local function format_help_line(cmd, def) local function format_help_line(cmd, def)
local cmd_marker = "/"
if INIT == "client" then
cmd_marker = "."
end
local msg = core.colorize("#00ffff", cmd_marker .. cmd) local msg = core.colorize("#00ffff", cmd_marker .. cmd)
if def.params and def.params ~= "" then if def.params and def.params ~= "" then
msg = msg .. " " .. def.params msg = msg .. " " .. def.params
@ -110,9 +101,21 @@ local function do_help_cmd(name, param)
end end
end end
table.sort(cmds) table.sort(cmds)
return true, gettext("Available commands: ") .. table.concat(cmds, " ") .. "\n" local msg
.. gettext_replace("Use '$1help <cmd>' to get more information," if INIT == "game" then
.. " or '$1help all' to list everything.", cmd_marker) msg = S("Available commands: @1",
table.concat(cmds, " ")) .. "\n"
.. S("Use '/help <cmd>' to get more "
.. "information, or '/help all' to list "
.. "everything.")
else
msg = core.gettext("Available commands: ")
.. table.concat(cmds, " ") .. "\n"
.. core.gettext("Use '.help <cmd>' to get more "
.. "information, or '.help all' to list "
.. "everything.")
end
return true, msg
elseif param == "all" then elseif param == "all" then
local cmds = {} local cmds = {}
for cmd, def in pairs(core.registered_chatcommands) do for cmd, def in pairs(core.registered_chatcommands) do
@ -121,19 +124,31 @@ local function do_help_cmd(name, param)
end end
end end
table.sort(cmds) table.sort(cmds)
return true, gettext("Available commands:").."\n"..table.concat(cmds, "\n") local msg
if INIT == "game" then
msg = S("Available commands:")
else
msg = core.gettext("Available commands:")
end
return true, msg.."\n"..table.concat(cmds, "\n")
elseif INIT == "game" and param == "privs" then elseif INIT == "game" and param == "privs" then
local privs = {} local privs = {}
for priv, def in pairs(core.registered_privileges) do for priv, def in pairs(core.registered_privileges) do
privs[#privs + 1] = priv .. ": " .. def.description privs[#privs + 1] = priv .. ": " .. def.description
end end
table.sort(privs) table.sort(privs)
return true, "Available privileges:\n"..table.concat(privs, "\n") return true, S("Available privileges:").."\n"..table.concat(privs, "\n")
else else
local cmd = param local cmd = param
local def = core.registered_chatcommands[cmd] local def = core.registered_chatcommands[cmd]
if not def then if not def then
return false, gettext("Command not available: ")..cmd local msg
if INIT == "game" then
msg = S("Command not available: @1", cmd)
else
msg = core.gettext("Command not available: ") .. cmd
end
return false, msg
else else
return true, format_help_line(cmd, def) return true, format_help_line(cmd, def)
end end
@ -142,16 +157,16 @@ end
if INIT == "client" then if INIT == "client" then
core.register_chatcommand("help", { core.register_chatcommand("help", {
params = gettext("[all | <cmd>]"), params = core.gettext("[all | <cmd>]"),
description = gettext("Get help for commands"), description = core.gettext("Get help for commands"),
func = function(param) func = function(param)
return do_help_cmd(nil, param) return do_help_cmd(nil, param)
end, end,
}) })
else else
core.register_chatcommand("help", { core.register_chatcommand("help", {
params = "[all | privs | <cmd>]", params = S("[all | privs | <cmd>]"),
description = "Get help for commands or list privileges", description = S("Get help for commands or list privileges"),
func = do_help_cmd, func = do_help_cmd,
}) })
end end

View File

@ -20,7 +20,8 @@ local LIST_FORMSPEC_DESCRIPTION = [[
button_exit[5,7;3,1;quit;%s] button_exit[5,7;3,1;quit;%s]
]] ]]
local formspec_escape = core.formspec_escape local F = core.formspec_escape
local S = core.get_translator("__builtin")
local check_player_privs = core.check_player_privs local check_player_privs = core.check_player_privs
@ -51,22 +52,23 @@ core.after(0, load_mod_command_tree)
local function build_chatcommands_formspec(name, sel, copy) local function build_chatcommands_formspec(name, sel, copy)
local rows = {} local rows = {}
rows[1] = "#FFF,0,Command,Parameters" rows[1] = "#FFF,0,"..F(S("Command"))..","..F(S("Parameters"))
local description = "For more information, click on any entry in the list.\n" .. local description = S("For more information, click on "
"Double-click to copy the entry to the chat history." .. "any entry in the list.").. "\n" ..
S("Double-click to copy the entry to the chat history.")
for i, data in ipairs(mod_cmds) do for i, data in ipairs(mod_cmds) do
rows[#rows + 1] = COLOR_BLUE .. ",0," .. formspec_escape(data[1]) .. "," rows[#rows + 1] = COLOR_BLUE .. ",0," .. F(data[1]) .. ","
for j, cmds in ipairs(data[2]) do for j, cmds in ipairs(data[2]) do
local has_priv = check_player_privs(name, cmds[2].privs) local has_priv = check_player_privs(name, cmds[2].privs)
rows[#rows + 1] = ("%s,1,%s,%s"):format( rows[#rows + 1] = ("%s,1,%s,%s"):format(
has_priv and COLOR_GREEN or COLOR_GRAY, has_priv and COLOR_GREEN or COLOR_GRAY,
cmds[1], formspec_escape(cmds[2].params)) cmds[1], F(cmds[2].params))
if sel == #rows then if sel == #rows then
description = cmds[2].description description = cmds[2].description
if copy then if copy then
core.chat_send_player(name, ("Command: %s %s"):format( core.chat_send_player(name, S("Command: @1 @2",
core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params)) core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params))
end end
end end
@ -74,9 +76,9 @@ local function build_chatcommands_formspec(name, sel, copy)
end end
return LIST_FORMSPEC_DESCRIPTION:format( return LIST_FORMSPEC_DESCRIPTION:format(
"Available commands: (see also: /help <cmd>)", F(S("Available commands: (see also: /help <cmd>)")),
table.concat(rows, ","), sel or 0, table.concat(rows, ","), sel or 0,
description, "Close" F(description), F(S("Close"))
) )
end end
@ -91,19 +93,19 @@ local function build_privs_formspec(name)
table.sort(privs, function(a, b) return a[1] < b[1] end) table.sort(privs, function(a, b) return a[1] < b[1] end)
local rows = {} local rows = {}
rows[1] = "#FFF,0,Privilege,Description" rows[1] = "#FFF,0,"..F(S("Privilege"))..","..F(S("Description"))
local player_privs = core.get_player_privs(name) local player_privs = core.get_player_privs(name)
for i, data in ipairs(privs) do for i, data in ipairs(privs) do
rows[#rows + 1] = ("%s,0,%s,%s"):format( rows[#rows + 1] = ("%s,0,%s,%s"):format(
player_privs[data[1]] and COLOR_GREEN or COLOR_GRAY, player_privs[data[1]] and COLOR_GREEN or COLOR_GRAY,
data[1], formspec_escape(data[2].description)) data[1], F(data[2].description))
end end
return LIST_FORMSPEC:format( return LIST_FORMSPEC:format(
"Available privileges:", F(S("Available privileges:")),
table.concat(rows, ","), table.concat(rows, ","),
"Close" F(S("Close"))
) )
end end
@ -115,7 +117,7 @@ core.register_on_player_receive_fields(function(player, formname, fields)
return return
end end
local event = minetest.explode_table_event(fields.list) local event = core.explode_table_event(fields.list)
if event.type ~= "INV" then if event.type ~= "INV" then
local name = player:get_player_name() local name = player:get_player_name()
core.show_formspec(name, "__builtin:help_cmds", core.show_formspec(name, "__builtin:help_cmds",

View File

@ -58,26 +58,20 @@ end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
local function get_formspec(self) local function get_formspec(self)
local formspec = "" if self.hidden or (self.parent ~= nil and self.parent.hidden) then
return ""
if not self.hidden and (self.parent == nil or not self.parent.hidden) then
if self.parent == nil then
local tsize = self.tablist[self.last_tab_index].tabsize or
{width=self.width, height=self.height}
formspec = formspec ..
string.format("size[%f,%f,%s]",tsize.width,tsize.height,
dump(self.fixed_size))
end
formspec = formspec .. self:tab_header()
formspec = formspec ..
self.tablist[self.last_tab_index].get_formspec(
self,
self.tablist[self.last_tab_index].name,
self.tablist[self.last_tab_index].tabdata,
self.tablist[self.last_tab_index].tabsize
)
end end
local tab = self.tablist[self.last_tab_index]
local content, prepend = tab.get_formspec(self, tab.name, tab.tabdata, tab.tabsize)
if self.parent == nil and not prepend then
local tsize = tab.tabsize or {width=self.width, height=self.height}
prepend = string.format("size[%f,%f,%s]", tsize.width, tsize.height,
dump(self.fixed_size))
end
local formspec = (prepend or "") .. self:tab_header() .. content
return formspec return formspec
end end
@ -97,14 +91,9 @@ local function handle_buttons(self,fields)
return true return true
end end
if self.tablist[self.last_tab_index].button_handler ~= nil then local tab = self.tablist[self.last_tab_index]
return if tab.button_handler ~= nil then
self.tablist[self.last_tab_index].button_handler( return tab.button_handler(self, fields, tab.name, tab.tabdata)
self,
fields,
self.tablist[self.last_tab_index].name,
self.tablist[self.last_tab_index].tabdata
)
end end
return false return false
@ -122,14 +111,9 @@ local function handle_events(self,event)
return true return true
end end
if self.tablist[self.last_tab_index].evt_handler ~= nil then local tab = self.tablist[self.last_tab_index]
return if tab.evt_handler ~= nil then
self.tablist[self.last_tab_index].evt_handler( return tab.evt_handler(self, event, tab.name, tab.tabdata)
self,
event,
self.tablist[self.last_tab_index].name,
self.tablist[self.last_tab_index].tabdata
)
end end
return false return false

File diff suppressed because it is too large Load Diff

View File

@ -665,7 +665,7 @@ end
-- Item definition defaults -- Item definition defaults
-- --
local default_stack_max = tonumber(minetest.settings:get("default_stack_max")) or 99 local default_stack_max = tonumber(core.settings:get("default_stack_max")) or 99
core.nodedef_default = { core.nodedef_default = {
-- Item properties -- Item properties

View File

@ -42,5 +42,5 @@ core.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool
return -- barely noticeable, so don't even send return -- barely noticeable, so don't even send
end end
player:add_player_velocity(kdir) player:add_velocity(kdir)
end) end)

View File

@ -1,5 +1,7 @@
-- Minetest: builtin/misc.lua -- Minetest: builtin/misc.lua
local S = core.get_translator("__builtin")
-- --
-- Misc. API functions -- Misc. API functions
-- --
@ -42,15 +44,15 @@ end
function core.send_join_message(player_name) function core.send_join_message(player_name)
if not core.is_singleplayer() then if not core.is_singleplayer() then
core.chat_send_all("*** " .. player_name .. " joined the game.") core.chat_send_all("*** " .. S("@1 joined the game.", player_name))
end end
end end
function core.send_leave_message(player_name, timed_out) function core.send_leave_message(player_name, timed_out)
local announcement = "*** " .. player_name .. " left the game." local announcement = "*** " .. S("@1 left the game.", player_name)
if timed_out then if timed_out then
announcement = announcement .. " (timed out)" announcement = "*** " .. S("@1 left the game (timed out).", player_name)
end end
core.chat_send_all(announcement) core.chat_send_all(announcement)
end end

View File

@ -1,5 +1,7 @@
-- Minetest: builtin/privileges.lua -- Minetest: builtin/privileges.lua
local S = core.get_translator("__builtin")
-- --
-- Privileges -- Privileges
-- --
@ -15,7 +17,7 @@ function core.register_privilege(name, param)
def.give_to_admin = def.give_to_singleplayer def.give_to_admin = def.give_to_singleplayer
end end
if def.description == nil then if def.description == nil then
def.description = "(no description)" def.description = S("(no description)")
end end
end end
local def local def
@ -28,69 +30,69 @@ function core.register_privilege(name, param)
core.registered_privileges[name] = def core.registered_privileges[name] = def
end end
core.register_privilege("interact", "Can interact with things and modify the world") core.register_privilege("interact", S("Can interact with things and modify the world"))
core.register_privilege("shout", "Can speak in chat") core.register_privilege("shout", S("Can speak in chat"))
core.register_privilege("basic_privs", "Can modify 'shout' and 'interact' privileges") core.register_privilege("basic_privs", S("Can modify 'shout' and 'interact' privileges"))
core.register_privilege("privs", "Can modify privileges") core.register_privilege("privs", S("Can modify privileges"))
core.register_privilege("teleport", { core.register_privilege("teleport", {
description = "Can teleport self", description = S("Can teleport self"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("bring", { core.register_privilege("bring", {
description = "Can teleport other players", description = S("Can teleport other players"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("settime", { core.register_privilege("settime", {
description = "Can set the time of day using /time", description = S("Can set the time of day using /time"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("server", { core.register_privilege("server", {
description = "Can do server maintenance stuff", description = S("Can do server maintenance stuff"),
give_to_singleplayer = false, give_to_singleplayer = false,
give_to_admin = true, give_to_admin = true,
}) })
core.register_privilege("protection_bypass", { core.register_privilege("protection_bypass", {
description = "Can bypass node protection in the world", description = S("Can bypass node protection in the world"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("ban", { core.register_privilege("ban", {
description = "Can ban and unban players", description = S("Can ban and unban players"),
give_to_singleplayer = false, give_to_singleplayer = false,
give_to_admin = true, give_to_admin = true,
}) })
core.register_privilege("kick", { core.register_privilege("kick", {
description = "Can kick players", description = S("Can kick players"),
give_to_singleplayer = false, give_to_singleplayer = false,
give_to_admin = true, give_to_admin = true,
}) })
core.register_privilege("give", { core.register_privilege("give", {
description = "Can use /give and /giveme", description = S("Can use /give and /giveme"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("password", { core.register_privilege("password", {
description = "Can use /setpassword and /clearpassword", description = S("Can use /setpassword and /clearpassword"),
give_to_singleplayer = false, give_to_singleplayer = false,
give_to_admin = true, give_to_admin = true,
}) })
core.register_privilege("fly", { core.register_privilege("fly", {
description = "Can use fly mode", description = S("Can use fly mode"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("fast", { core.register_privilege("fast", {
description = "Can use fast mode", description = S("Can use fast mode"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("noclip", { core.register_privilege("noclip", {
description = "Can fly through solid nodes using noclip mode", description = S("Can fly through solid nodes using noclip mode"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("rollback", { core.register_privilege("rollback", {
description = "Can use the rollback functionality", description = S("Can use the rollback functionality"),
give_to_singleplayer = false, give_to_singleplayer = false,
}) })
core.register_privilege("debug", { core.register_privilege("debug", {
description = "Allows enabling various debug options that may affect gameplay", description = S("Allows enabling various debug options that may affect gameplay"),
give_to_singleplayer = false, give_to_singleplayer = false,
give_to_admin = true, give_to_admin = true,
}) })

View File

@ -1,5 +1,7 @@
-- Minetest: builtin/misc_register.lua -- Minetest: builtin/misc_register.lua
local S = core.get_translator("__builtin")
-- --
-- Make raw registration functions inaccessible to anyone except this file -- Make raw registration functions inaccessible to anyone except this file
-- --
@ -118,10 +120,6 @@ function core.register_item(name, itemdef)
end end
itemdef.name = name itemdef.name = name
-- default short_description to first line of description
itemdef.short_description = itemdef.short_description or
(itemdef.description or ""):gsub("\n.*","")
-- Apply defaults and add to registered_* table -- Apply defaults and add to registered_* table
if itemdef.type == "node" then if itemdef.type == "node" then
-- Use the nodebox as selection box if it's not set manually -- Use the nodebox as selection box if it's not set manually
@ -330,7 +328,7 @@ end
core.register_item(":unknown", { core.register_item(":unknown", {
type = "none", type = "none",
description = "Unknown Item", description = S("Unknown Item"),
inventory_image = "unknown_item.png", inventory_image = "unknown_item.png",
on_place = core.item_place, on_place = core.item_place,
on_secondary_use = core.item_secondary_use, on_secondary_use = core.item_secondary_use,
@ -340,7 +338,7 @@ core.register_item(":unknown", {
}) })
core.register_node(":air", { core.register_node(":air", {
description = "Air", description = S("Air"),
inventory_image = "air.png", inventory_image = "air.png",
wield_image = "air.png", wield_image = "air.png",
drawtype = "airlike", drawtype = "airlike",
@ -357,7 +355,7 @@ core.register_node(":air", {
}) })
core.register_node(":ignore", { core.register_node(":ignore", {
description = "Ignore", description = S("Ignore"),
inventory_image = "ignore.png", inventory_image = "ignore.png",
wield_image = "ignore.png", wield_image = "ignore.png",
drawtype = "airlike", drawtype = "airlike",
@ -370,11 +368,12 @@ core.register_node(":ignore", {
air_equivalent = true, air_equivalent = true,
drop = "", drop = "",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
node_placement_prediction = "",
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
core.chat_send_player( core.chat_send_player(
placer:get_player_name(), placer:get_player_name(),
core.colorize("#FF0000", core.colorize("#FF0000",
"You can't place 'ignore' nodes!")) S("You can't place 'ignore' nodes!")))
return "" return ""
end, end,
}) })

View File

@ -84,8 +84,8 @@ local function update_builtin_statbars(player)
end end
if hud.id_breathbar and (not show_breathbar or breath == breath_max) then if hud.id_breathbar and (not show_breathbar or breath == breath_max) then
minetest.after(1, function(player_name, breath_bar) core.after(1, function(player_name, breath_bar)
local player = minetest.get_player_by_name(player_name) local player = core.get_player_by_name(player_name)
if player then if player then
player:hud_remove(breath_bar) player:hud_remove(breath_bar)
end end

View File

@ -38,9 +38,20 @@ if INIT == "game" then
dofile(gamepath .. "init.lua") dofile(gamepath .. "init.lua")
elseif INIT == "mainmenu" then elseif INIT == "mainmenu" then
local mm_script = core.settings:get("main_menu_script") local mm_script = core.settings:get("main_menu_script")
local custom_loaded = false
if mm_script and mm_script ~= "" then if mm_script and mm_script ~= "" then
dofile(mm_script) local testfile = io.open(mm_script, "r")
else if testfile then
testfile:close()
dofile(mm_script)
custom_loaded = true
core.log("info", "Loaded custom main menu script: "..mm_script)
else
core.log("error", "Failed to load custom main menu script: "..mm_script)
core.log("info", "Falling back to default main menu script")
end
end
if not custom_loaded then
dofile(core.get_mainmenu_path() .. DIR_DELIM .. "init.lua") dofile(core.get_mainmenu_path() .. DIR_DELIM .. "init.lua")
end end
elseif INIT == "async" then elseif INIT == "async" then

View File

@ -0,0 +1,225 @@
# textdomain: __builtin
Empty command.=Leerer Befehl.
Invalid command: @1=Ungültiger Befehl: @1
Invalid command usage.=Ungültige Befehlsverwendung.
You don't have permission to run this command (missing privileges: @1).=Sie haben keine Erlaubnis, diesen Befehl auszuführen (fehlende Privilegien: @1).
Unable to get position of player @1.=Konnte Position vom Spieler @1 nicht ermitteln.
Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)=Ungültiges Gebietsformat. Erwartet: (x1,y1,z1) (x2,y2,z2)
<action>=<Aktion>
Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')=Chataktion zeigen (z.B. wird „/me isst Pizza“ zu „<Spielername> isst Pizza“)
Show the name of the server owner=Den Namen des Servereigentümers zeigen
The administrator of this server is @1.=Der Administrator dieses Servers ist @1.
There's no administrator named in the config file.=In der Konfigurationsdatei wurde kein Administrator angegeben.
[<name>]=[<Name>]
Show privileges of yourself or another player=Ihre eigenen Privilegien oder die eines anderen Spielers anzeigen
Player @1 does not exist.=Spieler @1 existiert nicht.
Privileges of @1: @2=Privilegien von @1: @2
<privilege>=<Privileg>
Return list of all online players with privilege=Liste aller Spieler mit einem Privileg ausgeben
Invalid parameters (see /help haspriv).=Ungültige Parameter (siehe „/help haspriv“).
Unknown privilege!=Unbekanntes Privileg!
Players online with the "@1" privilege: @2=Derzeit online spielende Spieler mit dem „@1“-Privileg: @2
Your privileges are insufficient.=Ihre Privilegien sind unzureichend.
Unknown privilege: @1=Unbekanntes Privileg: @1
@1 granted you privileges: @2=@1 gewährte Ihnen Privilegien: @2
<name> (<privilege> | all)=<Name> (<Privileg> | all)
Give privileges to player=Privileg an Spieler vergeben
Invalid parameters (see /help grant).=Ungültige Parameter (siehe „/help grant“).
<privilege> | all=<Privileg> | all
Grant privileges to yourself=Privilegien an Ihnen selbst vergeben
Invalid parameters (see /help grantme).=Ungültige Parameter (siehe „/help grantme“).
@1 revoked privileges from you: @2=@1 entfernte Privilegien von Ihnen: @2
Remove privileges from player=Privilegien von Spieler entfernen
Invalid parameters (see /help revoke).=Ungültige Parameter (siehe „/help revoke“).
Revoke privileges from yourself=Privilegien von Ihnen selbst entfernen
Invalid parameters (see /help revokeme).=Ungültige Parameter (siehe „/help revokeme“).
<name> <password>=<Name> <Passwort>
Set player's password=Passwort von Spieler setzen
Name field required.=Namensfeld benötigt.
Your password was cleared by @1.=Ihr Passwort wurde von @1 geleert.
Password of player "@1" cleared.=Passwort von Spieler „@1“ geleert.
Your password was set by @1.=Ihr Passwort wurde von @1 gesetzt.
Password of player "@1" set.=Passwort von Spieler „@1“ gesetzt.
<name>=<Name>
Set empty password for a player=Leeres Passwort für einen Spieler setzen
Reload authentication data=Authentifizierungsdaten erneut laden
Done.=Fertig.
Failed.=Fehlgeschlagen.
Remove a player's data=Daten eines Spielers löschen
Player "@1" removed.=Spieler „@1“ gelöscht.
No such player "@1" to remove.=Es gibt keinen Spieler „@1“, der gelöscht werden könnte.
Player "@1" is connected, cannot remove.=Spieler „@1“ ist verbunden, er kann nicht gelöscht werden.
Unhandled remove_player return code @1.=Nicht berücksichtigter remove_player-Rückgabewert @1.
Cannot teleport out of map bounds!=Eine Teleportation außerhalb der Kartengrenzen ist nicht möglich!
Cannot get player with name @1.=Spieler mit Namen @1 kann nicht gefunden werden.
Cannot teleport, @1 is attached to an object!=Teleportation nicht möglich, @1 ist an einem Objekt befestigt!
Teleporting @1 to @2.=Teleportation von @1 nach @2
One does not teleport to oneself.=Man teleportiert sich doch nicht zu sich selbst.
Cannot get teleportee with name @1.=Der zu teleportierende Spieler mit Namen @1 kann nicht gefunden werden.
Cannot get target player with name @1.=Zielspieler mit Namen @1 kann nicht gefunden werden.
Teleporting @1 to @2 at @3.=Teleportation von @1 zu @2 bei @3
<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>=<X>,<Y>,<Z> | <zu_Name> | <Name> <X>,<Y>,<Z> | <Name> <zu_Name>
Teleport to position or player=Zu Position oder Spieler teleportieren
You don't have permission to teleport other players (missing privilege: @1).=Sie haben nicht die Erlaubnis, andere Spieler zu teleportieren (fehlendes Privileg: @1).
([-n] <name> <value>) | <name>=([-n] <Name> <Wert>) | <Name>
Set or read server configuration setting=Serverkonfigurationseinstellung setzen oder lesen
Failed. Use '/set -n <name> <value>' to create a new setting.=Fehlgeschlagen. Benutzen Sie „/set -n <Name> <Wert>“, um eine neue Einstellung zu erstellen.
@1 @= @2=@1 @= @2
<not set>=<nicht gesetzt>
Invalid parameters (see /help set).=Ungültige Parameter (siehe „/help set“).
Finished emerging @1 blocks in @2ms.=Fertig mit Erzeugung von @1 Blöcken in @2 ms.
emergeblocks update: @1/@2 blocks emerged (@3%)=emergeblocks-Update: @1/@2 Kartenblöcke geladen (@3%)
(here [<radius>]) | (<pos1> <pos2>)=(here [<Radius>]) | (<Pos1> <Pos2>)
Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Lade (oder, wenn nicht existent, generiere) Kartenblöcke im Gebiet zwischen Pos1 und Pos2 (<Pos1> und <Pos2> müssen in Klammern stehen)
Started emerge of area ranging from @1 to @2.=Start des Ladevorgangs des Gebiets zwischen @1 und @2.
Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Kartenblöcke innerhalb des Gebiets zwischen Pos1 und Pos2 löschen (<Pos1> und <Pos2> müssen in Klammern stehen)
Successfully cleared area ranging from @1 to @2.=Gebiet zwischen @1 und @2 erfolgreich geleert.
Failed to clear one or more blocks in area.=Fehlgeschlagen: Ein oder mehrere Kartenblöcke im Gebiet konnten nicht geleert werden.
Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)=Setzt das Licht im Gebiet zwischen Pos1 und Pos2 zurück (<Pos1> und <Pos2> müssen in Klammern stehen)
Successfully reset light in the area ranging from @1 to @2.=Das Licht im Gebiet zwischen @1 und @2 wurde erfolgreich zurückgesetzt.
Failed to load one or more blocks in area.=Fehlgeschlagen: Ein oder mehrere Kartenblöcke im Gebiet konnten nicht geladen werden.
List mods installed on the server=Installierte Mods auf dem Server auflisten
Cannot give an empty item.=Ein leerer Gegenstand kann nicht gegeben werden.
Cannot give an unknown item.=Ein unbekannter Gegenstand kann nicht gegeben werden.
Giving 'ignore' is not allowed.=„ignore“ darf nicht gegeben werden.
@1 is not a known player.=@1 ist kein bekannter Spieler.
@1 partially added to inventory.=@1 teilweise ins Inventar eingefügt.
@1 could not be added to inventory.=@1 konnte nicht ins Inventar eingefügt werden.
@1 added to inventory.=@1 zum Inventar hinzugefügt.
@1 partially added to inventory of @2.=@1 teilweise ins Inventar von @2 eingefügt.
@1 could not be added to inventory of @2.=@1 konnte nicht ins Inventar von @2 eingefügt werden.
@1 added to inventory of @2.=@1 ins Inventar von @2 eingefügt.
<name> <ItemString> [<count> [<wear>]]=<Name> <ItemString> [<Anzahl> [<Abnutzung>]]
Give item to player=Gegenstand an Spieler geben
Name and ItemString required.=Name und ItemString benötigt.
<ItemString> [<count> [<wear>]]=<ItemString> [<Anzahl> [<Abnutzung>]]
Give item to yourself=Gegenstand Ihnen selbst geben
ItemString required.=ItemString benötigt.
<EntityName> [<X>,<Y>,<Z>]=<EntityName> [<X>,<Y>,<Z>]
Spawn entity at given (or your) position=Entity an angegebener (oder Ihrer eigenen) Position spawnen
EntityName required.=EntityName benötigt.
Unable to spawn entity, player is nil.=Entity konnte nicht gespawnt werden, Spieler ist nil.
Cannot spawn an unknown entity.=Ein unbekanntes Entity kann nicht gespawnt werden.
Invalid parameters (@1).=Ungültige Parameter (@1).
@1 spawned.=@1 gespawnt.
@1 failed to spawn.=@1 konnte nicht gespawnt werden.
Destroy item in hand=Gegenstand in der Hand zerstören
Unable to pulverize, no player.=Konnte nicht pulverisieren, kein Spieler.
Unable to pulverize, no item in hand.=Konnte nicht pulverisieren, kein Gegenstand in der Hand.
An item was pulverized.=Ein Gegenstand wurde pulverisiert.
[<range>] [<seconds>] [<limit>]=[<Reichweite>] [<Sekunden>] [<Limit>]
Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit=Überprüfen, wer als letztes einen Node oder einen Node in der Nähe innerhalb der in <Sekunden> angegebenen Zeitspanne angefasst hat. Standard: Reichweite @= 0, Sekunden @= 86400 @= 24h, Limit @= 5. <Sekunden> auf „inf“ setzen, um Zeitlimit zu deaktivieren.
Rollback functions are disabled.=Rollback-Funktionen sind deaktiviert.
That limit is too high!=Dieses Limit ist zu hoch!
Checking @1 ...=Überprüfe @1 ...
Nobody has touched the specified location in @1 seconds.=Niemand hat die angegebene Position seit @1 Sekunden angefasst.
@1 @2 @3 -> @4 @5 seconds ago.=@1 @2 @3 -> @4 vor @5 Sekunden.
Punch a node (range@=@1, seconds@=@2, limit@=@3).=Hauen Sie einen Node (Reichweite@=@1, Sekunden@=@2, Limit@=@3).
(<name> [<seconds>]) | (:<actor> [<seconds>])=(<Name> [<Sekunden>]) | (:<Akteur> [<Sekunden>])
Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit=Aktionen eines Spielers zurückrollen. Standard für <Sekunden> ist 60. <Sekunden> auf „inf“ setzen, um Zeitlimit zu deaktivieren
Invalid parameters. See /help rollback and /help rollback_check.=Ungültige Parameter. Siehe /help rollback und /help rollback_check.
Reverting actions of player '@1' since @2 seconds.=Die Aktionen des Spielers „@1“ seit @2 Sekunden werden rückgängig gemacht.
Reverting actions of @1 since @2 seconds.=Die Aktionen von @1 seit @2 Sekunden werden rückgängig gemacht.
(log is too long to show)=(Protokoll ist zu lang für die Anzeige)
Reverting actions succeeded.=Die Aktionen wurden erfolgreich rückgängig gemacht.
Reverting actions FAILED.=FEHLGESCHLAGEN: Die Aktionen konnten nicht rückgängig gemacht werden.
Show server status=Serverstatus anzeigen
This command was disabled by a mod or game.=Dieser Befehl wurde von einer Mod oder einem Spiel deaktiviert.
[<0..23>:<0..59> | <0..24000>]=[<0..23>:<0..59> | <0..24000>]
Show or set time of day=Tageszeit anzeigen oder setzen
Current time is @1:@2.=Es ist jetzt @1:@2 Uhr.
You don't have permission to run this command (missing privilege: @1).=Sie haben nicht die Erlaubnis, diesen Befehl auszuführen (fehlendes Privileg: @1).
Invalid time.=Ungültige Zeit.
Time of day changed.=Tageszeit geändert.
Invalid hour (must be between 0 and 23 inclusive).=Ungültige Stunde (muss zwischen 0 und 23 inklusive liegen).
Invalid minute (must be between 0 and 59 inclusive).=Ungültige Minute (muss zwischen 0 und 59 inklusive liegen).
Show day count since world creation=Anzahl Tage seit der Erschaffung der Welt anzeigen
Current day is @1.=Aktueller Tag ist @1.
[<delay_in_seconds> | -1] [reconnect] [<message>]=[<Verzögerung_in_Sekunden> | -1] [reconnect] [<Nachricht>]
Shutdown server (-1 cancels a delayed shutdown)=Server herunterfahren (-1 bricht einen verzögerten Abschaltvorgang ab)
Server shutting down (operator request).=Server wird heruntergefahren (Betreiberanfrage).
Ban the IP of a player or show the ban list=Die IP eines Spielers verbannen oder die Bannliste anzeigen
The ban list is empty.=Die Bannliste ist leer.
Ban list: @1=Bannliste: @1
Player is not online.=Spieler ist nicht online.
Failed to ban player.=Konnte Spieler nicht verbannen.
Banned @1.=@1 verbannt.
<name> | <IP_address>=<Name> | <IP_Adresse>
Remove IP ban belonging to a player/IP=Einen IP-Bann auf einen Spieler zurücknehmen
Failed to unban player/IP.=Konnte Bann auf Spieler/IP nicht zurücknehmen.
Unbanned @1.=Bann auf @1 zurückgenommen.
<name> [<reason>]=<Name> [<Grund>]
Kick a player=Spieler hinauswerfen
Failed to kick player @1.=Spieler @1 konnte nicht hinausgeworfen werden.
Kicked @1.=@1 hinausgeworfen.
[full | quick]=[full | quick]
Clear all objects in world=Alle Objekte in der Welt löschen
Invalid usage, see /help clearobjects.=Ungültige Verwendung, siehe /help clearobjects.
Clearing all objects. This may take a long time. You may experience a timeout. (by @1)=Lösche alle Objekte. Dies kann eine lange Zeit dauern. Eine Netzwerkzeitüberschreitung könnte für Sie auftreten. (von @1)
Objects cleared.=Objekte gelöscht.
Cleared all objects.=Alle Objekte gelöscht.
<name> <message>=<Name> <Nachricht>
Send a direct message to a player=Eine Direktnachricht an einen Spieler senden
Invalid usage, see /help msg.=Ungültige Verwendung, siehe /help msg.
The player @1 is not online.=Der Spieler @1 ist nicht online.
DM from @1: @2=DN von @1: @2
Message sent.=Nachricht gesendet.
Get the last login time of a player or yourself=Den letzten Loginzeitpunkt eines Spielers oder Ihren eigenen anfragen
@1's last login time was @2.=Letzter Loginzeitpunkt von @1 war @2.
@1's last login time is unknown.=Letzter Loginzeitpunkt von @1 ist unbekannt.
Clear the inventory of yourself or another player=Das Inventar von Ihnen oder einem anderen Spieler leeren
You don't have permission to clear another player's inventory (missing privilege: @1).=Sie haben nicht die Erlaubnis, das Inventar eines anderen Spielers zu leeren (fehlendes Privileg: @1).
@1 cleared your inventory.=@1 hat Ihr Inventar geleert.
Cleared @1's inventory.=Inventar von @1 geleert.
Player must be online to clear inventory!=Spieler muss online sein, um das Inventar leeren zu können!
Players can't be killed, damage has been disabled.=Spieler können nicht getötet werden, Schaden ist deaktiviert.
Player @1 is not online.=Spieler @1 ist nicht online.
You are already dead.=Sie sind schon tot.
@1 is already dead.=@1 ist bereits tot.
@1 has been killed.=@1 wurde getötet.
Kill player or yourself=Einen Spieler oder Sie selbst töten
Available commands: @1=Verfügbare Befehle: @1
Use '/help <cmd>' to get more information, or '/help all' to list everything.=„/help <Befehl>“ benutzen, um mehr Informationen zu erhalten, oder „/help all“, um alles aufzulisten.
Available commands:=Verfügbare Befehle:
Command not available: @1=Befehl nicht verfügbar: @1
[all | privs | <cmd>]=[all | privs | <Befehl>]
Get help for commands or list privileges=Hilfe für Befehle erhalten oder Privilegien auflisten
Available privileges:=Verfügbare Privilegien:
Command=Befehl
Parameters=Parameter
For more information, click on any entry in the list.=Für mehr Informationen klicken Sie auf einen beliebigen Eintrag in der Liste.
Double-click to copy the entry to the chat history.=Doppelklicken, um den Eintrag in die Chathistorie einzufügen.
Command: @1 @2=Befehl: @1 @2
Available commands: (see also: /help <cmd>)=Verfügbare Befehle: (siehe auch: /help <Befehl>)
Close=Schließen
Privilege=Privileg
Description=Beschreibung
print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset=print [<Filter>] | dump [<Filter>] | save [<Format> [<Filter>]]
Handle the profiler and profiling data=Den Profiler und Profilingdaten verwalten
Statistics written to action log.=Statistiken zum Aktionsprotokoll geschrieben.
Statistics were reset.=Statistiken wurden zurückgesetzt.
Usage: @1=Verwendung: @1
Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Format kann entweder „txt“, „csv“, „lua“, „json“ oder „json_pretty“ sein (die Struktur kann sich in Zukunft ändern).
(no description)=(keine Beschreibung)
Can interact with things and modify the world=Kann mit Dingen interagieren und die Welt verändern
Can speak in chat=Kann im Chat sprechen
Can modify 'shout' and 'interact' privileges=Kann die „shout“- und „interact“-Privilegien anpassen
Can modify privileges=Kann Privilegien anpassen
Can teleport self=Kann sich selbst teleportieren
Can teleport other players=Kann andere Spieler teleportieren
Can set the time of day using /time=Kann die Tageszeit mit /time setzen
Can do server maintenance stuff=Kann Serverwartungsdinge machen
Can bypass node protection in the world=Kann den Schutz auf Blöcken in der Welt umgehen
Can ban and unban players=Kann Spieler verbannen und entbannen
Can kick players=Kann Spieler hinauswerfen
Can use /give and /giveme=Kann /give und /giveme benutzen
Can use /setpassword and /clearpassword=Kann /setpassword und /clearpassword benutzen
Can use fly mode=Kann den Flugmodus benutzen
Can use fast mode=Kann den Schnellmodus benutzen
Can fly through solid nodes using noclip mode=Kann durch feste Blöcke mit dem Geistmodus fliegen
Can use the rollback functionality=Kann die Rollback-Funktionalität benutzen
Allows enabling various debug options that may affect gameplay=Erlaubt die Aktivierung diverser Debugoptionen, die das Spielgeschehen beeinflussen könnten
Unknown Item=Unbekannter Gegenstand
Air=Luft
Ignore=Ignorieren
You can't place 'ignore' nodes!=Sie können keine „ignore“-Blöcke platzieren!

View File

@ -0,0 +1,224 @@
# textdomain: __builtin
Empty command.=Comando vuoto.
Invalid command: @1=Comando non valido: @1
Invalid command usage.=Utilizzo del comando non valido.
You don't have permission to run this command (missing privileges: @1).=Non hai il permesso di eseguire questo comando (privilegi mancanti: @1).
Unable to get position of player @1.=Impossibile ottenere la posizione del giocatore @1.
Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)=Formato dell'area non corretto. Richiesto: (x1,y1,z1) (x2,y2,z2)
<action>=<azione>
Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')=Mostra un'azione in chat (es. `/me ordina una pizza` mostra `<nome giocatore> ordina una pizza`)
Show the name of the server owner=Mostra il nome del proprietario del server
The administrator of this server is @1.=L'amministratore di questo server è @1.
There's no administrator named in the config file.=Non c'è nessun amministratore nel file di configurazione.
[<name>]=[<nome>]
Show privileges of yourself or another player=Mostra i privilegi propri o di un altro giocatore
Player @1 does not exist.=Il giocatore @1 non esiste.
Privileges of @1: @2=Privilegi di @1: @2
<privilege>=<privilegio>
Return list of all online players with privilege=Ritorna una lista di tutti i giocatori connessi col tale privilegio
Invalid parameters (see /help haspriv).=Parametri non validi (vedi /help haspriv).
Unknown privilege!=Privilegio sconosciuto!
Players online with the "@1" privilege: @2=Giocatori connessi con il privilegio "@1": @2
Your privileges are insufficient.=I tuoi privilegi sono insufficienti.
Unknown privilege: @1=Privilegio sconosciuto: @1
@1 granted you privileges: @2=@1 ti ha assegnato i seguenti privilegi: @2
<name> (<privilege> | all)=<nome> (<privilegio> | all)
Give privileges to player=Dà privilegi al giocatore
Invalid parameters (see /help grant).=Parametri non validi (vedi /help grant).
<privilege> | all=<privilegio> | all
Grant privileges to yourself=Assegna dei privilegi a te stessǝ
Invalid parameters (see /help grantme).=Parametri non validi (vedi /help grantme).
@1 revoked privileges from you: @2=@1 ti ha revocato i seguenti privilegi: @2
Remove privileges from player=Rimuove privilegi dal giocatore
Invalid parameters (see /help revoke).=Parametri non validi (vedi /help revoke).
Revoke privileges from yourself=Revoca privilegi a te stessǝ
Invalid parameters (see /help revokeme).=Parametri non validi (vedi /help revokeme).
<name> <password>=<nome> <password>
Set player's password=Imposta la password del giocatore
Name field required.=Campo "nome" richiesto.
Your password was cleared by @1.=La tua password è stata resettata da @1.
Password of player "@1" cleared.=Password del giocatore "@1" resettata.
Your password was set by @1.=La tua password è stata impostata da @1.
Password of player "@1" set.=Password del giocatore "@1" impostata.
<name>=<nome>
Set empty password for a player=Imposta una password vuota a un giocatore
Reload authentication data=Ricarica i dati d'autenticazione
Done.=Fatto.
Failed.=Errore.
Remove a player's data=Rimuove i dati di un giocatore
Player "@1" removed.=Giocatore "@1" rimosso.
No such player "@1" to remove.=Non è presente nessun giocatore "@1" da rimuovere.
Player "@1" is connected, cannot remove.=Il giocatore "@1" è connesso, non può essere rimosso.
Unhandled remove_player return code @1.=Codice ritornato da remove_player non gestito (@1).
Cannot teleport out of map bounds!=Non ci si può teletrasportare fuori dai limiti della mappa!
Cannot get player with name @1.=Impossibile trovare il giocatore chiamato @1.
Cannot teleport, @1 is attached to an object!=Impossibile teletrasportare, @1 è attaccato a un oggetto!
Teleporting @1 to @2.=Teletrasportando @1 da @2.
One does not teleport to oneself.=Non ci si può teletrasportare su se stessi.
Cannot get teleportee with name @1.=Impossibile trovare il giocatore chiamato @1 per il teletrasporto
Cannot get target player with name @1.=Impossibile trovare il giocatore chiamato @1 per il teletrasporto
Teleporting @1 to @2 at @3.=Teletrasportando @1 da @2 a @3
<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>=<X>,<Y>,<Z> | <da_nome> | <nome> <X>,<Y>,<Z> | <nome> <da_nome>
Teleport to position or player=Teletrasporta a una posizione o da un giocatore
You don't have permission to teleport other players (missing privilege: @1).=Non hai il permesso di teletrasportare altri giocatori (privilegio mancante: @1).
([-n] <name> <value>) | <name>=([-n] <nome> <valore>) | <nome>
Set or read server configuration setting=Imposta o ottieni le configurazioni del server
Failed. Use '/set -n <name> <value>' to create a new setting.=Errore. Usa 'set -n <nome> <valore>' per creare una nuova impostazione
@1 @= @2=@1 @= @2
<not set>=<non impostato>
Invalid parameters (see /help set).=Parametri non validi (vedi /help set).
Finished emerging @1 blocks in @2ms.=Finito di emergere @1 blocchi in @2ms
emergeblocks update: @1/@2 blocks emerged (@3%)=aggiornamento emergeblocks: @1/@2 blocchi emersi (@3%)
(here [<radius>]) | (<pos1> <pos2>)=(here [<raggio>]) | (<pos1> <pos2>)
Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Carica (o, se non esiste, genera) blocchi mappa contenuti nell'area tra pos1 e pos2 (<pos1> e <pos2> vanno tra parentesi)
Started emerge of area ranging from @1 to @2.=Iniziata emersione dell'area tra @1 e @2.
Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Cancella i blocchi mappa contenuti nell'area tra pos1 e pos2 (<pos1> e <pos2> vanno tra parentesi)
Successfully cleared area ranging from @1 to @2.=Area tra @1 e @2 ripulita con successo.
Failed to clear one or more blocks in area.=Errore nel ripulire uno o più blocchi mappa nell'area
Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)=Reimposta l'illuminazione nell'area tra pos1 e po2 (<pos1> e <pos2> vanno tra parentesi)
Successfully reset light in the area ranging from @1 to @2.=Luce nell'area tra @1 e @2 reimpostata con successo.
Failed to load one or more blocks in area.=Errore nel caricare uno o più blocchi mappa nell'area.
List mods installed on the server=Elenca le mod installate nel server
Cannot give an empty item.=Impossibile dare un oggetto vuoto.
Cannot give an unknown item.=Impossibile dare un oggetto sconosciuto.
Giving 'ignore' is not allowed.=Non è permesso dare 'ignore'.
@1 is not a known player.=@1 non è un giocatore conosciuto.
@1 partially added to inventory.=@1 parzialmente aggiunto all'inventario.
@1 could not be added to inventory.=@1 non può essere aggiunto all'inventario.
@1 added to inventory.=@1 aggiunto all'inventario.
@1 partially added to inventory of @2.=@1 parzialmente aggiunto all'inventario di @2.
@1 could not be added to inventory of @2.=Non è stato possibile aggiungere @1 all'inventario di @2.
@1 added to inventory of @2.=@1 aggiunto all'inventario di @2.
<name> <ItemString> [<count> [<wear>]]=<nome> <NomeOggetto> [<quantità> [<usura>]]
Give item to player=Dà oggetti ai giocatori
Name and ItemString required.=Richiesti nome e NomeOggetto.
<ItemString> [<count> [<wear>]]=<NomeOggetto> [<quantità> [<usura>]]
Give item to yourself=Dà oggetti a te stessǝ
ItemString required.=Richiesto NomeOggetto.
<EntityName> [<X>,<Y>,<Z>]=<NomeEntità> [<X>,<Y>,<Z>]
Spawn entity at given (or your) position=Genera un'entità alla data coordinata (o la tua)
EntityName required.=Richiesto NomeEntità
Unable to spawn entity, player is nil.=Impossibile generare l'entità, il giocatore è nil.
Cannot spawn an unknown entity.=Impossibile generare un'entità sconosciuta.
Invalid parameters (@1).=Parametri non validi (@1).
@1 spawned.=Generata entità @1.
@1 failed to spawn.=Errore nel generare @1
Destroy item in hand=Distrugge l'oggetto in mano
Unable to pulverize, no player.=Impossibile polverizzare, nessun giocatore.
Unable to pulverize, no item in hand.=Impossibile polverizzare, nessun oggetto in mano.
An item was pulverized.=Un oggetto è stato polverizzato.
[<range>] [<seconds>] [<limit>]=[<raggio>] [<secondi>] [<limite>]
Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit=Controlla chi è l'ultimo giocatore che ha toccato un nodo o un nodo nelle sue vicinanze, negli ultimi secondi indicati. Di base: raggio @= 0, secondi @= 86400 @= 24h, limite @= 5.
Rollback functions are disabled.=Le funzioni di rollback sono disabilitate.
That limit is too high!=Il limite è troppo alto!
Checking @1 ...=Controllando @1 ...
Nobody has touched the specified location in @1 seconds.=Nessuno ha toccato il punto specificato negli ultimi @1 secondi.
@1 @2 @3 -> @4 @5 seconds ago.=@1 @2 @3 -> @4 @5 secondi fa.
Punch a node (range@=@1, seconds@=@2, limit@=@3).=Colpisce un nodo (raggio@=@1, secondi@=@2, limite@=@3)
(<name> [<seconds>]) | (:<actor> [<seconds>])=(<nome> [<secondi>]) | (:<attore> [<secondi>])
Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit=Riavvolge le azioni di un giocatore. Di base, <secondi> è 60. Imposta <secondi> a inf per nessun limite di tempo
Invalid parameters. See /help rollback and /help rollback_check.=Parametri non validi. Vedi /help rollback e /help rollback_check.
Reverting actions of player '@1' since @2 seconds.=Riavvolge le azioni del giocatore '@1' avvenute negli ultimi @2 secondi.
Reverting actions of @1 since @2 seconds.=Riavvolge le azioni di @1 avvenute negli ultimi @2 secondi.
(log is too long to show)=(il log è troppo lungo per essere mostrato)
Reverting actions succeeded.=Riavvolgimento azioni avvenuto con successo.
Reverting actions FAILED.=Errore nel riavvolgere le azioni.
Show server status=Mostra lo stato del server
This command was disabled by a mod or game.=Questo comando è stato disabilitato da una mod o dal gioco.
[<0..23>:<0..59> | <0..24000>]=[<0..23>:<0..59> | <0..24000>]
Show or set time of day=Mostra o imposta l'orario della giornata
Current time is @1:@2.=Orario corrente: @1:@2.
You don't have permission to run this command (missing privilege: @1).=Non hai il permesso di eseguire questo comando (privilegio mancante: @1)
Invalid time.=Orario non valido.
Time of day changed.=Orario della giornata cambiato.
Invalid hour (must be between 0 and 23 inclusive).=Ora non valida (deve essere tra 0 e 23 inclusi)
Invalid minute (must be between 0 and 59 inclusive).=Minuto non valido (deve essere tra 0 e 59 inclusi)
Show day count since world creation=Mostra il conteggio dei giorni da quando il mondo è stato creato
Current day is @1.=Giorno attuale: @1.
[<delay_in_seconds> | -1] [reconnect] [<message>]=[<ritardo_in_secondi> | -1] [reconnect] [<messaggio>]
Shutdown server (-1 cancels a delayed shutdown)=Arresta il server (-1 annulla un arresto programmato)
Server shutting down (operator request).=Arresto del server in corso (per richiesta dell'operatore)
Ban the IP of a player or show the ban list=Bandisce l'IP del giocatore o mostra la lista di quelli banditi
The ban list is empty.=La lista banditi è vuota.
Ban list: @1=Lista banditi: @1
Player is not online.=Il giocatore non è connesso.
Failed to ban player.=Errore nel bandire il giocatore.
Banned @1.=@1 banditǝ.
<name> | <IP_address>=<nome> | <indirizzo_IP>
Remove IP ban belonging to a player/IP=Perdona l'IP appartenente a un giocatore/IP
Failed to unban player/IP.=Errore nel perdonare il giocatore/IP
Unbanned @1.=@1 perdonatǝ
<name> [<reason>]=<nome> [<ragione>]
Kick a player=Caccia un giocatore
Failed to kick player @1.=Errore nel cacciare il giocatore @1.
Kicked @1.=@1 cacciatǝ.
[full | quick]=[full | quick]
Clear all objects in world=Elimina tutti gli oggetti/entità nel mondo
Invalid usage, see /help clearobjects.=Uso incorretto, vedi /help clearobjects.
Clearing all objects. This may take a long time. You may experience a timeout. (by @1)=Eliminando tutti gli oggetti/entità. Questo potrebbe richiedere molto tempo e farti eventualmente crashare. (di @1)
Cleared all objects.=Tutti gli oggetti sono stati eliminati.
<name> <message>=<nome> <messaggio>
Send a direct message to a player=Invia un messaggio privato al giocatore
Invalid usage, see /help msg.=Uso incorretto, vedi /help msg
The player @1 is not online.=Il giocatore @1 non è connesso.
DM from @1: @2=Messaggio privato da @1: @2
Message sent.=Messaggio inviato.
Get the last login time of a player or yourself=Ritorna l'ultimo accesso di un giocatore o di te stessǝ
@1's last login time was @2.=L'ultimo accesso di @1 è avvenuto il @2
@1's last login time is unknown.=L'ultimo accesso di @1 non è conosciuto
Clear the inventory of yourself or another player=Svuota l'inventario tuo o di un altro giocatore
You don't have permission to clear another player's inventory (missing privilege: @1).=Non hai il permesso di svuotare l'inventario di un altro giocatore (privilegio mancante: @1).
@1 cleared your inventory.=@1 ha svuotato il tuo inventario.
Cleared @1's inventory.=L'inventario di @1 è stato svuotato.
Player must be online to clear inventory!=Il giocatore deve essere connesso per svuotarne l'inventario!
Players can't be killed, damage has been disabled.=I giocatori non possono essere uccisi, il danno è disabilitato.
Player @1 is not online.=Il giocatore @1 non è connesso.
You are already dead.=Sei già mortǝ.
@1 is already dead.=@1 è già mortǝ.
@1 has been killed.=@1 è stato uccisǝ.
Kill player or yourself=Uccide un giocatore o te stessǝ
Available commands: @1=Comandi disponibili: @1
Use '/help <cmd>' to get more information, or '/help all' to list everything.=Usa '/help <comando>' per ottenere più informazioni, o '/help all' per elencare tutti i comandi.
Available commands:=Comandi disponibili:
Command not available: @1=Comando non disponibile: @1
[all | privs | <cmd>]=[all | privs | <comando>]
Get help for commands or list privileges=Richiama la finestra d'aiuto dei comandi o dei privilegi
Available privileges:=Privilegi disponibili:
Command=Comando
Parameters=Parametri
For more information, click on any entry in the list.=Per più informazioni, clicca su una qualsiasi voce dell'elenco.
Double-click to copy the entry to the chat history.=Doppio click per copiare la voce nella cronologia della chat.
Command: @1 @2=Comando: @1 @2
Available commands: (see also: /help <cmd>)=Comandi disponibili: (vedi anche /help <comando>)
Close=Chiudi
Privilege=Privilegio
Description=Descrizione
print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset=print [<filtro>] | dump [<filtro>] | save [<formato> [<filtro>]] | reset
Handle the profiler and profiling data=Gestisce il profiler e i dati da esso elaborati
Statistics written to action log.=Statistiche scritte nel log delle azioni.
Statistics were reset.=Le statistiche sono state resettate.
Usage: @1=Utilizzo: @1
Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=I formati supportati sono txt, csv, lua, json e json_pretty (le strutture potrebbero essere soggetti a cambiamenti).
(no description)=(nessuna descrizione)
Can interact with things and modify the world=Si può interagire con le cose e modificare il mondo
Can speak in chat=Si può parlare in chat
Can modify 'shout' and 'interact' privileges=Si possono modificare i privilegi 'shout' e 'interact'
Can modify privileges=Si possono modificare i privilegi
Can teleport self=Si può teletrasportare se stessз
Can teleport other players=Si possono teletrasportare gli altri giocatori
Can set the time of day using /time=Si può impostate l'orario della giornata tramite /time
Can do server maintenance stuff=Si possono eseguire operazioni di manutenzione del server
Can bypass node protection in the world=Si può aggirare la protezione dei nodi nel mondo
Can ban and unban players=Si possono bandire e perdonare i giocatori
Can kick players=Si possono cacciare i giocatori
Can use /give and /giveme=Si possono usare /give e /give me
Can use /setpassword and /clearpassword=Si possono usare /setpassword e /clearpassword
Can use fly mode=Si può usare la modalità volo
Can use fast mode=Si può usare la modalità rapida
Can fly through solid nodes using noclip mode=Si può volare attraverso i nodi solidi con la modalità incorporea
Can use the rollback functionality=Si può usare la funzione di rollback
Allows enabling various debug options that may affect gameplay=Permette di abilitare varie opzioni di debug che potrebbero influenzare l'esperienza di gioco
Unknown Item=Oggetto sconosciuto
Air=Aria
Ignore=Ignora
You can't place 'ignore' nodes!=Non puoi piazzare nodi 'ignore'!

224
builtin/locale/template.txt Normal file
View File

@ -0,0 +1,224 @@
# textdomain: __builtin
Empty command.=
Invalid command: @1=
Invalid command usage.=
You don't have permission to run this command (missing privileges: @1).=
Unable to get position of player @1.=
Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)=
<action>=
Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')=
Show the name of the server owner=
The administrator of this server is @1.=
There's no administrator named in the config file.=
[<name>]=
Show privileges of yourself or another player=
Player @1 does not exist.=
Privileges of @1: @2=
<privilege>=
Return list of all online players with privilege=
Invalid parameters (see /help haspriv).=
Unknown privilege!=
Players online with the "@1" privilege: @2=
Your privileges are insufficient.=
Unknown privilege: @1=
@1 granted you privileges: @2=
<name> (<privilege> | all)=
Give privileges to player=
Invalid parameters (see /help grant).=
<privilege> | all=
Grant privileges to yourself=
Invalid parameters (see /help grantme).=
@1 revoked privileges from you: @2=
Remove privileges from player=
Invalid parameters (see /help revoke).=
Revoke privileges from yourself=
Invalid parameters (see /help revokeme).=
<name> <password>=
Set player's password=
Name field required.=
Your password was cleared by @1.=
Password of player "@1" cleared.=
Your password was set by @1.=
Password of player "@1" set.=
<name>=
Set empty password for a player=
Reload authentication data=
Done.=
Failed.=
Remove a player's data=
Player "@1" removed.=
No such player "@1" to remove.=
Player "@1" is connected, cannot remove.=
Unhandled remove_player return code @1.=
Cannot teleport out of map bounds!=
Cannot get player with name @1.=
Cannot teleport, @1 is attached to an object!=
Teleporting @1 to @2.=
One does not teleport to oneself.=
Cannot get teleportee with name @1.=
Cannot get target player with name @1.=
Teleporting @1 to @2 at @3.=
<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>=
Teleport to position or player=
You don't have permission to teleport other players (missing privilege: @1).=
([-n] <name> <value>) | <name>=
Set or read server configuration setting=
Failed. Use '/set -n <name> <value>' to create a new setting.=
@1 @= @2=
<not set>=
Invalid parameters (see /help set).=
Finished emerging @1 blocks in @2ms.=
emergeblocks update: @1/@2 blocks emerged (@3%)=
(here [<radius>]) | (<pos1> <pos2>)=
Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=
Started emerge of area ranging from @1 to @2.=
Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=
Successfully cleared area ranging from @1 to @2.=
Failed to clear one or more blocks in area.=
Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)=
Successfully reset light in the area ranging from @1 to @2.=
Failed to load one or more blocks in area.=
List mods installed on the server=
Cannot give an empty item.=
Cannot give an unknown item.=
Giving 'ignore' is not allowed.=
@1 is not a known player.=
@1 partially added to inventory.=
@1 could not be added to inventory.=
@1 added to inventory.=
@1 partially added to inventory of @2.=
@1 could not be added to inventory of @2.=
@1 added to inventory of @2.=
<name> <ItemString> [<count> [<wear>]]=
Give item to player=
Name and ItemString required.=
<ItemString> [<count> [<wear>]]=
Give item to yourself=
ItemString required.=
<EntityName> [<X>,<Y>,<Z>]=
Spawn entity at given (or your) position=
EntityName required.=
Unable to spawn entity, player is nil.=
Cannot spawn an unknown entity.=
Invalid parameters (@1).=
@1 spawned.=
@1 failed to spawn.=
Destroy item in hand=
Unable to pulverize, no player.=
Unable to pulverize, no item in hand.=
An item was pulverized.=
[<range>] [<seconds>] [<limit>]=
Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit=
Rollback functions are disabled.=
That limit is too high!=
Checking @1 ...=
Nobody has touched the specified location in @1 seconds.=
@1 @2 @3 -> @4 @5 seconds ago.=
Punch a node (range@=@1, seconds@=@2, limit@=@3).=
(<name> [<seconds>]) | (:<actor> [<seconds>])=
Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit=
Invalid parameters. See /help rollback and /help rollback_check.=
Reverting actions of player '@1' since @2 seconds.=
Reverting actions of @1 since @2 seconds.=
(log is too long to show)=
Reverting actions succeeded.=
Reverting actions FAILED.=
Show server status=
This command was disabled by a mod or game.=
[<0..23>:<0..59> | <0..24000>]=
Show or set time of day=
Current time is @1:@2.=
You don't have permission to run this command (missing privilege: @1).=
Invalid time.=
Time of day changed.=
Invalid hour (must be between 0 and 23 inclusive).=
Invalid minute (must be between 0 and 59 inclusive).=
Show day count since world creation=
Current day is @1.=
[<delay_in_seconds> | -1] [reconnect] [<message>]=
Shutdown server (-1 cancels a delayed shutdown)=
Server shutting down (operator request).=
Ban the IP of a player or show the ban list=
The ban list is empty.=
Ban list: @1=
Player is not online.=
Failed to ban player.=
Banned @1.=
<name> | <IP_address>=
Remove IP ban belonging to a player/IP=
Failed to unban player/IP.=
Unbanned @1.=
<name> [<reason>]=
Kick a player=
Failed to kick player @1.=
Kicked @1.=
[full | quick]=
Clear all objects in world=
Invalid usage, see /help clearobjects.=
Clearing all objects. This may take a long time. You may experience a timeout. (by @1)=
Cleared all objects.=
<name> <message>=
Send a direct message to a player=
Invalid usage, see /help msg.=
The player @1 is not online.=
DM from @1: @2=
Message sent.=
Get the last login time of a player or yourself=
@1's last login time was @2.=
@1's last login time is unknown.=
Clear the inventory of yourself or another player=
You don't have permission to clear another player's inventory (missing privilege: @1).=
@1 cleared your inventory.=
Cleared @1's inventory.=
Player must be online to clear inventory!=
Players can't be killed, damage has been disabled.=
Player @1 is not online.=
You are already dead.=
@1 is already dead.=
@1 has been killed.=
Kill player or yourself=
Available commands: @1=
Use '/help <cmd>' to get more information, or '/help all' to list everything.=
Available commands:=
Command not available: @1=
[all | privs | <cmd>]=
Get help for commands or list privileges=
Available privileges:=
Command=
Parameters=
For more information, click on any entry in the list.=
Double-click to copy the entry to the chat history.=
Command: @1 @2=
Available commands: (see also: /help <cmd>)=
Close=
Privilege=
Description=
print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset=
Handle the profiler and profiling data=
Statistics written to action log.=
Statistics were reset.=
Usage: @1=
Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=
(no description)=
Can interact with things and modify the world=
Can speak in chat=
Can modify 'shout' and 'interact' privileges=
Can modify privileges=
Can teleport self=
Can teleport other players=
Can set the time of day using /time=
Can do server maintenance stuff=
Can bypass node protection in the world=
Can ban and unban players=
Can kick players=
Can use /give and /giveme=
Can use /setpassword and /clearpassword=
Can use fly mode=
Can use fast mode=
Can fly through solid nodes using noclip mode=
Can use the rollback functionality=
Allows enabling various debug options that may affect gameplay=
Unknown Item=
Air=
Ignore=
You can't place 'ignore' nodes!=

View File

@ -14,14 +14,11 @@
--You should have received a copy of the GNU Lesser General Public License along --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., --with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--------------------------------------------------------------------------------
-- Global menu data -- Global menu data
--------------------------------------------------------------------------------
menudata = {} menudata = {}
--------------------------------------------------------------------------------
-- Local cached values -- Local cached values
--------------------------------------------------------------------------------
local min_supp_proto, max_supp_proto local min_supp_proto, max_supp_proto
function common_update_cached_supp_proto() function common_update_cached_supp_proto()
@ -29,14 +26,12 @@ function common_update_cached_supp_proto()
max_supp_proto = core.get_max_supp_proto() max_supp_proto = core.get_max_supp_proto()
end end
common_update_cached_supp_proto() common_update_cached_supp_proto()
--------------------------------------------------------------------------------
-- Menu helper functions
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------- -- Menu helper functions
local function render_client_count(n) local function render_client_count(n)
if n > 99 then return '99+' if n > 999 then return '99+'
elseif n >= 0 then return tostring(n) elseif n >= 0 then return tostring(n)
else return '?' end else return '?' end
end end
@ -50,21 +45,7 @@ local function configure_selected_world_params(idx)
end end
end end
-------------------------------------------------------------------------------- function render_serverlist_row(spec)
function image_column(tooltip, flagname)
return "image,tooltip=" .. core.formspec_escape(tooltip) .. "," ..
"0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," ..
"1=" .. core.formspec_escape(defaulttexturedir ..
(flagname and "server_flags_" .. flagname .. ".png" or "blank.png")) .. "," ..
"2=" .. core.formspec_escape(defaulttexturedir .. "server_ping_4.png") .. "," ..
"3=" .. core.formspec_escape(defaulttexturedir .. "server_ping_3.png") .. "," ..
"4=" .. core.formspec_escape(defaulttexturedir .. "server_ping_2.png") .. "," ..
"5=" .. core.formspec_escape(defaulttexturedir .. "server_ping_1.png")
end
--------------------------------------------------------------------------------
function render_serverlist_row(spec, is_favorite)
local text = "" local text = ""
if spec.name then if spec.name then
text = text .. core.formspec_escape(spec.name:trim()) text = text .. core.formspec_escape(spec.name:trim())
@ -75,31 +56,29 @@ function render_serverlist_row(spec, is_favorite)
end end
end end
local grey_out = not is_server_protocol_compat(spec.proto_min, spec.proto_max) local grey_out = not spec.is_compatible
local details local details = {}
if is_favorite then
details = "1,"
else
details = "0,"
end
if spec.ping then if spec.lag or spec.ping then
local ping = spec.ping * 1000 local lag = (spec.lag or 0) * 1000 + (spec.ping or 0) * 250
if ping <= 50 then if lag <= 125 then
details = details .. "2," table.insert(details, "1")
elseif ping <= 100 then elseif lag <= 175 then
details = details .. "3," table.insert(details, "2")
elseif ping <= 250 then elseif lag <= 250 then
details = details .. "4," table.insert(details, "3")
else else
details = details .. "5," table.insert(details, "4")
end end
else else
details = details .. "0," table.insert(details, "0")
end end
if spec.clients and spec.clients_max then table.insert(details, ",")
local color = (grey_out and "#aaaaaa") or ((spec.is_favorite and "#ddddaa") or "#ffffff")
if spec.clients and (spec.clients_max or 0) > 0 then
local clients_percent = 100 * spec.clients / spec.clients_max local clients_percent = 100 * spec.clients / spec.clients_max
-- Choose a color depending on how many clients are connected -- Choose a color depending on how many clients are connected
@ -110,38 +89,35 @@ function render_serverlist_row(spec, is_favorite)
elseif clients_percent <= 60 then clients_color = '#a1e587' -- 0-60%: green 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 <= 90 then clients_color = '#ffdc97' -- 60-90%: yellow
elseif clients_percent == 100 then clients_color = '#dd5b5b' -- full server: red (darker) elseif clients_percent == 100 then clients_color = '#dd5b5b' -- full server: red (darker)
else clients_color = '#ffba97' -- 90-100%: orange else clients_color = '#ffba97' -- 90-100%: orange
end end
details = details .. clients_color .. ',' .. table.insert(details, clients_color)
render_client_count(spec.clients) .. ',/,' .. table.insert(details, render_client_count(spec.clients) .. " / " ..
render_client_count(spec.clients_max) .. ',' render_client_count(spec.clients_max))
elseif grey_out then
details = details .. '#aaaaaa,?,/,?,'
else else
details = details .. ',?,/,?,' table.insert(details, color)
table.insert(details, "?")
end end
if spec.creative then if spec.creative then
details = details .. "1," table.insert(details, "1") -- creative icon
else else
details = details .. "0," table.insert(details, "0")
end
if spec.damage then
details = details .. "1,"
else
details = details .. "0,"
end end
if spec.pvp then if spec.pvp then
details = details .. "1," table.insert(details, "2") -- pvp icon
elseif spec.damage then
table.insert(details, "1") -- heart icon
else else
details = details .. "0," table.insert(details, "0")
end end
return details .. (grey_out and '#aaaaaa,' or ',') .. text table.insert(details, color)
table.insert(details, text)
return table.concat(details, ",")
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -150,14 +126,13 @@ os.tempfolder = function()
return temp .. DIR_DELIM .. "MT_" .. math.random(0, 10000) return temp .. DIR_DELIM .. "MT_" .. math.random(0, 10000)
end end
--------------------------------------------------------------------------------
os.tmpname = function() os.tmpname = function()
local path = os.tempfolder() local path = os.tempfolder()
io.open(path, "w"):close() io.open(path, "w"):close()
return path return path
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function menu_render_worldlist() function menu_render_worldlist()
local retval = "" local retval = ""
local current_worldlist = menudata.worldlist:get_list() local current_worldlist = menudata.worldlist:get_list()
@ -171,7 +146,6 @@ function menu_render_worldlist()
return retval return retval
end end
--------------------------------------------------------------------------------
function menu_handle_key_up_down(fields, textlist, settingname) function menu_handle_key_up_down(fields, textlist, settingname)
local oldidx, newidx = core.get_textlist_index(textlist), 1 local oldidx, newidx = core.get_textlist_index(textlist), 1
if fields.key_up or fields.key_down then if fields.key_up or fields.key_down then
@ -188,7 +162,6 @@ function menu_handle_key_up_down(fields, textlist, settingname)
return false return false
end end
--------------------------------------------------------------------------------
function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transparency) function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transparency)
local textlines = core.wrap_text(text, textlen, true) local textlines = core.wrap_text(text, textlen, true)
local retval = "textlist[" .. xpos .. "," .. ypos .. ";" .. width .. local retval = "textlist[" .. xpos .. "," .. ypos .. ";" .. width ..
@ -206,7 +179,6 @@ function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transp
return retval return retval
end end
--------------------------------------------------------------------------------
function is_server_protocol_compat(server_proto_min, server_proto_max) function is_server_protocol_compat(server_proto_min, server_proto_max)
if (not server_proto_min) or (not server_proto_max) then if (not server_proto_min) or (not server_proto_max) then
-- There is no info. Assume the best and act as if we would be compatible. -- There is no info. Assume the best and act as if we would be compatible.
@ -214,7 +186,7 @@ function is_server_protocol_compat(server_proto_min, server_proto_max)
end end
return min_supp_proto <= server_proto_max and max_supp_proto >= server_proto_min return min_supp_proto <= server_proto_max and max_supp_proto >= server_proto_min
end end
--------------------------------------------------------------------------------
function is_server_protocol_compat_or_error(server_proto_min, server_proto_max) 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 if not is_server_protocol_compat(server_proto_min, server_proto_max) then
local server_prot_ver_info, client_prot_ver_info local server_prot_ver_info, client_prot_ver_info
@ -242,7 +214,7 @@ function is_server_protocol_compat_or_error(server_proto_min, server_proto_max)
return true return true
end end
--------------------------------------------------------------------------------
function menu_worldmt(selected, setting, value) function menu_worldmt(selected, setting, value)
local world = menudata.worldlist:get_list()[selected] local world = menudata.worldlist:get_list()[selected]
if world then if world then

View File

@ -74,7 +74,7 @@ local function get_formspec(data)
"label[1.75,0;" .. data.worldspec.name .. "]" "label[1.75,0;" .. data.worldspec.name .. "]"
if mod.is_modpack or mod.type == "game" then if mod.is_modpack or mod.type == "game" then
local info = minetest.formspec_escape( local info = core.formspec_escape(
core.get_content_info(mod.path).description) core.get_content_info(mod.path).description)
if info == "" then if info == "" then
if mod.is_modpack then if mod.is_modpack then

View File

@ -15,7 +15,7 @@
--with this program; if not, write to the Free Software Foundation, Inc., --with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
if not minetest.get_http_api then if not core.get_http_api then
function create_store_dlg() function create_store_dlg()
return messagebox("store", return messagebox("store",
fgettext("ContentDB is not available when Minetest was compiled without cURL")) fgettext("ContentDB is not available when Minetest was compiled without cURL"))
@ -27,7 +27,7 @@ end
-- before the package list is ordered based on installed state. -- before the package list is ordered based on installed state.
local store = { packages = {}, packages_full = {}, packages_full_unordered = {} } local store = { packages = {}, packages_full = {}, packages_full_unordered = {} }
local http = minetest.get_http_api() local http = core.get_http_api()
-- Screenshot -- Screenshot
local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb" local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb"
@ -152,7 +152,7 @@ local function start_install(package)
end end
local function queue_download(package) local function queue_download(package)
local max_concurrent_downloads = tonumber(minetest.settings:get("contentdb_max_concurrent_downloads")) local max_concurrent_downloads = tonumber(core.settings:get("contentdb_max_concurrent_downloads"))
if number_downloading < max_concurrent_downloads then if number_downloading < max_concurrent_downloads then
start_install(package) start_install(package)
else else
@ -320,7 +320,7 @@ function install_dialog.get_formspec()
selected_game_idx = i selected_game_idx = i
end end
games[i] = minetest.formspec_escape(games[i].name) games[i] = core.formspec_escape(games[i].name)
end end
local selected_game = pkgmgr.games[selected_game_idx] local selected_game = pkgmgr.games[selected_game_idx]
@ -331,7 +331,7 @@ function install_dialog.get_formspec()
local formatted_deps = {} local formatted_deps = {}
for _, dep in pairs(install_dialog.dependencies) do for _, dep in pairs(install_dialog.dependencies) do
formatted_deps[#formatted_deps + 1] = "#fff" formatted_deps[#formatted_deps + 1] = "#fff"
formatted_deps[#formatted_deps + 1] = minetest.formspec_escape(dep.name) formatted_deps[#formatted_deps + 1] = core.formspec_escape(dep.name)
if dep.installed then if dep.installed then
formatted_deps[#formatted_deps + 1] = "#ccf" formatted_deps[#formatted_deps + 1] = "#ccf"
formatted_deps[#formatted_deps + 1] = fgettext("Already installed") formatted_deps[#formatted_deps + 1] = fgettext("Already installed")
@ -402,7 +402,7 @@ function install_dialog.handle_submit(this, fields)
end end
if fields.will_install_deps ~= nil then if fields.will_install_deps ~= nil then
install_dialog.will_install_deps = minetest.is_yes(fields.will_install_deps) install_dialog.will_install_deps = core.is_yes(fields.will_install_deps)
return true return true
end end
@ -553,7 +553,7 @@ function store.load()
end end
end end
local timeout = tonumber(minetest.settings:get("curl_file_download_timeout")) local timeout = tonumber(core.settings:get("curl_file_download_timeout"))
local response = http.fetch_sync({ url = url, timeout = timeout }) local response = http.fetch_sync({ url = url, timeout = timeout })
if not response.succeeded then if not response.succeeded then
return return
@ -793,8 +793,8 @@ function store.get_formspec(dlgdata)
-- title -- title
formspec[#formspec + 1] = "label[1.875,0.1;" formspec[#formspec + 1] = "label[1.875,0.1;"
formspec[#formspec + 1] = core.formspec_escape( formspec[#formspec + 1] = core.formspec_escape(
minetest.colorize(mt_color_green, package.title) .. core.colorize(mt_color_green, package.title) ..
minetest.colorize("#BFBFBF", " by " .. package.author)) core.colorize("#BFBFBF", " by " .. package.author))
formspec[#formspec + 1] = "]" formspec[#formspec + 1] = "]"
-- buttons -- buttons

View File

@ -443,7 +443,7 @@ local function create_world_buttonhandler(this, fields)
end end
if fields["mgv6_biomes"] then if fields["mgv6_biomes"] then
local entry = minetest.formspec_escape(fields["mgv6_biomes"]) local entry = core.formspec_escape(fields["mgv6_biomes"])
for b=1, #mgv6_biomes do for b=1, #mgv6_biomes do
if entry == mgv6_biomes[b][1] then if entry == mgv6_biomes[b][1] then
local ftable = core.settings:get_flags("mgv6_spflags") local ftable = core.settings:get_flags("mgv6_spflags")

View File

@ -90,7 +90,7 @@ local function load_texture_packs(txtpath, retval)
retval[#retval + 1] = { retval[#retval + 1] = {
name = item, name = item,
author = conf:get("author"), author = conf:get("author"),
release = tonumber(conf:get("release") or "0"), release = tonumber(conf:get("release")) or 0,
list_name = name, list_name = name,
type = "txp", type = "txp",
path = path, path = path,
@ -135,7 +135,7 @@ function get_mods(path,retval,modpack)
-- Read from config -- Read from config
toadd.name = name toadd.name = name
toadd.author = mod_conf.author toadd.author = mod_conf.author
toadd.release = tonumber(mod_conf.release or "0") toadd.release = tonumber(mod_conf.release) or 0
toadd.path = prefix toadd.path = prefix
toadd.type = "mod" toadd.type = "mod"
@ -413,18 +413,7 @@ function pkgmgr.is_modpack_entirely_enabled(data, name)
end end
---------- toggles or en/disables a mod or modpack and its dependencies -------- ---------- toggles or en/disables a mod or modpack and its dependencies --------
function pkgmgr.enable_mod(this, toset) local function toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, mod)
local list = this.data.list:get_list()
local mod = list[this.data.selected_mod]
-- Game mods can't be enabled or disabled
if mod.is_game_content then
return
end
local toggled_mods = {}
local enabled_mods = {}
if not mod.is_modpack then if not mod.is_modpack then
-- Toggle or en/disable the mod -- Toggle or en/disable the mod
if toset == nil then if toset == nil then
@ -443,23 +432,29 @@ function pkgmgr.enable_mod(this, toset)
-- interleaved unsupported -- interleaved unsupported
for i = 1, #list do for i = 1, #list do
if list[i].modpack == mod.name then if list[i].modpack == mod.name then
if toset == nil then toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, list[i])
toset = not list[i].enabled
end
if list[i].enabled ~= toset then
list[i].enabled = toset
toggled_mods[#toggled_mods+1] = list[i].name
end
if toset then
enabled_mods[list[i].name] = true
end
end end
end end
end end
end
function pkgmgr.enable_mod(this, toset)
local list = this.data.list:get_list()
local mod = list[this.data.selected_mod]
-- Game mods can't be enabled or disabled
if mod.is_game_content then
return
end
local toggled_mods = {}
local enabled_mods = {}
toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, mod)
if not toset then if not toset then
-- Mod(s) were disabled, so no dependencies need to be enabled -- Mod(s) were disabled, so no dependencies need to be enabled
table.sort(toggled_mods) table.sort(toggled_mods)
minetest.log("info", "Following mods were disabled: " .. core.log("info", "Following mods were disabled: " ..
table.concat(toggled_mods, ", ")) table.concat(toggled_mods, ", "))
return return
end end
@ -496,7 +491,7 @@ function pkgmgr.enable_mod(this, toset)
enabled_mods[name] = true enabled_mods[name] = true
local mod_to_enable = list[mod_ids[name]] local mod_to_enable = list[mod_ids[name]]
if not mod_to_enable then if not mod_to_enable then
minetest.log("warning", "Mod dependency \"" .. name .. core.log("warning", "Mod dependency \"" .. name ..
"\" not found!") "\" not found!")
else else
if mod_to_enable.enabled == false then if mod_to_enable.enabled == false then
@ -517,7 +512,7 @@ function pkgmgr.enable_mod(this, toset)
-- Log the list of enabled mods -- Log the list of enabled mods
table.sort(toggled_mods) table.sort(toggled_mods)
minetest.log("info", "Following mods were enabled: " .. core.log("info", "Following mods were enabled: " ..
table.concat(toggled_mods, ", ")) table.concat(toggled_mods, ", "))
end end

View File

@ -205,16 +205,28 @@ local function get_formspec(tabview, name, tabdata)
return retval return retval
end end
--------------------------------------------------------------------------------
local function handle_doubleclick(pkg, pkg_name)
if pkg.type == "txp" then
if core.settings:get("texture_path") == pkg.path then
core.settings:set("texture_path", "")
else
core.settings:set("texture_path", pkg.path)
end
packages = nil
elseif pkg.is_clientside then
pkgmgr.enable_mod({data = {list = packages, selected_mod = pkg_name}})
packages = nil
end
end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
local function handle_buttons(tabview, fields, tabname, tabdata) local function handle_buttons(tabview, fields, tabname, tabdata)
if fields["pkglist"] ~= nil then if fields["pkglist"] ~= nil then
local event = core.explode_table_event(fields["pkglist"]) local event = core.explode_table_event(fields["pkglist"])
tabdata.selected_pkg = event.row tabdata.selected_pkg = event.row
local mod = packages:get_list()[tabdata.selected_pkg] if event.type == "DCL" then
handle_doubleclick(packages:get_list()[tabdata.selected_pkg], tabdata.selected_pkg)
if event.type == "DCL" and mod.is_clientside then
pkgmgr.enable_mod({data = {list = packages, selected_mod = tabdata.selected_pkg}})
packages = nil
end end
return true return true
end end

View File

@ -33,28 +33,37 @@ local core_developers = {
"Nathanaël Courant (Nore/Ekdohibs) <nore@mesecons.net>", "Nathanaël Courant (Nore/Ekdohibs) <nore@mesecons.net>",
"Loic Blot (nerzhul/nrz) <loic.blot@unix-experience.fr>", "Loic Blot (nerzhul/nrz) <loic.blot@unix-experience.fr>",
"paramat", "paramat",
"Auke Kok (sofar) <sofar@foo-projects.org>",
"Andrew Ward (rubenwardy) <rw@rubenwardy.com>", "Andrew Ward (rubenwardy) <rw@rubenwardy.com>",
"Krock/SmallJoker <mk939@ymail.com>", "Krock/SmallJoker <mk939@ymail.com>",
"Lars Hofhansl <larsh@apache.org>", "Lars Hofhansl <larsh@apache.org>",
"Pierre-Yves Rollo <dev@pyrollo.com>",
"v-rob <robinsonvincent89@gmail.com>",
} }
-- For updating active/previous contributors, see the script in ./util/gather_git_credits.py
local active_contributors = { local active_contributors = {
"Hugues Ross [Formspecs]", "Wuzzy [devtest game, visual corrections]",
"Zughy [Visual improvements, various fixes]",
"Maksim (MoNTE48) [Android]", "Maksim (MoNTE48) [Android]",
"DS [Formspecs]", "numzero [Graphics and rendering]",
"pyrollo [Formspecs: Hypertext]", "appgurueu [Various internal fixes]",
"v-rob [Formspecs]", "Desour [Formspec and vector API changes]",
"Jordach [set_sky]", "HybridDog [Rendering fixes and documentation]",
"random-geek [Formspecs]", "Hugues Ross [Graphics-related improvements]",
"Wuzzy [Pathfinder, builtin, translations]", "ANAND (ClobberXD) [Mouse buttons rebinding]",
"ANAND (ClobberXD) [Fixes, per-player FOV]", "luk3yx [Fixes]",
"Warr1024 [Fixes]", "hecks [Audiovisuals, Lua API]",
"Paul Ouellette (pauloue) [Fixes, Script API]", "LoneWolfHT [Object crosshair, documentation fixes]",
"Jean-Patrick G (kilbith) <jeanpatrick.guerrero@gmail.com> [Audiovisuals]", "Lejo [Server-related improvements]",
"HybridDog [Script API]", "EvidenceB [Compass HUD element]",
"Paul Ouellette (pauloue) [Lua API, documentation]",
"TheTermos [Collision detection, physics]",
"David CARLIER [Unix & Haiku build fixes]",
"dcbrwn [Object shading]", "dcbrwn [Object shading]",
"srifqi [Fixes]", "Elias Fleckenstein [API features/fixes]",
"Jean-Patrick Guerrero (kilbith) [model element, visual fixes]",
"k.h.lai [Memory leak fixes, documentation]",
} }
local previous_core_developers = { local previous_core_developers = {
@ -70,30 +79,23 @@ local previous_core_developers = {
"sapier", "sapier",
"Zeno", "Zeno",
"ShadowNinja <shadowninja@minetest.net>", "ShadowNinja <shadowninja@minetest.net>",
"Auke Kok (sofar) <sofar@foo-projects.org>",
} }
local previous_contributors = { local previous_contributors = {
"Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net> [Minetest Logo]", "Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net> [Minetest Logo]",
"Dániel Juhász (juhdanad) <juhdanad@gmail.com>",
"red-001 <red-001@outlook.ie>", "red-001 <red-001@outlook.ie>",
"numberZero [Audiovisuals: meshgen]",
"Giuseppe Bilotta", "Giuseppe Bilotta",
"Dániel Juhász (juhdanad) <juhdanad@gmail.com>",
"MirceaKitsune <mirceakitsune@gmail.com>", "MirceaKitsune <mirceakitsune@gmail.com>",
"Constantin Wenger (SpeedProg)", "Constantin Wenger (SpeedProg)",
"Ciaran Gultnieks (CiaranG)", "Ciaran Gultnieks (CiaranG)",
"stujones11 [Android UX improvements]", "stujones11 [Android UX improvements]",
"Jeija <jeija@mesecons.net> [HTTP, particles]",
"Vincent Glize (Dumbeldor) [Cleanups, CSM APIs]",
"Ben Deutsch [Rendering, Fixes, SQLite auth]",
"TeTpaAka [Hand overriding, nametag colors]",
"Rui [Sound Pitch]",
"Duane Robertson <duane@duanerobertson.com> [MGValleys]",
"Raymoo [Tool Capabilities]",
"Rogier <rogier777@gmail.com> [Fixes]", "Rogier <rogier777@gmail.com> [Fixes]",
"Gregory Currie (gregorycu) [optimisation]", "Gregory Currie (gregorycu) [optimisation]",
"TriBlade9 <triblade9@mail.com> [Audiovisuals]", "srifqi [Fixes]",
"T4im [Profiler]", "JacobF",
"Jurgen Doser (doserj) <jurgen.doser@gmail.com>", "Jeija <jeija@mesecons.net> [HTTP, particles]",
} }
local function buildCreditList(source) local function buildCreditList(source)

View File

@ -15,17 +15,50 @@
--with this program; if not, write to the Free Software Foundation, Inc., --with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-------------------------------------------------------------------------------- local function get_sorted_servers()
local servers = {
fav = {},
public = {},
incompatible = {}
}
local favs = serverlistmgr.get_favorites()
local taken_favs = {}
local result = menudata.search_result or serverlistmgr.servers
for _, server in ipairs(result) do
server.is_favorite = false
for index, fav in ipairs(favs) do
if server.address == fav.address and server.port == fav.port then
taken_favs[index] = true
server.is_favorite = true
break
end
end
server.is_compatible = is_server_protocol_compat(server.proto_min, server.proto_max)
if server.is_favorite then
table.insert(servers.fav, server)
elseif server.is_compatible then
table.insert(servers.public, server)
else
table.insert(servers.incompatible, server)
end
end
if not menudata.search_result then
for index, fav in ipairs(favs) do
if not taken_favs[index] then
table.insert(servers.fav, fav)
end
end
end
return servers
end
local function get_formspec(tabview, name, tabdata) local function get_formspec(tabview, name, tabdata)
-- Update the cached supported proto info, -- Update the cached supported proto info,
-- it may have changed after a change by the settings menu. -- it may have changed after a change by the settings menu.
common_update_cached_supp_proto() common_update_cached_supp_proto()
local selected
if menudata.search_result then
selected = menudata.search_result[tabdata.selected]
else
selected = serverlistmgr.servers[tabdata.selected]
end
if not tabdata.search_for then if not tabdata.search_for then
tabdata.search_for = "" tabdata.search_for = ""
@ -33,128 +66,221 @@ local function get_formspec(tabview, name, tabdata)
local retval = local retval =
-- Search -- Search
"field[0.15,0.075;5.91,1;te_search;;" .. core.formspec_escape(tabdata.search_for) .. "]" .. "field[0.25,0.25;7,0.75;te_search;;" .. core.formspec_escape(tabdata.search_for) .. "]" ..
"image_button[5.63,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "search.png") .. ";btn_mp_search;]" .. "container[7.25,0.25]" ..
"image_button[6.3,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "clear.png") .. ";btn_mp_clear;]" .. "image_button[0,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "search.png") .. ";btn_mp_search;]" ..
"image_button[6.97,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "refresh.png") "image_button[0.75,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "clear.png") .. ";btn_mp_clear;]" ..
.. ";btn_mp_refresh;]" .. "image_button[1.5,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "refresh.png") .. ";btn_mp_refresh;]" ..
"tooltip[btn_mp_clear;" .. fgettext("Clear") .. "]" ..
"tooltip[btn_mp_search;" .. fgettext("Search") .. "]" ..
"tooltip[btn_mp_refresh;" .. fgettext("Refresh") .. "]" ..
"container_end[]" ..
"container[9.75,0]" ..
"box[0,0;5.75,7;#666666]" ..
-- Address / Port -- Address / Port
"label[7.75,-0.25;" .. fgettext("Address / Port") .. "]" .. "label[0.25,0.35;" .. fgettext("Address") .. "]" ..
"field[8,0.65;3.25,0.5;te_address;;" .. "label[4.25,0.35;" .. fgettext("Port") .. "]" ..
"field[0.25,0.5;4,0.75;te_address;;" ..
core.formspec_escape(core.settings:get("address")) .. "]" .. core.formspec_escape(core.settings:get("address")) .. "]" ..
"field[11.1,0.65;1.4,0.5;te_port;;" .. "field[4.25,0.5;1.25,0.75;te_port;;" ..
core.formspec_escape(core.settings:get("remote_port")) .. "]" .. core.formspec_escape(core.settings:get("remote_port")) .. "]" ..
-- Name / Password -- Name / Password
"label[7.75,0.95;" .. fgettext("Name / Password") .. "]" .. "label[0.25,1.55;" .. fgettext("Name") .. "]" ..
"field[8,1.85;2.9,0.5;te_name;;" .. "label[3,1.55;" .. fgettext("Password") .. "]" ..
"field[0.25,1.75;2.75,0.75;te_name;;" ..
core.formspec_escape(core.settings:get("name")) .. "]" .. core.formspec_escape(core.settings:get("name")) .. "]" ..
"pwdfield[10.73,1.85;1.77,0.5;te_pwd;]" .. "pwdfield[3,1.75;2.5,0.75;te_pwd;]" ..
-- Description Background -- Description Background
"box[7.73,2.25;4.25,2.6;#999999]".. "label[0.25,2.75;" .. fgettext("Server Description") .. "]" ..
"box[0.25,3;5.25,2.75;#999999]"..
-- Connect -- Connect
"button[9.88,4.9;2.3,1;btn_mp_connect;" .. fgettext("Connect") .. "]" "button[3,6;2.5,0.75;btn_mp_connect;" .. fgettext("Connect") .. "]"
if tabdata.selected and selected then if tabdata.selected then
if gamedata.fav then if gamedata.fav then
retval = retval .. "button[7.73,4.9;2.3,1;btn_delete_favorite;" .. retval = retval .. "button[0.25,6;2.5,0.75;btn_delete_favorite;" ..
fgettext("Del. Favorite") .. "]" fgettext("Del. Favorite") .. "]"
end end
if selected.description then if gamedata.serverdescription then
retval = retval .. "textarea[8.1,2.3;4.23,2.9;;;" .. retval = retval .. "textarea[0.25,3;5.25,2.75;;;" ..
core.formspec_escape((gamedata.serverdescription or ""), true) .. "]" core.formspec_escape(gamedata.serverdescription) .. "]"
end end
end end
--favorites retval = retval .. "container_end[]"
-- Table
retval = retval .. "tablecolumns[" .. retval = retval .. "tablecolumns[" ..
image_column(fgettext("Favorite"), "favorite") .. ";" .. "image,tooltip=" .. fgettext("Ping") .. "," ..
image_column(fgettext("Ping")) .. ",padding=0.25;" .. "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," ..
"color,span=3;" .. "1=" .. core.formspec_escape(defaulttexturedir .. "server_ping_4.png") .. "," ..
"text,align=right;" .. -- clients "2=" .. core.formspec_escape(defaulttexturedir .. "server_ping_3.png") .. "," ..
"text,align=center,padding=0.25;" .. -- "/" "3=" .. core.formspec_escape(defaulttexturedir .. "server_ping_2.png") .. "," ..
"text,align=right,padding=0.25;" .. -- clients_max "4=" .. core.formspec_escape(defaulttexturedir .. "server_ping_1.png") .. "," ..
image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. "5=" .. core.formspec_escape(defaulttexturedir .. "server_favorite.png") .. "," ..
image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. "6=" .. core.formspec_escape(defaulttexturedir .. "server_public.png") .. "," ..
--~ PvP = Player versus Player "7=" .. core.formspec_escape(defaulttexturedir .. "server_incompatible.png") .. ";" ..
image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" ..
"color,span=1;" .. "color,span=1;" ..
"text,padding=1]" .. "text,align=inline;"..
"table[-0.15,0.6;7.75,5.15;favorites;" "color,span=1;" ..
"text,align=inline,width=4.25;" ..
"image,tooltip=" .. fgettext("Creative mode") .. "," ..
"0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," ..
"1=" .. core.formspec_escape(defaulttexturedir .. "server_flags_creative.png") .. "," ..
"align=inline,padding=0.25,width=1.5;" ..
--~ PvP = Player versus Player
"image,tooltip=" .. fgettext("Damage / PvP") .. "," ..
"0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," ..
"1=" .. core.formspec_escape(defaulttexturedir .. "server_flags_damage.png") .. "," ..
"2=" .. core.formspec_escape(defaulttexturedir .. "server_flags_pvp.png") .. "," ..
"align=inline,padding=0.25,width=1.5;" ..
"color,align=inline,span=1;" ..
"text,align=inline,padding=1]" ..
"table[0.25,1;9.25,5.75;servers;"
if menudata.search_result then local servers = get_sorted_servers()
local favs = serverlistmgr.get_favorites()
for i = 1, #menudata.search_result do local dividers = {
local server = menudata.search_result[i] fav = "5,#ffff00," .. fgettext("Favorites") .. ",,,0,0,,",
for fav_id = 1, #favs do public = "6,#4bdd42," .. fgettext("Public Servers") .. ",,,0,0,,",
if server.address == favs[fav_id].address and incompatible = "7,"..mt_color_grey.."," .. fgettext("Incompatible Servers") .. ",,,0,0,,"
server.port == favs[fav_id].port then }
server.is_favorite = true local order = {"fav", "public", "incompatible"}
end
tabdata.lookup = {} -- maps row number to server
local rows = {}
for _, section in ipairs(order) do
local section_servers = servers[section]
if next(section_servers) ~= nil then
rows[#rows + 1] = dividers[section]
for _, server in ipairs(section_servers) do
tabdata.lookup[#rows + 1] = server
rows[#rows + 1] = render_serverlist_row(server)
end end
if i ~= 1 then
retval = retval .. ","
end
retval = retval .. render_serverlist_row(server, server.is_favorite)
end
elseif #serverlistmgr.servers > 0 then
local favs = serverlistmgr.get_favorites()
if #favs > 0 then
for i = 1, #favs do
for j = 1, #serverlistmgr.servers do
if serverlistmgr.servers[j].address == favs[i].address and
serverlistmgr.servers[j].port == favs[i].port then
table.insert(serverlistmgr.servers, i, table.remove(serverlistmgr.servers, j))
end
end
if favs[i].address ~= serverlistmgr.servers[i].address then
table.insert(serverlistmgr.servers, i, favs[i])
end
end
end
retval = retval .. render_serverlist_row(serverlistmgr.servers[1], (#favs > 0))
for i = 2, #serverlistmgr.servers do
retval = retval .. "," .. render_serverlist_row(serverlistmgr.servers[i], (i <= #favs))
end end
end end
retval = retval .. table.concat(rows, ",")
if tabdata.selected then if tabdata.selected then
retval = retval .. ";" .. tabdata.selected .. "]" retval = retval .. ";" .. tabdata.selected .. "]"
else else
retval = retval .. ";0]" retval = retval .. ";0]"
end end
return retval return retval, "size[15.5,7,false]real_coordinates[true]"
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
local function main_button_handler(tabview, fields, name, tabdata)
local serverlist = menudata.search_result or serverlistmgr.servers
local function search_server_list(input)
menudata.search_result = nil
if #serverlistmgr.servers < 2 then
return
end
-- setup the keyword list
local keywords = {}
for word in input:gmatch("%S+") do
word = word:gsub("(%W)", "%%%1")
table.insert(keywords, word)
end
if #keywords == 0 then
return
end
menudata.search_result = {}
-- Search the serverlist
local search_result = {}
for i = 1, #serverlistmgr.servers do
local server = serverlistmgr.servers[i]
local found = 0
for k = 1, #keywords do
local keyword = keywords[k]
if server.name then
local sername = server.name:lower()
local _, count = sername:gsub(keyword, keyword)
found = found + count * 4
end
if server.description then
local desc = server.description:lower()
local _, count = desc:gsub(keyword, keyword)
found = found + count * 2
end
end
if found > 0 then
local points = (#serverlistmgr.servers - i) / 5 + found
server.points = points
table.insert(search_result, server)
end
end
if #search_result == 0 then
return
end
table.sort(search_result, function(a, b)
return a.points > b.points
end)
menudata.search_result = search_result
end
local function set_selected_server(tabdata, idx, server)
-- reset selection
if idx == nil or server == nil then
tabdata.selected = nil
core.settings:set("address", "")
core.settings:set("remote_port", "30000")
return
end
local address = server.address
local port = server.port
gamedata.serverdescription = server.description
gamedata.fav = false
for _, fav in ipairs(serverlistmgr.get_favorites()) do
if address == fav.address and port == fav.port then
gamedata.fav = true
break
end
end
if address and port then
core.settings:set("address", address)
core.settings:set("remote_port", port)
end
tabdata.selected = idx
end
local function main_button_handler(tabview, fields, name, tabdata)
if fields.te_name then if fields.te_name then
gamedata.playername = fields.te_name gamedata.playername = fields.te_name
core.settings:set("name", fields.te_name) core.settings:set("name", fields.te_name)
end end
if fields.favorites then if fields.servers then
local event = core.explode_table_event(fields.favorites) local event = core.explode_table_event(fields.servers)
local fav = serverlist[event.row] local server = tabdata.lookup[event.row]
if event.type == "DCL" then if server then
if event.row <= #serverlist then if event.type == "DCL" then
if not is_server_protocol_compat_or_error( if not is_server_protocol_compat_or_error(
fav.proto_min, fav.proto_max) then server.proto_min, server.proto_max) then
return true return true
end end
gamedata.address = fav.address gamedata.address = server.address
gamedata.port = fav.port gamedata.port = server.port
gamedata.playername = fields.te_name gamedata.playername = fields.te_name
gamedata.selected_world = 0 gamedata.selected_world = 0
@ -162,84 +288,32 @@ local function main_button_handler(tabview, fields, name, tabdata)
gamedata.password = fields.te_pwd gamedata.password = fields.te_pwd
end end
gamedata.servername = fav.name gamedata.servername = server.name
gamedata.serverdescription = fav.description gamedata.serverdescription = server.description
if gamedata.address and gamedata.port then if gamedata.address and gamedata.port then
core.settings:set("address", gamedata.address) core.settings:set("address", gamedata.address)
core.settings:set("remote_port", gamedata.port) core.settings:set("remote_port", gamedata.port)
core.start() core.start()
end end
return true
end end
return true if event.type == "CHG" then
end set_selected_server(tabdata, event.row, server)
return true
if event.type == "CHG" then
if event.row <= #serverlist then
gamedata.fav = false
local favs = serverlistmgr.get_favorites()
local address = fav.address
local port = fav.port
gamedata.serverdescription = fav.description
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.settings:set("address", address)
core.settings:set("remote_port", port)
end
tabdata.selected = event.row
end end
return true
end end
end end
if fields.key_up or fields.key_down then
local fav_idx = core.get_table_index("favorites")
local fav = serverlist[fav_idx]
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 < #serverlistmgr.servers then
fav_idx = fav_idx + 1
end
else
fav_idx = 1
end
if not serverlistmgr.servers or not fav then
tabdata.selected = 0
return true
end
local address = fav.address
local port = fav.port
gamedata.serverdescription = fav.description
if address and port then
core.settings:set("address", address)
core.settings:set("remote_port", port)
end
tabdata.selected = fav_idx
return true
end
if fields.btn_delete_favorite then if fields.btn_delete_favorite then
local current_favorite = core.get_table_index("favorites") local idx = core.get_table_index("servers")
if not current_favorite then return end if not idx then return end
local server = tabdata.lookup[idx]
if not server then return end
serverlistmgr.delete_favorite(serverlistmgr.servers[current_favorite]) serverlistmgr.delete_favorite(server)
serverlistmgr.sync() -- the server at [idx+1] will be at idx once list is refreshed
tabdata.selected = nil set_selected_server(tabdata, idx, tabdata.lookup[idx+1])
core.settings:set("address", "")
core.settings:set("remote_port", "30000")
return true return true
end end
@ -250,63 +324,13 @@ local function main_button_handler(tabview, fields, name, tabdata)
end end
if fields.btn_mp_search or fields.key_enter_field == "te_search" then if fields.btn_mp_search or fields.key_enter_field == "te_search" then
tabdata.selected = 1
local input = fields.te_search:lower()
tabdata.search_for = fields.te_search tabdata.search_for = fields.te_search
search_server_list(fields.te_search:lower())
if #serverlistmgr.servers < 2 then if menudata.search_result then
return true -- first server in row 2 due to header
set_selected_server(tabdata, 2, menudata.search_result[1])
end end
menudata.search_result = {}
-- setup the keyword list
local keywords = {}
for word in input:gmatch("%S+") do
word = word:gsub("(%W)", "%%%1")
table.insert(keywords, word)
end
if #keywords == 0 then
menudata.search_result = nil
return true
end
-- Search the serverlist
local search_result = {}
for i = 1, #serverlistmgr.servers do
local server = serverlistmgr.servers[i]
local found = 0
for k = 1, #keywords do
local keyword = keywords[k]
if server.name then
local sername = server.name:lower()
local _, count = sername:gsub(keyword, keyword)
found = found + count * 4
end
if server.description then
local desc = server.description:lower()
local _, count = desc:gsub(keyword, keyword)
found = found + count * 2
end
end
if found > 0 then
local points = (#serverlistmgr.servers - i) / 5 + found
server.points = points
table.insert(search_result, server)
end
end
if #search_result > 0 then
table.sort(search_result, function(a, b)
return a.points > b.points
end)
menudata.search_result = search_result
local first_server = search_result[1]
core.settings:set("address", first_server.address)
core.settings:set("remote_port", first_server.port)
gamedata.serverdescription = first_server.description
end
return true return true
end end
@ -322,20 +346,22 @@ local function main_button_handler(tabview, fields, name, tabdata)
gamedata.address = fields.te_address gamedata.address = fields.te_address
gamedata.port = tonumber(fields.te_port) gamedata.port = tonumber(fields.te_port)
gamedata.selected_world = 0 gamedata.selected_world = 0
local fav_idx = core.get_table_index("favorites")
local fav = serverlist[fav_idx]
if fav_idx and fav_idx <= #serverlist and local idx = core.get_table_index("servers")
fav.address == gamedata.address and local server = idx and tabdata.lookup[idx]
fav.port == gamedata.port then
serverlistmgr.add_favorite(fav) set_selected_server(tabdata)
gamedata.servername = fav.name if server and server.address == gamedata.address and
gamedata.serverdescription = fav.description server.port == gamedata.port then
serverlistmgr.add_favorite(server)
gamedata.servername = server.name
gamedata.serverdescription = server.description
if not is_server_protocol_compat_or_error( if not is_server_protocol_compat_or_error(
fav.proto_min, fav.proto_max) then server.proto_min, server.proto_max) then
return true return true
end end
else else
@ -354,6 +380,7 @@ local function main_button_handler(tabview, fields, name, tabdata)
core.start() core.start()
return true return true
end end
return false return false
end end
@ -362,7 +389,6 @@ local function on_change(type, old_tab, new_tab)
serverlistmgr.sync() serverlistmgr.sync()
end end
--------------------------------------------------------------------------------
return { return {
name = "online", name = "online",
caption = fgettext("Join Game"), caption = fgettext("Join Game"),

View File

@ -15,6 +15,8 @@
--with this program; if not, write to the Free Software Foundation, Inc., --with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
local S = core.get_translator("__builtin")
local function get_bool_default(name, default) local function get_bool_default(name, default)
local val = core.settings:get_bool(name) local val = core.settings:get_bool(name)
if val == nil then if val == nil then
@ -40,9 +42,9 @@ function profiler.init_chatcommand()
instrumentation.init_chatcommand() instrumentation.init_chatcommand()
end end
local param_usage = "print [filter] | dump [filter] | save [format [filter]] | reset" local param_usage = S("print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset")
core.register_chatcommand("profiler", { core.register_chatcommand("profiler", {
description = "handle the profiler and profiling data", description = S("Handle the profiler and profiling data"),
params = param_usage, params = param_usage,
privs = { server=true }, privs = { server=true },
func = function(name, param) func = function(name, param)
@ -51,21 +53,19 @@ function profiler.init_chatcommand()
if command == "dump" then if command == "dump" then
core.log("action", reporter.print(sampler.profile, arg0)) core.log("action", reporter.print(sampler.profile, arg0))
return true, "Statistics written to action log" return true, S("Statistics written to action log.")
elseif command == "print" then elseif command == "print" then
return true, reporter.print(sampler.profile, arg0) return true, reporter.print(sampler.profile, arg0)
elseif command == "save" then elseif command == "save" then
return reporter.save(sampler.profile, args[1] or "txt", args[2]) return reporter.save(sampler.profile, args[1] or "txt", args[2])
elseif command == "reset" then elseif command == "reset" then
sampler.reset() sampler.reset()
return true, "Statistics were reset" return true, S("Statistics were reset.")
end end
return false, string.format( return false,
"Usage: %s\n" .. S("Usage: @1", param_usage) .. "\n" ..
"Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).", S("Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).")
param_usage
)
end end
}) })

View File

@ -15,6 +15,10 @@
--with this program; if not, write to the Free Software Foundation, Inc., --with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
local S = core.get_translator("__builtin")
-- Note: In this file, only messages are translated
-- but not the table itself, to keep it simple.
local DIR_DELIM, LINE_DELIM = DIR_DELIM, "\n" local DIR_DELIM, LINE_DELIM = DIR_DELIM, "\n"
local table, unpack, string, pairs, io, os = table, unpack, string, pairs, io, os local table, unpack, string, pairs, io, os = table, unpack, string, pairs, io, os
local rep, sprintf, tonumber = string.rep, string.format, tonumber local rep, sprintf, tonumber = string.rep, string.format, tonumber
@ -104,11 +108,11 @@ local TxtFormatter = Formatter:new {
end, end,
format = function(self, filter) format = function(self, filter)
local profile = self.profile local profile = self.profile
self:print("Values below show absolute/relative times spend per server step by the instrumented function.") self:print(S("Values below show absolute/relative times spend per server step by the instrumented function."))
self:print("A total of %d samples were taken", profile.stats_total.samples) self:print(S("A total of @1 sample(s) were taken.", profile.stats_total.samples))
if filter then if filter then
self:print("The output is limited to '%s'", filter) self:print(S("The output is limited to '@1'.", filter))
end end
self:print() self:print()
@ -259,19 +263,18 @@ function reporter.save(profile, format, filter)
local output, io_err = io.open(path, "w") local output, io_err = io.open(path, "w")
if not output then if not output then
return false, "Saving of profile failed with: " .. io_err return false, S("Saving of profile failed: @1", io_err)
end end
local content, err = serialize_profile(profile, format, filter) local content, err = serialize_profile(profile, format, filter)
if not content then if not content then
output:close() output:close()
return false, "Saving of profile failed with: " .. err return false, S("Saving of profile failed: @1", err)
end end
output:write(content) output:write(content)
output:close() output:close()
local logmessage = "Profile saved to " .. path core.log("action", "Profile saved to " .. path)
core.log("action", logmessage) return true, S("Profile saved to @1", path)
return true, logmessage
end end
return reporter return reporter

View File

@ -75,7 +75,7 @@ free_move (Flying) bool false
# If enabled, makes move directions relative to the player's pitch when flying or swimming. # If enabled, makes move directions relative to the player's pitch when flying or swimming.
pitch_move (Pitch move mode) bool false pitch_move (Pitch move mode) bool false
# Fast movement (via the "special" key). # Fast movement (via the "Aux1" key).
# This requires the "fast" privilege on the server. # This requires the "fast" privilege on the server.
fast_move (Fast movement) bool false fast_move (Fast movement) bool false
@ -99,14 +99,14 @@ invert_mouse (Invert mouse) bool false
# Mouse sensitivity multiplier. # Mouse sensitivity multiplier.
mouse_sensitivity (Mouse sensitivity) float 0.2 mouse_sensitivity (Mouse sensitivity) float 0.2
# If enabled, "special" key instead of "sneak" key is used for climbing down and # If enabled, "Aux1" key instead of "Sneak" key is used for climbing down and
# descending. # descending.
aux1_descends (Special key for climbing/descending) bool false aux1_descends (Aux1 key for climbing/descending) bool false
# Double-tapping the jump key toggles fly mode. # Double-tapping the jump key toggles fly mode.
doubletap_jump (Double tap jump for fly) bool false doubletap_jump (Double tap jump for fly) bool false
# If disabled, "special" key is used to fly fast if both fly and fast mode are # If disabled, "Aux1" key is used to fly fast if both fly and fast mode are
# enabled. # enabled.
always_fly_fast (Always fly and fast) bool true always_fly_fast (Always fly and fast) bool true
@ -135,9 +135,9 @@ touchscreen_threshold (Touch screen threshold) int 20 0 100
# If disabled, virtual joystick will center to first-touch's position. # If disabled, virtual joystick will center to first-touch's position.
fixed_virtual_joystick (Fixed virtual joystick) bool false fixed_virtual_joystick (Fixed virtual joystick) bool false
# (Android) Use virtual joystick to trigger "aux" button. # (Android) Use virtual joystick to trigger "Aux1" button.
# If enabled, virtual joystick will also tap "aux" button when out of main circle. # If enabled, virtual joystick will also tap "Aux1" button when out of main circle.
virtual_joystick_triggers_aux (Virtual joystick triggers aux button) bool false virtual_joystick_triggers_aux1 (Virtual joystick triggers Aux1 button) bool false
# Enable joysticks # Enable joysticks
enable_joysticks (Enable joysticks) bool false enable_joysticks (Enable joysticks) bool false
@ -203,7 +203,7 @@ keymap_special_inventory (Special inventory key) key KEY_KEY_O
# Key for moving fast in fast mode. # Key for moving fast in fast mode.
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
keymap_special1 (Special key) key KEY_KEY_E keymap_aux1 (Aux1 key) key KEY_KEY_E
# Key for opening the chat window. # Key for opening the chat window.
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
@ -463,6 +463,10 @@ keymap_decrease_viewing_range_min (View range decrease key) key -
[**Basic] [**Basic]
# Whether nametag backgrounds should be shown by default.
# Mods may still set a background.
show_nametag_backgrounds (Show nametag backgrounds by default) bool true
# Enable vertex buffer objects. # Enable vertex buffer objects.
# This should greatly improve graphics performance. # This should greatly improve graphics performance.
enable_vbo (VBO) bool true enable_vbo (VBO) bool true
@ -1144,6 +1148,10 @@ enable_rollback_recording (Rollback recording) bool false
# @name, @message, @timestamp (optional) # @name, @message, @timestamp (optional)
chat_message_format (Chat message format) string <@name> @message chat_message_format (Chat message format) string <@name> @message
# If the execution of a chat command takes longer than this specified time in
# seconds, add the time information to the chat command message
chatcommand_msg_time_threshold (Chat command time message threshold) float 0.1
# A message to be displayed to all clients when the server shuts down. # A message to be displayed to all clients when the server shuts down.
kick_msg_shutdown (Shutdown message) string Server shutting down. kick_msg_shutdown (Shutdown message) string Server shutting down.

View File

@ -6,7 +6,7 @@ uniform sampler2D textureFlags;
#define rightImage normalTexture #define rightImage normalTexture
#define maskImage textureFlags #define maskImage textureFlags
varying mediump vec2 varTexCoord; varying mediump vec4 varTexCoord;
void main(void) void main(void)
{ {

View File

@ -1,4 +1,4 @@
varying mediump vec2 varTexCoord; varying mediump vec4 varTexCoord;
void main(void) void main(void)
{ {

View File

@ -0,0 +1 @@
name = preview

View File

@ -12,8 +12,6 @@ if(ENABLE_SYSTEM_GMP)
else() else()
message (STATUS "Detecting GMP from system failed.") message (STATUS "Detecting GMP from system failed.")
endif() endif()
else()
message (STATUS "Detecting GMP from system disabled! (ENABLE_SYSTEM_GMP=0)")
endif() endif()
if(NOT USE_SYSTEM_GMP) if(NOT USE_SYSTEM_GMP)

View File

@ -42,15 +42,6 @@ if(WIN32)
NAMES ${GETTEXT_LIB_NAMES} NAMES ${GETTEXT_LIB_NAMES}
PATHS "${CUSTOM_GETTEXT_PATH}/lib" PATHS "${CUSTOM_GETTEXT_PATH}/lib"
DOC "GetText library") DOC "GetText library")
find_file(GETTEXT_DLL
NAMES libintl.dll intl.dll libintl3.dll intl3.dll
PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib"
DOC "gettext *intl*.dll")
find_file(GETTEXT_ICONV_DLL
NAMES libiconv2.dll
PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib"
DOC "gettext *iconv*.lib")
set(GETTEXT_REQUIRED_VARS ${GETTEXT_REQUIRED_VARS} GETTEXT_DLL GETTEXT_ICONV_DLL)
endif(WIN32) endif(WIN32)

View File

@ -1,44 +1,11 @@
mark_as_advanced(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL) mark_as_advanced(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL)
set(IRRLICHT_SOURCE_DIR "" CACHE PATH "Path to irrlicht source directory (optional)")
# Find include directory and libraries
# Find include directory if(TRUE)
if(NOT IRRLICHT_SOURCE_DIR STREQUAL "")
set(IRRLICHT_SOURCE_DIR_INCLUDE
"${IRRLICHT_SOURCE_DIR}/include"
)
set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a Irrlicht Irrlicht.lib)
if(WIN32)
if(MSVC)
set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-visualstudio")
set(IRRLICHT_LIBRARY_NAMES Irrlicht.lib)
else()
set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-gcc")
set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a libIrrlicht.dll.a)
endif()
else()
set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Linux")
set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a)
endif()
find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
PATHS
${IRRLICHT_SOURCE_DIR_INCLUDE}
NO_DEFAULT_PATH
)
find_library(IRRLICHT_LIBRARY NAMES ${IRRLICHT_LIBRARY_NAMES}
PATHS
${IRRLICHT_SOURCE_DIR_LIBS}
NO_DEFAULT_PATH
)
else()
find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
DOC "Path to the directory with Irrlicht includes"
PATHS PATHS
/usr/local/include/irrlicht /usr/local/include/irrlicht
/usr/include/irrlicht /usr/include/irrlicht
@ -46,7 +13,8 @@ else()
PATH_SUFFIXES "include/irrlicht" PATH_SUFFIXES "include/irrlicht"
) )
find_library(IRRLICHT_LIBRARY NAMES libIrrlicht.so libIrrlicht.a Irrlicht find_library(IRRLICHT_LIBRARY NAMES libIrrlicht Irrlicht
DOC "Path to the Irrlicht library file"
PATHS PATHS
/usr/local/lib /usr/local/lib
/usr/lib /usr/lib
@ -54,19 +22,14 @@ else()
) )
endif() endif()
# Users will likely need to edit these
mark_as_advanced(CLEAR IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR)
# On Windows, find the DLL for installation # On Windows, find the DLL for installation
if(WIN32) if(WIN32)
# If VCPKG_APPLOCAL_DEPS is ON, dll's are automatically handled by VCPKG # If VCPKG_APPLOCAL_DEPS is ON, dll's are automatically handled by VCPKG
if(NOT VCPKG_APPLOCAL_DEPS) if(NOT VCPKG_APPLOCAL_DEPS)
if(MSVC)
set(IRRLICHT_COMPILER "VisualStudio")
else()
set(IRRLICHT_COMPILER "gcc")
endif()
find_file(IRRLICHT_DLL NAMES Irrlicht.dll find_file(IRRLICHT_DLL NAMES Irrlicht.dll
PATHS
"${IRRLICHT_SOURCE_DIR}/bin/Win32-${IRRLICHT_COMPILER}"
DOC "Path of the Irrlicht dll (for installation)" DOC "Path of the Irrlicht dll (for installation)"
) )
endif() endif()

View File

@ -1,26 +1,25 @@
# Look for JSONCPP if asked to. # Look for JsonCpp, with fallback to bundeled version
# We use a bundled version by default because some distros ship versions of
# JSONCPP that cause segfaults and other memory errors when we link with them.
# See https://github.com/minetest/minetest/issues/1793
mark_as_advanced(JSON_LIBRARY JSON_INCLUDE_DIR) mark_as_advanced(JSON_LIBRARY JSON_INCLUDE_DIR)
option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JSONCPP. May cause segfaults and other memory errors!" FALSE) option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JsonCpp" TRUE)
set(USE_SYSTEM_JSONCPP FALSE)
if(ENABLE_SYSTEM_JSONCPP) if(ENABLE_SYSTEM_JSONCPP)
find_library(JSON_LIBRARY NAMES jsoncpp) find_library(JSON_LIBRARY NAMES jsoncpp)
find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp) find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp)
include(FindPackageHandleStandardArgs) if(JSON_LIBRARY AND JSON_INCLUDE_DIR)
find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR) message(STATUS "Using JsonCpp provided by system.")
set(USE_SYSTEM_JSONCPP TRUE)
if(JSON_FOUND)
message(STATUS "Using system JSONCPP library.")
endif() endif()
endif() endif()
if(NOT JSON_FOUND) if(NOT USE_SYSTEM_JSONCPP)
message(STATUS "Using bundled JSONCPP library.") message(STATUS "Using bundled JsonCpp library.")
set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp) set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp)
set(JSON_LIBRARY jsoncpp) set(JSON_LIBRARY jsoncpp)
add_subdirectory(lib/jsoncpp) add_subdirectory(lib/jsoncpp)
endif() endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)

View File

@ -1,4 +1,4 @@
Minetest Lua Client Modding API Reference 5.4.0 Minetest Lua Client Modding API Reference 5.5.0
================================================ ================================================
* More information at <http://www.minetest.net/> * More information at <http://www.minetest.net/>
* Developer Wiki: <http://dev.minetest.net/> * Developer Wiki: <http://dev.minetest.net/>

View File

@ -256,6 +256,9 @@ Subfolders with names starting with `_` or `.` are ignored.
If a subfolder contains a media file with the same name as a media file If a subfolder contains a media file with the same name as a media file
in one of its parents, the parent's file is used. in one of its parents, the parent's file is used.
Although it is discouraged, a mod can overwrite a media file of any mod that it
depends on by supplying a file with an equal name.
Naming conventions Naming conventions
------------------ ------------------
@ -2296,7 +2299,7 @@ Elements
* `frame duration`: Milliseconds between each frame. `0` means the frames don't advance. * `frame duration`: Milliseconds between each frame. `0` means the frames don't advance.
* `frame start` (Optional): The index of the frame to start on. Default `1`. * `frame start` (Optional): The index of the frame to start on. Default `1`.
### `model[<X>,<Y>;<W>,<H>;<name>;<mesh>;<textures>;<rotation X,Y>;<continuous>;<mouse control>;<frame loop range>]` ### `model[<X>,<Y>;<W>,<H>;<name>;<mesh>;<textures>;<rotation X,Y>;<continuous>;<mouse control>;<frame loop range>;<animation speed>]`
* Show a mesh model. * Show a mesh model.
* `name`: Element name that can be used for styling * `name`: Element name that can be used for styling
@ -2310,6 +2313,7 @@ Elements
* `frame loop range` (Optional): Range of the animation frames. * `frame loop range` (Optional): Range of the animation frames.
* Defaults to the full range of all available frames. * Defaults to the full range of all available frames.
* Syntax: `<begin>,<end>` * Syntax: `<begin>,<end>`
* `animation speed` (Optional): Sets the animation speed. Default 0 FPS.
### `item_image[<X>,<Y>;<W>,<H>;<item name>]` ### `item_image[<X>,<Y>;<W>,<H>;<item name>]`
@ -2675,7 +2679,7 @@ Elements
* `span=<value>`: number of following columns to affect * `span=<value>`: number of following columns to affect
(default: infinite). (default: infinite).
### `style[<selector 1>,<selector 2>;<prop1>;<prop2>;...]` ### `style[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]`
* Set the style for the element(s) matching `selector` by name. * Set the style for the element(s) matching `selector` by name.
* `selector` can be one of: * `selector` can be one of:
@ -2688,7 +2692,7 @@ Elements
* See [Styling Formspecs]. * See [Styling Formspecs].
### `style_type[<selector 1>,<selector 2>;<prop1>;<prop2>;...]` ### `style_type[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]`
* Set the style for the element(s) matching `selector` by type. * Set the style for the element(s) matching `selector` by type.
* `selector` can be one of: * `selector` can be one of:
@ -2761,10 +2765,10 @@ Styling Formspecs
Formspec elements can be themed using the style elements: Formspec elements can be themed using the style elements:
style[<name 1>,<name 2>;<prop1>;<prop2>;...] style[<name 1>,<name 2>,...;<prop1>;<prop2>;...]
style[<name 1>:<state>,<name 2>:<state>;<prop1>;<prop2>;...] style[<name 1>:<state>,<name 2>:<state>,...;<prop1>;<prop2>;...]
style_type[<type 1>,<type 2>;<prop1>;<prop2>;...] style_type[<type 1>,<type 2>,...;<prop1>;<prop2>;...]
style_type[<type 1>:<state>,<type 2>:<state>;<prop1>;<prop2>;...] style_type[<type 1>:<state>,<type 2>:<state>,...;<prop1>;<prop2>;...]
Where a prop is: Where a prop is:
@ -3267,7 +3271,6 @@ Helper functions
* returns true when the passed number represents NaN. * returns true when the passed number represents NaN.
* `minetest.get_us_time()` * `minetest.get_us_time()`
* returns time with microsecond precision. May not return wall time. * returns time with microsecond precision. May not return wall time.
* This value might overflow on certain 32-bit systems!
* `table.copy(table)`: returns a table * `table.copy(table)`: returns a table
* returns a deep copy of `table` * returns a deep copy of `table`
* `table.indexof(list, val)`: returns the smallest numerical index containing * `table.indexof(list, val)`: returns the smallest numerical index containing
@ -6041,18 +6044,18 @@ an itemstring, a table or `nil`.
stack). stack).
* `set_metadata(metadata)`: (DEPRECATED) Returns true. * `set_metadata(metadata)`: (DEPRECATED) Returns true.
* `get_description()`: returns the description shown in inventory list tooltips. * `get_description()`: returns the description shown in inventory list tooltips.
* The engine uses the same as this function for item descriptions. * The engine uses this when showing item descriptions in tooltips.
* Fields for finding the description, in order: * Fields for finding the description, in order:
* `description` in item metadata (See [Item Metadata].) * `description` in item metadata (See [Item Metadata].)
* `description` in item definition * `description` in item definition
* item name * item name
* `get_short_description()`: returns the short description. * `get_short_description()`: returns the short description or nil.
* Unlike the description, this does not include new lines. * Unlike the description, this does not include new lines.
* The engine uses the same as this function for short item descriptions.
* Fields for finding the short description, in order: * Fields for finding the short description, in order:
* `short_description` in item metadata (See [Item Metadata].) * `short_description` in item metadata (See [Item Metadata].)
* `short_description` in item definition * `short_description` in item definition
* first line of the description (See `get_description()`.) * first line of the description (From item meta or def, see `get_description()`.)
* Returns nil if none of the above are set
* `clear()`: removes all items from the stack, making it empty. * `clear()`: removes all items from the stack, making it empty.
* `replace(item)`: replace the contents of this stack. * `replace(item)`: replace the contents of this stack.
* `item` can also be an itemstring or table. * `item` can also be an itemstring or table.
@ -6276,15 +6279,21 @@ object you are working with still exists.
* `get_nametag_attributes()` * `get_nametag_attributes()`
* returns a table with the attributes of the nametag of an object * 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 = "", text = "",
color = {a=0..255, r=0..255, g=0..255, b=0..255},
bgcolor = {a=0..255, r=0..255, g=0..255, b=0..255},
} }
* `set_nametag_attributes(attributes)` * `set_nametag_attributes(attributes)`
* sets the attributes of the nametag of an object * sets the attributes of the nametag of an object
* `attributes`: * `attributes`:
{ {
color = ColorSpec,
text = "My Nametag", text = "My Nametag",
color = ColorSpec,
-- ^ Text color
bgcolor = ColorSpec or false,
-- ^ Sets background color of nametag
-- `false` will cause the background to be set automatically based on user settings
-- Default: false
} }
#### Lua entity only (no-op for other objects) #### Lua entity only (no-op for other objects)
@ -6958,9 +6967,13 @@ Player properties need to be saved manually.
-- For all other objects, a nil or empty string removes the nametag. -- For all other objects, a nil or empty string removes the nametag.
-- To hide a nametag, set its color alpha to zero. That will disable it entirely. -- To hide a nametag, set its color alpha to zero. That will disable it entirely.
nametag_color = <ColorSpec>, nametag_color = <ColorSpec>,
-- Sets color of nametag -- Sets text color of nametag
nametag_bgcolor = <ColorSpec>,
-- Sets background color of nametag
-- `false` will cause the background to be set automatically based on user settings.
-- Default: false
infotext = "", infotext = "",
-- By default empty, text to be shown when pointed at object -- By default empty, text to be shown when pointed at object
@ -7173,8 +7186,9 @@ Used by `minetest.register_node`, `minetest.register_craftitem`, and
short_description = "Steel Axe", short_description = "Steel Axe",
-- Must not contain new lines. -- Must not contain new lines.
-- Defaults to the first line of description. -- Defaults to nil.
-- See also: `get_short_description` in [`ItemStack`] -- Use an [`ItemStack`] to get the short description, eg:
-- ItemStack(itemname):get_short_description()
groups = {}, groups = {},
-- key = name, value = rating; rating = 1..3. -- key = name, value = rating; rating = 1..3.

View File

@ -1,4 +1,4 @@
Minetest Lua Mainmenu API Reference 5.4.0 Minetest Lua Mainmenu API Reference 5.5.0
========================================= =========================================
Introduction Introduction

Binary file not shown.

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,3 +0,0 @@
This is for testing loading textures from subfolders.
If it works correctly, the default_grass_side.png file in this folder is used but
default_grass.png is not overwritten by the file in this folder.

View File

@ -0,0 +1,7 @@
The dirt_with_grass folder is for testing loading textures from subfolders.
If it works correctly, the default_grass_side.png file in the folder is used but
default_grass.png is not overwritten by the file in the folder.
default_dirt.png should be overwritten by the default_dirt.png in the unittests
mod which depends on basenodes.

View File

@ -23,6 +23,18 @@ minetest.register_node("chest:chest", {
local inv = meta:get_inventory() local inv = meta:get_inventory()
return inv:is_empty("main") return inv:is_empty("main")
end, end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.chat_send_player(player:get_player_name(), "Allow put: " .. stack:to_string())
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.chat_send_player(player:get_player_name(), "Allow take: " .. stack:to_string())
return stack:get_count()
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.chat_send_player(player:get_player_name(), "On put: " .. stack:to_string())
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.chat_send_player(player:get_player_name(), "On take: " .. stack:to_string())
end,
}) })

View File

@ -215,5 +215,5 @@ minetest.register_chatcommand("test_place_nodes", {
}) })
core.register_on_chatcommand(function(name, command, params) core.register_on_chatcommand(function(name, command, params)
minetest.log("caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'") minetest.log("action", "caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'")
end) end)

View File

@ -103,23 +103,35 @@ minetest.register_entity("testentities:nametag", {
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
if staticdata ~= "" then if staticdata ~= "" then
self.color = minetest.deserialize(staticdata).color local data = minetest.deserialize(staticdata)
self.color = data.color
self.bgcolor = data.bgcolor
else else
self.color = { self.color = {
r = math.random(0, 255), r = math.random(0, 255),
g = math.random(0, 255), g = math.random(0, 255),
b = math.random(0, 255), b = math.random(0, 255),
} }
if math.random(0, 10) > 5 then
self.bgcolor = {
r = math.random(0, 255),
g = math.random(0, 255),
b = math.random(0, 255),
a = math.random(0, 255),
}
end
end end
assert(self.color) assert(self.color)
self.object:set_properties({ self.object:set_properties({
nametag = tostring(math.random(1000, 10000)), nametag = tostring(math.random(1000, 10000)),
nametag_color = self.color, nametag_color = self.color,
nametag_bgcolor = self.bgcolor,
}) })
end, end,
get_staticdata = function(self) get_staticdata = function(self)
return minetest.serialize({ color = self.color }) return minetest.serialize({ color = self.color, bgcolor = self.bgcolor })
end, end,
}) })

View File

@ -362,20 +362,51 @@ Number]
animated_image[5.5,0.5;5,2;;testformspec_animation.png;4;100] animated_image[5.5,0.5;5,2;;testformspec_animation.png;4;100]
animated_image[5.5,2.75;5,2;;testformspec_animation.jpg;4;100] animated_image[5.5,2.75;5,2;;testformspec_animation.jpg;4;100]
]],
-- Model
[[
formspec_version[3]
size[12,13]
style[m1;bgcolor=black] style[m1;bgcolor=black]
model[0.5,6;4,4;m1;testformspec_character.b3d;testformspec_character.png] style[m2;bgcolor=black]
model[5,6;4,4;m2;testformspec_chest.obj;default_chest_top.png,default_chest_top.png,default_chest_side.png,default_chest_side.png,default_chest_front.png,default_chest_inside.png;30,1;true;true] label[5,1;all defaults]
label[5,5.1;angle = 0, 180
continuous = false
mouse control = false
frame loop range = 0,30]
label[5,9.2;continuous = true
mouse control = true]
model[0.5,0.1;4,4;m1;testformspec_character.b3d;testformspec_character.png]
model[0.5,4.2;4,4;m2;testformspec_character.b3d;testformspec_character.png;0,180;false;false;0,30]
model[0.5,8.3;4,4;m3;testformspec_chest.obj;default_chest_top.png,default_chest_top.png,default_chest_side.png,default_chest_side.png,default_chest_front.png,default_chest_inside.png;30,1;true;true]
]], ]],
-- Scroll containers -- Scroll containers
"formspec_version[3]size[12,13]" .. "formspec_version[3]size[12,13]" ..
scroll_fs, scroll_fs,
-- Sound
[[
formspec_version[3]
size[12,13]
style[snd_btn;sound=soundstuff_mono]
style[snd_ibtn;sound=soundstuff_mono]
style[snd_drp;sound=soundstuff_mono]
style[snd_chk;sound=soundstuff_mono]
style[snd_tab;sound=soundstuff_mono]
button[0.5,0.5;2,1;snd_btn;Sound]
image_button[0.5,2;2,1;testformspec_item.png;snd_ibtn;Sound]
dropdown[0.5,4;4;snd_drp;Sound,Two,Three;]
checkbox[0.5,5.5.5;snd_chk;Sound;]
tabheader[0.5,7;8,0.65;snd_tab;Soundtab1,Soundtab2,Soundtab3;1;false;false]
]],
} }
local function show_test_formspec(pname, page_id) local function show_test_formspec(pname, page_id)
page_id = page_id or 2 page_id = page_id or 2
local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Invs,Anim,ScrollC;" .. page_id .. ";false;false]" local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Invs,Anim,Model,ScrollC,Sound;" .. page_id .. ";false;false]"
minetest.show_formspec(pname, "testformspec:formspec", fs) minetest.show_formspec(pname, "testformspec:formspec", fs)
end end

View File

@ -33,6 +33,13 @@ Usage:
* Punch node: Make it fall * Punch node: Make it fall
* Place: Try to teleport up to 2 units upwards, then make it fall * Place: Try to teleport up to 2 units upwards, then make it fall
## Node Meta Editor
Edit and view metadata of nodes.
Usage:
* Punch: Open node metadata editor
## Entity Rotator ## Entity Rotator
Changes the entity rotation (with `set_rotation`). Changes the entity rotation (with `set_rotation`).
@ -90,6 +97,13 @@ Usage:
* Place: Increase move distance * Place: Increase move distance
* Sneak+place: Decrease move distance * Sneak+place: Decrease move distance
## Children Getter
Shows list of objects that are attached to an object (aka "children") in chat.
Usage:
* Punch object: Show children of punched object
* Punch air: Show your own children
## Entity Visual Scaler ## Entity Visual Scaler
Change visual size of entities Change visual size of entities
@ -97,3 +111,10 @@ Usage:
* Punch entity to increase visual size * Punch entity to increase visual size
* Sneak+punch entity to decrease visual size * Sneak+punch entity to decrease visual size
## Light Tool
Show light level of node.
Usage:
* Punch: Show light info of node in front of the punched node's side
* Place: Show light info of the node that you touched

View File

@ -3,8 +3,6 @@ local F = minetest.formspec_escape
dofile(minetest.get_modpath("testtools") .. "/light.lua") dofile(minetest.get_modpath("testtools") .. "/light.lua")
-- TODO: Add a Node Metadata tool
minetest.register_tool("testtools:param2tool", { minetest.register_tool("testtools:param2tool", {
description = S("Param2 Tool") .."\n".. description = S("Param2 Tool") .."\n"..
S("Modify param2 value of nodes") .."\n".. S("Modify param2 value of nodes") .."\n"..
@ -111,25 +109,6 @@ minetest.register_tool("testtools:node_setter", {
end, end,
}) })
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "testtools:node_setter" then
local playername = player:get_player_name()
local witem = player:get_wielded_item()
if witem:get_name() == "testtools:node_setter" then
if fields.nodename and fields.param2 then
local param2 = tonumber(fields.param2)
if not param2 then
return
end
local meta = witem:get_meta()
meta:set_string("node", fields.nodename)
meta:set_int("node_param2", param2)
player:set_wielded_item(witem)
end
end
end
end)
minetest.register_tool("testtools:remover", { minetest.register_tool("testtools:remover", {
description = S("Remover") .."\n".. description = S("Remover") .."\n"..
S("Punch: Remove pointed node or object"), S("Punch: Remove pointed node or object"),
@ -634,6 +613,54 @@ minetest.register_tool("testtools:object_attacher", {
end, end,
}) })
local function print_object(obj)
if obj:is_player() then
return "player '"..obj:get_player_name().."'"
elseif obj:get_luaentity() then
return "LuaEntity '"..obj:get_luaentity().name.."'"
else
return "object"
end
end
minetest.register_tool("testtools:children_getter", {
description = S("Children Getter") .."\n"..
S("Shows list of objects attached to object") .."\n"..
S("Punch object to show its 'children'") .."\n"..
S("Punch air to show your own 'children'"),
inventory_image = "testtools_children_getter.png",
groups = { testtool = 1, disable_repair = 1 },
on_use = function(itemstack, user, pointed_thing)
if user and user:is_player() then
local name = user:get_player_name()
local selected_object
local self_name
if pointed_thing.type == "object" then
selected_object = pointed_thing.ref
elseif pointed_thing.type == "nothing" then
selected_object = user
else
return
end
self_name = print_object(selected_object)
local children = selected_object:get_children()
local ret = ""
for c=1, #children do
ret = ret .. "* " .. print_object(children[c])
if c < #children then
ret = ret .. "\n"
end
end
if ret == "" then
ret = S("No children attached to @1.", self_name)
else
ret = S("Children of @1:", self_name) .. "\n" .. ret
end
minetest.chat_send_player(user:get_player_name(), ret)
end
end,
})
-- Use loadstring to parse param as a Lua value -- Use loadstring to parse param as a Lua value
local function use_loadstring(param, player) local function use_loadstring(param, player)
-- For security reasons, require 'server' priv, just in case -- For security reasons, require 'server' priv, just in case
@ -666,6 +693,68 @@ local function use_loadstring(param, player)
return true, errOrResult return true, errOrResult
end end
-- Node Meta Editor
local node_meta_posses = {}
local node_meta_latest_keylist = {}
local function show_node_meta_formspec(user, pos, key, value, keylist)
local textlist
if keylist then
textlist = "textlist[0,0.5;2.5,6.5;keylist;"..keylist.."]"
else
textlist = ""
end
minetest.show_formspec(user:get_player_name(),
"testtools:node_meta_editor",
"size[15,9]"..
"label[0,0;"..F(S("Current keys:")).."]"..
textlist..
"field[3,0.5;12,1;key;"..F(S("Key"))..";"..F(key).."]"..
"textarea[3,1.5;12,6;value;"..F(S("Value (use empty value to delete key)"))..";"..F(value).."]"..
"button[0,8;3,1;get;"..F(S("Get value")).."]"..
"button[4,8;3,1;set;"..F(S("Set value")).."]"..
"label[0,7.2;"..F(S("pos = @1", minetest.pos_to_string(pos))).."]")
end
local function get_node_meta_keylist(meta, playername, escaped)
local keys = {}
local ekeys = {}
local mtable = meta:to_table()
for k,_ in pairs(mtable.fields) do
table.insert(keys, k)
if escaped then
table.insert(ekeys, F(k))
else
table.insert(ekeys, k)
end
end
if playername then
node_meta_latest_keylist[playername] = keys
end
return table.concat(ekeys, ",")
end
minetest.register_tool("testtools:node_meta_editor", {
description = S("Node Meta Editor") .. "\n" ..
S("Place: Edit node metadata"),
inventory_image = "testtools_node_meta_editor.png",
groups = { testtool = 1, disable_repair = 1 },
on_place = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
if not user:is_player() then
return itemstack
end
local pos = pointed_thing.under
node_meta_posses[user:get_player_name()] = pos
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
show_node_meta_formspec(user, pos, "", "", get_node_meta_keylist(meta, user:get_player_name(), true))
return itemstack
end,
})
minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.register_on_player_receive_fields(function(player, formname, fields)
if not (player and player:is_player()) then if not (player and player:is_player()) then
return return
@ -728,5 +817,70 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
editor_formspec(name, selected_objects[name], prop_to_string(props[key]), sel) editor_formspec(name, selected_objects[name], prop_to_string(props[key]), sel)
return return
end end
elseif formname == "testtools:node_setter" then
local playername = player:get_player_name()
local witem = player:get_wielded_item()
if witem:get_name() == "testtools:node_setter" then
if fields.nodename and fields.param2 then
local param2 = tonumber(fields.param2)
if not param2 then
return
end
local meta = witem:get_meta()
meta:set_string("node", fields.nodename)
meta:set_int("node_param2", param2)
player:set_wielded_item(witem)
end
end
elseif formname == "testtools:node_meta_editor" then
local name = player:get_player_name()
local pos = node_meta_posses[name]
if fields.keylist then
local evnt = minetest.explode_textlist_event(fields.keylist)
if evnt.type == "DCL" or evnt.type == "CHG" then
local keylist_table = node_meta_latest_keylist[name]
if not pos then
return
end
local meta = minetest.get_meta(pos)
if not keylist_table then
return
end
if #keylist_table == 0 then
return
end
local key = keylist_table[evnt.index]
local value = meta:get_string(key)
local keylist_escaped = {}
for k,v in pairs(keylist_table) do
keylist_escaped[k] = F(v)
end
local keylist = table.concat(keylist_escaped, ",")
show_node_meta_formspec(player, pos, key, value, keylist)
return
end
elseif fields.key and fields.key ~= "" and fields.value then
if not pos then
return
end
local meta = minetest.get_meta(pos)
if fields.get then
local value = meta:get_string(fields.key)
show_node_meta_formspec(player, pos, fields.key, value,
get_node_meta_keylist(meta, name, true))
return
elseif fields.set then
meta:set_string(fields.key, fields.value)
show_node_meta_formspec(player, pos, fields.key, fields.value,
get_node_meta_keylist(meta, name, true))
return
end
end
end end
end) end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
node_meta_latest_keylist[name] = nil
node_meta_posses[name] = nil
end)

View File

@ -1,22 +1,37 @@
local S = minetest.get_translator("testtools") local S = minetest.get_translator("testtools")
minetest.register_tool("testtools:lighttool", { local function get_func(is_place)
description = S("Light tool"), return function(itemstack, user, pointed_thing)
inventory_image = "testtools_lighttool.png", local pos
groups = { testtool = 1, disable_repair = 1 }, if is_place then
on_use = function(itemstack, user, pointed_thing) pos = pointed_thing.under
local pos = pointed_thing.above else
pos = pointed_thing.above
end
if pointed_thing.type ~= "node" or not pos then if pointed_thing.type ~= "node" or not pos then
return return
end end
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local pstr = minetest.pos_to_string(pos)
local time = minetest.get_timeofday() local time = minetest.get_timeofday()
local sunlight = minetest.get_natural_light(pos) local sunlight = minetest.get_natural_light(pos)
local artificial = minetest.get_artificial_light(node.param1) local artificial = minetest.get_artificial_light(node.param1)
local message = ("param1 0x%02x | time %.5f | sunlight %d | artificial %d") local message = ("pos=%s | param1=0x%02x | " ..
:format(node.param1, time, sunlight, artificial) "sunlight=%d | artificial=%d | timeofday=%.5f" )
:format(pstr, node.param1, sunlight, artificial, time)
minetest.chat_send_player(user:get_player_name(), message) minetest.chat_send_player(user:get_player_name(), message)
end end
end
minetest.register_tool("testtools:lighttool", {
description = S("Light Tool") .. "\n" ..
S("Show light values of node") .. "\n" ..
S("Punch: Light of node above touched node") .. "\n" ..
S("Place: Light of touched node itself"),
inventory_image = "testtools_lighttool.png",
groups = { testtool = 1, disable_repair = 1 },
on_use = get_func(false),
on_place = get_func(true),
}) })

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

View File

@ -26,15 +26,22 @@ minetest.register_chatcommand("item_description", {
}) })
function unittests.test_short_desc() function unittests.test_short_desc()
local function get_short_description(item)
return ItemStack(item):get_short_description()
end
local stack = ItemStack("unittests:colorful_pick") local stack = ItemStack("unittests:colorful_pick")
assert(stack:get_short_description() == "Colorful Pickaxe") assert(stack:get_short_description() == "Colorful Pickaxe")
assert(stack:get_short_description() == minetest.registered_items["unittests:colorful_pick"].short_description) assert(get_short_description("unittests:colorful_pick") == "Colorful Pickaxe")
assert(minetest.registered_items["unittests:colorful_pick"].short_description == nil)
assert(stack:get_description() == full_description) assert(stack:get_description() == full_description)
assert(stack:get_description() == minetest.registered_items["unittests:colorful_pick"].description) assert(stack:get_description() == minetest.registered_items["unittests:colorful_pick"].description)
stack:get_meta():set_string("description", "Hello World") stack:get_meta():set_string("description", "Hello World")
assert(stack:get_short_description() == "Colorful Pickaxe") assert(stack:get_short_description() == "Hello World")
assert(stack:get_description() == "Hello World") assert(stack:get_description() == "Hello World")
assert(get_short_description(stack) == "Hello World")
assert(get_short_description("unittests:colorful_pick") == "Colorful Pickaxe")
stack:get_meta():set_string("short_description", "Foo Bar") stack:get_meta():set_string("short_description", "Foo Bar")
assert(stack:get_short_description() == "Foo Bar") assert(stack:get_short_description() == "Foo Bar")

View File

@ -1,2 +1,3 @@
name = unittests name = unittests
description = Adds automated unit tests for the engine description = Adds automated unit tests for the engine
depends = basenodes

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

View File

@ -503,6 +503,11 @@
### Basic ### Basic
# Whether nametag backgrounds should be shown by default.
# Mods may still set a background.
# type: bool
# show_nametag_backgrounds = true
# Enable vertex buffer objects. # Enable vertex buffer objects.
# This should greatly improve graphics performance. # This should greatly improve graphics performance.
# type: bool # type: bool
@ -1298,7 +1303,7 @@
# type: bool # type: bool
# enable_damage = false # enable_damage = false
# Enable creative mode for new created maps. # Enable creative mode for all players
# type: bool # type: bool
# creative_mode = false # creative_mode = false

View File

@ -8,7 +8,13 @@
<string>minetest</string> <string>minetest</string>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string>dragonfire-icon.icns</string> <string>dragonfire-icon.icns</string>
<key>CFBundleName</key>
<string>Minetest</string>
<key>CFBundleDisplayName</key>
<string>Minetest</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>net.minetest.minetest</string> <string>net.minetest.minetest</string>
<key>NSHighResolutionCapable</key>
<false/>
</dict> </dict>
</plist> </plist>

View File

@ -2,8 +2,8 @@ Section: games
Priority: extra Priority: extra
Standards-Version: 3.6.2 Standards-Version: 3.6.2
Package: minetest-staging Package: minetest-staging
Version: 0.4.15-DATEPLACEHOLDER Version: 5.4.0-DATEPLACEHOLDER
Depends: libc6, libcurl3-gnutls, libfreetype6, libirrlicht1.8, libjsoncpp1, LEVELDB_PLACEHOLDER, liblua5.1-0, libluajit-5.1-2, libopenal1, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, zlib1g Depends: libc6, libcurl3-gnutls, libfreetype6, libgl1, JPEG_PLACEHOLDER, libjsoncpp1, LEVELDB_PLACEHOLDER, libopenal1, libpng16-16, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, libxxf86vm1, zlib1g
Maintainer: Loic Blot <loic.blot@unix-experience.fr> Maintainer: Loic Blot <loic.blot@unix-experience.fr>
Homepage: https://www.minetest.net/ Homepage: https://www.minetest.net/
Vcs-Git: https://github.com/minetest/minetest.git Vcs-Git: https://github.com/minetest/minetest.git
@ -12,15 +12,12 @@ Architecture: amd64
Build-Depends: Build-Depends:
cmake, cmake,
gettext, gettext,
libbz2-dev,
libcurl4-gnutls-dev, libcurl4-gnutls-dev,
libfreetype6-dev, libfreetype6-dev,
libglu1-mesa-dev, libgl1-mesa-dev,
libirrlicht-dev (>= 1.7.0),
libjpeg-dev, libjpeg-dev,
libjsoncpp-dev, libjsoncpp-dev,
libleveldb-dev, libleveldb-dev,
libluajit-5.1-dev | liblua5.1-dev,
libogg-dev, libogg-dev,
libopenal-dev, libopenal-dev,
libpng-dev, libpng-dev,
@ -28,7 +25,7 @@ Build-Depends:
libvorbis-dev, libvorbis-dev,
libx11-dev, libx11-dev,
zlib1g-dev zlib1g-dev
Description: Multiplayer infinite-world block sandbox (server) Description: Multiplayer infinite-world block sandbox game
Minetest is a minecraft-inspired game written from scratch and licensed Minetest is a minecraft-inspired game written from scratch and licensed
under the LGPL (version 2.1 or later). It supports both survival and creative under the LGPL (version 2.1 or later). It supports both survival and creative
modes along with multiplayer support, dynamic lighting, and an "infinite" map modes along with multiplayer support, dynamic lighting, and an "infinite" map

View File

@ -62,6 +62,6 @@
<translation type="gettext">minetest</translation> <translation type="gettext">minetest</translation>
<update_contact>sfan5@live.de</update_contact> <update_contact>sfan5@live.de</update_contact>
<releases> <releases>
<release date="2019-10-12" version="5.1.0"/> <release date="2021-02-23" version="5.4.0"/>
</releases> </releases>
</component> </component>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-30 21:13+0100\n" "POT-Creation-Date: 2021-02-23 19:03+0100\n"
"PO-Revision-Date: 2020-08-04 04:41+0000\n" "PO-Revision-Date: 2020-08-04 04:41+0000\n"
"Last-Translator: atomicbeef <teddyg522@gmail.com>\n" "Last-Translator: atomicbeef <teddyg522@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/minetest/" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/minetest/"
@ -709,6 +709,10 @@ msgstr ""
msgid "Loading..." msgid "Loading..."
msgstr "Зарежда..." msgstr "Зарежда..."
#: builtin/mainmenu/serverlistmgr.lua
msgid "Public server list is disabled"
msgstr ""
#: builtin/mainmenu/serverlistmgr.lua #: builtin/mainmenu/serverlistmgr.lua
msgid "Try reenabling public serverlist and check your internet connection." msgid "Try reenabling public serverlist and check your internet connection."
msgstr "" msgstr ""
@ -1109,7 +1113,7 @@ msgstr ""
#. When in doubt, test your translation. #. When in doubt, test your translation.
#: src/client/fontengine.cpp #: src/client/fontengine.cpp
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr "no"
#: src/client/game.cpp #: src/client/game.cpp
msgid "" msgid ""
@ -1940,7 +1944,7 @@ msgstr ""
#. language code (e.g. "de" for German). #. language code (e.g. "de" for German).
#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
msgid "LANG_CODE" msgid "LANG_CODE"
msgstr "" msgstr "bg"
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
@ -2849,7 +2853,7 @@ msgid "Enable console window"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Enable creative mode for new created maps." msgid "Enable creative mode for all players"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5550,6 +5554,10 @@ msgid ""
"A restart is required after changing this." "A restart is required after changing this."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Show nametag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Shutdown message" msgid "Shutdown message"
msgstr "" msgstr ""
@ -6223,6 +6231,12 @@ msgid ""
"If disabled, bitmap and XML vectors fonts are used instead." "If disabled, bitmap and XML vectors fonts are used instead."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Whether nametag backgrounds should be shown by default.\n"
"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock." msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Dhivehi (Minetest)\n" "Project-Id-Version: Dhivehi (Minetest)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-13 23:17+0200\n" "POT-Creation-Date: 2021-02-23 19:03+0100\n"
"PO-Revision-Date: 2019-11-10 15:04+0000\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n"
"Last-Translator: Krock <mk939@ymail.com>\n" "Last-Translator: Krock <mk939@ymail.com>\n"
"Language-Team: Dhivehi <https://hosted.weblate.org/projects/minetest/" "Language-Team: Dhivehi <https://hosted.weblate.org/projects/minetest/"
@ -48,10 +48,6 @@ msgstr "aa gulhumeh"
msgid "The server has requested a reconnect:" msgid "The server has requested a reconnect:"
msgstr "ސަާވަރ އިން ރިކަނެކްޓަކަށް އެދެފި:" msgstr "ސަާވަރ އިން ރިކަނެކްޓަކަށް އެދެފި:"
#: builtin/mainmenu/common.lua src/client/game.cpp
msgid "Loading..."
msgstr "ލޯޑްވަނީ..."
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. " msgid "Protocol version mismatch. "
msgstr "ޕްރޮޓޮކޯލް ވާޝަން ފުށުއެރުމެއް. " msgstr "ޕްރޮޓޮކޯލް ވާޝަން ފުށުއެރުމެއް. "
@ -64,10 +60,6 @@ msgstr "ސާވަރ އިން ޕްރޮޓޮކޯލް ވާޝަން 1$ ތަންފީޒ
msgid "Server supports protocol versions between $1 and $2. " msgid "Server supports protocol versions between $1 and $2. "
msgstr "$1 އާއި 2$ ދެމެދުގެ ޕްރޮޓޮކޯލް ވާޝަންތައް ސާވަރ ސަިޕޯޓް ކުރޭ. " msgstr "$1 އާއި 2$ ދެމެދުގެ ޕްރޮޓޮކޯލް ވާޝަންތައް ސާވަރ ސަިޕޯޓް ކުރޭ. "
#: builtin/mainmenu/common.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr "ޕަބްލިކް ސާވަރ ލިސްޓު އަލުން ޖައްސަވާ.އަދި އިންޓަނެޓް ކަނެކްޝަން ޗެކްކުރައްވާ."
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "We only support protocol version $1." msgid "We only support protocol version $1."
msgstr "އަޅުގަނޑުމެން ހަމައެކަނި ސަޕޯޓްކުރަނީ ޕްރޮޓޮކޯލް ވާޝަން 1$." msgstr "އަޅުގަނޑުމެން ހަމައެކަނި ސަޕޯޓްކުރަނީ ޕްރޮޓޮކޯލް ވާޝަން 1$."
@ -76,7 +68,8 @@ msgstr "އަޅުގަނޑުމެން ހަމައެކަނި ސަޕޯޓްކުރަނީ
msgid "We support protocol versions between version $1 and $2." msgid "We support protocol versions between version $1 and $2."
msgstr "އަޅުގަނޑުމެން 1$ އާއި 2$ އާއި ދެމެދުގެ ޕޮރޮޓޮކޯލް ވާޝަންތައް ސަޕޯޓް ކުރަން." msgstr "އަޅުގަނޑުމެން 1$ އާއި 2$ އާއި ދެމެދުގެ ޕޮރޮޓޮކޯލް ވާޝަންތައް ސަޕޯޓް ކުރަން."
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_create_world.lua
#: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_content.lua
#: builtin/mainmenu/dlg_delete_world.lua #: builtin/mainmenu/dlg_delete_world.lua
#: builtin/mainmenu/dlg_rename_modpack.lua #: builtin/mainmenu/dlg_rename_modpack.lua
@ -86,7 +79,8 @@ msgstr "އަޅުގަނޑުމެން 1$ އާއި 2$ އާއި ދެމެދުގެ ޕޮ
msgid "Cancel" msgid "Cancel"
msgstr "ކެންސަލް" msgstr "ކެންސަލް"
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/tab_content.lua
msgid "Dependencies:" msgid "Dependencies:"
msgstr "ބަރޯސާވާ(ޑިޕެންޑެންސީޒް):" msgstr "ބަރޯސާވާ(ޑިޕެންޑެންސީޒް):"
@ -161,14 +155,54 @@ msgstr "ދުނިޔެ:"
msgid "enabled" msgid "enabled"
msgstr "ޖައްސާފަ" msgstr "ޖައްސާފަ"
#: builtin/mainmenu/dlg_contentstore.lua
msgid "\"$1\" already exists. Would you like to overwrite it?"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 and $2 dependencies will be installed."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 by $2"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid ""
"$1 downloading,\n"
"$2 queued"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "$1 downloading..."
msgstr "ލޯޑްވަނީ..."
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 required dependencies could not be found."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 will be installed, and $2 dependencies will be skipped."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "All packages" msgid "All packages"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Already installed"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Back to Main Menu" msgid "Back to Main Menu"
msgstr "އެނބުރި މެއިން މެނޫއަށް" msgstr "އެނބުރި މެއިން މެނޫއަށް"
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "Base Game:"
msgstr "ގޭމް ހޮސްޓްކުރޭ"
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "ContentDB is not available when Minetest was compiled without cURL" msgid "ContentDB is not available when Minetest was compiled without cURL"
msgstr "" msgstr ""
@ -191,6 +225,16 @@ msgstr "ގޭމްތައް"
msgid "Install" msgid "Install"
msgstr "އަޅާ" msgstr "އަޅާ"
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "Install $1"
msgstr "އަޅާ"
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "Install missing dependencies"
msgstr "ލާޒިމުނޫން ޑިޕެންޑެންސީތައް:"
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Mods" msgid "Mods"
@ -205,9 +249,24 @@ msgid "No results"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "No updates"
msgid "Search" msgstr ""
msgstr "ހޯދާ"
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Not found"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Overwrite"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Please check that the base game is correct."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Queued"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Texture packs" msgid "Texture packs"
@ -222,7 +281,11 @@ msgid "Update"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "View" msgid "Update All [$1]"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "View more information in a web browser"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_create_world.lua
@ -520,6 +583,10 @@ msgstr "ޑިފޯލްޓައަށް ރައްދުކުރޭ"
msgid "Scale" msgid "Scale"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Search"
msgstr "ހޯދާ"
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy #, fuzzy
msgid "Select directory" msgid "Select directory"
@ -643,6 +710,18 @@ msgstr "$1 $2އަށް ނޭޅުނު"
msgid "Unable to install a modpack as a $1" msgid "Unable to install a modpack as a $1"
msgstr "$1 $2އަށް ނޭޅުނު" msgstr "$1 $2އަށް ނޭޅުނު"
#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
msgid "Loading..."
msgstr "ލޯޑްވަނީ..."
#: builtin/mainmenu/serverlistmgr.lua
msgid "Public server list is disabled"
msgstr ""
#: builtin/mainmenu/serverlistmgr.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr "ޕަބްލިކް ސާވަރ ލިސްޓު އަލުން ޖައްސަވާ.އަދި އިންޓަނެޓް ކަނެކްޝަން ޗެކްކުރައްވާ."
#: builtin/mainmenu/tab_content.lua #: builtin/mainmenu/tab_content.lua
msgid "Browse online content" msgid "Browse online content"
msgstr "" msgstr ""
@ -699,6 +778,17 @@ msgstr ""
msgid "Credits" msgid "Credits"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_credits.lua
#, fuzzy
msgid "Open User Data Directory"
msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
#: builtin/mainmenu/tab_credits.lua
msgid ""
"Opens the directory that contains user-provided worlds, games, mods,\n"
"and texture packs in a file manager / explorer."
msgstr ""
#: builtin/mainmenu/tab_credits.lua #: builtin/mainmenu/tab_credits.lua
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
@ -716,14 +806,10 @@ msgid "Bind Address"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Configure"
msgstr "ބަދަލުގެނޭ"
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua
msgid "Creative Mode" msgid "Creative Mode"
msgstr "ކްރިއޭޓިވް މޯޑް" msgstr "ކްރިއޭޓިވް މޯޑް"
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_local.lua
msgid "Enable Damage" msgid "Enable Damage"
msgstr "ގެއްލުން ޖައްސާ" msgstr "ގެއްލުން ޖައްސާ"
@ -740,8 +826,8 @@ msgid "Install games from ContentDB"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Name/Password" msgid "Name"
msgstr "ޕާސްވޯޑް / ނަން" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "New" msgid "New"
@ -751,6 +837,11 @@ msgstr "އައު"
msgid "No world created or selected!" msgid "No world created or selected!"
msgstr "އެއްވެސް ދުނިޔެއެއް އުފެދިފައެއް ނުވަތަ އިހްތިޔާރުވެފައެއް ނެޠް!" msgstr "އެއްވެސް ދުނިޔެއެއް އުފެދިފައެއް ނުވަތަ އިހްތިޔާރުވެފައެއް ނެޠް!"
#: builtin/mainmenu/tab_local.lua
#, fuzzy
msgid "Password"
msgstr "ޕާސްވޯޑް / ނަން"
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Play Game" msgid "Play Game"
msgstr "ގޭމް ކުޅޭ" msgstr "ގޭމް ކުޅޭ"
@ -759,6 +850,11 @@ msgstr "ގޭމް ކުޅޭ"
msgid "Port" msgid "Port"
msgstr "ޕޯޓް" msgstr "ޕޯޓް"
#: builtin/mainmenu/tab_local.lua
#, fuzzy
msgid "Select Mods"
msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:"
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Select World:" msgid "Select World:"
msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:" msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:"
@ -776,23 +872,23 @@ msgstr "ގޭމް ހޮސްޓްކުރޭ"
msgid "Address / Port" msgid "Address / Port"
msgstr "އެޑްރެސް / ޕޯޓް" msgstr "އެޑްރެސް / ޕޯޓް"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Connect" msgid "Connect"
msgstr "ކަނެކްޓްކުރޭ" msgstr "ކަނެކްޓްކުރޭ"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Creative mode" msgid "Creative mode"
msgstr "ކްރިއޭޓިވް މޯޑް" msgstr "ކްރިއޭޓިވް މޯޑް"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Damage enabled" msgid "Damage enabled"
msgstr "އަނިޔާވުން ޖައްސާފައި" msgstr "އަނިޔާވުން ޖައްސާފައި"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Del. Favorite" msgid "Del. Favorite"
msgstr "އެންމެ ގަޔާނުވޭ" msgstr "އެންމެ ގަޔާނުވޭ"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Favorite" msgid "Favorite"
msgstr "އެންމެ ގަޔާވޭ" msgstr "އެންމެ ގަޔާވޭ"
@ -801,16 +897,16 @@ msgstr "އެންމެ ގަޔާވޭ"
msgid "Join Game" msgid "Join Game"
msgstr "ގޭމް ހޮސްޓްކުރޭ" msgstr "ގޭމް ހޮސްޓްކުރޭ"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Name / Password" msgid "Name / Password"
msgstr "ޕާސްވޯޑް / ނަން" msgstr "ޕާސްވޯޑް / ނަން"
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Ping" msgid "Ping"
msgstr "" msgstr ""
#. ~ PvP = Player versus Player #. ~ PvP = Player versus Player
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "PvP enabled" msgid "PvP enabled"
msgstr "ޕީ.ވީ.ޕީ ޖައްސާ" msgstr "ޕީ.ވީ.ޕީ ޖައްސާ"
@ -838,10 +934,6 @@ msgstr ""
msgid "Antialiasing:" msgid "Antialiasing:"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Are you sure to reset your singleplayer world?"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Autosave Screen Size" msgid "Autosave Screen Size"
msgstr "" msgstr ""
@ -850,10 +942,6 @@ msgstr ""
msgid "Bilinear Filter" msgid "Bilinear Filter"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Bump Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua src/client/game.cpp #: builtin/mainmenu/tab_settings.lua src/client/game.cpp
msgid "Change Keys" msgid "Change Keys"
msgstr "" msgstr ""
@ -866,10 +954,6 @@ msgstr ""
msgid "Fancy Leaves" msgid "Fancy Leaves"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Generate Normal Maps"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Mipmap" msgid "Mipmap"
msgstr "" msgstr ""
@ -878,10 +962,6 @@ msgstr ""
msgid "Mipmap + Aniso. Filter" msgid "Mipmap + Aniso. Filter"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "No"
msgstr "ނޫން"
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "No Filter" msgid "No Filter"
msgstr "" msgstr ""
@ -910,18 +990,10 @@ msgstr ""
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Parallax Occlusion"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Particles" msgid "Particles"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Reset singleplayer world"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Screen:" msgid "Screen:"
msgstr "ސްކްރީން:" msgstr "ސްކްރީން:"
@ -934,6 +1006,10 @@ msgstr ""
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Shaders (experimental)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Shaders (unavailable)" msgid "Shaders (unavailable)"
msgstr "" msgstr ""
@ -978,22 +1054,6 @@ msgstr ""
msgid "Waving Plants" msgid "Waving Plants"
msgstr "" 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 ""
#: src/client/client.cpp #: src/client/client.cpp
msgid "Connection timed out." msgid "Connection timed out."
msgstr "" msgstr ""
@ -1156,13 +1216,13 @@ msgid ""
"- %s: move backwards\n" "- %s: move backwards\n"
"- %s: move left\n" "- %s: move left\n"
"- %s: move right\n" "- %s: move right\n"
"- %s: jump/climb\n" "- %s: jump/climb up\n"
"- %s: sneak/go down\n" "- %s: dig/punch\n"
"- %s: place/use\n"
"- %s: sneak/climb down\n"
"- %s: drop item\n" "- %s: drop item\n"
"- %s: inventory\n" "- %s: inventory\n"
"- Mouse: turn/look\n" "- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n" "- Mouse wheel: select item\n"
"- %s: chat\n" "- %s: chat\n"
msgstr "" msgstr ""
@ -1299,34 +1359,6 @@ msgstr ""
msgid "Minimap currently disabled by game or mod" msgid "Minimap currently disabled by game or mod"
msgstr "" msgstr ""
#: src/client/game.cpp
msgid "Minimap hidden"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x4"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x4"
msgstr ""
#: src/client/game.cpp #: src/client/game.cpp
msgid "Noclip mode disabled" msgid "Noclip mode disabled"
msgstr "" msgstr ""
@ -1720,6 +1752,24 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/client/minimap.cpp
msgid "Minimap hidden"
msgstr ""
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in radar mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in surface mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
msgid "Minimap in texture mode"
msgstr ""
#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -1964,12 +2014,6 @@ msgid ""
"an island, set all 3 numbers equal for the raw shape." "an island, set all 3 numbers equal for the raw shape."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "2D noise that controls the shape/size of ridged mountains." msgid "2D noise that controls the shape/size of ridged mountains."
msgstr "" msgstr ""
@ -2076,6 +2120,10 @@ msgstr ""
msgid "ABM interval" msgid "ABM interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Absolute limit of queued blocks to emerge" msgid "Absolute limit of queued blocks to emerge"
msgstr "" msgstr ""
@ -2313,10 +2361,6 @@ msgstr ""
msgid "Builtin" msgid "Builtin"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Bumpmapping"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n"
@ -2387,16 +2431,6 @@ msgid ""
"Where 0.0 is minimum light level, 1.0 is maximum light level." "Where 0.0 is minimum light level, 1.0 is maximum light level."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Changes the main menu UI:\n"
"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, "
"etc.\n"
"- Simple: One singleplayer world, no game or texture pack choosers. May "
"be\n"
"necessary for smaller screens."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Chat font size" msgid "Chat font size"
msgstr "" msgstr ""
@ -2548,6 +2582,10 @@ msgstr ""
msgid "ContentDB Flag Blacklist" msgid "ContentDB Flag Blacklist"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
#, fuzzy #, fuzzy
msgid "ContentDB URL" msgid "ContentDB URL"
@ -2606,7 +2644,9 @@ msgid "Crosshair alpha"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair alpha (opaqueness, between 0 and 255)." msgid ""
"Crosshair alpha (opaqueness, between 0 and 255).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2614,7 +2654,9 @@ msgid "Crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair color (R,G,B)." msgid ""
"Crosshair color (R,G,B).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2715,12 +2757,6 @@ msgstr ""
msgid "Defines location and terrain of optional hills and lakes." msgid "Defines location and terrain of optional hills and lakes."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Defines the base ground level." msgid "Defines the base ground level."
msgstr "" msgstr ""
@ -2791,6 +2827,10 @@ msgstr ""
msgid "Desynchronize block animation" msgid "Desynchronize block animation"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Dig key"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Digging particles" msgid "Digging particles"
msgstr "" msgstr ""
@ -2852,7 +2892,7 @@ msgid "Enable console window"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Enable creative mode for new created maps." msgid "Enable creative mode for all players"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2939,14 +2979,6 @@ msgstr ""
msgid "Enables animation of inventory items." msgid "Enables animation of inventory items."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Enables caching of facedir rotated meshes." msgid "Enables caching of facedir rotated meshes."
msgstr "" msgstr ""
@ -2955,18 +2987,6 @@ msgstr ""
msgid "Enables minimap." 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 ""
#: src/settings_translation_file.cpp
msgid ""
"Enables parallax occlusion mapping.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Enables the sound system.\n" "Enables the sound system.\n"
@ -2983,12 +3003,6 @@ msgstr ""
msgid "Entity methods" msgid "Entity methods"
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "" msgid ""
"Exponent of the floatland tapering. Alters the tapering behaviour.\n" "Exponent of the floatland tapering. Alters the tapering behaviour.\n"
@ -3000,8 +3014,8 @@ msgid ""
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "FPS in pause menu" msgid "FPS when unfocused or paused"
msgstr "ޕޯސް މެނޫގައި އެފް.ޕީ.އެސް" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "FSAA" msgid "FSAA"
@ -3301,10 +3315,6 @@ msgstr ""
msgid "GUI scaling filter txr2img" msgid "GUI scaling filter txr2img"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Generate normalmaps"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Global callbacks" msgid "Global callbacks"
msgstr "" msgstr ""
@ -3359,8 +3369,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Handling for deprecated Lua API calls:\n" "Handling for deprecated Lua API calls:\n"
"- legacy: (try to) mimic old behaviour (default for release).\n" "- none: Do not log deprecated calls\n"
"- log: mimic and log backtrace of deprecated call (default for debug).\n" "- log: mimic and log backtrace of deprecated call (default).\n"
"- error: abort on usage of deprecated call (suggested for mod developers)." "- error: abort on usage of deprecated call (suggested for mod developers)."
msgstr "" msgstr ""
@ -3826,6 +3836,10 @@ msgstr ""
msgid "Joystick button repetition interval" msgid "Joystick button repetition interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Joystick deadzone"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity" msgid "Joystick frustum sensitivity"
msgstr "" msgstr ""
@ -3905,6 +3919,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for digging.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for dropping the currently selected item.\n" "Key for dropping the currently selected item.\n"
@ -4004,6 +4025,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for selecting the 11th hotbar slot.\n" "Key for selecting the 11th hotbar slot.\n"
@ -4561,11 +4589,6 @@ msgstr ""
msgid "Main menu script" msgid "Main menu script"
msgstr "މެއިން މެނޫ ސްކްރިޕްޓް" msgstr "މެއިން މެނޫ ސްކްރިޕްޓް"
#: src/settings_translation_file.cpp
#, fuzzy
msgid "Main menu style"
msgstr "މެއިން މެނޫ ސްކްރިޕްޓް"
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." "Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
@ -4579,6 +4602,14 @@ msgstr ""
msgid "Makes all liquids opaque" msgid "Makes all liquids opaque"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Map directory" msgid "Map directory"
msgstr "" msgstr ""
@ -4749,7 +4780,7 @@ msgid "Maximum FPS"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum FPS when game is paused." msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -4797,6 +4828,13 @@ msgid ""
"This limit is enforced per player." "This limit is enforced per player."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of concurrent downloads. Downloads exceeding this limit will "
"be queued.\n"
"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum number of forceloaded mapblocks." msgid "Maximum number of forceloaded mapblocks."
msgstr "" msgstr ""
@ -5029,14 +5067,6 @@ msgstr ""
msgid "Noises" msgid "Noises"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps sampling"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps strength"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Number of emerge threads" msgid "Number of emerge threads"
msgstr "" msgstr ""
@ -5062,10 +5092,6 @@ msgid ""
"memory consumption (4096=100MB, as a rule of thumb)." "memory consumption (4096=100MB, as a rule of thumb)."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Number of parallax occlusion iterations."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Online Content Repository" msgid "Online Content Repository"
msgstr "" msgstr ""
@ -5091,34 +5117,6 @@ msgid ""
"open." "open."
msgstr "" 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 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 scale"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Path of the fallback font.\n" "Path of the fallback font.\n"
@ -5184,6 +5182,14 @@ msgstr ""
msgid "Pitch move mode" msgid "Pitch move mode"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Place key"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Player is able to fly without being affected by gravity.\n" "Player is able to fly without being affected by gravity.\n"
@ -5339,10 +5345,6 @@ msgstr ""
msgid "Right key" msgid "Right key"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Rightclick repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "River channel depth" msgid "River channel depth"
msgstr "" msgstr ""
@ -5594,6 +5596,16 @@ msgstr ""
msgid "Show entity selection boxes" msgid "Show entity selection boxes"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Show entity selection boxes\n"
"A restart is required after changing this."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Show nametag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Shutdown message" msgid "Shutdown message"
msgstr "" msgstr ""
@ -5723,10 +5735,6 @@ msgstr ""
msgid "Strength of 3D mode parallax." msgid "Strength of 3D mode parallax."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Strength of generated normalmaps."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Strength of light curve boost.\n" "Strength of light curve boost.\n"
@ -5820,6 +5828,10 @@ msgstr ""
msgid "The URL for the content repository" msgid "The URL for the content repository"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "The deadzone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The default format in which profiles are being saved,\n" "The default format in which profiles are being saved,\n"
@ -5879,8 +5891,8 @@ msgid ""
"A restart is required after changing this.\n" "A restart is required after changing this.\n"
"Note: On Android, stick with OGLES1 if unsure! App may fail to start " "Note: On Android, stick with OGLES1 if unsure! App may fail to start "
"otherwise.\n" "otherwise.\n"
"On other platforms, OpenGL is recommended, and its the only driver with\n" "On other platforms, OpenGL is recommended.\n"
"shader support currently." "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5904,6 +5916,12 @@ msgid ""
"items. A value of 0 disables the functionality." "items. A value of 0 disables the functionality."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The time budget allowed for ABMs to execute on each step\n"
"(as a fraction of the ABM Interval)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated events\n" "The time in seconds it takes between repeated events\n"
@ -5912,9 +5930,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated right clicks when holding the " "The time in seconds it takes between repeated node placements when holding\n"
"right\n" "the place button."
"mouse button."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -6049,6 +6066,17 @@ msgid ""
"Gamma correct downscaling is not supported." "Gamma correct downscaling is not supported."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
"but it doesn't affect the insides of textures\n"
"(which is especially noticeable with transparent textures).\n"
"Visible spaces appear between nodes when shaders are disabled.\n"
"If set to 0, MSAA is disabled.\n"
"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures." msgid "Use trilinear filtering when scaling textures."
msgstr "" msgstr ""
@ -6251,6 +6279,12 @@ msgid ""
"If disabled, bitmap and XML vectors fonts are used instead." "If disabled, bitmap and XML vectors fonts are used instead."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Whether nametag backgrounds should be shown by default.\n"
"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock." msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr "" msgstr ""
@ -6374,6 +6408,24 @@ msgstr ""
msgid "Y-level of seabed." msgid "Y-level of seabed."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when saving mapblocks to disk.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when sending mapblocks to the client.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "cURL file download timeout" msgid "cURL file download timeout"
msgstr "" msgstr ""
@ -6386,12 +6438,25 @@ msgstr ""
msgid "cURL timeout" msgid "cURL timeout"
msgstr "" msgstr ""
#, fuzzy #~ msgid "Configure"
#~ msgid "Select Package File:" #~ msgstr "ބަދަލުގެނޭ"
#~ msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
#~ msgid "Downloading and installing $1, please wait..." #~ msgid "Downloading and installing $1, please wait..."
#~ msgstr "$1 ޑައުންލޯޑޮކޮށް އިންސްޓޯލްކުރަނީ، މަޑުކުރައްވާ..." #~ msgstr "$1 ޑައުންލޯޑޮކޮށް އިންސްޓޯލްކުރަނީ، މަޑުކުރައްވާ..."
#~ msgid "FPS in pause menu"
#~ msgstr "ޕޯސް މެނޫގައި އެފް.ޕީ.އެސް"
#, fuzzy
#~ msgid "Main menu style"
#~ msgstr "މެއިން މެނޫ ސްކްރިޕްޓް"
#~ msgid "No"
#~ msgstr "ނޫން"
#~ msgid "Ok" #~ msgid "Ok"
#~ msgstr "emme rangalhu" #~ msgstr "emme rangalhu"
#, fuzzy
#~ msgid "Select Package File:"
#~ msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"

View File

@ -2,9 +2,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Greek (Minetest)\n" "Project-Id-Version: Greek (Minetest)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-13 23:17+0200\n" "POT-Creation-Date: 2021-02-23 19:03+0100\n"
"PO-Revision-Date: 2020-03-31 20:29+0000\n" "PO-Revision-Date: 2021-02-13 08:50+0000\n"
"Last-Translator: THANOS SIOURDAKIS <siourdakisthanos@gmail.com>\n" "Last-Translator: Michalis <michalisntovas@yahoo.gr>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/minetest/minetest/" "Language-Team: Greek <https://hosted.weblate.org/projects/minetest/minetest/"
"el/>\n" "el/>\n"
"Language: el\n" "Language: el\n"
@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.0-dev\n" "X-Generator: Weblate 4.5-dev\n"
#: builtin/client/death_formspec.lua src/client/game.cpp #: builtin/client/death_formspec.lua src/client/game.cpp
msgid "Respawn" msgid "Respawn"
@ -46,10 +46,6 @@ msgstr "Επανασύνδεση"
msgid "The server has requested a reconnect:" msgid "The server has requested a reconnect:"
msgstr "Ο διακομιστής ζήτησε επανασύνδεση:" msgstr "Ο διακομιστής ζήτησε επανασύνδεση:"
#: builtin/mainmenu/common.lua src/client/game.cpp
msgid "Loading..."
msgstr "Φόρτωση..."
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. " msgid "Protocol version mismatch. "
msgstr "Ασυμφωνία έκδοσης πρωτοκόλλου. " msgstr "Ασυμφωνία έκδοσης πρωτοκόλλου. "
@ -62,12 +58,6 @@ msgstr "Ο διακομιστής επιβάλλει το πρωτόκολλο
msgid "Server supports protocol versions between $1 and $2. " msgid "Server supports protocol versions between $1 and $2. "
msgstr "Ο διακομιστής υποστηρίζει εκδόσεις πρωτοκόλλων μεταξύ $1 και $2. " msgstr "Ο διακομιστής υποστηρίζει εκδόσεις πρωτοκόλλων μεταξύ $1 και $2. "
#: builtin/mainmenu/common.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
"Δοκιμάστε να ενεργοποιήσετε ξανά τη δημόσια λίστα διακομιστών και ελέγξτε τη "
"σύνδεσή σας στο διαδίκτυο."
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "We only support protocol version $1." msgid "We only support protocol version $1."
msgstr "Υποστηρίζουμε μόνο το πρωτόκολλο έκδοσης $1." msgstr "Υποστηρίζουμε μόνο το πρωτόκολλο έκδοσης $1."
@ -76,7 +66,8 @@ msgstr "Υποστηρίζουμε μόνο το πρωτόκολλο έκδοσ
msgid "We support protocol versions between version $1 and $2." msgid "We support protocol versions between version $1 and $2."
msgstr "Υποστηρίζουμε τις εκδόσεις πρωτοκόλλων μεταξύ της έκδοσης $1 και $2." msgstr "Υποστηρίζουμε τις εκδόσεις πρωτοκόλλων μεταξύ της έκδοσης $1 και $2."
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_create_world.lua
#: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_content.lua
#: builtin/mainmenu/dlg_delete_world.lua #: builtin/mainmenu/dlg_delete_world.lua
#: builtin/mainmenu/dlg_rename_modpack.lua #: builtin/mainmenu/dlg_rename_modpack.lua
@ -84,9 +75,10 @@ msgstr "Υποστηρίζουμε τις εκδόσεις πρωτοκόλλω
#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp
#: src/gui/guiPasswordChange.cpp #: src/gui/guiPasswordChange.cpp
msgid "Cancel" msgid "Cancel"
msgstr "Ματαίωση" msgstr "Άκυρο"
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/tab_content.lua
msgid "Dependencies:" msgid "Dependencies:"
msgstr "Εξαρτήσεις:" msgstr "Εξαρτήσεις:"
@ -157,22 +149,60 @@ msgstr ""
msgid "enabled" msgid "enabled"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "\"$1\" already exists. Would you like to overwrite it?"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 and $2 dependencies will be installed."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 by $2"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid ""
"$1 downloading,\n"
"$2 queued"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "$1 downloading..."
msgstr "Λήψη ..."
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 required dependencies could not be found."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 will be installed, and $2 dependencies will be skipped."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "All packages" msgid "All packages"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Already installed"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Back to Main Menu" msgid "Back to Main Menu"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Base Game:"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "ContentDB is not available when Minetest was compiled without cURL" msgid "ContentDB is not available when Minetest was compiled without cURL"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "Downloading..." msgid "Downloading..."
msgstr "Φόρτωση..." msgstr "Λήψη ..."
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Failed to download $1" msgid "Failed to download $1"
@ -187,6 +217,14 @@ msgstr ""
msgid "Install" msgid "Install"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Install $1"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Install missing dependencies"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Mods" msgid "Mods"
@ -201,8 +239,23 @@ msgid "No results"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "No updates"
msgid "Search" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Not found"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Overwrite"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Please check that the base game is correct."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Queued"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
@ -218,7 +271,11 @@ msgid "Update"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "View" msgid "Update All [$1]"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "View more information in a web browser"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_create_world.lua
@ -512,6 +569,10 @@ msgstr ""
msgid "Scale" msgid "Scale"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Search"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Select directory" msgid "Select directory"
msgstr "" msgstr ""
@ -627,6 +688,20 @@ msgstr ""
msgid "Unable to install a modpack as a $1" msgid "Unable to install a modpack as a $1"
msgstr "" msgstr ""
#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
msgid "Loading..."
msgstr "Φόρτωση..."
#: builtin/mainmenu/serverlistmgr.lua
msgid "Public server list is disabled"
msgstr ""
#: builtin/mainmenu/serverlistmgr.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
"Δοκιμάστε να ενεργοποιήσετε ξανά τη δημόσια λίστα διακομιστών και ελέγξτε τη "
"σύνδεσή σας στο διαδίκτυο."
#: builtin/mainmenu/tab_content.lua #: builtin/mainmenu/tab_content.lua
msgid "Browse online content" msgid "Browse online content"
msgstr "" msgstr ""
@ -679,6 +754,16 @@ msgstr ""
msgid "Credits" msgid "Credits"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_credits.lua
msgid "Open User Data Directory"
msgstr ""
#: builtin/mainmenu/tab_credits.lua
msgid ""
"Opens the directory that contains user-provided worlds, games, mods,\n"
"and texture packs in a file manager / explorer."
msgstr ""
#: builtin/mainmenu/tab_credits.lua #: builtin/mainmenu/tab_credits.lua
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
@ -696,14 +781,10 @@ msgid "Bind Address"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Configure"
msgstr ""
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua
msgid "Creative Mode" msgid "Creative Mode"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_local.lua
msgid "Enable Damage" msgid "Enable Damage"
msgstr "" msgstr ""
@ -720,7 +801,7 @@ msgid "Install games from ContentDB"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Name/Password" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
@ -731,6 +812,10 @@ msgstr ""
msgid "No world created or selected!" msgid "No world created or selected!"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua
msgid "Password"
msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Play Game" msgid "Play Game"
msgstr "" msgstr ""
@ -739,6 +824,10 @@ msgstr ""
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua
msgid "Select Mods"
msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Select World:" msgid "Select World:"
msgstr "" msgstr ""
@ -755,23 +844,23 @@ msgstr ""
msgid "Address / Port" msgid "Address / Port"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Creative mode" msgid "Creative mode"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Damage enabled" msgid "Damage enabled"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Del. Favorite" msgid "Del. Favorite"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Favorite" msgid "Favorite"
msgstr "" msgstr ""
@ -779,16 +868,16 @@ msgstr ""
msgid "Join Game" msgid "Join Game"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Name / Password" msgid "Name / Password"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Ping" msgid "Ping"
msgstr "" msgstr ""
#. ~ PvP = Player versus Player #. ~ PvP = Player versus Player
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "PvP enabled" msgid "PvP enabled"
msgstr "" msgstr ""
@ -816,10 +905,6 @@ msgstr ""
msgid "Antialiasing:" msgid "Antialiasing:"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Are you sure to reset your singleplayer world?"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Autosave Screen Size" msgid "Autosave Screen Size"
msgstr "" msgstr ""
@ -828,10 +913,6 @@ msgstr ""
msgid "Bilinear Filter" msgid "Bilinear Filter"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Bump Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua src/client/game.cpp #: builtin/mainmenu/tab_settings.lua src/client/game.cpp
msgid "Change Keys" msgid "Change Keys"
msgstr "" msgstr ""
@ -844,10 +925,6 @@ msgstr ""
msgid "Fancy Leaves" msgid "Fancy Leaves"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Generate Normal Maps"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Mipmap" msgid "Mipmap"
msgstr "" msgstr ""
@ -856,10 +933,6 @@ msgstr ""
msgid "Mipmap + Aniso. Filter" msgid "Mipmap + Aniso. Filter"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "No"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "No Filter" msgid "No Filter"
msgstr "" msgstr ""
@ -888,18 +961,10 @@ msgstr ""
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Parallax Occlusion"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Particles" msgid "Particles"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Reset singleplayer world"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Screen:" msgid "Screen:"
msgstr "" msgstr ""
@ -912,6 +977,10 @@ msgstr ""
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Shaders (experimental)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Shaders (unavailable)" msgid "Shaders (unavailable)"
msgstr "" msgstr ""
@ -956,22 +1025,6 @@ msgstr ""
msgid "Waving Plants" msgid "Waving Plants"
msgstr "" 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 ""
#: src/client/client.cpp #: src/client/client.cpp
msgid "Connection timed out." msgid "Connection timed out."
msgstr "" msgstr ""
@ -1042,7 +1095,7 @@ msgstr ""
#. When in doubt, test your translation. #. When in doubt, test your translation.
#: src/client/fontengine.cpp #: src/client/fontengine.cpp
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "yes" msgstr "no"
#: src/client/game.cpp #: src/client/game.cpp
msgid "" msgid ""
@ -1131,13 +1184,13 @@ msgid ""
"- %s: move backwards\n" "- %s: move backwards\n"
"- %s: move left\n" "- %s: move left\n"
"- %s: move right\n" "- %s: move right\n"
"- %s: jump/climb\n" "- %s: jump/climb up\n"
"- %s: sneak/go down\n" "- %s: dig/punch\n"
"- %s: place/use\n"
"- %s: sneak/climb down\n"
"- %s: drop item\n" "- %s: drop item\n"
"- %s: inventory\n" "- %s: inventory\n"
"- Mouse: turn/look\n" "- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n" "- Mouse wheel: select item\n"
"- %s: chat\n" "- %s: chat\n"
msgstr "" msgstr ""
@ -1258,34 +1311,6 @@ msgstr ""
msgid "Minimap currently disabled by game or mod" msgid "Minimap currently disabled by game or mod"
msgstr "" msgstr ""
#: src/client/game.cpp
msgid "Minimap hidden"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x4"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x4"
msgstr ""
#: src/client/game.cpp #: src/client/game.cpp
msgid "Noclip mode disabled" msgid "Noclip mode disabled"
msgstr "" msgstr ""
@ -1678,6 +1703,24 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/client/minimap.cpp
msgid "Minimap hidden"
msgstr ""
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in radar mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in surface mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
msgid "Minimap in texture mode"
msgstr ""
#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -1921,12 +1964,6 @@ msgid ""
"an island, set all 3 numbers equal for the raw shape." "an island, set all 3 numbers equal for the raw shape."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "2D noise that controls the shape/size of ridged mountains." msgid "2D noise that controls the shape/size of ridged mountains."
msgstr "" msgstr ""
@ -2033,6 +2070,10 @@ msgstr ""
msgid "ABM interval" msgid "ABM interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Absolute limit of queued blocks to emerge" msgid "Absolute limit of queued blocks to emerge"
msgstr "" msgstr ""
@ -2266,10 +2307,6 @@ msgstr ""
msgid "Builtin" msgid "Builtin"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Bumpmapping"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n"
@ -2340,16 +2377,6 @@ msgid ""
"Where 0.0 is minimum light level, 1.0 is maximum light level." "Where 0.0 is minimum light level, 1.0 is maximum light level."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Changes the main menu UI:\n"
"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, "
"etc.\n"
"- Simple: One singleplayer world, no game or texture pack choosers. May "
"be\n"
"necessary for smaller screens."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Chat font size" msgid "Chat font size"
msgstr "" msgstr ""
@ -2501,6 +2528,10 @@ msgstr ""
msgid "ContentDB Flag Blacklist" msgid "ContentDB Flag Blacklist"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "ContentDB URL" msgid "ContentDB URL"
msgstr "" msgstr ""
@ -2558,7 +2589,9 @@ msgid "Crosshair alpha"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair alpha (opaqueness, between 0 and 255)." msgid ""
"Crosshair alpha (opaqueness, between 0 and 255).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2566,7 +2599,9 @@ msgid "Crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair color (R,G,B)." msgid ""
"Crosshair color (R,G,B).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2665,12 +2700,6 @@ msgstr ""
msgid "Defines location and terrain of optional hills and lakes." msgid "Defines location and terrain of optional hills and lakes."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Defines the base ground level." msgid "Defines the base ground level."
msgstr "" msgstr ""
@ -2741,6 +2770,10 @@ msgstr ""
msgid "Desynchronize block animation" msgid "Desynchronize block animation"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Dig key"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Digging particles" msgid "Digging particles"
msgstr "" msgstr ""
@ -2802,7 +2835,7 @@ msgid "Enable console window"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Enable creative mode for new created maps." msgid "Enable creative mode for all players"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2889,14 +2922,6 @@ msgstr ""
msgid "Enables animation of inventory items." msgid "Enables animation of inventory items."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Enables caching of facedir rotated meshes." msgid "Enables caching of facedir rotated meshes."
msgstr "" msgstr ""
@ -2905,18 +2930,6 @@ msgstr ""
msgid "Enables minimap." 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 ""
#: src/settings_translation_file.cpp
msgid ""
"Enables parallax occlusion mapping.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Enables the sound system.\n" "Enables the sound system.\n"
@ -2933,12 +2946,6 @@ msgstr ""
msgid "Entity methods" msgid "Entity methods"
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "" msgid ""
"Exponent of the floatland tapering. Alters the tapering behaviour.\n" "Exponent of the floatland tapering. Alters the tapering behaviour.\n"
@ -2950,7 +2957,7 @@ msgid ""
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "FPS in pause menu" msgid "FPS when unfocused or paused"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -3251,10 +3258,6 @@ msgstr ""
msgid "GUI scaling filter txr2img" msgid "GUI scaling filter txr2img"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Generate normalmaps"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Global callbacks" msgid "Global callbacks"
msgstr "" msgstr ""
@ -3309,8 +3312,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Handling for deprecated Lua API calls:\n" "Handling for deprecated Lua API calls:\n"
"- legacy: (try to) mimic old behaviour (default for release).\n" "- none: Do not log deprecated calls\n"
"- log: mimic and log backtrace of deprecated call (default for debug).\n" "- log: mimic and log backtrace of deprecated call (default).\n"
"- error: abort on usage of deprecated call (suggested for mod developers)." "- error: abort on usage of deprecated call (suggested for mod developers)."
msgstr "" msgstr ""
@ -3776,6 +3779,10 @@ msgstr ""
msgid "Joystick button repetition interval" msgid "Joystick button repetition interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Joystick deadzone"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity" msgid "Joystick frustum sensitivity"
msgstr "" msgstr ""
@ -3855,6 +3862,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for digging.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for dropping the currently selected item.\n" "Key for dropping the currently selected item.\n"
@ -3954,6 +3968,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for selecting the 11th hotbar slot.\n" "Key for selecting the 11th hotbar slot.\n"
@ -4511,10 +4532,6 @@ msgstr ""
msgid "Main menu script" msgid "Main menu script"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Main menu style"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." "Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
@ -4528,6 +4545,14 @@ msgstr ""
msgid "Makes all liquids opaque" msgid "Makes all liquids opaque"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Map directory" msgid "Map directory"
msgstr "" msgstr ""
@ -4692,7 +4717,7 @@ msgid "Maximum FPS"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum FPS when game is paused." msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -4740,6 +4765,13 @@ msgid ""
"This limit is enforced per player." "This limit is enforced per player."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of concurrent downloads. Downloads exceeding this limit will "
"be queued.\n"
"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum number of forceloaded mapblocks." msgid "Maximum number of forceloaded mapblocks."
msgstr "" msgstr ""
@ -4969,14 +5001,6 @@ msgstr ""
msgid "Noises" msgid "Noises"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps sampling"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps strength"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Number of emerge threads" msgid "Number of emerge threads"
msgstr "" msgstr ""
@ -5002,10 +5026,6 @@ msgid ""
"memory consumption (4096=100MB, as a rule of thumb)." "memory consumption (4096=100MB, as a rule of thumb)."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Number of parallax occlusion iterations."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Online Content Repository" msgid "Online Content Repository"
msgstr "" msgstr ""
@ -5031,34 +5051,6 @@ msgid ""
"open." "open."
msgstr "" 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 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 scale"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Path of the fallback font.\n" "Path of the fallback font.\n"
@ -5124,6 +5116,14 @@ msgstr ""
msgid "Pitch move mode" msgid "Pitch move mode"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Place key"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Player is able to fly without being affected by gravity.\n" "Player is able to fly without being affected by gravity.\n"
@ -5279,10 +5279,6 @@ msgstr ""
msgid "Right key" msgid "Right key"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Rightclick repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "River channel depth" msgid "River channel depth"
msgstr "" msgstr ""
@ -5534,6 +5530,16 @@ msgstr ""
msgid "Show entity selection boxes" msgid "Show entity selection boxes"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Show entity selection boxes\n"
"A restart is required after changing this."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Show nametag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Shutdown message" msgid "Shutdown message"
msgstr "" msgstr ""
@ -5663,10 +5669,6 @@ msgstr ""
msgid "Strength of 3D mode parallax." msgid "Strength of 3D mode parallax."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Strength of generated normalmaps."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Strength of light curve boost.\n" "Strength of light curve boost.\n"
@ -5760,6 +5762,10 @@ msgstr ""
msgid "The URL for the content repository" msgid "The URL for the content repository"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "The deadzone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The default format in which profiles are being saved,\n" "The default format in which profiles are being saved,\n"
@ -5819,8 +5825,8 @@ msgid ""
"A restart is required after changing this.\n" "A restart is required after changing this.\n"
"Note: On Android, stick with OGLES1 if unsure! App may fail to start " "Note: On Android, stick with OGLES1 if unsure! App may fail to start "
"otherwise.\n" "otherwise.\n"
"On other platforms, OpenGL is recommended, and its the only driver with\n" "On other platforms, OpenGL is recommended.\n"
"shader support currently." "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5844,6 +5850,12 @@ msgid ""
"items. A value of 0 disables the functionality." "items. A value of 0 disables the functionality."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The time budget allowed for ABMs to execute on each step\n"
"(as a fraction of the ABM Interval)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated events\n" "The time in seconds it takes between repeated events\n"
@ -5852,9 +5864,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated right clicks when holding the " "The time in seconds it takes between repeated node placements when holding\n"
"right\n" "the place button."
"mouse button."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5989,6 +6000,17 @@ msgid ""
"Gamma correct downscaling is not supported." "Gamma correct downscaling is not supported."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
"but it doesn't affect the insides of textures\n"
"(which is especially noticeable with transparent textures).\n"
"Visible spaces appear between nodes when shaders are disabled.\n"
"If set to 0, MSAA is disabled.\n"
"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures." msgid "Use trilinear filtering when scaling textures."
msgstr "" msgstr ""
@ -6191,6 +6213,12 @@ msgid ""
"If disabled, bitmap and XML vectors fonts are used instead." "If disabled, bitmap and XML vectors fonts are used instead."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Whether nametag backgrounds should be shown by default.\n"
"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock." msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr "" msgstr ""
@ -6313,6 +6341,24 @@ msgstr ""
msgid "Y-level of seabed." msgid "Y-level of seabed."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when saving mapblocks to disk.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when sending mapblocks to the client.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "cURL file download timeout" msgid "cURL file download timeout"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-30 21:13+0100\n" "POT-Creation-Date: 2021-02-23 19:03+0100\n"
"PO-Revision-Date: 2020-07-11 13:41+0000\n" "PO-Revision-Date: 2021-02-01 05:52+0000\n"
"Last-Translator: Niko Kivinen <niko.pet.kivinen@gmail.com>\n" "Last-Translator: Tviljan <virallinen@gmail.com>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/minetest/" "Language-Team: Finnish <https://hosted.weblate.org/projects/minetest/"
"minetest/fi/>\n" "minetest/fi/>\n"
"Language: fi\n" "Language: fi\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2-dev\n" "X-Generator: Weblate 4.5-dev\n"
#: builtin/client/death_formspec.lua src/client/game.cpp #: builtin/client/death_formspec.lua src/client/game.cpp
msgid "Respawn" msgid "Respawn"
@ -37,7 +37,7 @@ msgstr ""
#: builtin/fstk/ui.lua #: builtin/fstk/ui.lua
msgid "An error occurred:" msgid "An error occurred:"
msgstr "" msgstr "Tapahtui virhe:"
#: builtin/fstk/ui.lua #: builtin/fstk/ui.lua
msgid "Main menu" msgid "Main menu"
@ -697,6 +697,10 @@ msgstr ""
msgid "Loading..." msgid "Loading..."
msgstr "Ladataan..." msgstr "Ladataan..."
#: builtin/mainmenu/serverlistmgr.lua
msgid "Public server list is disabled"
msgstr ""
#: builtin/mainmenu/serverlistmgr.lua #: builtin/mainmenu/serverlistmgr.lua
msgid "Try reenabling public serverlist and check your internet connection." msgid "Try reenabling public serverlist and check your internet connection."
msgstr "" msgstr ""
@ -1094,7 +1098,7 @@ msgstr ""
#. When in doubt, test your translation. #. When in doubt, test your translation.
#: src/client/fontengine.cpp #: src/client/fontengine.cpp
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr "no"
#: src/client/game.cpp #: src/client/game.cpp
msgid "" msgid ""
@ -1925,7 +1929,7 @@ msgstr ""
#. language code (e.g. "de" for German). #. language code (e.g. "de" for German).
#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
msgid "LANG_CODE" msgid "LANG_CODE"
msgstr "" msgstr "fi"
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
@ -2834,7 +2838,7 @@ msgid "Enable console window"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Enable creative mode for new created maps." msgid "Enable creative mode for all players"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5535,6 +5539,10 @@ msgid ""
"A restart is required after changing this." "A restart is required after changing this."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Show nametag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Shutdown message" msgid "Shutdown message"
msgstr "" msgstr ""
@ -6208,6 +6216,12 @@ msgid ""
"If disabled, bitmap and XML vectors fonts are used instead." "If disabled, bitmap and XML vectors fonts are used instead."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Whether nametag backgrounds should be shown by default.\n"
"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock." msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Kazakh (Minetest)\n" "Project-Id-Version: Kazakh (Minetest)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-13 23:17+0200\n" "POT-Creation-Date: 2021-02-23 19:03+0100\n"
"PO-Revision-Date: 2020-07-06 21:41+0000\n" "PO-Revision-Date: 2020-09-09 01:23+0000\n"
"Last-Translator: Fontan 030 <pomanfedurin@gmail.com>\n" "Last-Translator: Fontan 030 <pomanfedurin@gmail.com>\n"
"Language-Team: Kazakh <https://hosted.weblate.org/projects/minetest/minetest/" "Language-Team: Kazakh <https://hosted.weblate.org/projects/minetest/minetest/"
"kk/>\n" "kk/>\n"
@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2-dev\n" "X-Generator: Weblate 4.3-dev\n"
#: builtin/client/death_formspec.lua src/client/game.cpp #: builtin/client/death_formspec.lua src/client/game.cpp
msgid "Respawn" msgid "Respawn"
@ -46,10 +46,6 @@ msgstr ""
msgid "The server has requested a reconnect:" msgid "The server has requested a reconnect:"
msgstr "" msgstr ""
#: builtin/mainmenu/common.lua src/client/game.cpp
msgid "Loading..."
msgstr "Жүктелуде..."
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. " msgid "Protocol version mismatch. "
msgstr "" msgstr ""
@ -62,10 +58,6 @@ msgstr ""
msgid "Server supports protocol versions between $1 and $2. " msgid "Server supports protocol versions between $1 and $2. "
msgstr "" msgstr ""
#: builtin/mainmenu/common.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
#: builtin/mainmenu/common.lua #: builtin/mainmenu/common.lua
msgid "We only support protocol version $1." msgid "We only support protocol version $1."
msgstr "" msgstr ""
@ -74,7 +66,8 @@ msgstr ""
msgid "We support protocol versions between version $1 and $2." msgid "We support protocol versions between version $1 and $2."
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_create_world.lua
#: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_content.lua
#: builtin/mainmenu/dlg_delete_world.lua #: builtin/mainmenu/dlg_delete_world.lua
#: builtin/mainmenu/dlg_rename_modpack.lua #: builtin/mainmenu/dlg_rename_modpack.lua
@ -84,7 +77,8 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Болдырмау" msgstr "Болдырмау"
#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/tab_content.lua
msgid "Dependencies:" msgid "Dependencies:"
msgstr "" msgstr ""
@ -155,14 +149,53 @@ msgstr ""
msgid "enabled" msgid "enabled"
msgstr "қосылған" msgstr "қосылған"
#: builtin/mainmenu/dlg_contentstore.lua
msgid "\"$1\" already exists. Would you like to overwrite it?"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 and $2 dependencies will be installed."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 by $2"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid ""
"$1 downloading,\n"
"$2 queued"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "$1 downloading..."
msgstr "Жүктелуде..."
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 required dependencies could not be found."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "$1 will be installed, and $2 dependencies will be skipped."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "All packages" msgid "All packages"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Already installed"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Back to Main Menu" msgid "Back to Main Menu"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Base Game:"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "ContentDB is not available when Minetest was compiled without cURL" msgid "ContentDB is not available when Minetest was compiled without cURL"
msgstr "" msgstr ""
@ -184,6 +217,15 @@ msgstr "Ойындар"
msgid "Install" msgid "Install"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
#, fuzzy
msgid "Install $1"
msgstr "Жою"
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Install missing dependencies"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Mods" msgid "Mods"
@ -198,9 +240,25 @@ msgid "No results"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua #, fuzzy
msgid "Search" msgid "No updates"
msgstr "Іздеу" msgstr "Жаңарту"
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Not found"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Overwrite"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Please check that the base game is correct."
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "Queued"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "Texture packs" msgid "Texture packs"
@ -215,7 +273,11 @@ msgid "Update"
msgstr "Жаңарту" msgstr "Жаңарту"
#: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_contentstore.lua
msgid "View" msgid "Update All [$1]"
msgstr ""
#: builtin/mainmenu/dlg_contentstore.lua
msgid "View more information in a web browser"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_create_world.lua
@ -509,6 +571,10 @@ msgstr ""
msgid "Scale" msgid "Scale"
msgstr "" msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Search"
msgstr "Іздеу"
#: builtin/mainmenu/dlg_settings_advanced.lua #: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Select directory" msgid "Select directory"
msgstr "" msgstr ""
@ -624,6 +690,18 @@ msgstr ""
msgid "Unable to install a modpack as a $1" msgid "Unable to install a modpack as a $1"
msgstr "" msgstr ""
#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
msgid "Loading..."
msgstr "Жүктелуде..."
#: builtin/mainmenu/serverlistmgr.lua
msgid "Public server list is disabled"
msgstr ""
#: builtin/mainmenu/serverlistmgr.lua
msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
#: builtin/mainmenu/tab_content.lua #: builtin/mainmenu/tab_content.lua
msgid "Browse online content" msgid "Browse online content"
msgstr "" msgstr ""
@ -676,6 +754,16 @@ msgstr ""
msgid "Credits" msgid "Credits"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_credits.lua
msgid "Open User Data Directory"
msgstr ""
#: builtin/mainmenu/tab_credits.lua
msgid ""
"Opens the directory that contains user-provided worlds, games, mods,\n"
"and texture packs in a file manager / explorer."
msgstr ""
#: builtin/mainmenu/tab_credits.lua #: builtin/mainmenu/tab_credits.lua
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
@ -693,14 +781,10 @@ msgid "Bind Address"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Configure"
msgstr ""
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua
msgid "Creative Mode" msgid "Creative Mode"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_local.lua
msgid "Enable Damage" msgid "Enable Damage"
msgstr "" msgstr ""
@ -717,7 +801,7 @@ msgid "Install games from ContentDB"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Name/Password" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
@ -728,6 +812,11 @@ msgstr "Жаңа"
msgid "No world created or selected!" msgid "No world created or selected!"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua
#, fuzzy
msgid "Password"
msgstr "Құпия сөзді өзгерту"
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Play Game" msgid "Play Game"
msgstr "" msgstr ""
@ -736,6 +825,10 @@ msgstr ""
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_local.lua
msgid "Select Mods"
msgstr ""
#: builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_local.lua
msgid "Select World:" msgid "Select World:"
msgstr "" msgstr ""
@ -752,23 +845,23 @@ msgstr ""
msgid "Address / Port" msgid "Address / Port"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Creative mode" msgid "Creative mode"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Damage enabled" msgid "Damage enabled"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Del. Favorite" msgid "Del. Favorite"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Favorite" msgid "Favorite"
msgstr "" msgstr ""
@ -776,16 +869,16 @@ msgstr ""
msgid "Join Game" msgid "Join Game"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Name / Password" msgid "Name / Password"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "Ping" msgid "Ping"
msgstr "" msgstr ""
#. ~ PvP = Player versus Player #. ~ PvP = Player versus Player
#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_online.lua
msgid "PvP enabled" msgid "PvP enabled"
msgstr "" msgstr ""
@ -813,21 +906,13 @@ msgstr ""
msgid "Antialiasing:" msgid "Antialiasing:"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Are you sure to reset your singleplayer world?"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Autosave Screen Size" msgid "Autosave Screen Size"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter" msgid "Bilinear Filter"
msgstr "" msgstr "Бисызықты фильтрация"
#: builtin/mainmenu/tab_settings.lua
msgid "Bump Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua src/client/game.cpp #: builtin/mainmenu/tab_settings.lua src/client/game.cpp
msgid "Change Keys" msgid "Change Keys"
@ -841,10 +926,6 @@ msgstr ""
msgid "Fancy Leaves" msgid "Fancy Leaves"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Generate Normal Maps"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Mipmap" msgid "Mipmap"
msgstr "" msgstr ""
@ -853,10 +934,6 @@ msgstr ""
msgid "Mipmap + Aniso. Filter" msgid "Mipmap + Aniso. Filter"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "No"
msgstr "Жоқ"
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "No Filter" msgid "No Filter"
msgstr "" msgstr ""
@ -875,7 +952,7 @@ msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "None" msgid "None"
msgstr "" msgstr "Жоқ"
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves" msgid "Opaque Leaves"
@ -885,17 +962,9 @@ msgstr ""
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Parallax Occlusion"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Particles" msgid "Particles"
msgstr "" msgstr "Бөлшектер"
#: builtin/mainmenu/tab_settings.lua
msgid "Reset singleplayer world"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Screen:" msgid "Screen:"
@ -909,6 +978,10 @@ msgstr "Баптаулар"
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Shaders (experimental)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Shaders (unavailable)" msgid "Shaders (unavailable)"
msgstr "" msgstr ""
@ -923,7 +996,7 @@ msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Texturing:" msgid "Texturing:"
msgstr "" msgstr "Текстурлеу:"
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "To enable shaders the OpenGL driver needs to be used." msgid "To enable shaders the OpenGL driver needs to be used."
@ -939,7 +1012,7 @@ msgstr ""
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter" msgid "Trilinear Filter"
msgstr "" msgstr "Үшсызықты фильтрация"
#: builtin/mainmenu/tab_settings.lua #: builtin/mainmenu/tab_settings.lua
msgid "Waving Leaves" msgid "Waving Leaves"
@ -953,22 +1026,6 @@ msgstr ""
msgid "Waving Plants" msgid "Waving Plants"
msgstr "" 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 ""
#: src/client/client.cpp #: src/client/client.cpp
msgid "Connection timed out." msgid "Connection timed out."
msgstr "" msgstr ""
@ -1098,7 +1155,7 @@ msgstr ""
#: src/client/game.cpp #: src/client/game.cpp
msgid "Change Password" msgid "Change Password"
msgstr "" msgstr "Құпия сөзді өзгерту"
#: src/client/game.cpp #: src/client/game.cpp
msgid "Cinematic mode disabled" msgid "Cinematic mode disabled"
@ -1128,13 +1185,13 @@ msgid ""
"- %s: move backwards\n" "- %s: move backwards\n"
"- %s: move left\n" "- %s: move left\n"
"- %s: move right\n" "- %s: move right\n"
"- %s: jump/climb\n" "- %s: jump/climb up\n"
"- %s: sneak/go down\n" "- %s: dig/punch\n"
"- %s: place/use\n"
"- %s: sneak/climb down\n"
"- %s: drop item\n" "- %s: drop item\n"
"- %s: inventory\n" "- %s: inventory\n"
"- Mouse: turn/look\n" "- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n" "- Mouse wheel: select item\n"
"- %s: chat\n" "- %s: chat\n"
msgstr "" msgstr ""
@ -1255,34 +1312,6 @@ msgstr ""
msgid "Minimap currently disabled by game or mod" msgid "Minimap currently disabled by game or mod"
msgstr "" msgstr ""
#: src/client/game.cpp
msgid "Minimap hidden"
msgstr "Миникарта жасырылды"
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in radar mode, Zoom x4"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x1"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x2"
msgstr ""
#: src/client/game.cpp
msgid "Minimap in surface mode, Zoom x4"
msgstr ""
#: src/client/game.cpp #: src/client/game.cpp
msgid "Noclip mode disabled" msgid "Noclip mode disabled"
msgstr "" msgstr ""
@ -1675,6 +1704,24 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/client/minimap.cpp
msgid "Minimap hidden"
msgstr "Миникарта жасырылды"
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in radar mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
#, c-format
msgid "Minimap in surface mode, Zoom x%d"
msgstr ""
#: src/client/minimap.cpp
msgid "Minimap in texture mode"
msgstr ""
#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -1918,12 +1965,6 @@ msgid ""
"an island, set all 3 numbers equal for the raw shape." "an island, set all 3 numbers equal for the raw shape."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "2D noise that controls the shape/size of ridged mountains." msgid "2D noise that controls the shape/size of ridged mountains."
msgstr "" msgstr ""
@ -2030,6 +2071,10 @@ msgstr ""
msgid "ABM interval" msgid "ABM interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Absolute limit of queued blocks to emerge" msgid "Absolute limit of queued blocks to emerge"
msgstr "" msgstr ""
@ -2263,10 +2308,6 @@ msgstr ""
msgid "Builtin" msgid "Builtin"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Bumpmapping"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n"
@ -2337,16 +2378,6 @@ msgid ""
"Where 0.0 is minimum light level, 1.0 is maximum light level." "Where 0.0 is minimum light level, 1.0 is maximum light level."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Changes the main menu UI:\n"
"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, "
"etc.\n"
"- Simple: One singleplayer world, no game or texture pack choosers. May "
"be\n"
"necessary for smaller screens."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Chat font size" msgid "Chat font size"
msgstr "" msgstr ""
@ -2498,6 +2529,10 @@ msgstr ""
msgid "ContentDB Flag Blacklist" msgid "ContentDB Flag Blacklist"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "ContentDB URL" msgid "ContentDB URL"
msgstr "" msgstr ""
@ -2555,7 +2590,9 @@ msgid "Crosshair alpha"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair alpha (opaqueness, between 0 and 255)." msgid ""
"Crosshair alpha (opaqueness, between 0 and 255).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2563,7 +2600,9 @@ msgid "Crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Crosshair color (R,G,B)." msgid ""
"Crosshair color (R,G,B).\n"
"Also controls the object crosshair color"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2662,12 +2701,6 @@ msgstr ""
msgid "Defines location and terrain of optional hills and lakes." msgid "Defines location and terrain of optional hills and lakes."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Defines the base ground level." msgid "Defines the base ground level."
msgstr "" msgstr ""
@ -2738,6 +2771,10 @@ msgstr ""
msgid "Desynchronize block animation" msgid "Desynchronize block animation"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Dig key"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Digging particles" msgid "Digging particles"
msgstr "" msgstr ""
@ -2799,7 +2836,7 @@ msgid "Enable console window"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Enable creative mode for new created maps." msgid "Enable creative mode for all players"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -2886,14 +2923,6 @@ msgstr ""
msgid "Enables animation of inventory items." msgid "Enables animation of inventory items."
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "Enables caching of facedir rotated meshes." msgid "Enables caching of facedir rotated meshes."
msgstr "" msgstr ""
@ -2902,18 +2931,6 @@ msgstr ""
msgid "Enables minimap." 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 ""
#: src/settings_translation_file.cpp
msgid ""
"Enables parallax occlusion mapping.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Enables the sound system.\n" "Enables the sound system.\n"
@ -2930,12 +2947,6 @@ msgstr ""
msgid "Entity methods" msgid "Entity methods"
msgstr "" 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 #: src/settings_translation_file.cpp
msgid "" msgid ""
"Exponent of the floatland tapering. Alters the tapering behaviour.\n" "Exponent of the floatland tapering. Alters the tapering behaviour.\n"
@ -2947,7 +2958,7 @@ msgid ""
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "FPS in pause menu" msgid "FPS when unfocused or paused"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -3248,10 +3259,6 @@ msgstr ""
msgid "GUI scaling filter txr2img" msgid "GUI scaling filter txr2img"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Generate normalmaps"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Global callbacks" msgid "Global callbacks"
msgstr "" msgstr ""
@ -3306,8 +3313,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Handling for deprecated Lua API calls:\n" "Handling for deprecated Lua API calls:\n"
"- legacy: (try to) mimic old behaviour (default for release).\n" "- none: Do not log deprecated calls\n"
"- log: mimic and log backtrace of deprecated call (default for debug).\n" "- log: mimic and log backtrace of deprecated call (default).\n"
"- error: abort on usage of deprecated call (suggested for mod developers)." "- error: abort on usage of deprecated call (suggested for mod developers)."
msgstr "" msgstr ""
@ -3773,6 +3780,10 @@ msgstr ""
msgid "Joystick button repetition interval" msgid "Joystick button repetition interval"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Joystick deadzone"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity" msgid "Joystick frustum sensitivity"
msgstr "" msgstr ""
@ -3852,6 +3863,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for digging.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for dropping the currently selected item.\n" "Key for dropping the currently selected item.\n"
@ -3951,6 +3969,13 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3" "html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Key for selecting the 11th hotbar slot.\n" "Key for selecting the 11th hotbar slot.\n"
@ -4508,10 +4533,6 @@ msgstr ""
msgid "Main menu script" msgid "Main menu script"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Main menu style"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." "Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
@ -4525,6 +4546,14 @@ msgstr ""
msgid "Makes all liquids opaque" msgid "Makes all liquids opaque"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Map directory" msgid "Map directory"
msgstr "" msgstr ""
@ -4689,7 +4718,7 @@ msgid "Maximum FPS"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum FPS when game is paused." msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -4737,6 +4766,13 @@ msgid ""
"This limit is enforced per player." "This limit is enforced per player."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of concurrent downloads. Downloads exceeding this limit will "
"be queued.\n"
"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Maximum number of forceloaded mapblocks." msgid "Maximum number of forceloaded mapblocks."
msgstr "" msgstr ""
@ -4966,14 +5002,6 @@ msgstr ""
msgid "Noises" msgid "Noises"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps sampling"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Normalmaps strength"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Number of emerge threads" msgid "Number of emerge threads"
msgstr "" msgstr ""
@ -4999,10 +5027,6 @@ msgid ""
"memory consumption (4096=100MB, as a rule of thumb)." "memory consumption (4096=100MB, as a rule of thumb)."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Number of parallax occlusion iterations."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Online Content Repository" msgid "Online Content Repository"
msgstr "" msgstr ""
@ -5028,34 +5052,6 @@ msgid ""
"open." "open."
msgstr "" 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 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 scale"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Path of the fallback font.\n" "Path of the fallback font.\n"
@ -5121,6 +5117,14 @@ msgstr ""
msgid "Pitch move mode" msgid "Pitch move mode"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Place key"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Player is able to fly without being affected by gravity.\n" "Player is able to fly without being affected by gravity.\n"
@ -5276,10 +5280,6 @@ msgstr ""
msgid "Right key" msgid "Right key"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Rightclick repetition interval"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "River channel depth" msgid "River channel depth"
msgstr "" msgstr ""
@ -5531,6 +5531,16 @@ msgstr ""
msgid "Show entity selection boxes" msgid "Show entity selection boxes"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Show entity selection boxes\n"
"A restart is required after changing this."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Show nametag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Shutdown message" msgid "Shutdown message"
msgstr "" msgstr ""
@ -5660,10 +5670,6 @@ msgstr ""
msgid "Strength of 3D mode parallax." msgid "Strength of 3D mode parallax."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "Strength of generated normalmaps."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"Strength of light curve boost.\n" "Strength of light curve boost.\n"
@ -5757,6 +5763,10 @@ msgstr ""
msgid "The URL for the content repository" msgid "The URL for the content repository"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid "The deadzone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The default format in which profiles are being saved,\n" "The default format in which profiles are being saved,\n"
@ -5816,8 +5826,8 @@ msgid ""
"A restart is required after changing this.\n" "A restart is required after changing this.\n"
"Note: On Android, stick with OGLES1 if unsure! App may fail to start " "Note: On Android, stick with OGLES1 if unsure! App may fail to start "
"otherwise.\n" "otherwise.\n"
"On other platforms, OpenGL is recommended, and its the only driver with\n" "On other platforms, OpenGL is recommended.\n"
"shader support currently." "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5841,6 +5851,12 @@ msgid ""
"items. A value of 0 disables the functionality." "items. A value of 0 disables the functionality."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The time budget allowed for ABMs to execute on each step\n"
"(as a fraction of the ABM Interval)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated events\n" "The time in seconds it takes between repeated events\n"
@ -5849,9 +5865,8 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "" msgid ""
"The time in seconds it takes between repeated right clicks when holding the " "The time in seconds it takes between repeated node placements when holding\n"
"right\n" "the place button."
"mouse button."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
@ -5986,6 +6001,17 @@ msgid ""
"Gamma correct downscaling is not supported." "Gamma correct downscaling is not supported."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
"but it doesn't affect the insides of textures\n"
"(which is especially noticeable with transparent textures).\n"
"Visible spaces appear between nodes when shaders are disabled.\n"
"If set to 0, MSAA is disabled.\n"
"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures." msgid "Use trilinear filtering when scaling textures."
msgstr "" msgstr ""
@ -6056,7 +6082,7 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Video driver" msgid "Video driver"
msgstr "" msgstr "Видеодрайвер"
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "View bobbing factor" msgid "View bobbing factor"
@ -6111,7 +6137,7 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Walking speed" msgid "Walking speed"
msgstr "" msgstr "Жүру жылдамдығы"
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
@ -6188,6 +6214,12 @@ msgid ""
"If disabled, bitmap and XML vectors fonts are used instead." "If disabled, bitmap and XML vectors fonts are used instead."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Whether nametag backgrounds should be shown by default.\n"
"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock." msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr "" msgstr ""
@ -6276,7 +6308,7 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Y of upper limit of large caves." msgid "Y of upper limit of large caves."
msgstr "" msgstr "Үлкен үңгірлердің жоғарғы шегінің Y координаты."
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "Y-distance over which caverns expand to full size." msgid "Y-distance over which caverns expand to full size."
@ -6310,6 +6342,24 @@ msgstr ""
msgid "Y-level of seabed." msgid "Y-level of seabed."
msgstr "" msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when saving mapblocks to disk.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"ZLib compression level to use when sending mapblocks to the client.\n"
"-1 - Zlib's default compression level\n"
"0 - no compresson, fastest\n"
"9 - best compression, slowest\n"
"(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)"
msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "cURL file download timeout" msgid "cURL file download timeout"
msgstr "" msgstr ""
@ -6321,3 +6371,12 @@ msgstr ""
#: src/settings_translation_file.cpp #: src/settings_translation_file.cpp
msgid "cURL timeout" msgid "cURL timeout"
msgstr "" msgstr ""
#~ msgid "Main"
#~ msgstr "Басты мәзір"
#~ msgid "No"
#~ msgstr "Жоқ"
#~ msgid "Yes"
#~ msgstr "Иә"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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