Compare commits
334 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b3e553dd5 | ||
|
|
bfa608b85e | ||
|
|
7cb5217255 | ||
|
|
4f6bec19bc | ||
|
|
649dca4d16 | ||
|
|
601ab85226 | ||
|
|
e988df0fbd | ||
|
|
b89c79e905 | ||
|
|
9fe74a34ea | ||
|
|
64befefcfc | ||
|
|
6f9d384311 | ||
|
|
c25102a4f7 | ||
|
|
c893958bb1 | ||
|
|
db9c86d6c1 | ||
|
|
1dfc2e02b3 | ||
|
|
ec039a3d12 | ||
|
|
77acdfed43 | ||
|
|
926a47f35b | ||
|
|
df2f4168e5 | ||
|
|
fe560d81e7 | ||
|
|
64627817fc | ||
|
|
a61aa6690b | ||
|
|
7721948a2f | ||
|
|
6b2c46c431 | ||
|
|
83f1d7cd9e | ||
|
|
13f7049d84 | ||
|
|
503e61cf2b | ||
|
|
efc75db764 | ||
|
|
f62ddf9022 | ||
|
|
96fe1de832 | ||
|
|
730d316efe | ||
|
|
e464f19356 | ||
|
|
ab43377577 | ||
|
|
865f380c91 | ||
|
|
3abbe7efd1 | ||
|
|
7f6e9e9540 | ||
|
|
4a9fe1a1d5 | ||
|
|
e57dc4ef18 | ||
|
|
c67f72890c | ||
|
|
5e80df46b8 | ||
|
|
c135e9c7d4 | ||
|
|
1ba1fb42a4 | ||
|
|
127c488355 | ||
|
|
981c6c9bf2 | ||
|
|
d00e8bd31a | ||
|
|
55a97f4605 | ||
|
|
3e2efdf18a | ||
|
|
bc66f46323 | ||
|
|
cc92e45b78 | ||
|
|
b2253e5b42 | ||
|
|
dcd0b63f64 | ||
|
|
b2577b1f27 | ||
|
|
93474c4218 | ||
|
|
f577facf79 | ||
|
|
45fcc9de29 | ||
|
|
b24f7a4d13 | ||
|
|
6074163bf3 | ||
|
|
b76ec317c9 | ||
|
|
714ecc5e27 | ||
|
|
9397b5de08 | ||
|
|
1369503aba | ||
|
|
fedf644635 | ||
|
|
f9b5771274 | ||
|
|
8512cd967d | ||
|
|
94eb370710 | ||
|
|
587e7b299b | ||
|
|
d5ca3b721e | ||
|
|
27f5ff950e | ||
|
|
4a95c37e14 | ||
|
|
5d9ab86adf | ||
|
|
e0564d5de0 | ||
|
|
be96fa2fb8 | ||
|
|
726dcaacb6 | ||
|
|
70190624c6 | ||
|
|
71e5a466a6 | ||
|
|
822723c246 | ||
|
|
bda62bd3bf | ||
|
|
efc9329033 | ||
|
|
2c09e8a84c | ||
|
|
9575b0a2a8 | ||
|
|
6911a7d279 | ||
|
|
5068cb40ce | ||
|
|
e5781b5e34 | ||
|
|
782d06be46 | ||
|
|
81c863ac4d | ||
|
|
d859ad7ed7 | ||
|
|
ee1155fe6d | ||
|
|
3b1c3ac678 | ||
|
|
3332f606ed | ||
|
|
f00cee75c1 | ||
|
|
0913287578 | ||
|
|
7b41f54411 | ||
|
|
03ab6aa24c | ||
|
|
9a559eb8cf | ||
|
|
58f036ad1d | ||
|
|
098692ef26 | ||
|
|
a888b232fe | ||
|
|
b88aa81da7 | ||
|
|
8d5b400d09 | ||
|
|
969d2b3eb1 | ||
|
|
a031a15487 | ||
|
|
777ac58f85 | ||
|
|
be4cc306a5 | ||
|
|
0deb68d81c | ||
|
|
b75505e6b2 | ||
|
|
ee8067f7cf | ||
|
|
2cf76f6f1b | ||
|
|
80874391b8 | ||
|
|
2708482f1b | ||
|
|
084be3599a | ||
|
|
b28734c82c | ||
|
|
d07000ed1d | ||
|
|
647f1cbfe5 | ||
|
|
2b0d1710a5 | ||
|
|
97cddd1b96 | ||
|
|
f1f2004cb9 | ||
|
|
289c4a7776 | ||
|
|
97790c7711 | ||
|
|
149b51967d | ||
|
|
898a4e441f | ||
|
|
a4183994a4 | ||
|
|
c824abd7b2 | ||
|
|
d7395cd2ab | ||
|
|
8767c78169 | ||
|
|
0fb9567f13 | ||
|
|
43a388ec53 | ||
|
|
d3f0ce6224 | ||
|
|
d83602d98e | ||
|
|
c33b993397 | ||
|
|
88ffb3f73b | ||
|
|
386108f982 | ||
|
|
ddd2b18321 | ||
|
|
bc3072b35e | ||
|
|
e9a4e98cb9 | ||
|
|
53da8bd1c8 | ||
|
|
625a4c2e66 | ||
|
|
e703c5b81f | ||
|
|
33dd267fd9 | ||
|
|
a699bdb7a1 | ||
|
|
770305e28d | ||
|
|
36747794ab | ||
|
|
c03c296dc7 | ||
|
|
4a9b8aae5e | ||
|
|
3d4d0cb574 | ||
|
|
9894167bbf | ||
|
|
7c37b1891a | ||
|
|
418c2e7a44 | ||
|
|
4117ab473b | ||
|
|
93d36e88f9 | ||
|
|
b11834605b | ||
|
|
58ded5cd27 | ||
|
|
bc6f3e4e00 | ||
|
|
37e6d1356b | ||
|
|
daddd37706 | ||
|
|
14ba94ad6a | ||
|
|
03868ff8e1 | ||
|
|
527deb947c | ||
|
|
c45c530f74 | ||
|
|
47f60aebcd | ||
|
|
852f768a75 | ||
|
|
9e6376bd95 | ||
|
|
e385af7cc0 | ||
|
|
220c4f1142 | ||
|
|
0a376c1d50 | ||
|
|
b83e9225b7 | ||
|
|
ca8c1b6134 | ||
|
|
a71bfb4b60 | ||
|
|
e60eb32050 | ||
|
|
666aae3593 | ||
|
|
49f6e347f0 | ||
|
|
1f42479e0c | ||
|
|
9e0bb94460 | ||
|
|
ce901f4c4c | ||
|
|
7cd5eb4c77 | ||
|
|
17cfb1850d | ||
|
|
e7f5cdf9d4 | ||
|
|
dda2071cc0 | ||
|
|
6e4fdf37ba | ||
|
|
7d002b60ff | ||
|
|
04c3b17c78 | ||
|
|
58fd39de35 | ||
|
|
9449026839 | ||
|
|
e7247c1a66 | ||
|
|
0d26bb36af | ||
|
|
10502b59bc | ||
|
|
abe74ea5ea | ||
|
|
98182f6097 | ||
|
|
cd27c8ef5d | ||
|
|
2bdff11d54 | ||
|
|
7a32698312 | ||
|
|
5743ef4e64 | ||
|
|
3b684d306c | ||
|
|
e1146396bc | ||
|
|
7c0e707cf1 | ||
|
|
feb7de91ec | ||
|
|
4468ea84e6 | ||
|
|
96e2931c5c | ||
|
|
5961106f9f | ||
|
|
fbf76184f0 | ||
|
|
8ec3fc35c6 | ||
|
|
d50b2ede92 | ||
|
|
453d79e3a2 | ||
|
|
046534e14b | ||
|
|
120f02e20b | ||
|
|
becd8c03fd | ||
|
|
69367aa799 | ||
|
|
97f0bb0342 | ||
|
|
1586cdac53 | ||
|
|
1bae82e6c4 | ||
|
|
2fb0e547a0 | ||
|
|
1a5dcfd0c8 | ||
|
|
e38d65f8d1 | ||
|
|
33052abf42 | ||
|
|
b0e6806077 | ||
|
|
76b86c0368 | ||
|
|
c5a8448c41 | ||
|
|
2a0badf2d5 | ||
|
|
6b8435cf8c | ||
|
|
c1bf6f9f7a | ||
|
|
f85c1165c2 | ||
|
|
37acadc2af | ||
|
|
82709549ff | ||
|
|
6e96bc98de | ||
|
|
60aaf65b10 | ||
|
|
7d83fefd7f | ||
|
|
2bb559be82 | ||
|
|
d27f57e48f | ||
|
|
e59d971e7b | ||
|
|
025f4d28c1 | ||
|
|
0ed34e6780 | ||
|
|
9ff8012655 | ||
|
|
7d036e3ab2 | ||
|
|
8f57246620 | ||
|
|
2985dc4fc8 | ||
|
|
dd0b8c3de5 | ||
|
|
7dd07cc7c5 | ||
|
|
8d4b768297 | ||
|
|
35ed5198fe | ||
|
|
624461c6c6 | ||
|
|
319662c0ed | ||
|
|
5b597a6bfa | ||
|
|
68fb68a83b | ||
|
|
a2e5706661 | ||
|
|
7d3b3890b5 | ||
|
|
96387ee88a | ||
|
|
23590a8383 | ||
|
|
923a97b108 | ||
|
|
c517215bcf | ||
|
|
414f0275cf | ||
|
|
04414a963c | ||
|
|
02d8df94a8 | ||
|
|
a0566270d9 | ||
|
|
0d83bdc3aa | ||
|
|
062a140b9c | ||
|
|
3e9ed6c1c7 | ||
|
|
3983019fd8 | ||
|
|
3ec3aca78d | ||
|
|
1aa50b1362 | ||
|
|
e17ae475cf | ||
|
|
6cf581e360 | ||
|
|
177ca4f4d5 | ||
|
|
16c11eb4a3 | ||
|
|
df49b93877 | ||
|
|
5e7e0347cd | ||
|
|
7d9329ecfe | ||
|
|
3640c8c051 | ||
|
|
02cbb58107 | ||
|
|
5b854f95d2 | ||
|
|
b0f39da131 | ||
|
|
dc54af7a89 | ||
|
|
d01b74d00a | ||
|
|
a782a88913 | ||
|
|
8800896824 | ||
|
|
880d9e53c3 | ||
|
|
26cad481d0 | ||
|
|
8d13967aa3 | ||
|
|
650d706d35 | ||
|
|
0e07a7157f | ||
|
|
423d69bd40 | ||
|
|
6767ed74f8 | ||
|
|
57cbb8bfd8 | ||
|
|
f70378f7f5 | ||
|
|
e1ff5b1361 | ||
|
|
ab57fdac44 | ||
|
|
dacc8cdb3a | ||
|
|
ca7043e52d | ||
|
|
6f8d40ef5d | ||
|
|
2318d19bb4 | ||
|
|
f98d0433f9 | ||
|
|
34b185e955 | ||
|
|
b6dcadeb79 | ||
|
|
c2250d95c4 | ||
|
|
adc52f3f3c | ||
|
|
0a568a6037 | ||
|
|
0747c285cd | ||
|
|
306d1ab866 | ||
|
|
9b5bb5c755 | ||
|
|
450e7ef0c5 | ||
|
|
8f0d29f931 | ||
|
|
d6026a5fee | ||
|
|
939397dd6e | ||
|
|
d207d359d1 | ||
|
|
5f88cd98ad | ||
|
|
7f51b2da28 | ||
|
|
c00c8832c6 | ||
|
|
5a9fd8f433 | ||
|
|
fc5d2074b9 | ||
|
|
10c03e1a9d | ||
|
|
67228160ae | ||
|
|
165498cecf | ||
|
|
e3badd7062 | ||
|
|
6823ce99a7 | ||
|
|
1f1ad9fd23 | ||
|
|
f5ab056b38 | ||
|
|
16c031be77 | ||
|
|
350596b94f | ||
|
|
66750dc88e | ||
|
|
d10223254a | ||
|
|
eb90c3d92d | ||
|
|
6a1670dbc3 | ||
|
|
e204bedf1d | ||
|
|
650e932ddf | ||
|
|
b7def0fcf4 | ||
|
|
e6bf6950eb | ||
|
|
17bbf4d3f6 | ||
|
|
57f5dc5dcf | ||
|
|
aa77ee66c5 | ||
|
|
b9512cab1b | ||
|
|
dd8593f2d6 | ||
|
|
5af8acfa6e | ||
|
|
ba78194636 | ||
|
|
bdbdeab005 | ||
|
|
75a8312f4e | ||
|
|
48b999a8dd |
18
.gitignore
vendored
18
.gitignore
vendored
@@ -4,13 +4,16 @@
|
||||
*bak*
|
||||
tags
|
||||
*.vim
|
||||
*.orig
|
||||
*.rej
|
||||
|
||||
## Non-static Minetest directories
|
||||
/bin/
|
||||
/games/*
|
||||
!/games/minimal/
|
||||
/cache/
|
||||
/textures/
|
||||
/textures/*
|
||||
!/textures/base/
|
||||
/sounds/
|
||||
/mods/*
|
||||
!/mods/minetest/
|
||||
@@ -29,11 +32,17 @@ src/CMakeFiles/*
|
||||
src/Makefile
|
||||
src/cmake_config.h
|
||||
src/cmake_install.cmake
|
||||
src/script/CMakeFiles/*
|
||||
src/script/common/CMakeFiles/*
|
||||
src/script/cpp_api/CMakeFiles/*
|
||||
src/script/lua_api/CMakeFiles/*
|
||||
src/util/CMakeFiles/*
|
||||
src/jthread/CMakeFiles/*
|
||||
src/jthread/Makefile
|
||||
src/jthread/cmake_config.h
|
||||
src/jthread/cmake_install.cmake
|
||||
src/jthread/libjthread.a
|
||||
src/json/libjson.a
|
||||
src/lua/build/
|
||||
src/lua/CMakeFiles/
|
||||
src/cguittfont/CMakeFiles/
|
||||
@@ -41,11 +50,16 @@ src/cguittfont/libcguittfont.a
|
||||
src/cguittfont/cmake_install.cmake
|
||||
src/cguittfont/Makefile
|
||||
src/json/CMakeFiles/
|
||||
src/json/libjson.a
|
||||
src/json/libjsoncpp.a
|
||||
src/sqlite/CMakeFiles/*
|
||||
src/sqlite/libsqlite3.a
|
||||
CMakeCache.txt
|
||||
CPackConfig.cmake
|
||||
CPackSourceConfig.cmake
|
||||
Makefile
|
||||
cmake_install.cmake
|
||||
locale/
|
||||
*.cbp
|
||||
*.layout
|
||||
*.o
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
|
||||
# Also remember to set PROTOCOL_VERSION in clientserver.h when releasing
|
||||
set(VERSION_MAJOR 0)
|
||||
set(VERSION_MINOR 4)
|
||||
set(VERSION_PATCH 5)
|
||||
set(VERSION_PATCH 7)
|
||||
if(VERSION_EXTRA)
|
||||
set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA})
|
||||
endif()
|
||||
@@ -85,7 +85,7 @@ elseif(UNIX) # Linux, BSD etc
|
||||
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
||||
set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
|
||||
set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
|
||||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
|
||||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -138,13 +138,14 @@ if(EXISTS ${MINETEST_GAME_SOURCE} AND IS_DIRECTORY ${MINETEST_GAME_SOURCE})
|
||||
install(FILES ${MINETEST_GAME_SOURCE}/game.conf DESTINATION "${SHAREDIR}/games/minetest_game/")
|
||||
install(FILES ${MINETEST_GAME_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/minetest_game/")
|
||||
install(DIRECTORY ${MINETEST_GAME_SOURCE}/mods DESTINATION "${SHAREDIR}/games/minetest_game")
|
||||
install(DIRECTORY ${MINETEST_GAME_SOURCE}/menu DESTINATION "${SHAREDIR}/games/minetest_game")
|
||||
endif()
|
||||
if(BUILD_CLIENT)
|
||||
#install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sounds/base/pack" DESTINATION "${SHAREDIR}/sounds/base")
|
||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base")
|
||||
endif()
|
||||
if(RUN_IN_PLACE)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mods/minetest/mods_here.txt" DESTINATION "${SHAREDIR}/mods/minetest")
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mods/mods_here.txt" DESTINATION "${SHAREDIR}/mods")
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/textures/all/textures_here.txt" DESTINATION "${SHAREDIR}/textures/all")
|
||||
endif()
|
||||
|
||||
|
||||
41
README.txt
41
README.txt
@@ -29,13 +29,17 @@ This game is not finished
|
||||
|
||||
Default Controls
|
||||
-----------------
|
||||
- WASD: Move
|
||||
- Space: Jump
|
||||
- E: Go down
|
||||
- Shift: Sneak
|
||||
- Q: Drop item
|
||||
- I: Open inventory
|
||||
- Mouse: Turn/look
|
||||
- WASD: move
|
||||
- Space: jump/climb
|
||||
- Shift: sneak/go down
|
||||
- Q: drop item
|
||||
- I: inventory
|
||||
- Mouse: turn/look
|
||||
- Mouse left: dig/punch
|
||||
- Mouse right: place/use
|
||||
- Mouse wheel: select item
|
||||
- Esc: pause menu
|
||||
- T: chat
|
||||
- Settable in the configuration file, see the section below.
|
||||
|
||||
Paths
|
||||
@@ -80,7 +84,7 @@ Compiling on GNU/Linux:
|
||||
-----------------------
|
||||
|
||||
Install dependencies. Here's an example for Debian/Ubuntu:
|
||||
$ apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev
|
||||
$ apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev
|
||||
|
||||
Download source, extract (this is the URL to the latest of source repository, which might not work at all times):
|
||||
$ wget https://github.com/minetest/minetest/tarball/master -O master.tar.gz
|
||||
@@ -89,8 +93,8 @@ $ cd minetest-minetest-286edd4 (or similar)
|
||||
|
||||
Download minetest_game (otherwise only the "Minimal development test" game is available)
|
||||
$ cd games/
|
||||
$ wget https://github.com/minetest/minetest_game/tarball/master -O master.tar.gz
|
||||
$ tar xf master.tar.gz
|
||||
$ wget https://github.com/minetest/minetest_game/tarball/master -O minetest_game.tar.gz
|
||||
$ tar xf minetest_game.tar.gz
|
||||
$ mv minetest-minetest_game-* minetest_game
|
||||
$ cd ..
|
||||
|
||||
@@ -107,6 +111,7 @@ $ ./minetest
|
||||
- You can build a bare server or a bare client by specifying -DBUILD_CLIENT=0 or -DBUILD_SERVER=0
|
||||
- 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
|
||||
- If you build a bare server, you don't need to have Irrlicht installed. In that case use -DIRRLICHT_SOURCE_DIR=/the/irrlicht/source
|
||||
|
||||
Compiling on Windows:
|
||||
---------------------
|
||||
@@ -254,6 +259,20 @@ distribution.
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
Authors of media files
|
||||
-----------------------
|
||||
Everything not listed in here:
|
||||
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
BlockMen:
|
||||
textures/base/pack/menuheader.png
|
||||
|
||||
erlehmann:
|
||||
misc/minetest-icon-24x24.png
|
||||
misc/minetest-icon.ico
|
||||
misc/minetest-icon.svg
|
||||
textures/base/pack/logo.png
|
||||
|
||||
License of Minetest source code
|
||||
-------------------------------
|
||||
|
||||
@@ -268,7 +287,7 @@ the Free Software Foundation; either version 2.1 of the License, or
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
@@ -24,4 +24,5 @@ dofile(minetest.get_modpath("__builtin").."/chatcommands.lua")
|
||||
dofile(minetest.get_modpath("__builtin").."/static_spawn.lua")
|
||||
dofile(minetest.get_modpath("__builtin").."/detached_inventory.lua")
|
||||
dofile(minetest.get_modpath("__builtin").."/falling.lua")
|
||||
dofile(minetest.get_modpath("__builtin").."/features.lua")
|
||||
|
||||
|
||||
@@ -116,6 +116,9 @@ minetest.register_chatcommand("grant", {
|
||||
if not grantname or not grantprivstr then
|
||||
minetest.chat_send_player(name, "Invalid parameters (see /help grant)")
|
||||
return
|
||||
elseif not minetest.auth_table[grantname] then
|
||||
minetest.chat_send_player(name, "Player "..grantname.." does not exist.")
|
||||
return
|
||||
end
|
||||
local grantprivs = minetest.string_to_privs(grantprivstr)
|
||||
if grantprivstr == "all" then
|
||||
@@ -159,6 +162,9 @@ minetest.register_chatcommand("revoke", {
|
||||
if not revokename or not revokeprivstr then
|
||||
minetest.chat_send_player(name, "Invalid parameters (see /help revoke)")
|
||||
return
|
||||
elseif not minetest.auth_table[revokename] then
|
||||
minetest.chat_send_player(name, "Player "..revokename.." does not exist.")
|
||||
return
|
||||
end
|
||||
local revokeprivs = minetest.string_to_privs(revokeprivstr)
|
||||
local privs = minetest.get_player_privs(revokename)
|
||||
@@ -255,7 +261,7 @@ minetest.register_chatcommand("teleport", {
|
||||
}
|
||||
for _, d in ipairs(tries) do
|
||||
local p = {x = pos.x+d.x, y = pos.y+d.y, z = pos.z+d.z}
|
||||
local n = minetest.env:get_node(p)
|
||||
local n = minetest.get_node(p)
|
||||
if not minetest.registered_nodes[n.name].walkable then
|
||||
return p, true
|
||||
end
|
||||
@@ -266,7 +272,7 @@ minetest.register_chatcommand("teleport", {
|
||||
local teleportee = nil
|
||||
local p = {}
|
||||
p.x, p.y, p.z = string.match(param, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
|
||||
teleportee = minetest.env:get_player_by_name(name)
|
||||
teleportee = minetest.get_player_by_name(name)
|
||||
if teleportee and p.x and p.y and p.z then
|
||||
minetest.chat_send_player(name, "Teleporting to ("..p.x..", "..p.y..", "..p.z..")")
|
||||
teleportee:setpos(p)
|
||||
@@ -277,9 +283,9 @@ minetest.register_chatcommand("teleport", {
|
||||
local p = nil
|
||||
local target_name = nil
|
||||
target_name = string.match(param, "^([^ ]+)$")
|
||||
teleportee = minetest.env:get_player_by_name(name)
|
||||
teleportee = minetest.get_player_by_name(name)
|
||||
if target_name then
|
||||
local target = minetest.env:get_player_by_name(target_name)
|
||||
local target = minetest.get_player_by_name(target_name)
|
||||
if target then
|
||||
p = target:getpos()
|
||||
end
|
||||
@@ -297,7 +303,7 @@ minetest.register_chatcommand("teleport", {
|
||||
local teleportee_name = nil
|
||||
teleportee_name, p.x, p.y, p.z = string.match(param, "^([^ ]+) +([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
|
||||
if teleportee_name then
|
||||
teleportee = minetest.env:get_player_by_name(teleportee_name)
|
||||
teleportee = minetest.get_player_by_name(teleportee_name)
|
||||
end
|
||||
if teleportee and p.x and p.y and p.z then
|
||||
minetest.chat_send_player(name, "Teleporting "..teleportee_name.." to ("..p.x..", "..p.y..", "..p.z..")")
|
||||
@@ -311,10 +317,10 @@ minetest.register_chatcommand("teleport", {
|
||||
local target_name = nil
|
||||
teleportee_name, target_name = string.match(param, "^([^ ]+) +([^ ]+)$")
|
||||
if teleportee_name then
|
||||
teleportee = minetest.env:get_player_by_name(teleportee_name)
|
||||
teleportee = minetest.get_player_by_name(teleportee_name)
|
||||
end
|
||||
if target_name then
|
||||
local target = minetest.env:get_player_by_name(target_name)
|
||||
local target = minetest.get_player_by_name(target_name)
|
||||
if target then
|
||||
p = target:getpos()
|
||||
end
|
||||
@@ -396,7 +402,7 @@ local function handle_give_command(cmd, giver, receiver, stackstring)
|
||||
minetest.chat_send_player(giver, 'error: cannot give an unknown item')
|
||||
return
|
||||
end
|
||||
local receiverref = minetest.env:get_player_by_name(receiver)
|
||||
local receiverref = minetest.get_player_by_name(receiver)
|
||||
if receiverref == nil then
|
||||
minetest.chat_send_player(giver, receiver..' is not a known player')
|
||||
return
|
||||
@@ -460,14 +466,14 @@ minetest.register_chatcommand("spawnentity", {
|
||||
return
|
||||
end
|
||||
print('/spawnentity invoked, entityname="'..entityname..'"')
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player == nil then
|
||||
print("Unable to spawn entity, player is nil")
|
||||
return true -- Handled chat message
|
||||
end
|
||||
local p = player:getpos()
|
||||
p.y = p.y + 1
|
||||
minetest.env:add_entity(p, entityname)
|
||||
minetest.add_entity(p, entityname)
|
||||
minetest.chat_send_player(name, '"'..entityname
|
||||
..'" spawned.');
|
||||
end,
|
||||
@@ -477,7 +483,7 @@ minetest.register_chatcommand("pulverize", {
|
||||
description = "delete item in hand",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player == nil then
|
||||
print("Unable to pulverize, player is nil")
|
||||
return true -- Handled chat message
|
||||
@@ -527,7 +533,7 @@ minetest.register_chatcommand("rollback_check", {
|
||||
if act_p.x ~= pos.x or act_p.y ~= pos.y or act_p.z ~= pos.z then
|
||||
nodedesc = minetest.pos_to_string(act_p)
|
||||
end
|
||||
local nodename = minetest.env:get_node(act_p).name
|
||||
local nodename = minetest.get_node(act_p).name
|
||||
minetest.chat_send_player(name, "Last actor on "..nodedesc..
|
||||
" was "..actor..", "..dump(act_seconds)..
|
||||
"s ago (node is now "..nodename..")")
|
||||
@@ -592,7 +598,7 @@ minetest.register_chatcommand("time", {
|
||||
if newtime == nil then
|
||||
minetest.chat_send_player(name, "Invalid time")
|
||||
else
|
||||
minetest.env:set_timeofday((newtime % 24000) / 24000)
|
||||
minetest.set_timeofday((newtime % 24000) / 24000)
|
||||
minetest.chat_send_player(name, "Time of day changed.")
|
||||
minetest.log("action", name .. " sets time " .. newtime)
|
||||
end
|
||||
@@ -619,7 +625,7 @@ minetest.register_chatcommand("ban", {
|
||||
minetest.chat_send_player(name, "Ban list: " .. minetest.get_ban_list())
|
||||
return
|
||||
end
|
||||
if not minetest.env:get_player_by_name(param) then
|
||||
if not minetest.get_player_by_name(param) then
|
||||
minetest.chat_send_player(name, "No such player")
|
||||
return
|
||||
end
|
||||
@@ -654,8 +660,28 @@ minetest.register_chatcommand("clearobjects", {
|
||||
func = function(name, param)
|
||||
minetest.log("action", name .. " clears all objects")
|
||||
minetest.chat_send_all("Clearing all objects. This may take long. You may experience a timeout. (by " .. name .. ")")
|
||||
minetest.env:clear_objects()
|
||||
minetest.clear_objects()
|
||||
minetest.log("action", "object clearing done")
|
||||
minetest.chat_send_all("*** Cleared all objects.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("msg", {
|
||||
params = "<name> <message>",
|
||||
description = "Send a private message",
|
||||
privs = {shout=true},
|
||||
func = function(name, param)
|
||||
local found, _, sendto, message = param:find("^([^%s]+)%s(.+)$")
|
||||
if found then
|
||||
if minetest.get_player_by_name(sendto) then
|
||||
minetest.log("action", "PM from "..name.." to "..sendto..": "..message)
|
||||
minetest.chat_send_player(sendto, "PM from "..name..": "..message, false)
|
||||
minetest.chat_send_player(name, "Message sent")
|
||||
else
|
||||
minetest.chat_send_player(name, "The player "..sendto.." is not online")
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(name, "Invalid usage, see /help msg")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -24,3 +24,25 @@ minetest.add_to_creative_inventory = function(itemstring)
|
||||
minetest.log('info', "WARNING: minetest.add_to_creative_inventory: This function is deprecated and does nothing.")
|
||||
end
|
||||
|
||||
--
|
||||
-- EnvRef
|
||||
--
|
||||
minetest.env = {}
|
||||
local envref_deprecation_message_printed = false
|
||||
setmetatable(minetest.env, {
|
||||
__index = function(table, key)
|
||||
if not envref_deprecation_message_printed then
|
||||
minetest.log("info", "WARNING: minetest.env:[...] is deprecated and should be replaced with minetest.[...]")
|
||||
envref_deprecation_message_printed = true
|
||||
end
|
||||
local func = minetest[key]
|
||||
if type(func) == "function" then
|
||||
rawset(table, key, function(self, ...)
|
||||
return func(unpack({...}))
|
||||
end)
|
||||
else
|
||||
rawset(table, key, nil)
|
||||
end
|
||||
return rawget(table, key)
|
||||
end
|
||||
})
|
||||
|
||||
@@ -53,23 +53,27 @@ minetest.register_entity("__builtin:falling_node", {
|
||||
-- Turn to actual sand when collides to ground or just move
|
||||
local pos = self.object:getpos()
|
||||
local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point
|
||||
local bcn = minetest.env:get_node(bcp)
|
||||
local bcn = minetest.get_node(bcp)
|
||||
-- Note: walkable is in the node definition, not in item groups
|
||||
if minetest.registered_nodes[bcn.name] and
|
||||
minetest.registered_nodes[bcn.name].walkable then
|
||||
if minetest.registered_nodes[bcn.name].buildable_to then
|
||||
minetest.remove_node(bcp)
|
||||
return
|
||||
end
|
||||
local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
|
||||
-- Check what's here
|
||||
local n2 = minetest.env:get_node(np)
|
||||
local n2 = minetest.get_node(np)
|
||||
-- If it's not air or liquid, remove node and replace it with
|
||||
-- it's drops
|
||||
if n2.name ~= "air" and (not minetest.registered_nodes[n2.name] or
|
||||
minetest.registered_nodes[n2.name].liquidtype == "none") then
|
||||
local drops = minetest.get_node_drops(n2.name, "")
|
||||
minetest.env:remove_node(np)
|
||||
minetest.remove_node(np)
|
||||
-- Add dropped items
|
||||
local _, dropped_item
|
||||
for _, dropped_item in ipairs(drops) do
|
||||
minetest.env:add_item(np, dropped_item)
|
||||
minetest.add_item(np, dropped_item)
|
||||
end
|
||||
-- Run script hook
|
||||
local _, callback
|
||||
@@ -78,8 +82,9 @@ minetest.register_entity("__builtin:falling_node", {
|
||||
end
|
||||
end
|
||||
-- Create node and remove entity
|
||||
minetest.env:add_node(np, {name=self.nodename})
|
||||
minetest.add_node(np, {name=self.nodename})
|
||||
self.object:remove()
|
||||
nodeupdate(np)
|
||||
else
|
||||
-- Do nothing
|
||||
end
|
||||
@@ -87,20 +92,20 @@ minetest.register_entity("__builtin:falling_node", {
|
||||
})
|
||||
|
||||
function spawn_falling_node(p, nodename)
|
||||
obj = minetest.env:add_entity(p, "__builtin:falling_node")
|
||||
obj = minetest.add_entity(p, "__builtin:falling_node")
|
||||
obj:get_luaentity():set_node(nodename)
|
||||
end
|
||||
|
||||
function drop_attached_node(p)
|
||||
local nn = minetest.env:get_node(p).name
|
||||
minetest.env:remove_node(p)
|
||||
local nn = minetest.get_node(p).name
|
||||
minetest.remove_node(p)
|
||||
for _,item in ipairs(minetest.get_node_drops(nn, "")) do
|
||||
local pos = {
|
||||
x = p.x + math.random()/2 - 0.25,
|
||||
y = p.y + math.random()/2 - 0.25,
|
||||
z = p.z + math.random()/2 - 0.25,
|
||||
}
|
||||
minetest.env:add_item(pos, item)
|
||||
minetest.add_item(pos, item)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -125,7 +130,7 @@ function check_attached_node(p, n)
|
||||
d.y = -1
|
||||
end
|
||||
local p2 = {x=p.x+d.x, y=p.y+d.y, z=p.z+d.z}
|
||||
local nn = minetest.env:get_node(p2).name
|
||||
local nn = minetest.get_node(p2).name
|
||||
local def2 = minetest.registered_nodes[nn]
|
||||
if def2 and not def2.walkable then
|
||||
return false
|
||||
@@ -137,17 +142,22 @@ end
|
||||
-- Some common functions
|
||||
--
|
||||
|
||||
function nodeupdate_single(p)
|
||||
n = minetest.env:get_node(p)
|
||||
function nodeupdate_single(p, delay)
|
||||
n = minetest.get_node(p)
|
||||
if minetest.get_node_group(n.name, "falling_node") ~= 0 then
|
||||
p_bottom = {x=p.x, y=p.y-1, z=p.z}
|
||||
n_bottom = minetest.env:get_node(p_bottom)
|
||||
n_bottom = minetest.get_node(p_bottom)
|
||||
-- Note: walkable is in the node definition, not in item groups
|
||||
if minetest.registered_nodes[n_bottom.name] and
|
||||
not minetest.registered_nodes[n_bottom.name].walkable then
|
||||
minetest.env:remove_node(p)
|
||||
spawn_falling_node(p, n.name)
|
||||
nodeupdate(p)
|
||||
(not minetest.registered_nodes[n_bottom.name].walkable or
|
||||
minetest.registered_nodes[n_bottom.name].buildable_to) then
|
||||
if delay then
|
||||
minetest.after(0.1, nodeupdate_single, {x=p.x, y=p.y, z=p.z}, false)
|
||||
else
|
||||
minetest.remove_node(p)
|
||||
spawn_falling_node(p, n.name)
|
||||
nodeupdate(p)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -168,8 +178,7 @@ function nodeupdate(p)
|
||||
for x = -1,1 do
|
||||
for y = -1,1 do
|
||||
for z = -1,1 do
|
||||
p2 = {x=p.x+x, y=p.y+y, z=p.z+z}
|
||||
nodeupdate_single(p2)
|
||||
nodeupdate_single({x=p.x+x, y=p.y+y, z=p.z+z}, not (x==0 and y==0 and z==0))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
28
builtin/features.lua
Normal file
28
builtin/features.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
-- Minetest: builtin/features.lua
|
||||
|
||||
minetest.features = {
|
||||
glasslike_framed = true,
|
||||
nodebox_as_selectionbox = true,
|
||||
chat_send_player_param3 = true,
|
||||
get_all_craft_recipes_works = true,
|
||||
use_texture_alpha = true,
|
||||
}
|
||||
|
||||
function minetest.has_feature(arg)
|
||||
if type(arg) == "table" then
|
||||
missing_features = {}
|
||||
result = true
|
||||
for ft, _ in pairs(arg) do
|
||||
if not minetest.features[ftr] then
|
||||
missing_features[ftr] = true
|
||||
result = false
|
||||
end
|
||||
end
|
||||
return result, missing_features
|
||||
elseif type(arg) == "string" then
|
||||
if not minetest.features[arg] then
|
||||
return false, {[arg]=true}
|
||||
end
|
||||
return true, {}
|
||||
end
|
||||
end
|
||||
@@ -129,11 +129,18 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
end
|
||||
|
||||
local under = pointed_thing.under
|
||||
local oldnode_under = minetest.env:get_node(under)
|
||||
local oldnode_under = minetest.get_node_or_nil(under)
|
||||
local above = pointed_thing.above
|
||||
local oldnode_above = minetest.get_node_or_nil(above)
|
||||
|
||||
if not oldnode_under or not oldnode_above then
|
||||
minetest.log("info", placer:get_player_name() .. " tried to place"
|
||||
.. " node in unloaded position " .. minetest.pos_to_string(above))
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local olddef_under = ItemStack({name=oldnode_under.name}):get_definition()
|
||||
olddef_under = olddef_under or minetest.nodedef_default
|
||||
local above = pointed_thing.above
|
||||
local oldnode_above = minetest.env:get_node(above)
|
||||
local olddef_above = ItemStack({name=oldnode_above.name}):get_definition()
|
||||
olddef_above = olddef_above or minetest.nodedef_default
|
||||
|
||||
@@ -156,7 +163,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
minetest.log("action", placer:get_player_name() .. " places node "
|
||||
.. def.name .. " at " .. minetest.pos_to_string(place_to))
|
||||
|
||||
local oldnode = minetest.env:get_node(place_to)
|
||||
local oldnode = minetest.get_node(place_to)
|
||||
local newnode = {name = def.name, param1 = 0, param2 = 0}
|
||||
|
||||
-- Calculate direction for wall mounted stuff like torches and signs
|
||||
@@ -190,7 +197,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
end
|
||||
|
||||
-- Add node and update
|
||||
minetest.env:add_node(place_to, newnode)
|
||||
minetest.add_node(place_to, newnode)
|
||||
|
||||
local take_item = true
|
||||
|
||||
@@ -225,7 +232,7 @@ function minetest.item_place_object(itemstack, placer, pointed_thing)
|
||||
local pos = minetest.get_pointed_thing_position(pointed_thing, true)
|
||||
if pos ~= nil then
|
||||
local item = itemstack:take_item()
|
||||
minetest.env:add_item(pos, item)
|
||||
minetest.add_item(pos, item)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
@@ -234,10 +241,10 @@ function minetest.item_place(itemstack, placer, pointed_thing)
|
||||
-- Call on_rightclick if the pointed node defines it
|
||||
if pointed_thing.type == "node" and placer and
|
||||
not placer:get_player_control().sneak then
|
||||
local n = minetest.env:get_node(pointed_thing.under)
|
||||
local n = minetest.get_node(pointed_thing.under)
|
||||
local nn = n.name
|
||||
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
|
||||
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack)
|
||||
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack) or itemstack
|
||||
end
|
||||
end
|
||||
|
||||
@@ -251,7 +258,7 @@ function minetest.item_drop(itemstack, dropper, pos)
|
||||
if dropper.get_player_name then
|
||||
local v = dropper:get_look_dir()
|
||||
local p = {x=pos.x+v.x, y=pos.y+1.5+v.y, z=pos.z+v.z}
|
||||
local obj = minetest.env:add_item(p, itemstack)
|
||||
local obj = minetest.add_item(p, itemstack)
|
||||
if obj then
|
||||
v.x = v.x*2
|
||||
v.y = v.y*2 + 1
|
||||
@@ -259,7 +266,7 @@ function minetest.item_drop(itemstack, dropper, pos)
|
||||
obj:setvelocity(v)
|
||||
end
|
||||
else
|
||||
minetest.env:add_item(pos, itemstack)
|
||||
minetest.add_item(pos, itemstack)
|
||||
end
|
||||
return ItemStack("")
|
||||
end
|
||||
@@ -297,7 +304,7 @@ function minetest.handle_node_drops(pos, drops, digger)
|
||||
y = pos.y + math.random()/2-0.25,
|
||||
z = pos.z + math.random()/2-0.25,
|
||||
}
|
||||
minetest.env:add_item(p, left)
|
||||
minetest.add_item(p, left)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -333,11 +340,11 @@ function minetest.node_dig(pos, node, digger)
|
||||
|
||||
local oldmetadata = nil
|
||||
if def.after_dig_node then
|
||||
oldmetadata = minetest.env:get_meta(pos):to_table()
|
||||
oldmetadata = minetest.get_meta(pos):to_table()
|
||||
end
|
||||
|
||||
-- Remove node and update
|
||||
minetest.env:remove_node(pos)
|
||||
minetest.remove_node(pos)
|
||||
|
||||
-- Run callback
|
||||
if def.after_dig_node then
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function minetest.spawn_item(pos, item)
|
||||
-- Take item in any format
|
||||
local stack = ItemStack(item)
|
||||
local obj = minetest.env:add_entity(pos, "__builtin:item")
|
||||
local obj = minetest.add_entity(pos, "__builtin:item")
|
||||
obj:get_luaentity():set_item(stack:to_string())
|
||||
return obj
|
||||
end
|
||||
@@ -83,7 +83,7 @@ minetest.register_entity("__builtin:item", {
|
||||
on_step = function(self, dtime)
|
||||
local p = self.object:getpos()
|
||||
p.y = p.y - 0.3
|
||||
local nn = minetest.env:get_node(p).name
|
||||
local nn = minetest.get_node(p).name
|
||||
-- If node is not registered or node is walkably solid and resting on nodebox
|
||||
local v = self.object:getvelocity()
|
||||
if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable and v.y == 0 then
|
||||
|
||||
@@ -14,14 +14,14 @@ minetest.register_globalstep(function(dtime)
|
||||
for index, timer in ipairs(minetest.timers) do
|
||||
timer.time = timer.time - dtime
|
||||
if timer.time <= 0 then
|
||||
timer.func(timer.param)
|
||||
timer.func(unpack(timer.args or {}))
|
||||
table.remove(minetest.timers,index)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function minetest.after(time, func, param)
|
||||
table.insert(minetest.timers_to_add, {time=time, func=func, param=param})
|
||||
function minetest.after(time, func, ...)
|
||||
table.insert(minetest.timers_to_add, {time=time, func=func, args={...}})
|
||||
end
|
||||
|
||||
function minetest.check_player_privs(name, privs)
|
||||
@@ -43,7 +43,7 @@ end
|
||||
function minetest.get_connected_players()
|
||||
-- This could be optimized a bit, but leave that for later
|
||||
local list = {}
|
||||
for _, obj in pairs(minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do
|
||||
for _, obj in pairs(minetest.get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do
|
||||
if obj:is_player() then
|
||||
table.insert(list, obj)
|
||||
end
|
||||
@@ -99,3 +99,10 @@ function minetest.setting_get_pos(name)
|
||||
return minetest.string_to_pos(value)
|
||||
end
|
||||
|
||||
function minetest.formspec_escape(str)
|
||||
str = string.gsub(str, "\\", "\\\\")
|
||||
str = string.gsub(str, "%[", "\\[")
|
||||
str = string.gsub(str, "%]", "\\]")
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
@@ -103,6 +103,10 @@ function minetest.register_item(name, itemdef)
|
||||
|
||||
-- Apply defaults and add to registered_* table
|
||||
if itemdef.type == "node" then
|
||||
-- Use the nodebox as selection box if it's not set manually
|
||||
if itemdef.drawtype == "nodebox" and not itemdef.selection_box then
|
||||
itemdef.selection_box = itemdef.node_box
|
||||
end
|
||||
setmetatable(itemdef, {__index = minetest.nodedef_default})
|
||||
minetest.registered_nodes[itemdef.name] = itemdef
|
||||
elseif itemdef.type == "craft" then
|
||||
@@ -249,8 +253,8 @@ minetest.register_item(":unknown", {
|
||||
|
||||
minetest.register_node(":air", {
|
||||
description = "Air (you hacker you!)",
|
||||
inventory_image = "unknown_block.png",
|
||||
wield_image = "unknown_block.png",
|
||||
inventory_image = "unknown_node.png",
|
||||
wield_image = "unknown_node.png",
|
||||
drawtype = "airlike",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
@@ -265,8 +269,8 @@ minetest.register_node(":air", {
|
||||
|
||||
minetest.register_node(":ignore", {
|
||||
description = "Ignore (you hacker you!)",
|
||||
inventory_image = "unknown_block.png",
|
||||
wield_image = "unknown_block.png",
|
||||
inventory_image = "unknown_node.png",
|
||||
wield_image = "unknown_node.png",
|
||||
drawtype = "airlike",
|
||||
paramtype = "none",
|
||||
sunlight_propagates = false,
|
||||
|
||||
@@ -197,7 +197,7 @@ local function unit_test()
|
||||
unitTest("test 1b", unittest_input.cat.speed == unittest_output.cat.speed)
|
||||
unitTest("test 1c", unittest_input.dog.sound == unittest_output.dog.sound)
|
||||
|
||||
unittest_input = {escapechars="\n\r\t\v\\\"\'\[\]", noneuropean="θשׁ٩∂"}
|
||||
unittest_input = {escapechars="\n\r\t\v\\\"\'", noneuropean="θשׁ٩∂"}
|
||||
unittest_output = minetest.deserialize(minetest.serialize(unittest_input))
|
||||
unitTest("test 3a", unittest_input.escapechars == unittest_output.escapechars)
|
||||
unitTest("test 3b", unittest_input.noneuropean == unittest_output.noneuropean)
|
||||
|
||||
@@ -8,9 +8,7 @@ varying vec3 vPosition;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 pos = gl_Vertex;
|
||||
pos.y -= 2.0;
|
||||
gl_Position = mWorldViewProj * pos;
|
||||
gl_Position = mWorldViewProj * gl_Vertex;
|
||||
|
||||
vPosition = (mWorldViewProj * gl_Vertex).xyz;
|
||||
|
||||
|
||||
1
client/shaders/test_shader_3/base.txt
Normal file
1
client/shaders/test_shader_3/base.txt
Normal file
@@ -0,0 +1 @@
|
||||
trans_alphach
|
||||
25
client/shaders/test_shader_3/opengl_fragment.glsl
Normal file
25
client/shaders/test_shader_3/opengl_fragment.glsl
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
uniform sampler2D myTexture;
|
||||
uniform float fogDistance;
|
||||
|
||||
varying vec3 vPosition;
|
||||
|
||||
void main (void)
|
||||
{
|
||||
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
|
||||
col *= gl_Color;
|
||||
float a = col.a;
|
||||
col = col * col; // SRGB -> Linear
|
||||
col *= 1.8;
|
||||
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
|
||||
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
|
||||
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
|
||||
col = sqrt(col); // Linear -> SRGB
|
||||
|
||||
if(fogDistance != 0.0){
|
||||
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
|
||||
a = mix(a, 0.0, d);
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(col.r, col.g, col.b, a);
|
||||
}
|
||||
51
client/shaders/test_shader_3/opengl_vertex.glsl
Normal file
51
client/shaders/test_shader_3/opengl_vertex.glsl
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
uniform mat4 mWorldViewProj;
|
||||
uniform mat4 mInvWorld;
|
||||
uniform mat4 mTransWorld;
|
||||
uniform float dayNightRatio;
|
||||
|
||||
varying vec3 vPosition;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = mWorldViewProj * gl_Vertex;
|
||||
|
||||
vPosition = (mWorldViewProj * gl_Vertex).xyz;
|
||||
|
||||
vec4 color;
|
||||
//color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
float day = gl_Color.r;
|
||||
float night = gl_Color.g;
|
||||
float light_source = gl_Color.b;
|
||||
|
||||
/*color.r = mix(night, day, dayNightRatio);
|
||||
color.g = color.r;
|
||||
color.b = color.r;*/
|
||||
|
||||
float rg = mix(night, day, dayNightRatio);
|
||||
rg += light_source * 1.0; // Make light sources brighter
|
||||
float b = rg;
|
||||
|
||||
// Moonlight is blue
|
||||
b += (day - night) / 13.0;
|
||||
rg -= (day - night) / 13.0;
|
||||
|
||||
// Emphase blue a bit in darker places
|
||||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
|
||||
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
|
||||
|
||||
// Artificial light is yellow-ish
|
||||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
|
||||
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
|
||||
|
||||
color.r = rg;
|
||||
color.g = rg;
|
||||
color.b = b;
|
||||
|
||||
color.a = gl_Color.a;
|
||||
|
||||
gl_FrontColor = gl_BackColor = color;
|
||||
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
||||
}
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
#FIND_PATH(JSON_INCLUDE_DIR json.h)
|
||||
|
||||
#FIND_LIBRARY(JSON_LIBRARY NAMES json)
|
||||
#FIND_LIBRARY(JSON_LIBRARY NAMES jsoncpp)
|
||||
|
||||
#IF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
|
||||
# SET( JSON_FOUND TRUE )
|
||||
#ENDIF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
|
||||
|
||||
#IF(JSON_FOUND)
|
||||
# MESSAGE(STATUS "Found system json header file in ${JSON_INCLUDE_DIR}")
|
||||
# MESSAGE(STATUS "Found system json library ${JSON_LIBRARY}")
|
||||
# MESSAGE(STATUS "Found system jsoncpp header file in ${JSON_INCLUDE_DIR}")
|
||||
# MESSAGE(STATUS "Found system jsoncpp library ${JSON_LIBRARY}")
|
||||
#ELSE(JSON_FOUND)
|
||||
SET(JSON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/json)
|
||||
SET(JSON_LIBRARY json)
|
||||
MESSAGE(STATUS "Using project json library")
|
||||
SET(JSON_LIBRARY jsoncpp)
|
||||
MESSAGE(STATUS "Using project jsoncpp library")
|
||||
#ENDIF(JSON_FOUND)
|
||||
|
||||
130
cmake/Modules/FindOpenGLES2.cmake
Normal file
130
cmake/Modules/FindOpenGLES2.cmake
Normal file
@@ -0,0 +1,130 @@
|
||||
#-------------------------------------------------------------------
|
||||
# This file is stolen from part of the CMake build system for OGRE (Object-oriented Graphics Rendering Engine) http://www.ogre3d.org/
|
||||
#
|
||||
# The contents of this file are placed in the public domain. Feel
|
||||
# free to make use of it in any way you like.
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
# - Try to find OpenGLES and EGL
|
||||
# Once done this will define
|
||||
#
|
||||
# OPENGLES2_FOUND - system has OpenGLES
|
||||
# OPENGLES2_INCLUDE_DIR - the GL include directory
|
||||
# OPENGLES2_LIBRARIES - Link these to use OpenGLES
|
||||
#
|
||||
# EGL_FOUND - system has EGL
|
||||
# EGL_INCLUDE_DIR - the EGL include directory
|
||||
# EGL_LIBRARIES - Link these to use EGL
|
||||
|
||||
# win32, apple, android NOT TESED
|
||||
# linux tested and works
|
||||
|
||||
IF (WIN32)
|
||||
IF (CYGWIN)
|
||||
|
||||
FIND_PATH(OPENGLES2_INCLUDE_DIR GLES2/gl2.h )
|
||||
|
||||
FIND_LIBRARY(OPENGLES2_gl_LIBRARY libGLESv2 )
|
||||
|
||||
ELSE (CYGWIN)
|
||||
|
||||
IF(BORLAND)
|
||||
SET (OPENGLES2_gl_LIBRARY import32 CACHE STRING "OpenGL ES 2.x library for win32")
|
||||
ELSE(BORLAND)
|
||||
# todo
|
||||
# SET (OPENGLES_gl_LIBRARY ${SOURCE_DIR}/Dependencies/lib/release/libGLESv2.lib CACHE STRING "OpenGL ES 2.x library for win32"
|
||||
ENDIF(BORLAND)
|
||||
|
||||
ENDIF (CYGWIN)
|
||||
|
||||
ELSE (WIN32)
|
||||
|
||||
IF (APPLE)
|
||||
|
||||
create_search_paths(/Developer/Platforms)
|
||||
findpkg_framework(OpenGLES2)
|
||||
set(OPENGLES2_gl_LIBRARY "-framework OpenGLES")
|
||||
|
||||
ELSE(APPLE)
|
||||
|
||||
FIND_PATH(OPENGLES2_INCLUDE_DIR GLES2/gl2.h
|
||||
/usr/openwin/share/include
|
||||
/opt/graphics/OpenGL/include /usr/X11R6/include
|
||||
/usr/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OPENGLES2_gl_LIBRARY
|
||||
NAMES GLESv2
|
||||
PATHS /opt/graphics/OpenGL/lib
|
||||
/usr/openwin/lib
|
||||
/usr/shlib /usr/X11R6/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
IF (NOT BUILD_ANDROID)
|
||||
FIND_PATH(EGL_INCLUDE_DIR EGL/egl.h
|
||||
/usr/openwin/share/include
|
||||
/opt/graphics/OpenGL/include /usr/X11R6/include
|
||||
/usr/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(EGL_egl_LIBRARY
|
||||
NAMES EGL
|
||||
PATHS /opt/graphics/OpenGL/lib
|
||||
/usr/openwin/lib
|
||||
/usr/shlib /usr/X11R6/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
# On Unix OpenGL most certainly always requires X11.
|
||||
# Feel free to tighten up these conditions if you don't
|
||||
# think this is always true.
|
||||
# It's not true on OSX.
|
||||
|
||||
IF (OPENGLES2_gl_LIBRARY)
|
||||
IF(NOT X11_FOUND)
|
||||
INCLUDE(FindX11)
|
||||
ENDIF(NOT X11_FOUND)
|
||||
IF (X11_FOUND)
|
||||
IF (NOT APPLE)
|
||||
SET (OPENGLES2_LIBRARIES ${X11_LIBRARIES})
|
||||
ENDIF (NOT APPLE)
|
||||
ENDIF (X11_FOUND)
|
||||
ENDIF (OPENGLES2_gl_LIBRARY)
|
||||
ENDIF ()
|
||||
|
||||
ENDIF(APPLE)
|
||||
ENDIF (WIN32)
|
||||
|
||||
#SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
|
||||
|
||||
IF (BUILD_ANDROID)
|
||||
IF(OPENGLES2_gl_LIBRARY)
|
||||
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
|
||||
SET( EGL_LIBRARIES)
|
||||
SET( OPENGLES2_FOUND "YES" )
|
||||
ENDIF(OPENGLES2_gl_LIBRARY)
|
||||
ELSE ()
|
||||
|
||||
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
|
||||
|
||||
IF(OPENGLES2_gl_LIBRARY AND EGL_egl_LIBRARY)
|
||||
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
|
||||
SET( EGL_LIBRARIES ${EGL_egl_LIBRARY} ${EGL_LIBRARIES})
|
||||
SET( OPENGLES2_FOUND "YES" )
|
||||
ENDIF(OPENGLES2_gl_LIBRARY AND EGL_egl_LIBRARY)
|
||||
|
||||
ENDIF ()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
OPENGLES2_INCLUDE_DIR
|
||||
OPENGLES2_gl_LIBRARY
|
||||
EGL_INCLUDE_DIR
|
||||
EGL_egl_LIBRARY
|
||||
)
|
||||
|
||||
IF(OPENGLES2_FOUND)
|
||||
MESSAGE(STATUS "Found system opengles2 library ${OPENGLES2_LIBRARIES}")
|
||||
ELSE ()
|
||||
SET(OPENGLES2_LIBRARIES "")
|
||||
ENDIF ()
|
||||
687
doc/lua_api.txt
687
doc/lua_api.txt
File diff suppressed because it is too large
Load Diff
@@ -61,6 +61,9 @@ Run dedicated server
|
||||
\-\-speedtests
|
||||
Run speed tests
|
||||
.TP
|
||||
\-\-videomodes
|
||||
List available video modes
|
||||
.TP
|
||||
\-\-info
|
||||
Print more information to console
|
||||
.TP
|
||||
@@ -85,7 +88,7 @@ This man page was originally written by
|
||||
Juhani Numminen <juhaninumminen0@gmail.com>.
|
||||
|
||||
.SH WWW
|
||||
http://c55.me/minetest/
|
||||
http://www.minetest.net/
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR minetestserver(6)
|
||||
|
||||
@@ -64,7 +64,7 @@ This man page was originally written by
|
||||
Juhani Numminen <juhaninumminen0@gmail.com>.
|
||||
|
||||
.SH WWW
|
||||
http://c55.me/minetest/
|
||||
http://www.minetest.net/
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR minetest(6)
|
||||
|
||||
BIN
games/minimal/menu/background.png
Normal file
BIN
games/minimal/menu/background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
games/minimal/menu/icon.png
Normal file
BIN
games/minimal/menu/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 397 B |
@@ -41,13 +41,13 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image)
|
||||
return
|
||||
end
|
||||
-- Check if pointing to a liquid
|
||||
n = minetest.env:get_node(pointed_thing.under)
|
||||
n = minetest.get_node(pointed_thing.under)
|
||||
if bucket.liquids[n.name] == nil then
|
||||
-- Not a liquid
|
||||
minetest.env:add_node(pointed_thing.above, {name=source})
|
||||
minetest.add_node(pointed_thing.above, {name=source})
|
||||
elseif n.name ~= source then
|
||||
-- It's a liquid
|
||||
minetest.env:add_node(pointed_thing.under, {name=source})
|
||||
minetest.add_node(pointed_thing.under, {name=source})
|
||||
end
|
||||
return {name="bucket:bucket_empty"}
|
||||
end
|
||||
@@ -65,10 +65,10 @@ minetest.register_craftitem("bucket:bucket_empty", {
|
||||
return
|
||||
end
|
||||
-- Check if pointing to a liquid source
|
||||
n = minetest.env:get_node(pointed_thing.under)
|
||||
n = minetest.get_node(pointed_thing.under)
|
||||
liquiddef = bucket.liquids[n.name]
|
||||
if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then
|
||||
minetest.env:add_node(pointed_thing.under, {name="air"})
|
||||
minetest.add_node(pointed_thing.under, {name="air"})
|
||||
return {name=liquiddef.itemname}
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -659,6 +659,8 @@ function default.node_sound_dirt_defaults(table)
|
||||
{name="", gain=0.5}
|
||||
--table.dug = table.dug or
|
||||
-- {name="default_dirt_break", gain=0.5}
|
||||
table.place = table.place or
|
||||
{name="default_grass_footstep", gain=0.5}
|
||||
default.node_sound_defaults(table)
|
||||
return table
|
||||
end
|
||||
@@ -739,7 +741,7 @@ minetest.register_node("default:dirt_with_grass", {
|
||||
description = "Dirt with grass",
|
||||
tiles ={"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
groups = {crumbly=3, soil=1},
|
||||
drop = 'default:dirt',
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_grass_footstep", gain=0.4},
|
||||
@@ -750,7 +752,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", {
|
||||
description = "Dirt with grass and footsteps",
|
||||
tiles ={"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
groups = {crumbly=3, soil=1},
|
||||
drop = 'default:dirt',
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_grass_footstep", gain=0.4},
|
||||
@@ -761,7 +763,7 @@ minetest.register_node("default:dirt", {
|
||||
description = "Dirt",
|
||||
tiles ={"default_dirt.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
groups = {crumbly=3, soil=1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
@@ -1131,14 +1133,14 @@ minetest.register_node("default:sign_wall", {
|
||||
legacy_wallmounted = true,
|
||||
sounds = default.node_sound_defaults(),
|
||||
on_construct = function(pos)
|
||||
--local n = minetest.env:get_node(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
--local n = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[text;;${text}]")
|
||||
meta:set_string("infotext", "\"\"")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
--print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
fields.text = fields.text or ""
|
||||
print((sender:get_player_name() or "").." wrote \""..fields.text..
|
||||
"\" to sign at "..minetest.pos_to_string(pos))
|
||||
@@ -1156,7 +1158,7 @@ minetest.register_node("default:chest", {
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,9]"..
|
||||
"list[current_name;main;0,0;8,4;]"..
|
||||
@@ -1166,7 +1168,7 @@ minetest.register_node("default:chest", {
|
||||
inv:set_size("main", 8*4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.env:get_meta(pos);
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
@@ -1188,13 +1190,13 @@ minetest.register_node("default:chest_locked", {
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", placer:get_player_name() or "")
|
||||
meta:set_string("infotext", "Locked Chest (owned by "..
|
||||
meta:get_string("owner")..")")
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,9]"..
|
||||
"list[current_name;main;0,0;8,4;]"..
|
||||
@@ -1205,12 +1207,12 @@ minetest.register_node("default:chest_locked", {
|
||||
inv:set_size("main", 8*4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.env:get_meta(pos);
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_locked_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
@@ -1221,7 +1223,7 @@ minetest.register_node("default:chest_locked", {
|
||||
return count
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_locked_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
@@ -1232,7 +1234,7 @@ minetest.register_node("default:chest_locked", {
|
||||
return stack:get_count()
|
||||
end,
|
||||
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_locked_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
@@ -1273,7 +1275,7 @@ minetest.register_node("default:furnace", {
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
meta:set_string("infotext", "Furnace")
|
||||
local inv = meta:get_inventory()
|
||||
@@ -1282,7 +1284,7 @@ minetest.register_node("default:furnace", {
|
||||
inv:set_size("dst", 4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.env:get_meta(pos);
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("fuel") then
|
||||
return false
|
||||
@@ -1306,7 +1308,7 @@ minetest.register_node("default:furnace_active", {
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
meta:set_string("infotext", "Furnace");
|
||||
local inv = meta:get_inventory()
|
||||
@@ -1315,7 +1317,7 @@ minetest.register_node("default:furnace_active", {
|
||||
inv:set_size("dst", 4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.env:get_meta(pos);
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("fuel") then
|
||||
return false
|
||||
@@ -1329,16 +1331,16 @@ minetest.register_node("default:furnace_active", {
|
||||
})
|
||||
|
||||
function hacky_swap_node(pos,name)
|
||||
local node = minetest.env:get_node(pos)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta0 = meta:to_table()
|
||||
if node.name == name then
|
||||
return
|
||||
end
|
||||
node.name = name
|
||||
local meta0 = meta:to_table()
|
||||
minetest.env:set_node(pos,node)
|
||||
meta = minetest.env:get_meta(pos)
|
||||
minetest.set_node(pos,node)
|
||||
meta = minetest.get_meta(pos)
|
||||
meta:from_table(meta0)
|
||||
end
|
||||
|
||||
@@ -1347,7 +1349,7 @@ minetest.register_abm({
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
for i, name in ipairs({
|
||||
"fuel_totaltime",
|
||||
"fuel_time",
|
||||
@@ -1586,99 +1588,6 @@ minetest.register_alias("mapgen_stone_with_coal", "default:stone_with_coal")
|
||||
minetest.register_alias("mapgen_stone_with_iron", "default:stone_with_iron")
|
||||
minetest.register_alias("mapgen_mese", "default:mese")
|
||||
|
||||
minetest.register_biome_groups({
|
||||
0.35, 0.10, 0.30
|
||||
})
|
||||
|
||||
--
|
||||
-- Register the biomes for the map generator
|
||||
--
|
||||
minetest.register_biome({
|
||||
group_id = 0,
|
||||
name = "Ocean",
|
||||
terrain_type = "liquid",
|
||||
node_top = "default:gravel",
|
||||
node_filler = "default:stone",
|
||||
num_top_nodes = 4,
|
||||
height_min = -3000,
|
||||
height_max = 3000,
|
||||
heat_min = -20.0,
|
||||
heat_max = 100.0,
|
||||
humidity_min = 0.0,
|
||||
humidity_max = 100.0,
|
||||
scale = 10.0,
|
||||
offset = -10.0,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
group_id = 1,
|
||||
name = "Beach",
|
||||
terrain_type = "normal",
|
||||
node_top = "default:sand",
|
||||
node_filler = "default:stone",
|
||||
num_top_nodes = 5,
|
||||
height_min = -3000,
|
||||
height_max = 3000,
|
||||
heat_min = 5.0,
|
||||
heat_max = 100.0,
|
||||
humidity_min = 0.0,
|
||||
humidity_max = 100.0,
|
||||
scale = 5.0,
|
||||
offset = 5.0,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
group_id = 1,
|
||||
name = "Gravel Beach",
|
||||
terrain_type = "normal",
|
||||
node_top = "default:gravel",
|
||||
node_filler = "default:cobble",
|
||||
num_top_nodes = 5,
|
||||
height_min = -3000,
|
||||
height_max = 3000,
|
||||
heat_min = -50.0,
|
||||
heat_max = 5.0,
|
||||
humidity_min = 0.0,
|
||||
humidity_max = 100.0,
|
||||
scale = 5.0,
|
||||
offset = 5.0,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
group_id = 2,
|
||||
name = "Land",
|
||||
terrain_type = "normal",
|
||||
node_top = "default:dirt_with_grass",
|
||||
node_filler = "default:stone",
|
||||
num_top_nodes = 5,
|
||||
height_min = -3000,
|
||||
height_max = 3000,
|
||||
heat_min = -50.0,
|
||||
heat_max = 100.0,
|
||||
humidity_min = 0.0,
|
||||
humidity_max = 100.0,
|
||||
scale = 12.0,
|
||||
offset = 20.0,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
group_id = 3,
|
||||
name = "Hills",
|
||||
terrain_type = "normal",
|
||||
node_top = "default:dirt",
|
||||
node_filler = "default:stone",
|
||||
num_top_nodes = 3,
|
||||
height_min = -3000,
|
||||
height_max = 3000,
|
||||
heat_min = -50.0,
|
||||
heat_max = 100.0,
|
||||
humidity_min = 0.0,
|
||||
humidity_max = 100.0,
|
||||
scale = 60.0,
|
||||
offset = 20.0,
|
||||
})
|
||||
|
||||
|
||||
-- Support old code
|
||||
function default.spawn_falling_node(p, nodename)
|
||||
spawn_falling_node(p, nodename)
|
||||
|
||||
@@ -27,52 +27,74 @@ minetest.register_alias("mapgen_mese", "default:mese")
|
||||
-- Ore generation
|
||||
--
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max, param2)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_max)
|
||||
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
|
||||
local pr = PseudoRandom(seed)
|
||||
local num_chunks = math.floor(chunks_per_volume * volume)
|
||||
local chunk_size = 3
|
||||
if ore_per_chunk <= 4 then
|
||||
chunk_size = 2
|
||||
end
|
||||
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
|
||||
--print("generate_ore num_chunks: "..dump(num_chunks))
|
||||
for i=1,num_chunks do
|
||||
local y0 = pr:next(y_min, y_max-chunk_size+1)
|
||||
if y0 >= height_min and y0 <= height_max then
|
||||
local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
|
||||
local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
|
||||
local p0 = {x=x0, y=y0, z=z0}
|
||||
for x1=0,chunk_size-1 do
|
||||
for y1=0,chunk_size-1 do
|
||||
for z1=0,chunk_size-1 do
|
||||
if pr:next(1,inverse_chance) == 1 then
|
||||
local x2 = x0+x1
|
||||
local y2 = y0+y1
|
||||
local z2 = z0+z1
|
||||
local p2 = {x=x2, y=y2, z=z2}
|
||||
if minetest.env:get_node(p2).name == wherein then
|
||||
minetest.env:set_node(p2, {name=name, param2=param2})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
--print("generate_ore done")
|
||||
end
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_coal",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 8*8*8,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = -31000,
|
||||
height_max = 64,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_iron",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 16*16*16,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = -5,
|
||||
height_max = 7,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_iron",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 12*12*12,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = -16,
|
||||
height_max = -5,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_iron",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 9*9*9,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = -31000,
|
||||
height_max = -17,
|
||||
})
|
||||
|
||||
-- for float islands and far scaled
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_coal",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 8*8*8,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = 200,
|
||||
height_max = 31000,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "default:stone_with_iron",
|
||||
wherein = "default:stone",
|
||||
clust_scarcity = 9*9*9,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
height_min = 200,
|
||||
height_max = 31000,
|
||||
})
|
||||
|
||||
minetest.register_on_generated(function(minp, maxp, seed)
|
||||
generate_ore("default:stone_with_coal", "default:stone", minp, maxp, seed, 1/8/8/8, 5, -31000, 64)
|
||||
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+1, 1/16/16/16, 5, -5, 7)
|
||||
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+2, 1/12/12/12, 5, -16, -5)
|
||||
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+3, 1/9/9/9, 5, -31000, -17)
|
||||
-- Generate clay
|
||||
if maxp.y >= 2 and minp.y <= 0 then
|
||||
-- Assume X and Z lengths are equal
|
||||
@@ -82,17 +104,17 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
||||
for divz=0+1,divs-1-1 do
|
||||
local cx = minp.x + math.floor((divx+0.5)*divlen)
|
||||
local cz = minp.z + math.floor((divz+0.5)*divlen)
|
||||
if minetest.env:get_node({x=cx,y=1,z=cz}).name == "default:water_source" and
|
||||
minetest.env:get_node({x=cx,y=0,z=cz}).name == "default:sand" then
|
||||
if minetest.get_node({x=cx,y=1,z=cz}).name == "default:water_source" and
|
||||
minetest.get_node({x=cx,y=0,z=cz}).name == "default:sand" then
|
||||
local is_shallow = true
|
||||
local num_water_around = 0
|
||||
if minetest.env:get_node({x=cx-divlen*2,y=1,z=cz+0}).name == "default:water_source" then
|
||||
if minetest.get_node({x=cx-divlen*2,y=1,z=cz+0}).name == "default:water_source" then
|
||||
num_water_around = num_water_around + 1 end
|
||||
if minetest.env:get_node({x=cx+divlen*2,y=1,z=cz+0}).name == "default:water_source" then
|
||||
if minetest.get_node({x=cx+divlen*2,y=1,z=cz+0}).name == "default:water_source" then
|
||||
num_water_around = num_water_around + 1 end
|
||||
if minetest.env:get_node({x=cx+0,y=1,z=cz-divlen*2}).name == "default:water_source" then
|
||||
if minetest.get_node({x=cx+0,y=1,z=cz-divlen*2}).name == "default:water_source" then
|
||||
num_water_around = num_water_around + 1 end
|
||||
if minetest.env:get_node({x=cx+0,y=1,z=cz+divlen*2}).name == "default:water_source" then
|
||||
if minetest.get_node({x=cx+0,y=1,z=cz+divlen*2}).name == "default:water_source" then
|
||||
num_water_around = num_water_around + 1 end
|
||||
if num_water_around >= 2 then
|
||||
is_shallow = false
|
||||
@@ -100,8 +122,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
||||
if is_shallow then
|
||||
for x1=-divlen,divlen do
|
||||
for z1=-divlen,divlen do
|
||||
if minetest.env:get_node({x=cx+x1,y=0,z=cz+z1}).name == "default:sand" then
|
||||
minetest.env:set_node({x=cx+x1,y=0,z=cz+z1}, {name="default:clay"})
|
||||
if minetest.get_node({x=cx+x1,y=0,z=cz+z1}).name == "default:sand" then
|
||||
minetest.set_node({x=cx+x1,y=0,z=cz+z1}, {name="default:clay"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -110,11 +132,5 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
||||
end
|
||||
end
|
||||
end
|
||||
if minetest.setting_get("liquid_finite") then
|
||||
generate_ore("default:water_source", "default:stone", minp, maxp, seed+42, 1/24/24/24, 4, -100, -10, 128)
|
||||
generate_ore("default:water_source", "default:stone", minp, maxp, seed+42, 1/28/28/28, 3, -10000, -101, 128)
|
||||
generate_ore("default:lava_source", "default:stone", minp, maxp, seed+43, 1/38/38/38, 2, -500, -100, 128)
|
||||
generate_ore("default:lava_source", "default:stone", minp, maxp, seed+43, 1/30/30/30, 4, -31000, -501, 128)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
@@ -28,10 +28,10 @@ minetest.after(1.0, switch_player_visual)
|
||||
]]
|
||||
|
||||
minetest.register_node("experimental:soundblock", {
|
||||
tile_images = {"unknown_block.png", "default_tnt_bottom.png",
|
||||
tile_images = {"unknown_node.png", "default_tnt_bottom.png",
|
||||
"default_tnt_side.png", "default_tnt_side.png",
|
||||
"default_tnt_side.png", "default_tnt_side.png"},
|
||||
inventory_image = minetest.inventorycube("unknown_block.png",
|
||||
inventory_image = minetest.inventorycube("unknown_node.png",
|
||||
"default_tnt_side.png", "default_tnt_side.png"),
|
||||
groups = {dig_immediate=3},
|
||||
})
|
||||
@@ -66,7 +66,7 @@ test_sound()
|
||||
function on_step(dtime)
|
||||
-- print("experimental on_step")
|
||||
--[[
|
||||
objs = minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 10)
|
||||
objs = minetest.get_objects_inside_radius({x=0,y=0,z=0}, 10)
|
||||
for k, obj in pairs(objs) do
|
||||
name = obj:get_player_name()
|
||||
if name then
|
||||
@@ -86,17 +86,17 @@ function on_step(dtime)
|
||||
experimental.t1 = experimental.t1 + dtime
|
||||
if experimental.t1 >= 2 then
|
||||
experimental.t1 = experimental.t1 - 2
|
||||
minetest.log("time of day is "..minetest.env:get_timeofday())
|
||||
minetest.log("time of day is "..minetest.get_timeofday())
|
||||
if experimental.day then
|
||||
minetest.log("forcing day->night")
|
||||
experimental.day = false
|
||||
minetest.env:set_timeofday(0.0)
|
||||
minetest.set_timeofday(0.0)
|
||||
else
|
||||
minetest.log("forcing night->day")
|
||||
experimental.day = true
|
||||
minetest.env:set_timeofday(0.5)
|
||||
minetest.set_timeofday(0.5)
|
||||
end
|
||||
minetest.log("time of day is "..minetest.env:get_timeofday())
|
||||
minetest.log("time of day is "..minetest.get_timeofday())
|
||||
end
|
||||
--]]
|
||||
end
|
||||
@@ -133,8 +133,8 @@ minetest.register_node("experimental:tnt", {
|
||||
|
||||
minetest.register_on_punchnode(function(p, node)
|
||||
if node.name == "experimental:tnt" then
|
||||
minetest.env:remove_node(p)
|
||||
minetest.env:add_entity(p, "experimental:tnt")
|
||||
minetest.remove_node(p)
|
||||
minetest.add_entity(p, "experimental:tnt")
|
||||
nodeupdate(p)
|
||||
end
|
||||
end)
|
||||
@@ -262,7 +262,7 @@ minetest.register_on_chat_message(function(name, message)
|
||||
minetest.chat_send_player(name, "you don't have permission to interact")
|
||||
return true -- Handled chat message
|
||||
end
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player == nil then
|
||||
print("Unable to spawn entity, player is nil")
|
||||
return true -- Handled chat message
|
||||
@@ -270,7 +270,7 @@ minetest.register_on_chat_message(function(name, message)
|
||||
local entityname = "experimental:dummyball"
|
||||
local p = player:getpos()
|
||||
p.y = p.y + 1
|
||||
minetest.env:add_entity(p, entityname)
|
||||
minetest.add_entity(p, entityname)
|
||||
minetest.chat_send_player(name, '"'..entityname
|
||||
..'" spawned.');
|
||||
return true -- Handled chat message
|
||||
@@ -323,7 +323,7 @@ end)
|
||||
minetest.register_on_generated(function(minp, maxp)
|
||||
--print("on_generated: minp="..dump(minp).." maxp="..dump(maxp))
|
||||
--cp = {x=(minp.x+maxp.x)/2, y=(minp.y+maxp.y)/2, z=(minp.z+maxp.z)/2}
|
||||
--minetest.env:add_node(cp, {name="sand"})
|
||||
--minetest.add_node(cp, {name="sand"})
|
||||
end)
|
||||
|
||||
-- Example setting get
|
||||
@@ -353,7 +353,7 @@ end)
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
print("TNT ABM action")
|
||||
pos.y = pos.y + 1
|
||||
minetest.env:add_node(pos, {name="papyrus"})
|
||||
minetest.add_node(pos, {name="papyrus"})
|
||||
end,
|
||||
})]]
|
||||
|
||||
@@ -364,7 +364,7 @@ end)
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
print("ABM: Sign text changed")
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_text("foo")
|
||||
end,
|
||||
})]]
|
||||
@@ -395,7 +395,7 @@ minetest.register_abm({
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
n = minetest.env:get_node(pos)
|
||||
n = minetest.get_node(pos)
|
||||
print(dump(n))
|
||||
if n.name ~= "air" then
|
||||
return
|
||||
@@ -404,7 +404,7 @@ minetest.register_abm({
|
||||
pos.y = pos.y + 2
|
||||
ncpos = pos
|
||||
nctime = os.clock()
|
||||
minetest.env:add_node(ncpos, {name="nyancat"})
|
||||
minetest.add_node(ncpos, {name="nyancat"})
|
||||
end
|
||||
})
|
||||
|
||||
@@ -431,12 +431,12 @@ minetest.register_abm({
|
||||
p2 = {x = p1.x + s1[2], y = p1.y, z = p1.z + s1[3]}
|
||||
table.insert(ncold, 1, p0)
|
||||
while #ncold >= 10 do
|
||||
minetest.env:add_node(ncold[#ncold], {name="air"})
|
||||
minetest.add_node(ncold[#ncold], {name="air"})
|
||||
table.remove(ncold, #ncold)
|
||||
end
|
||||
minetest.env:add_node(p0, {name="nyancat_rainbow"})
|
||||
minetest.env:add_node(p1, {name="nyancat", param1=s0[4]})
|
||||
minetest.env:add_node(p2, {name="air"})
|
||||
minetest.add_node(p0, {name="nyancat_rainbow"})
|
||||
minetest.add_node(p1, {name="nyancat", param1=s0[4]})
|
||||
minetest.add_node(p2, {name="air"})
|
||||
ncpos = p1
|
||||
end
|
||||
end,
|
||||
@@ -448,20 +448,20 @@ minetest.register_node("experimental:tester_node_1", {
|
||||
groups = {oddly_breakable_by_hand=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
-- This was known to cause a bug in minetest.item_place_node() when used
|
||||
-- via minetest.env:place_node(), causing a placer with no position
|
||||
-- via minetest.place_node(), causing a placer with no position
|
||||
paramtype2 = "facedir",
|
||||
|
||||
on_construct = function(pos)
|
||||
experimental.print_to_everything("experimental:tester_node_1:on_construct("..minetest.pos_to_string(pos)..")")
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("mine", "test")
|
||||
local timer = minetest.env:get_node_timer(pos)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:start(4, 3)
|
||||
end,
|
||||
|
||||
after_place_node = function(pos, placer)
|
||||
experimental.print_to_everything("experimental:tester_node_1:after_place_node("..minetest.pos_to_string(pos)..")")
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if meta:get_string("mine") == "test" then
|
||||
experimental.print_to_everything("correct metadata found")
|
||||
else
|
||||
@@ -493,14 +493,14 @@ minetest.register_craftitem("experimental:tester_tool_1", {
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
--print(dump(pointed_thing))
|
||||
if pointed_thing.type == "node" then
|
||||
if minetest.env:get_node(pointed_thing.under).name == "experimental:tester_node_1" then
|
||||
if minetest.get_node(pointed_thing.under).name == "experimental:tester_node_1" then
|
||||
local p = pointed_thing.under
|
||||
minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p))
|
||||
minetest.env:dig_node(p)
|
||||
minetest.dig_node(p)
|
||||
else
|
||||
local p = pointed_thing.above
|
||||
minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p))
|
||||
minetest.env:place_node(p, {name="experimental:tester_node_1"})
|
||||
minetest.place_node(p, {name="experimental:tester_node_1"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
@@ -556,7 +556,7 @@ minetest.register_chatcommand("test1", {
|
||||
params = "",
|
||||
description = "Test 1: Modify player's inventory view",
|
||||
func = function(name, param)
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
@@ -79,14 +79,12 @@ minetest.register_craftitem(":rat", {
|
||||
description = "Rat",
|
||||
inventory_image = "rat.png",
|
||||
on_drop = function(item, dropper, pos)
|
||||
minetest.env:add_rat(pos)
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
on_place = function(item, dropped, pointed)
|
||||
pos = minetest.get_pointed_thing_position(pointed, true)
|
||||
if pos ~= nil then
|
||||
minetest.env:add_rat(pos)
|
||||
item:take_item()
|
||||
return item
|
||||
end
|
||||
@@ -103,14 +101,12 @@ minetest.register_craftitem(":firefly", {
|
||||
description = "Firefly",
|
||||
inventory_image = "firefly.png",
|
||||
on_drop = function(item, dropper, pos)
|
||||
minetest.env:add_firefly(pos)
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
on_place = function(item, dropped, pointed)
|
||||
pos = minetest.get_pointed_thing_position(pointed, true)
|
||||
if pos ~= nil then
|
||||
minetest.env:add_firefly(pos)
|
||||
item:take_item()
|
||||
return item
|
||||
end
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
# Uncomment settings by removing the preceding #.
|
||||
#
|
||||
# Further documentation:
|
||||
# http://c55.me/minetest/wiki/doku.php
|
||||
# http://wiki.minetest.com/
|
||||
#
|
||||
# NOTE: This file might not be up-to-date, refer to the
|
||||
# defaultsettings.cpp file for an up-to-date list:
|
||||
# https://bitbucket.org/celeron55/minetest/src/tip/src/defaultsettings.cpp
|
||||
# https://github.com/minetest/minetest/blob/master/src/defaultsettings.cpp
|
||||
#
|
||||
# A vim command to convert most of defaultsettings.cpp to conf file format:
|
||||
# :'<,'>s/\tsettings->setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g
|
||||
@@ -80,6 +80,7 @@
|
||||
# when set to higher number than 0
|
||||
#fsaa = 0
|
||||
#vsync = false
|
||||
#fov = 72
|
||||
# Address to connect to (#blank = start local server)
|
||||
#address =
|
||||
# Enable random user input, for testing
|
||||
@@ -95,9 +96,11 @@
|
||||
# Update liquids every .. recommend for finite: 0.2
|
||||
#liquid_update = 1.0
|
||||
# When finite liquid: relax flowing blocks to source if level near max and N nearby source blocks, more realistic, but not true constant. values: 0,1,2,3,4 : 0 - disable, 1 - most aggresive
|
||||
#liquid_relax = 1
|
||||
# optimization: faster cave flood (and not true constant)
|
||||
#liquid_relax = 2
|
||||
# Optimization: faster cave flood (and not true constant)
|
||||
#liquid_fast_flood = 1
|
||||
# Underground water and lava springs, its infnity sources if liquid_finite enabled
|
||||
#underground_springs = 1
|
||||
# Enable nice leaves; disable for speed
|
||||
#new_style_leaves = true
|
||||
# Enable smooth lighting with simple ambient occlusion;
|
||||
@@ -125,10 +128,16 @@
|
||||
#farmesh_distance = 40
|
||||
# Enable/disable clouds
|
||||
#enable_clouds = true
|
||||
#cloud_height = 120
|
||||
#enable_3d_clouds = true
|
||||
# Use a cloud animation for the main menu background
|
||||
#menu_clouds = true
|
||||
# Path for screenshots
|
||||
#screenshot_path = .
|
||||
# Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double)
|
||||
#view_bobbing_amount = 1.0
|
||||
# Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double)
|
||||
#fall_bobbing_amount = 0.0
|
||||
# Anaglyph stereo
|
||||
#anaglyph = false
|
||||
#anaglyph_strength = 0.1
|
||||
@@ -142,6 +151,8 @@
|
||||
#crosshair_color = (255,255,255)
|
||||
# Cross alpha (opaqueness, between 0 and 255)
|
||||
#crosshair_alpha = 255
|
||||
# Sensitivity multiplier
|
||||
#mouse_sensitivity = 0.2
|
||||
# Sound settings
|
||||
#enable_sound = true
|
||||
#sound_volume = 0.7
|
||||
@@ -243,6 +254,10 @@
|
||||
#max_block_send_distance = 10
|
||||
# From how far blocks are generated for clients (value * 16 nodes)
|
||||
#max_block_generate_distance = 6
|
||||
# Number of extra blocks that can be loaded by /clearobjects at once
|
||||
# This is a trade-off between sqlite transaction overhead and
|
||||
# memory consumption (4096=100MB, as a rule of thumb)
|
||||
#max_clearobjects_extra_loaded_blocks = 4096
|
||||
# Interval of sending time of day to clients
|
||||
#time_send_interval = 5
|
||||
# Length of day/night cycle. 72=20min, 360=4min, 1=24hour, 0=day/night/whatever stays unchanged
|
||||
@@ -304,29 +319,45 @@
|
||||
# Mapgen stuff
|
||||
#
|
||||
|
||||
# Name of map generator to be used. Currently only v6 is supported.
|
||||
# Name of map generator to be used. Currently v6, indev and singlenode are supported.
|
||||
#mg_name = v6
|
||||
# Water level of map.
|
||||
#water_level = 1
|
||||
# Size of chunks to be generated.
|
||||
#chunksize = 5
|
||||
# Map generation attributes. Currently supported: trees, caves, flat, v6_biome_blend
|
||||
# Map generation attributes. Currently supported: trees, caves, flat, v6_biome_blend, v6_jungles, dungeons
|
||||
#mg_flags = trees, caves, v6_biome_blend
|
||||
# How large deserts and beaches are
|
||||
#mgv6_freq_desert = 0.45
|
||||
#mgv6_freq_beach = 0.15
|
||||
# Perlin noise attributes for different map generation parameters
|
||||
# Offset, scale, spread factor, seed offset, number of octaves, persistence
|
||||
#mgv6_np_terrain_base = -4, 20, (250.0, 250, 250), 82341, 5, 0.6
|
||||
#mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6
|
||||
#mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6
|
||||
#mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7
|
||||
#mgv6_np_height_select = 0.5, 1, (250, 250, 250), 4213, 5, 0.69
|
||||
#mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66
|
||||
#mgv6_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55
|
||||
#mgv6_np_beach = 0, 1, (250, 250, 250), 59420, 3, 0.50
|
||||
#mgv6_np_biome = 0, 1, (250, 250, 250), 9130, 3, 0.50
|
||||
#mgv6_np_cave = 6, 6, (250, 250, 250), 34329, 3, 0.50
|
||||
#mgv6_np_humidity = 0.5, 0.5, (500, 500, 500), 72384, 4, 0.66
|
||||
#mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66
|
||||
#mgv6_np_apple_trees = 0, 1, (100, 100, 100), 342902, 3, 0.45
|
||||
|
||||
#mgv7_np_terrain = 10, 12, (350, 350, 350), 82341, 5, 0.6
|
||||
#mgv7_np_bgroup = 0.5, 0.3125, (350, 350, 350), 5923, 2, 0.6
|
||||
#mgv7_np_heat = 25, 50, (500, 500, 500), 35293, 1, 0
|
||||
#mgv7_np_humidity = 50, 31.25, (750, 750, 750), 12094, 2, 0.6
|
||||
|
||||
# Offset, scale, spread factor, seed offset, number of octaves, persistence, farscale, farspread
|
||||
#mgindev_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 10, 10
|
||||
#mgindev_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6, 10, 10
|
||||
#mgindev_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2, 10
|
||||
#mgindev_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55, 1, 1
|
||||
#mgindev_np_float_islands1 = 0, 1, (64, 64, 64 ), 3683, 5, 0.5, 1, 1.5
|
||||
#mgindev_np_float_islands2 = 0, 1, (8, 8, 8 ), 9292, 2, 0.5, 1, 1.5
|
||||
#mgindev_np_float_islands3 = 0, 1, (256, 256, 256), 6412, 2, 0.5, 1, 0.5
|
||||
#mgindev_np_biome = 0, 1, (250, 250, 250), 9130, 3, 0.50, 1, 10
|
||||
|
||||
# Float islands starts from height, 0 to disable
|
||||
#mgindev_float_islands = 500
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
You can install Minetest mods by copying (and extracting) them into this folder.
|
||||
4
mods/mods_here.txt
Normal file
4
mods/mods_here.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
You can install Minetest mods by copying (and extracting) them into this folder.
|
||||
To enable them, go to the configure world window in the main menu or write
|
||||
load_mod_<modname> = true
|
||||
in world.mt in the world directory.
|
||||
@@ -1,90 +0,0 @@
|
||||
# Makefile for Irrlicht Examples
|
||||
# It's usually sufficient to change just the target name and source file list
|
||||
# and be sure that CXX is set to a valid compiler
|
||||
SOURCE_FILES = porting.cpp guiMessageMenu.cpp materials.cpp guiTextInputMenu.cpp guiInventoryMenu.cpp irrlichtwrapper.cpp guiPauseMenu.cpp defaultsettings.cpp mapnode.cpp tile.cpp voxel.cpp mapblockobject.cpp inventory.cpp debug.cpp serialization.cpp light.cpp filesys.cpp connection.cpp environment.cpp client.cpp server.cpp socket.cpp mapblock.cpp mapsector.cpp heightmap.cpp map.cpp player.cpp utility.cpp main.cpp test.cpp
|
||||
|
||||
DEBUG_TARGET = debugtest
|
||||
DEBUG_SOURCES = $(addprefix src/, $(SOURCE_FILES))
|
||||
DEBUG_BUILD_DIR = debugbuild
|
||||
DEBUG_OBJECTS = $(addprefix $(DEBUG_BUILD_DIR)/, $(SOURCE_FILES:.cpp=.o))
|
||||
|
||||
FAST_TARGET = fasttest
|
||||
FAST_SOURCES = $(addprefix src/, $(SOURCE_FILES))
|
||||
FAST_BUILD_DIR = fastbuild
|
||||
FAST_OBJECTS = $(addprefix $(FAST_BUILD_DIR)/, $(SOURCE_FILES:.cpp=.o))
|
||||
|
||||
SERVER_TARGET = server
|
||||
SERVER_SOURCE_FILES = porting.cpp materials.cpp defaultsettings.cpp mapnode.cpp voxel.cpp mapblockobject.cpp inventory.cpp debug.cpp serialization.cpp light.cpp filesys.cpp connection.cpp environment.cpp server.cpp socket.cpp mapblock.cpp mapsector.cpp heightmap.cpp map.cpp player.cpp utility.cpp servermain.cpp test.cpp
|
||||
SERVER_SOURCES = $(addprefix src/, $(SERVER_SOURCE_FILES))
|
||||
SERVER_BUILD_DIR = serverbuild
|
||||
SERVER_OBJECTS = $(addprefix $(SERVER_BUILD_DIR)/, $(SERVER_SOURCE_FILES:.cpp=.o))
|
||||
|
||||
IRRLICHTPATH = ../irrlicht/irrlicht-1.7.1
|
||||
JTHREADPATH = ../jthread/jthread-1.2.1
|
||||
|
||||
|
||||
all: fast
|
||||
|
||||
ifeq ($(HOSTTYPE), x86_64)
|
||||
LIBSELECT=64
|
||||
endif
|
||||
|
||||
debug: CXXFLAGS = -Wall -g -O1
|
||||
debug: CPPFLAGS = -I$(IRRLICHTPATH)/include -I/usr/X11R6/include -I$(JTHREADPATH)/src -DDEBUG -DRUN_IN_PLACE
|
||||
debug: LDFLAGS = -L/usr/X11R6/lib$(LIBSELECT) -L$(IRRLICHTPATH)/lib/Linux -L$(JTHREADPATH)/src/.libs -lIrrlicht -lGL -lXxf86vm -lXext -lX11 -ljthread -lz
|
||||
|
||||
fast: CXXFLAGS = -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops -mtune=i686
|
||||
fast: CPPFLAGS = -I$(IRRLICHTPATH)/include -I/usr/X11R6/include -I$(JTHREADPATH)/src -DUNITTEST_DISABLE -DRUN_IN_PLACE
|
||||
fast: LDFLAGS = -L/usr/X11R6/lib$(LIBSELECT) -L$(IRRLICHTPATH)/lib/Linux -L$(JTHREADPATH)/src/.libs -lIrrlicht -lGL -lXxf86vm -lXext -lX11 -ljthread -lz
|
||||
|
||||
server: CXXFLAGS = -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops -mtune=i686
|
||||
server: CPPFLAGS = -I$(IRRLICHTPATH)/include -I/usr/X11R6/include -I$(JTHREADPATH)/src -DSERVER -DUNITTEST_DISABLE -DRUN_IN_PLACE
|
||||
server: LDFLAGS = -L$(JTHREADPATH)/src/.libs -ljthread -lz -lpthread
|
||||
|
||||
DEBUG_DESTPATH = bin/$(DEBUG_TARGET)
|
||||
FAST_DESTPATH = bin/$(FAST_TARGET)
|
||||
SERVER_DESTPATH = bin/$(SERVER_TARGET)
|
||||
|
||||
# Build commands
|
||||
|
||||
debug: $(DEBUG_BUILD_DIR) $(DEBUG_DESTPATH)
|
||||
fast: $(FAST_BUILD_DIR) $(FAST_DESTPATH)
|
||||
server: $(SERVER_BUILD_DIR) $(SERVER_DESTPATH)
|
||||
|
||||
$(DEBUG_BUILD_DIR):
|
||||
mkdir -p $(DEBUG_BUILD_DIR)
|
||||
$(FAST_BUILD_DIR):
|
||||
mkdir -p $(FAST_BUILD_DIR)
|
||||
$(SERVER_BUILD_DIR):
|
||||
mkdir -p $(SERVER_BUILD_DIR)
|
||||
|
||||
$(DEBUG_DESTPATH): $(DEBUG_OBJECTS)
|
||||
$(CXX) -o $@ $(DEBUG_OBJECTS) $(LDFLAGS)
|
||||
|
||||
$(FAST_DESTPATH): $(FAST_OBJECTS)
|
||||
$(CXX) -o $@ $(FAST_OBJECTS) $(LDFLAGS)
|
||||
|
||||
$(SERVER_DESTPATH): $(SERVER_OBJECTS)
|
||||
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS)
|
||||
|
||||
$(DEBUG_BUILD_DIR)/%.o: src/%.cpp
|
||||
$(CXX) -c -o $@ $< $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
||||
$(FAST_BUILD_DIR)/%.o: src/%.cpp
|
||||
$(CXX) -c -o $@ $< $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
||||
$(SERVER_BUILD_DIR)/%.o: src/%.cpp
|
||||
$(CXX) -c -o $@ $< $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
||||
clean: clean_debug clean_fast clean_server
|
||||
|
||||
clean_debug:
|
||||
@$(RM) $(DEBUG_OBJECTS) $(DEBUG_DESTPATH)
|
||||
|
||||
clean_fast:
|
||||
@$(RM) $(FAST_OBJECTS) $(FAST_DESTPATH)
|
||||
|
||||
clean_server:
|
||||
@$(RM) $(SERVER_OBJECTS) $(SERVER_DESTPATH)
|
||||
|
||||
.PHONY: all all_win32 clean clean_debug clean_win32 clean_fast clean_server
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-02-17 00:41+0200\n"
|
||||
"Last-Translator: Rune Biskopstö Christensen <lakersforce@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -18,7 +18,43 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Tjek debug.txt for detaljer."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
@@ -26,7 +62,7 @@ msgstr ""
|
||||
"Advarsel: nogle modifikationer er endnu ikke konfigureret.\n"
|
||||
"De vil blive aktiveret som standard når du gemmer konfigurationen. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -38,56 +74,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr "aktiveret"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Aktivér alle"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Deaktivér alle"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "afhænger af:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "er påkrævet af:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Anuller"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Gem"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Konfiguration gemt. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Advarsel: konfigurationen er ikke sammenhængende. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nej"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Verdens navn"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Spil"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Skab"
|
||||
|
||||
@@ -99,268 +135,286 @@ msgstr "Du døde."
|
||||
msgid "Respawn"
|
||||
msgstr "Genopstå"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Fortsæt"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
"Tastebindinger. (Hvis denne menu fucker op, fjern elementer fra "
|
||||
"minetest.conf)"
|
||||
"Tastebindinger. (Hvis denne menu fucker op, fjern elementer fra minetest."
|
||||
"conf)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Brug\" = klatre ned"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
|
||||
"tilstand"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Tast allerede i brug"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "Tryk på en tast"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Fremad"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Baglæns"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Venstre"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Højre"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Brug"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Hop"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Snige"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Slip"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Beholdning"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Snak"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Kommando"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Konsol"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Omstil flyvning"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Omstil hurtig"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Omstil fylde"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Afstands vælg"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Udskriv stakke"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Kan ikke skabe verden: en verden med dette navn eksisterer allerede"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Enligspiller"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Flerspiller"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Avanceret"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Indstillinger"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Skabt af"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Vælg verden:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Slet"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Ny"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Konfigurér"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Afspil"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Kreativ tilstand"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Aktivér skade"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Navn/kodeord"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
#, fuzzy
|
||||
msgid "Favorites:"
|
||||
msgstr "Vis favoritter"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Adresse/port"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Vis offentlig"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Vis favoritter"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Forbind"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Lad adresse-feltet være tomt for at starte en lokal server."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Start spil / Forbind"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
#, fuzzy
|
||||
msgid "Public"
|
||||
msgstr "Vis offentlig"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Slet verden"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Skab verden"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "\"Smarte\" træer"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Glat belysning"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D skyer"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Opakt (uigennemsigtigt) vand"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Anisotropisk filtréring"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Bi-lineær filtréring"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Tri-lineær filtréring"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shadere"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "For-indlæs elementernes grafik"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Aktivér partikler"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Skift bindinger"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Adresse påkrævet."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Kan ikke slette verden: ingenting valgt"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Filer som slettes"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Kan ikke skabe verden: ingen spil fundet"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Kan ikke konfigurere verden: ingenting valgt"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Mislykkedes i at slette alle verdenens filer"
|
||||
|
||||
@@ -368,63 +422,64 @@ msgstr "Mislykkedes i at slette alle verdenens filer"
|
||||
msgid "Old Password"
|
||||
msgstr "Gammelt kodeord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nyt kodeord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Bekræft kodeord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Skift"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Kodeordene er ikke ens!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Fortsæt"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Skift kodeord"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Afslut til menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Afslut til operativsystemet"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
"Standard bindinger:\n"
|
||||
"- WASD: bevægelse\n"
|
||||
"- Venstre musetast: grav/slå\n"
|
||||
"- Højre musetast: anbring/brug\n"
|
||||
"- Musehjul: vælg genstand\n"
|
||||
"- 0...9: vælg genstand\n"
|
||||
"- Shift: snige\n"
|
||||
"- R: omstil se alle indlæste klumper\n"
|
||||
"- I: beholdning\n"
|
||||
"- ESC: denne menu\n"
|
||||
"- T: snak\n"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
@@ -721,37 +776,54 @@ msgstr "PA1"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Hovedmenu"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Mislykkedes i at initialisere verden"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Ingen verden valgt og ingen adresse angivet. Ingen opgave at lave."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Kunne ikke finde eller indlæse spil \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Ugyldig spilspecifikationer."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Tjek debug.txt for detaljer."
|
||||
|
||||
#~ msgid "Delete map"
|
||||
#~ msgstr "Slet mappen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Standard bindinger:\n"
|
||||
#~ "- WASD: bevægelse\n"
|
||||
#~ "- Venstre musetast: grav/slå\n"
|
||||
#~ "- Højre musetast: anbring/brug\n"
|
||||
#~ "- Musehjul: vælg genstand\n"
|
||||
#~ "- 0...9: vælg genstand\n"
|
||||
#~ "- Shift: snige\n"
|
||||
#~ "- R: omstil se alle indlæste klumper\n"
|
||||
#~ "- I: beholdning\n"
|
||||
#~ "- ESC: denne menu\n"
|
||||
#~ "- T: snak\n"
|
||||
|
||||
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-23 18:24+0200\n"
|
||||
"PO-Revision-Date: 2013-02-21 17:34+0200\n"
|
||||
"Last-Translator: Sfan5 . <sfan5@live.de>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-14 12:51+0200\n"
|
||||
"Last-Translator: Pilz Adam <PilzAdam@gmx.de>\n"
|
||||
"Language-Team: Deutsch <>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,7 +18,43 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Inventarbilder..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "Lädt..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "Erstelle Server..."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "Erstelle Client..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "Löse Adresse auf..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "Verbinde zum Server..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "Herunterfahren..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Siehe debug.txt für Details."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
@@ -26,7 +62,7 @@ msgstr ""
|
||||
"Warnung: Einige Mods sind noch nicht konfiguriert.\n"
|
||||
"Sie werden aktiviert wenn die Konfiguration gespeichert wird. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -38,56 +74,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr "Aktiviert"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Alle an"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Alle aus"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "abhängig von:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "wird benötigt von:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Konfiguration gespeichert. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Warnung: Konfiguration nicht konsistent. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Weltname"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Spiel"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Erstellen"
|
||||
|
||||
@@ -99,329 +135,358 @@ msgstr "Sie sind gestorben."
|
||||
msgid "Respawn"
|
||||
msgstr "Wiederbeleben"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Fortsetzen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "Steuerung"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Benutzen\" = herunterklettern"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Doppelt \"springen\" zum fliegen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Taste bereits in Benutzung"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "Taste drücken"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Vorwärts"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Rückwärts"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Links"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Rechts"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Benutzen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Springen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Schleichen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Wegwerfen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inventar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Befehl"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Konsole"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Fliegen umsch."
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Speed umsch."
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Noclip umsch."
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Entfernung wählen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Stack ausgeben"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Kann Welt nicht erstellen: Name enthält ungülige Zeichen"
|
||||
msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
"Kann Welt nicht erstellen: Eine Welt mit diesem Namen existiert bereits"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Einzelspieler"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Mehrspieler"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Erweitert"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Credits"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Welt wählen:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Neu"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Konfigurieren"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Spielen"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Kreativitätsmodus"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Schaden einschalten"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Name/Passwort"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favoriten:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Öffentliche Server Liste:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Adresse / Port"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Zeige öffentliche"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Zeige Favoriten"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Lasse die Adresse frei um einen eigenen Server zu starten."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Spiel starten / Verbinden"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Öffentlich"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Welt löschen"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Welt erstellen"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Schöne Bäume"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Besseres Licht"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D Wolken"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Undurchs. Wasser"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Anisotroper Filter"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Bi-Linearer Filter"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Tri-Linearer Filter"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shader"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Lade Inventarbilder vor"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Aktiviere Partikel"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Realistiches Wasser"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Tasten ändern"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Adresse benötigt."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Kann Welt nicht löschen: Nichts ausgewählt"
|
||||
msgstr "Kann Welt nicht löchen: Nichts ausgewählt"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Zu löschende Dateien"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Welt Dateien löschen gescheitert"
|
||||
msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Altes Passwort"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Passwort wiederholen"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Ändern"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Passwörter passen nicht zusammen!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Weiter"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Passwort ändern"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Sound Lautstärke"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Hauptmenü"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Programm beenden"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Steuerung:\n"
|
||||
"- WASD: Gehen\n"
|
||||
"- Linksklick: Graben/Schlagen\n"
|
||||
"- Rechtsklick: Platzieren\n"
|
||||
"- Mausrad: Item auswählen\n"
|
||||
"- 0...9: Item auswählen\n"
|
||||
"- Shift: Schleichen\n"
|
||||
"- R: alle geladenen Blöcke anzeigen (wechseln)\n"
|
||||
"Standard Tastaturebelegung:\n"
|
||||
"- WASD: Bewegen\n"
|
||||
"- Leertaste: Springen/Klettern\n"
|
||||
"- Umschalt: Kriechen/herunterklettern\n"
|
||||
"- Q: Item droppen\n"
|
||||
"- I: Inventar\n"
|
||||
"- Maus: drehen/umschauen\n"
|
||||
"- Maus links: Abbauen/Schlagen\n"
|
||||
"- Maus rechts: Platzieren/Benutzen\n"
|
||||
"- Mausrad: Item auswählen\n"
|
||||
"- T: Chat\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Sound Lautstärke: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Linke Taste"
|
||||
@@ -714,40 +779,56 @@ msgstr "PA1"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Hauptmenü"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Kann Welt nicht initialisieren"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Keine Welt ausgewählt und keine Adresse angegeben. Nichts zu tun."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Kann Spiel nicht finden/laden\""
|
||||
msgstr "Kann Spiel nicht finden/laden \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Invalide Spielspezif."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Verbindungsfehler (Zeitüberschreitung?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Siehe debug.txt für Details."
|
||||
|
||||
#~ msgid "KEYBINDINGS"
|
||||
#~ msgstr "TASTEN EINST."
|
||||
|
||||
#~ msgid "Delete map"
|
||||
#~ msgstr "Karte löschen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Steuerung:\n"
|
||||
#~ "- WASD: Gehen\n"
|
||||
#~ "- Linksklick: Graben/Schlagen\n"
|
||||
#~ "- Rechtsklick: Platzieren\n"
|
||||
#~ "- Mausrad: Item auswählen\n"
|
||||
#~ "- 0...9: Item auswählen\n"
|
||||
#~ "- Shift: Schleichen\n"
|
||||
#~ "- R: alle geladenen Blöcke anzeigen (wechseln)\n"
|
||||
#~ "- I: Inventar\n"
|
||||
#~ "- T: Chat\n"
|
||||
|
||||
818
po/du/minetest.po
Normal file
818
po/du/minetest.po
Normal file
@@ -0,0 +1,818 @@
|
||||
# SOME DESCRIPTIVE TITLE. DUTCH TRANSLATION
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-04-18 15:28+0100\n"
|
||||
"Last-Translator: LS-Steeef \n"
|
||||
"Language-Team: \n"
|
||||
"Language: dutch\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.5\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Let op: Nog niet alle mods zijn geconfigueerd. \n"
|
||||
"De mods zullen automatisch worden ingeschakeld als je de configuratie "
|
||||
"bewaard."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"LEt op: Sommige ingestelde mods zijn vermist.\n"
|
||||
"Hun instellingen worden verwijderd als je de configuratie opslaat."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "ingeschakeld"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Allen inschakelen"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Allen uitschakelen"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "heeft nodig:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "is benodigd voor:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Bewaar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Instellingen bewaard."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Waarschuwing: Instellingen niet consistent."
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nee"
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Naam wereld"
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Spel"
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Maak aan"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Je bent gestorven."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Respawn"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
"Linkermuisknop: Verplaats alle items. Rechtermuisknop: Verplaats één item."
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "Sneltoetsen."
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Use\" = Omlaag klimmen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Dubbelklik op \"jump\" om te vliegen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Toets is al in gebruik"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "druk op"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Vooruit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Achteruit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Links"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Rechts"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Gebruikwn"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Springen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Kruipen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Weggooien"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Rugzak"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Opdracht"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Vliegen aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Snel bewegen aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Noclip aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Range instellen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Print stacks"
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Kan geen nieuwe wereld aanmaken: de naam bevat onjuiste tekens."
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Kan geen nieuwe wereld aanmaken: De naam bestaat al."
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Singleplayer"
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Multiplayer"
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Geavanceerd"
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Credits"
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Selecteer Wereld:"
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Nieuw"
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Speel!"
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Creative Modus"
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Schade inschakelen"
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Naam/Wachtwoord"
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favourieten:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Publieke Server lijst:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "IP-Adres/Poort"
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Publieke server"
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Favourieten"
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Laat het adres leeg om een lokale server te starten."
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Start het spel / Verbind"
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Publiek"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Verwijder wereld"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Maak wereld aan"
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Mooie bomen"
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Mooie verlichting"
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D wolken"
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Doorzichtig water"
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Bi-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Bi-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Tri-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shaders"
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Preload item visuals"
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Enable Particles"
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Finite liquid"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Sneltoetsen veranderen"
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "IP-adres nodig."
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Kan niets verwijderen: Geen wereld geselecteerd."
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Deze bestanden worden verwijderd"
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Kan geen wereld aanmaken: Geen games gevonden"
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Kan instellingen niet aanpassen: Niets geselecteerd"
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Niet alle bestanden zijn verwijderd"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Huidig wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nieuw wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Herhaal wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Veranderen"
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Wachtwoorden zijn niet gelijk!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Verander wachtwoord"
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Exit naar menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volume:"
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Exit"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Linkermuisknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr "Muiswielknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr "Rechtmuisknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr "X knop 1"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr "Terug"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr "Wissen"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr "Return"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr "X knop 2"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr "Kapitaal"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr "Control"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr "Kana"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr "Pauze"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr "Converteren"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr "Escape"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr "Final"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr "Junja"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr "Kanji"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr "Nonconvert"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr "Accepteren"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr "Modus veranderen"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr "Eerste"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr "Spatie"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr "Omlaag"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr "Uitvoeren"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr "Print"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr "Selecteren"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr "Omhoog"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr "Screenshot"
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr "Linker Windowstoets"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr "Apps"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr "Numpad 0"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr "Numpad 1"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr "Rechter Windowstoets"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr "Slaapknop"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr "Numpad 2"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr "Numpad 3"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr "Numpad 4"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr "Numpad 5"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr "Numpad 6"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr "Numpad 7"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr "Numpad *"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr "Numpad +"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr "Numpad -"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr "Numpad /"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr "Numpad 8"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr "Numpad 9"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr "Linker Shift"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr "Rechter Shift"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr "Linker Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr "Linker Menu"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr "Rechter Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr "Rechter Menu"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr "Komma"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr "Min"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr "Punt"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr "Plus"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr "Attn"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr "CrSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr "Erase OEF"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr "ExSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr "OEM Clear"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr "PA1"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Hoofdmenu"
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Laden van wereld is mislukt"
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Geen wereld en adres geselecteerd. Niks te doen."
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Kan niet de game laden of vinden."
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Onjuiste gamespec."
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Connection error (timed out?)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Default Besturing:\n"
|
||||
#~ "- WASD: Lopen\n"
|
||||
#~ "- Linkermuisknop: Graaf/Sla\n"
|
||||
#~ "- Rechtmuisknop: Plaats/Gebruik\n"
|
||||
#~ "- Muiswiel: selecteer item\n"
|
||||
#~ "- 0...9: selecteer item\n"
|
||||
#~ "- Shift: kruipen\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Rugzak\n"
|
||||
#~ "- ESC: Menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-23 18:24+0200\n"
|
||||
"PO-Revision-Date: 2013-02-07 22:14+0200\n"
|
||||
"Last-Translator: Francizca Rodriguez <joaoadriano3@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-16 14:51+0200\n"
|
||||
"Last-Translator: Diego Martínez <lkaezadl3@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,7 +18,43 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Texturas de objetos..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "Cargando..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "Creando servidor..."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "Creando cliente..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "Resolviendo dirección..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "Conectando al servidor..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "Apagando cosas..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Consulta debug.txt para obtener más detalles."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
@@ -26,7 +62,7 @@ msgstr ""
|
||||
"ADVERTENCIA: Algunos mods no están aún configurados.\n"
|
||||
"Se habilitarán de forma predeterminada al guardar la configuración. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -38,328 +74,344 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr "Activado"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Activar todos"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Desactivar todos"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "Dependencia:"
|
||||
msgstr "Dependencias:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "Requiere:"
|
||||
msgstr "es requerido por:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Configuración guardada. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "ADVERTENCIA: La configuración no corresponde. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Sí"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Nombre del mundo"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Juego"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Crear"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Estas Muerto."
|
||||
msgstr "Has muerto."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Respawn"
|
||||
msgstr "Revivir"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
"Click izquierdo: Mover todos los objetos. Click derecho: Mover un objeto."
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
"Combinaciones de teclas.(Si este menú da error, cambiar configuración en "
|
||||
"minetest.conf)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Usar\" = Descender"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Pulsar dos veces \"saltar\" para activar volar"
|
||||
msgstr "Dos veces \"saltar\" para volar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "La tecla se está utilizando"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "Pulsa una tecla"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Adelante"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Atras"
|
||||
msgstr "Atrás"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Izquierda"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Derecha"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Usar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Saltar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Agacharse"
|
||||
msgstr "Caminar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Tirar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inventario"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Consola"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Activar Volar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Activar Modo Rápido"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Activar noclip"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Seleccionar rango"
|
||||
msgstr "Seleccionar distancia"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Imprimir Stacks"
|
||||
msgstr "Imprimir Pilas"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "No se puede crear el mundo: El nombre contiene caracteres no válidos"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "No se puede crear el mundo: Hay un mundo con este nombre"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Un jugador"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Multijugador"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Server"
|
||||
msgstr "Avanzado"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Créditos"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Selecciona un mundo:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Nuevo"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Configurar"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Jugar"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Modo creativo"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Permitir daños"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Nombre/Clave"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favoritos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Lista de Servidores Públicos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Dirección/Puerto"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Servidores Públicos"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Mostrar Favoritos"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Conectar"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Dejar la dirección en blanco para iniciar un servidor local."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Iniciar juego/Conectar"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Público"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Eliminar Mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Crear Mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Árboles detallados"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Iluminación Suave"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "Nubes 3D"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Agua Opaca"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Filtrado Anisotrópico"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Filtrado Bi-Lineal"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Filtrado Tri-Lineal"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Habilitar Shaders"
|
||||
msgstr "Sombreadores"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Precarga elementos visuales"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Partículas"
|
||||
msgstr "Habilitar partículas"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Líquidos Finitos"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Configurar Teclas"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Requiere una dirección."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "No se puede eliminar el mundo: ninguno ha sido seleccionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Archivos que se eliminarán"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "No se puede crear el mundo: No se encontraron juegos"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "No se puede configurar el mundo: Ninguno seleccionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "No se pudo eliminar todos los archivos del mundo"
|
||||
|
||||
@@ -367,63 +419,75 @@ msgstr "No se pudo eliminar todos los archivos del mundo"
|
||||
msgid "Old Password"
|
||||
msgstr "Contraseña anterior"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nueva contraseña"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Confirmar contraseña"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Cambiar"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "¡Las contraseñas no coinciden!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Modificar contraseña"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volúmen del Sonido"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Salir al menú"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Salir al S.O."
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Controles predeterminados:\n"
|
||||
"- WASD: Caminar \n"
|
||||
"- Ratón, izquierdo: Cavar/Golpear\n"
|
||||
"- Ratón, derecho: Poner bloque/Usar\n"
|
||||
"- Ratón, rueda: seleccionar objecto\n"
|
||||
"- 0... 9: Seleccionar objecto\n"
|
||||
"- Mayúscula: caminar despacio\n"
|
||||
"- R: Ajustar distancia de los chunks cargados\n"
|
||||
"- I: Inventario \n"
|
||||
"- ESC: Este Menu\n"
|
||||
"- T: Chat\n"
|
||||
"Controles Pred.:\n"
|
||||
"- WASD: moverse\n"
|
||||
"- Espacio: saltar/subir\n"
|
||||
"- Mayús.: puntillas/bajar\n"
|
||||
"- Q: soltar objeto\n"
|
||||
"- I: inventario\n"
|
||||
"- Ratón: girar/mirar\n"
|
||||
"- Ratón izq.: cavar/golpear\n"
|
||||
"- Ratón der.: colocar/usar\n"
|
||||
"- Rueda ratón: elegir objeto\n"
|
||||
"- T: conversar\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volúmen del Sonido: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Salir"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
@@ -491,7 +555,7 @@ msgstr "Convertir"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr "Esc"
|
||||
msgstr "Escape"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
@@ -507,7 +571,7 @@ msgstr "Kanji"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr "Nonconvert"
|
||||
msgstr "No convertir"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
@@ -651,27 +715,27 @@ msgstr "Bloq Despl"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr "Mayúscula Izquierda"
|
||||
msgstr "Mayús Izqda"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr "Mayúscula Derecha"
|
||||
msgstr "Mayús Dcha"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr "Control Izquierdo"
|
||||
msgstr "Control Izqdo"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr "Menú Izquierda"
|
||||
msgstr "Menú Izquierdo"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr "Control Derecho"
|
||||
msgstr "Control Dcho"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr "Menú Derecha"
|
||||
msgstr "Menú Derecho"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
@@ -717,36 +781,52 @@ msgstr "PA1"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Menú Principal"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Fallo al iniciar el mundo"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
"No se seleccionó mundo y no se ha especificado una dirección. Nada que "
|
||||
"hacer."
|
||||
"No se seleccionó mundo y no se ha especificado una dirección. Nada que hacer."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "No se puede encontrar o cargar el juego \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Juego especificado no válido."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Error de conexión (¿tiempo agotado?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Consulta debug.txt para obtener más detalles."
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Controles predeterminados:\n"
|
||||
#~ "- WASD: Caminar \n"
|
||||
#~ "- Ratón, izquierdo: Cavar/Golpear\n"
|
||||
#~ "- Ratón, derecho: Poner bloque/Usar\n"
|
||||
#~ "- Ratón, rueda: seleccionar objecto\n"
|
||||
#~ "- 0... 9: Seleccionar objecto\n"
|
||||
#~ "- Mayúscula: caminar despacio\n"
|
||||
#~ "- R: Ajustar distancia de los pedazos cargados\n"
|
||||
#~ "- I: Inventario \n"
|
||||
#~ "- ESC: Este Menu\n"
|
||||
#~ "- T: Conversar\n"
|
||||
|
||||
1487
po/et/minetest.po
1487
po/et/minetest.po
File diff suppressed because it is too large
Load Diff
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-23 18:24+0200\n"
|
||||
"PO-Revision-Date: 2013-02-28 17:44+0200\n"
|
||||
"Last-Translator: we prefer instagib metl3 <calinou9999spam@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-06-01 13:22+0200\n"
|
||||
"Last-Translator: Ilya Zhuravlev <zhuravlevilya@ya.ru>\n"
|
||||
"Language-Team: Français <>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,7 +18,43 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Textures d'objets..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "Chargement..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "Création du serveur..."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "Création du client..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "Résolution de l'adresse..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "Connexion au serveur..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "Quitter le jeu..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Voir debug.txt pour plus d'information."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
@@ -26,68 +62,68 @@ msgstr ""
|
||||
"Attention : certains mods ne sont pas encore configurés.\n"
|
||||
"Ils seront activés par défaut quand vous enregistrerez la configuration. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"Attention : certains mods configurés sont introuvables.\n"
|
||||
"Leur réglages seront effacés quand vous enregistrerez la configuration. "
|
||||
"Leurs réglages seront effacés quand vous enregistrerez la configuration. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "activé"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Tout activer"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Tout désactiver"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "dépend de :"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "est requis par :"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Configuration enregistrée. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Attention : configuration incorrecte. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Non"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Nom du monde"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Jeu"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Créer"
|
||||
|
||||
@@ -99,264 +135,282 @@ msgstr "Vous êtes mort."
|
||||
msgid "Respawn"
|
||||
msgstr "Réapparaître"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Clic gauche: déplacer tous les objets -- Clic droit: déplacer un objet"
|
||||
msgstr ""
|
||||
"Clic gauche : déplacer tous les objets -- Clic droit : déplacer un objet"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "OK"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "Affectation des touches"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Use\" = descendre (escalade)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Double appui sur \"saut\" pour voler"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Touche déjà utilisée"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "appuyez sur la touche"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Avancer"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Reculer"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Gauche"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Droite"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Utiliser"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Sauter"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Marcher"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Lâcher"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inventaire"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Parler"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Commande"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Voler"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Mode rapide"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Mode noclip"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Distance de rendu"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Imprimer stacks"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Impossible de créer le monde: le nom contient des caractères invalides"
|
||||
msgstr ""
|
||||
"Impossible de créer le monde : le nom contient des caractères invalides"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Impossible de créer le monde: ce nom est déjà utilisé"
|
||||
msgstr "Impossible de créer le monde : ce nom est déjà utilisé"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Solo"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Multijoueur"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Avancé"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Réglages"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Crédits"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Sélectionner le monde :"
|
||||
msgstr "Sélectionner un monde :"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Nouveau"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Configurer"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Jouer"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Mode créatif"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Activer blessures"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Nom / MdP"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favoris :"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Liste de serveurs publics :"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Adresse / Port"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Voir serveurs publics"
|
||||
msgstr "Voir les serveurs publics"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Voir serveurs favoris"
|
||||
msgstr "Voir les serveurs favoris"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Rejoindre"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Laisser l'adresse vide pour lancer un serveur local."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Démarrer / Connecter"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
msgid "Delete world"
|
||||
msgstr "Supprimer monde"
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Public"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Supprimer ce monde"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Créer un monde"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Arbres spéciaux"
|
||||
msgstr "Feuilles transparentes"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Lumière douce"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "Nuages 3D"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Eau opaque"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Filtrage anisotropique"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Filtrage bilinéaire"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Filtrage trilinéaire"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shaders"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Précharger les visuels d'objets"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Activer les particules"
|
||||
msgstr "Particules"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Liquides limités"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Changer touches"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Adresse requise."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Impossible de supprimer le monde : rien n'est sélectionné"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Fichiers à effacer"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Impossible de créer le monde : aucun jeu n'est présent"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Impossible de configurer ce monde : aucune sélection active"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Tous les fichiers du monde n'ont pu être effacés"
|
||||
|
||||
@@ -364,63 +418,76 @@ msgstr "Tous les fichiers du monde n'ont pu être effacés"
|
||||
msgid "Old Password"
|
||||
msgstr "Ancien mot de passe"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nouveau mot de passe"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Confirmer mot de passe"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Changer"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Mot de passe incorrect !"
|
||||
msgstr "Les mots de passe ne correspondent pas !"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Continuer"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Changer mot de passe"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volume sonore"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Quitter vers le menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Quitter le jeu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Touches :\n"
|
||||
"- ZQSD : courir\n"
|
||||
"- Clic gauche : Creuser bloc\n"
|
||||
"- Clic droite : Insérer bloc\n"
|
||||
"- Roulette : Sélection objet\n"
|
||||
"- 0...9 : Sélection objet\n"
|
||||
"- Shift : marcher\n"
|
||||
"- R : active la vue de tous les blocs\n"
|
||||
"Contrôles:\n"
|
||||
"- ZQSD : se déplacer\n"
|
||||
"- Espace : sauter/grimper\n"
|
||||
"- Maj. : marcher prudemment/descendre\n"
|
||||
"- A : lâcher l'objet en main\n"
|
||||
"- I : inventaire\n"
|
||||
"- Souris : tourner/regarder\n"
|
||||
"- Souris gauche : creuser/attaquer\n"
|
||||
"- Souris droite : placer/utiliser\n"
|
||||
"- Molette souris : sélectionner objet\n"
|
||||
"- T : parler\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volume sonore :"
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "OK"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Bouton gauche"
|
||||
@@ -527,7 +594,7 @@ msgstr "Suivant"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr "Précèdent"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
@@ -539,7 +606,7 @@ msgstr "Bas"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr "Éxécuter"
|
||||
msgstr "Exécuter"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
@@ -713,37 +780,54 @@ msgstr "PA1"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoomer"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Le monde n'a pas pu être initialisé"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Pas de monde sélectionné et pas d'adresse. Rien à faire."
|
||||
msgstr "Pas de monde sélectionné et pas d'adresse fournie. Rien à faire."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "N'a pas pu trouver ou charger le jeu \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "gamespec invalide."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Erreur de connexion (perte de connexion ?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Voir debug.txt pour plus d'information."
|
||||
|
||||
#~ msgid "Delete map"
|
||||
#~ msgstr "Supprimer carte"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Touches par défaut :\n"
|
||||
#~ "- ZQSD : se déplacer\n"
|
||||
#~ "- Clic gauche : creuser bloc\n"
|
||||
#~ "- Clic droite : insérer bloc\n"
|
||||
#~ "- Roulette : sélectionner objet\n"
|
||||
#~ "- 0...9 : sélectionner objet\n"
|
||||
#~ "- Shift : déplacement prudent\n"
|
||||
#~ "- R : active la vue de tous les blocs\n"
|
||||
#~ "- I : inventaire\n"
|
||||
#~ "- Échap : ce menu\n"
|
||||
#~ "- T : discuter\n"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"PO-Revision-Date: 2013-02-22 03:27+0200\n"
|
||||
"Last-Translator: Tomona Nanase <alpha.sohoh@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-03-07 23:06+0200\n"
|
||||
"Last-Translator: Mitori Itoshiki <mito551@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,347 +18,398 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"警告: いくつかのMODが未構成です.\n"
|
||||
"これらは構成を保存するとデフォルトで有効化されます. "
|
||||
"警告: マインテストの改造がいくつか設定されていません。\n"
|
||||
"これらを設定を保存すると自動で有効化されます。 "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"警告: いくつかの構成済みMODが見つかりません.\n"
|
||||
"これらの設定は構成を保存すると削除されます. "
|
||||
"警告: いくつかの設定みの改造ファイルが見つかりません.\n"
|
||||
"これらの情報は設定を保存すると削除されます. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "有効しました"
|
||||
msgstr "有効にしました"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "全部を有効する"
|
||||
msgstr "全部を有効にしました"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "全部を無効する"
|
||||
msgstr "全部を無効にしました"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "結合度は:"
|
||||
msgstr "この改造ファイルが必要です:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "必要される:"
|
||||
msgstr "この改造に必要されます:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "設定を保存しました. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr ""
|
||||
msgstr "注意:設定が一定でわありません。"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "はい"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "いいえ"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "ワールド名"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "ゲーム"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "設ける"
|
||||
msgstr "作成"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "死んでしまいました。"
|
||||
msgstr "死亡しました。"
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "生まれて帰る"
|
||||
msgstr "リスポーン"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "左クリックは全部のアイテムを動かす,右クリックは一つのアイテムを動かす"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "続く"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
msgstr "キーバインド"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
msgstr "「使う」は下りる"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
msgstr "「ジャンプ」を二回押すと飛べる"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "既に使われているキーです"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "キー入力待ち"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "前進"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "後退"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "左へ進む"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "右へ進む"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr ""
|
||||
msgstr "使う"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "ジャンプ"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "こっそり進む"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "落とす"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "インベントリ"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "チャット"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "コマンド"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "コンソール"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
msgstr "飛べるモードをトグル"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
msgstr "ファストモードをトグル"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
msgstr "ノクリップモードをトグル"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "範囲選択"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "スタックの表示"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "ワールドを作成できません: 名前に無効な文字が含まれています"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "ワールドを作成できません: 同名のワールドが既に存在しています"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "シングルプレイヤー"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "マルチプレイヤー"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "高度"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "設定"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "クレジット"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "ワールド選択:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "削除"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "新規作成"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "設定"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
msgstr "選択した世界に入る"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "クリエイティブモード"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "ダメージ有効"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "名前/パスワード"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
#, fuzzy
|
||||
msgid "Favorites:"
|
||||
msgstr "お気に入りを見せる"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "アドレス/ポート"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
msgstr "公共を見せる"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
msgstr "お気に入りを見せる"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "接続"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
msgstr "アドレスを入力しないかぎりロカルサーバーを開始。"
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "ゲーム開始 / 接続"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
#, fuzzy
|
||||
msgid "Public"
|
||||
msgstr "公共を見せる"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "ワールド削除"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "ワールド作成"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#, fuzzy
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "風変わりな木"
|
||||
msgstr "きれいな木"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
#, fuzzy
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "自然な光表現"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3Dの雲"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "不透明な水面"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "ミップマップ"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "異方性フィルタリング"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "バイリニアフィルタリング"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "トリリニアフィルタリング"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "シェーダー"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "アイテム外観のプリロード"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "破片表現の有効化"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "キー割当て変更"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "アドレスが必要です."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "ワールドを削除できません: 何も選択されていません"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "削除されるファイル"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "ワールドを作成できません: ゲームが見つかりませんでした"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "ワールドの設定ができません: 何も選択されていません"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "ワールドファイルの全ての削除に失敗"
|
||||
|
||||
@@ -366,64 +417,76 @@ msgstr "ワールドファイルの全ての削除に失敗"
|
||||
msgid "Old Password"
|
||||
msgstr "古いパスワード"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "新しいパスワード"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "パスワードの確認"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "変更"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "新しいパスワードが一致しません!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "続ける"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "パスワードの変更"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "メニューへ戻る"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "終了"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr ""
|
||||
msgstr "左ボタン"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr ""
|
||||
msgstr "中ボタン"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr ""
|
||||
msgstr "右ボタン"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
@@ -435,7 +498,7 @@ msgstr "Back Space"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
msgstr "消す"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
@@ -463,7 +526,7 @@ msgstr "カタカナ/ひらがな"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
msgstr "メニュー"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
@@ -498,8 +561,9 @@ msgid "Nonconvert"
|
||||
msgstr "無変換"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
#, fuzzy
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
msgstr "Accept"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
@@ -511,7 +575,7 @@ msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr ""
|
||||
msgstr "モードを変更"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
@@ -522,112 +586,138 @@ msgid "Prior"
|
||||
msgstr "Page Up"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
#, fuzzy
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
msgstr "Space"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
msgstr "Down"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Execute"
|
||||
msgstr ""
|
||||
msgstr "Execute"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
msgstr "Print"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "Select"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
msgstr "Up"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
#, fuzzy
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Help"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
#, fuzzy
|
||||
msgid "Snapshot"
|
||||
msgstr ""
|
||||
msgstr "Snapshot"
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
#, fuzzy
|
||||
msgid "Left Windows"
|
||||
msgstr ""
|
||||
msgstr "Left Windows"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Apps"
|
||||
msgstr ""
|
||||
msgstr "Apps"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Numpad 0"
|
||||
msgstr ""
|
||||
msgstr "Numpad 0"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Numpad 1"
|
||||
msgstr ""
|
||||
msgstr "Numpad 1"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Right Windows"
|
||||
msgstr ""
|
||||
msgstr "Right Windows"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Sleep"
|
||||
msgstr ""
|
||||
msgstr "Sleep"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 2"
|
||||
msgstr ""
|
||||
msgstr "Numpad 2"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 3"
|
||||
msgstr ""
|
||||
msgstr "Numpad 3"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 4"
|
||||
msgstr ""
|
||||
msgstr "Numpad 4"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 5"
|
||||
msgstr ""
|
||||
msgstr "Numpad 5"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 6"
|
||||
msgstr ""
|
||||
msgstr "Numpad 6"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
#, fuzzy
|
||||
msgid "Numpad 7"
|
||||
msgstr ""
|
||||
msgstr "Numpad 7"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad *"
|
||||
msgstr ""
|
||||
msgstr "Numpad *"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad +"
|
||||
msgstr ""
|
||||
msgstr "Numpad +"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad -"
|
||||
msgstr ""
|
||||
msgstr "Numpad -"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad /"
|
||||
msgstr ""
|
||||
msgstr "Numpad /"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad 8"
|
||||
msgstr ""
|
||||
msgstr "Numpad 8"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
#, fuzzy
|
||||
msgid "Numpad 9"
|
||||
msgstr ""
|
||||
msgstr "Numpad 9"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
@@ -651,7 +741,7 @@ msgstr "左Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr ""
|
||||
msgstr "左メニュー"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
@@ -659,78 +749,81 @@ msgstr "右Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr ""
|
||||
msgstr "右メニュー"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr ""
|
||||
msgstr "読点"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
#, fuzzy
|
||||
msgid "Minus"
|
||||
msgstr ""
|
||||
msgstr "Minus"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
#, fuzzy
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
msgstr "Period"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
#, fuzzy
|
||||
msgid "Plus"
|
||||
msgstr ""
|
||||
msgstr "Plus"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
#, fuzzy
|
||||
msgid "Attn"
|
||||
msgstr ""
|
||||
msgstr "Attn"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
#, fuzzy
|
||||
msgid "CrSel"
|
||||
msgstr ""
|
||||
msgstr "CrSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "Erase OEF"
|
||||
msgstr ""
|
||||
msgstr "Erase OEF"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "ExSel"
|
||||
msgstr ""
|
||||
msgstr "ExSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "OEM Clear"
|
||||
msgstr ""
|
||||
msgstr "OEM Clear"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "PA1"
|
||||
msgstr ""
|
||||
msgstr "PA1"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
msgstr "ズーム"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "メインメニュー"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "ワールドの初期化に失敗"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
msgstr "ゲームをロードか見つかるのに失敗"
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "接続エラー (タイムアウト?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
msgstr "接続エラー (タイムアウトか?)"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,13 +17,47 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -33,56 +67,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -94,264 +128,280 @@ msgstr ""
|
||||
msgid "Respawn"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr ""
|
||||
|
||||
@@ -359,51 +409,63 @@ msgstr ""
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
@@ -698,32 +760,26 @@ msgstr ""
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
824
po/ky/minetest.po
Normal file
824
po/ky/minetest.po
Normal file
@@ -0,0 +1,824 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-18 14:59+0200\n"
|
||||
"Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ky\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Буюм текстуралары..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "Жүктөлүүдө..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "Сервер жаратылууда...."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "Клиент жаратылууда..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "Дареги чечилүүдө..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "Серверге туташтырылууда..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "Оюн өчүрүлүүдө..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Толугураак маалымат үчүн debug.txt файлын текшериңиз."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "күйгүзүлгөн"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Баарын күйгүзүү"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Баарын өчүрүү"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "көз карандылыктары:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "талап кылынганы:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Жокко чыгаруу"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Сактоо"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Конфигурация сакталды. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Эскертүү: Туура эмес конфигурация. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ооба"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Жок"
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Дүйнө аты"
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Оюн"
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Жаратуу"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Сиз өлдүңүз."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Кайтадан жаралуу"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Улантуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "баскычты басыңыз"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Алга"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Артка"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Солго"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Оңго"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Колдонуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Секирүү"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Уурданып басуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Ыргытуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Мүлк-шайман"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Маек"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Команда"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Консоль"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Учууга которуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Тез басууга которуу"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Бир кишилик"
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Көп кишилик"
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Кошумча"
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Ырастоолор"
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Алкыштар"
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Дүйнөнү тандаңыз:"
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Өчүрүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Жаңы"
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Ырастоо"
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Ойноо"
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Жаратуу режими"
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Убалды күйгүзүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Аты/сырсөзү"
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Тандалмалар:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Жалпылык серверлердин тизмеси:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Дареги/порту"
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Жалпылыкты көрсөтүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Тандалмаларды көрсөтүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Туташуу"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз."
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Оюнду баштоо/туташуу"
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Жалпылык"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Дүйнөнү өчүрүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Дүйнөнү жаратуу"
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Кооз бактар"
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Тегиз жарык"
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D-булуттар"
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Күңүрт суу"
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-текстуралоо"
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Анизатропия чыпкалоосу"
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Экисызык чыпкалоосу"
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Үчсызык чыпкалоосу"
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Көлөкөлөгүчтөр"
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Бөлүкчөлөрдү күйгүзүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Чектүү суюктук"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Баскычтарды өзгөртүү"
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Дареги талап кылынат."
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок"
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Өчүрүлө турган файлдар"
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок"
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок"
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Эски сырсөз"
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Жаңы сырсөз"
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Сырсөздү аныктоо"
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Өзгөртүү"
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Сырсөздөр дал келген жок!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Улантуу"
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Сырсөздү өзгөртүү"
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Үн көлөмү"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Менюга чыгуу"
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Оюндан чыгуу"
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Жарыяланбас башкаруу:\n"
|
||||
"- WASD: басуу\n"
|
||||
"- Боштугу: секирүү/өйдө чыгуу\n"
|
||||
"- Shift: уурданып басуу/ылдый түшүү\n"
|
||||
"- Q: буюмду таштоо\n"
|
||||
"- I: мүлк-шайман\n"
|
||||
"- Чычканы: бурулуу/кароо\n"
|
||||
"- Сол чычкан баскычы: казуу/согуу\n"
|
||||
"- Оң чычкан баскычы: коюу/колдонуу\n"
|
||||
"- Чычкан дөңгөлөгү: буюмду тандоо\n"
|
||||
"- T: маек\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Үн көлөмү: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Чыгуу"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Сол баскыч"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr "Ортоңку баскыч"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr "Оң баскыч"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr "Артка"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr "Тазалоо"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr "Caps Lock"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr "Ctrl"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr "Кана"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr "Меню"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr "Пауза"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr "Esc"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr "Junja"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr "Кандзи"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr "Кабыл алуу"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr "Режимди өзгөртүү"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr "Кийинки"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr "Боштук"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr "Ылдый"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr "Аткаруу"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr "Басма"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr "Тандоо"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr "Өйдө"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr "Жардам"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr "Тез сүрөт"
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr "Сол Windows"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr "Тиркемелер"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr "Кош. клав. 0"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr "Кош. клав. 1"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr "Оң Windows"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr "Уйку"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr "Кош. клав. 2"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr "Кош. клав. 3"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr "Кош. клав. 4"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr "Кош. клав. 5"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr "Кош. клав. 6"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr "Кош. клав. 7"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr "Кош. клав. *"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr "Кош. клав. +"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr "Кош. клав. -"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr "Кош. клав. /"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr "Кош. клав. 8"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr "Кош. клав. 9"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr "Сол Shift"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr "Оң Shift"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr "Сол Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr "Сол меню"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr "Оң Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr "Оң меню"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr "Үтүр"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr "Кемитүү белгиси"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr "Айланма сан"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr "Кошуу белгиси"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr "Масштаб"
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Башкы меню"
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Дүйнө тандалган жок жана дареги киргизилген жок. Кылууга эч нерсе жок."
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Оюнду табуу же жүктөө мүмкүн эмес \""
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Жарыяланбас башкаруу:\n"
|
||||
#~ "- WASD: Басуу\n"
|
||||
#~ "- Сол кнопкасы: казуу/согуу\n"
|
||||
#~ "- Оң кнопкасы: коюу/колдонуу\n"
|
||||
#~ "- Чычкан дөңгөлөгү: буюмду тандоо\n"
|
||||
#~ "- 0...9: буюмду тандоо\n"
|
||||
#~ "- Shift: уурданып басуу\n"
|
||||
#~ "- R: алыс кароо\n"
|
||||
#~ "- I: мүлк-шайман\n"
|
||||
#~ "- ESC: бул меню\n"
|
||||
#~ "- T: маек\n"
|
||||
280
po/minetest.pot
280
po/minetest.pot
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,13 +17,47 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -33,56 +67,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -94,264 +128,280 @@ msgstr ""
|
||||
msgid "Respawn"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr ""
|
||||
|
||||
@@ -359,51 +409,63 @@ msgstr ""
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
@@ -698,32 +760,26 @@ msgstr ""
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
790
po/nb/minetest.po
Normal file
790
po/nb/minetest.po
Normal file
@@ -0,0 +1,790 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-02 08:17+0200\n"
|
||||
"Last-Translator: Sindre Tellevik <graknol@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: nb\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Advarsel: Noen modifikasjoner er ikke konfigurert enda. \n"
|
||||
"De vil bli aktivert som standard når du lagrer konfigurasjonen."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"Advarsel: Noen konfigurerte modifikasjoner mangler. \n"
|
||||
"Instillingene deres vil bli fjernet når du lagrer konfigurasjonen."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "aktivert"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Aktiver Alle"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Deaktiver Alle"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "Avhenger av:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "trengs av:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Lagre"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Konfigurasjon lagret.…"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nei"
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Navnet på verdenen"
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Spill"
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Opprett"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Du døde."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr ""
|
||||
819
po/nl/minetest.po
Normal file
819
po/nl/minetest.po
Normal file
@@ -0,0 +1,819 @@
|
||||
# SOME DESCRIPTIVE TITLE. DUTCH TRANSLATION
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-01 22:18+0200\n"
|
||||
"Last-Translator: Sfan5 . <sfan5@live.de>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Let op: Nog niet alle mods zijn geconfigueerd. \n"
|
||||
"De mods zullen automatisch worden ingeschakeld als je de configuratie "
|
||||
"bewaard. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"LEt op: Sommige ingestelde mods zijn vermist.\n"
|
||||
"Hun instellingen worden verwijderd als je de configuratie opslaat. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "ingeschakeld"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Allen inschakelen"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Allen uitschakelen"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "heeft nodig:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "is benodigd voor:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Bewaar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Instellingen bewaard. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Waarschuwing: Instellingen niet consistent. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nee"
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Naam wereld"
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Spel"
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Maak aan"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Je bent gestorven."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Respawn"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
"Linkermuisknop: Verplaats alle items. Rechtermuisknop: Verplaats één item"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "Sneltoetsen."
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Use\" = Omlaag klimmen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Dubbelklik op \"jump\" om te vliegen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Toets is al in gebruik"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "druk op"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Vooruit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Achteruit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Links"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Rechts"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Gebruikwn"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Springen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Kruipen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Weggooien"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Rugzak"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Opdracht"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Vliegen aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Snel bewegen aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Noclip aan/uit"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Range instellen"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Print stacks"
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Kan geen nieuwe wereld aanmaken: de naam bevat onjuiste tekens"
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Kan geen nieuwe wereld aanmaken: De naam bestaat al"
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Singleplayer"
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Multiplayer"
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Geavanceerd"
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Credits"
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Selecteer Wereld:"
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Nieuw"
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Speel"
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Creative Modus"
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Schade inschakelen"
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Naam/Wachtwoord"
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favourieten:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Publieke Server lijst:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "IP-Adres/Poort"
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Publieke server"
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Favourieten"
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Laat het adres leeg om een lokale server te starten."
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Start het spel / Verbind"
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Publiek"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Verwijder wereld"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Maak wereld aan"
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Mooie bomen"
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Mooie verlichting"
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D wolken"
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Doorzichtig water"
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Bi-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Bi-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Tri-Linear Filtering"
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shaders"
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Preload item visuals"
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Enable Particles"
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Finite liquid"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Sneltoetsen veranderen"
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "IP-adres nodig."
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Kan niets verwijderen: Geen wereld geselecteerd"
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Deze bestanden worden verwijderd"
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Kan geen wereld aanmaken: Geen games gevonden"
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Kan instellingen niet aanpassen: Niets geselecteerd"
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Niet alle bestanden zijn verwijderd"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Huidig wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nieuw wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Herhaal wachtwoord"
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Veranderen"
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Wachtwoorden zijn niet gelijk!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Verander wachtwoord"
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Exit naar menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volume: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Exit"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Linkermuisknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr "Muiswielknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr "Rechtmuisknop"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr "X knop 1"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr "Terug"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr "Wissen"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr "Return"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr "X knop 2"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr "Kapitaal"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr "Control"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr "Kana"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr "Pauze"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr "Converteren"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr "Escape"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr "Final"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr "Junja"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr "Kanji"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr "Nonconvert"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr "Accepteren"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr "Modus veranderen"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr "Volgende"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr "Eerste"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr "Spatie"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr "Omlaag"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr "Uitvoeren"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr "Print"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr "Selecteren"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr "Omhoog"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr "Screenshot"
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr "Linker Windowstoets"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr "Apps"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr "Numpad 0"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr "Numpad 1"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr "Rechter Windowstoets"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr "Slaapknop"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr "Numpad 2"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr "Numpad 3"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr "Numpad 4"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr "Numpad 5"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr "Numpad 6"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr "Numpad 7"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr "Numpad *"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr "Numpad +"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr "Numpad -"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr "Numpad /"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr "Numpad 8"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr "Numpad 9"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr "Linker Shift"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr "Rechter Shift"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr "Linker Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr "Linker Menu"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr "Rechter Ctrl"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr "Rechter Menu"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr "Komma"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr "Min"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr "Punt"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr "Plus"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr "Attn"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr "CrSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr "Erase OEF"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr "ExSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr "OEM Clear"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr "PA1"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Hoofdmenu"
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Laden van wereld is mislukt"
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Geen wereld en adres geselecteerd. Niks te doen."
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Kan niet de game laden of vinden \""
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Onjuiste gamespec."
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Connection error (timed out?)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Default Besturing:\n"
|
||||
#~ "- WASD: Lopen\n"
|
||||
#~ "- Linkermuisknop: Graaf/Sla\n"
|
||||
#~ "- Rechtmuisknop: Plaats/Gebruik\n"
|
||||
#~ "- Muiswiel: selecteer item\n"
|
||||
#~ "- 0...9: selecteer item\n"
|
||||
#~ "- Shift: kruipen\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Rugzak\n"
|
||||
#~ "- ESC: Menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
@@ -7,10 +7,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-23 18:24+0200\n"
|
||||
"PO-Revision-Date: 2013-02-22 16:59+0200\n"
|
||||
"Last-Translator: Maciej Kasatkin <maciej.kasatkin@yahoo.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-04-21 23:38+0200\n"
|
||||
"Last-Translator: Daniel \"Tracerneo\" Ziółkowski <ziolkoneo@gmail.com>\n"
|
||||
"Language-Team: Polish <>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -19,15 +19,51 @@ msgstr ""
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Sprawdź plik debug.txt by uzyskać więcej informacji."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Ostrzeżenie: Niektóre z modyfikacji nie zostały jeszcze skonfigurowane.\n"
|
||||
"Uwaga: Niektóre z modyfikacji nie zostały jeszcze skonfigurowane.\n"
|
||||
"Zostaną domyślnie włączone gdy zapiszesz konfigurację. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -39,56 +75,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr "włączone"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Włącz wszystkie"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Wyłącz wszystkie"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "zależne od:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "wymagane przez:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Zapisz"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Konfiguracja zapisana. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Ostrzeżenie: Plik konfiguracyjny niespójny. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Tak"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Nie"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Nazwa świata"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Gra"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Utwórz"
|
||||
|
||||
@@ -100,344 +136,361 @@ msgstr "Zginąłeś."
|
||||
msgid "Respawn"
|
||||
msgstr "Wróć do gry"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
"Lewy klik: Przenieś wszystkie przedmioty, Prawy klik: przenieś pojedynczy "
|
||||
"przedmiot"
|
||||
"Lewy przycisk myszy: przenieś wszystkie przedmioty, Prawy przycisk myszy: "
|
||||
"przenieś pojedynczy przedmiot"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Kontynuuj"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
"Zdefiniowane klawisze. (Jeżeli to menu nie działa, usuń skonfigurowane "
|
||||
"klawisze z pliku minetest.conf)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Użyj\" = wspinaj się"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Wciśnij dwukrotnie \"Skok\" by włączyć tryb latania"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Klawisz już zdefiniowany"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "naciśnij klawisz"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Do przodu"
|
||||
msgstr "Przód"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Do tyłu"
|
||||
msgstr "Tył"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Lewo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Prawo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Użyj"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Skok"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Skradanie"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Upuść"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inwentarz"
|
||||
msgstr "Ekwipunek"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Czat"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Komenda"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Konsola"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Przełącz tryb latania"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Przełącz tryb szybki"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Przełącz tryb noclip"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Zasięg widzenia"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Print stacks"
|
||||
msgstr "Drukuj stosy"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Nie można stworzyć świata: nazwa zawiera niedozwolone znaki"
|
||||
msgstr "Nie można stworzyć świata: Nazwa zawiera niedozwolone znaki"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Nie można stworzyć świata: Istnieje już świat o takiej nazwie"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Pojedynczy gracz"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Gra wieloosobowa"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Zaawansowane"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Autorzy"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Wybierz świat:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Skasuj"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Nowy"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Ustaw"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Graj"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Tryb kreatywny"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Włącz obrażenia"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Nazwa gracza/Hasło"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Ulubione:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Lista publicznych serwerów:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Adres/Port"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Pokaż publiczne"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Pokaż ulubione"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Połącz"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Nie wpisuj adresu by uruchomić lokalny serwer."
|
||||
msgstr "Pozostaw pole adresu puste, by uruchomić serwer lokalny."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Rozpocznij grę/Połącz"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
msgid "Delete world"
|
||||
msgstr "Skasuj świat"
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Publiczne"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Usuń świat"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Stwórz świat"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Ozdobne drzewa"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Płynne oświetlenie"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "Chmury 3D"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Nieprzeźroczysta woda"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mappowanie"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Filtrowanie anizotropowe"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Dwuliniowe filtrowanie"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Trójliniowe filtrowanie"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Shadery"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Ładuj obrazy przedmiotów"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Włącz cząstki"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Realistyczne ciecze"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Zmień klawisze"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Wymagany adres."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Nie można skasować świata: nic nie zaznaczono"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Pliki do skasowania"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Nie można utworzyć świata: Nie znaleziono żadnego trybu gry"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Nie można skonfigurować świata: Nic nie zaznaczono"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Nie można skasować wszystkich plików świata"
|
||||
msgstr "Nie udało się skasować wszystkich plików świata"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Stare hasło"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nowe hasło"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Potwierdź hasło"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Zmień"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Hasła nie są jednakowe!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Dalej"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Zmień hasło"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Wyjdź do menu"
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Głośność"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Wyjście do menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Wyjście z gry"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Domyślne ustawienia:\n"
|
||||
"- WASD: poruszanie\n"
|
||||
"- Lewy przycisk myszki: kop/uderz\n"
|
||||
"- Prawy przycisk myszki: połóż/użyj\n"
|
||||
"- Kółko myszki: wybieranie przedmiotu\n"
|
||||
"- 0...9: wybieranie przedmiotu\n"
|
||||
"- Shift: skradanie\n"
|
||||
"- R: przełączanie trybu widoczności\n"
|
||||
"- I: menu posiadanych przedmiotów\n"
|
||||
"- ESC: to menu\n"
|
||||
"- T: Czat\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Głośność: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Wyjście"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Lewy przycisk myszki"
|
||||
msgstr "Lewy przycisk myszy"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr "Środkowy przycisk myszki"
|
||||
msgstr "Środkowy przycisk myszy"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr "Prawy przycisk myszki"
|
||||
msgstr "Prawy przycisk myszy"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
@@ -561,7 +614,7 @@ msgstr "Góra"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
msgstr "Pomoc"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
@@ -719,34 +772,51 @@ msgstr "PA1"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu główne"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Inicjalizacja świata nie powiodła się"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "Nie wybrano świata ani adresu."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Nie można znaleźć lub wczytać trybu gry \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Nieprawidłowa specyfikacja trybu gry."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Błąd połączenia (brak odpowiedzi?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Sprawdź plik debug.txt by uzyskać więcej informacji."
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Domyślne ustawienia:\n"
|
||||
#~ "- WASD: poruszanie\n"
|
||||
#~ "- Lewy przycisk myszki: kop/uderz\n"
|
||||
#~ "- Prawy przycisk myszki: połóż/użyj\n"
|
||||
#~ "- Kółko myszy: wybieranie przedmiotu\n"
|
||||
#~ "- 0...9: wybieranie przedmiotu\n"
|
||||
#~ "- Shift: skradanie\n"
|
||||
#~ "- R: przełączanie trybu widoczności\n"
|
||||
#~ "- I: menu ekwipunku\n"
|
||||
#~ "- ESC: to menu\n"
|
||||
#~ "- T: czat\n"
|
||||
|
||||
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"PO-Revision-Date: 2013-02-26 20:10+0200\n"
|
||||
"Last-Translator: Francizca Rodriguez <joaoadriano3@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-30 00:13+0200\n"
|
||||
"Last-Translator: v c <vicente.camolas@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,409 +18,473 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Texturas dos items..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "A carregar..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "A criar servidor..."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "A criar cliente..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "A resolver endereço..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "A conectar ao servidor..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "A desligar..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Consulte debug.txt para mais detalhes."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Alerta: Alguns mods ainda não estão configurados.\n"
|
||||
"Eles vão ser ativos por predefinição quando guardar a configuração. "
|
||||
"Atenção: Alguns mods ainda não estão configurados.\n"
|
||||
"Eles vão ser ativados por predefinição quando guardar a configuração. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"Alerta: Alguns mods configurados estão em falta.\n"
|
||||
"As definições vão ser removidas quando gravar a configuração. "
|
||||
"Atenção: Alguns mods configurados estão em falta.\n"
|
||||
"As suas definições vão ser removidas quando gravar a configuração. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "ativo"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Ativar Tudo"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Desativar Tudo"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "depende de:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "é necessário pelo:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Configuração gravada. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Alerta: Configuração não compativel. "
|
||||
msgstr "Atenção: Configuração não compatível. "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Sim"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Não"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Nome do Mundo"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Jogo"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Criar"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Estás morto."
|
||||
msgstr "Morreste."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Renascer"
|
||||
msgstr "Reaparecer"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Botão esq.: Mover todos os items, Botão dir.: Mover um item"
|
||||
msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "Teclas. (Se este menu estragar-se, remova as linhas do minetest.conf)"
|
||||
msgstr "Teclas. (Se este menu se estragar, remova as linhas do minetest.conf)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Use\" = ir para baixo"
|
||||
msgstr "\"Use\" = descer"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Duas vezes \"saltar\" para ativar vôo"
|
||||
msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Tecla já em uso"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
msgid "press key"
|
||||
msgstr "pressione tecla"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "pressione a tecla"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Avançar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Para trás"
|
||||
msgstr "Recuar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Esquerda"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Direita"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Usar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Saltar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Agachar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Dropar"
|
||||
msgstr "Largar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inventário"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "CHAT"
|
||||
msgstr "Conversa"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Consola"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Ativar vôo"
|
||||
msgstr "Ativar/Desativar vôo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Ativar correr"
|
||||
msgstr "Ativar/Desativar correr"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Ativar noclip"
|
||||
msgstr "Ativar/Desativar noclip"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Seleccionar Distância"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Imprimir stacks"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Não foi possível criar mundo: Nome com carácteres inválidos"
|
||||
msgstr "Não foi possível criar mundo: Nome com caracteres inválidos"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Não foi possivel criar mundo: Mundo com este nome já existente"
|
||||
msgstr "Não foi possível criar mundo: Já existe um mundo com este nome"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Um Jogador"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Multijogador"
|
||||
msgstr "Vários jogadores"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Avançado"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Definições"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Créditos"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Seleccionar Mundo:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Novo"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Configurar"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Jogar"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Modo Criativo"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Ativar Dano"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Nome/Senha"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favoritos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Lista de servidores públicos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Endereço/Porta"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Mostrar Públicos"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Mostrar Favoritos"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Conectar"
|
||||
msgstr "Ligar"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Deixe endereço em branco para iniciar servidor local."
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Iniciar Jogo / Conectar"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Público"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Eliminar mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Criar mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Árvores Melhoradas"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Iluminação Suave"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "Nuvens 3D"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Água Opaca"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Filtro Anisotropico"
|
||||
msgstr "Filtro Anisotrópico"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Filtro Bi-Linear"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Filtro Tri-Linear"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Sombras"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Precarregamento dos items"
|
||||
msgstr "Pré-carregamento dos itens"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Ativar Particulas"
|
||||
msgstr "Ativar Partículas"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Líquido finito"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Mudar teclas"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "Endereço necessário."
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Não foi possível eliminar mundo: Nada seleccionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Ficheiros para eliminar"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Não foi possivel criar mundo: Jogos não detectados"
|
||||
msgstr "Não foi possível criar mundo: Não foram detectados jogos"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Não foi possivel configurar mundo: Nada seleccionado"
|
||||
msgstr "Não foi possível configurar mundo: Nada seleccionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Remoção dos ficheiros dos mundos falhada"
|
||||
msgstr "Falhou a remoção de todos os ficheiros dos mundos"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Senha antiga"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Senha Nova"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Confirmar Senha"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Mudar"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "Senhas não correspondem!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Mudar Senha"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volume do som"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Sair para Menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Sair para SO"
|
||||
msgstr "Sair para o sistema"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Controlos Normais:\n"
|
||||
"- WASD: Andar\n"
|
||||
"- Botão esq.: partir/atacar\n"
|
||||
"- Botão dir.: colocar/usar\n"
|
||||
"- Roda do Rato: seleccionar item\n"
|
||||
"- 0...9: seleccionar item\n"
|
||||
"- Shift: agachar\n"
|
||||
"- R: Mudar visualização de todos os chunks\n"
|
||||
"Teclas por defeito:\n"
|
||||
"- WASD: mover\n"
|
||||
"- Barra de espaço: saltar/subir\n"
|
||||
"- Shift: andar cuidadosamente/descer\n"
|
||||
"- Q: Largar item\n"
|
||||
"- I: Inventário\n"
|
||||
"- ESC: Este menu\n"
|
||||
"- T: Chat\n"
|
||||
"- Rato: virar/olhar\n"
|
||||
"- Clique esquerdo: cavar/bater\n"
|
||||
"- Clique direito: colocar/utilizar\n"
|
||||
"- Roda do rato: seleccionar item\n"
|
||||
"- T: conversação\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volume do som: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
@@ -480,7 +544,7 @@ msgstr "Pausa"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr "SHIFT"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
@@ -512,15 +576,15 @@ msgstr "Aceitar"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr "END"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr "HOME"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr "MODE Change"
|
||||
msgstr "Mode Change"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
@@ -544,7 +608,7 @@ msgstr "Executar"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr "PRINT"
|
||||
msgstr "Print"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
@@ -560,7 +624,7 @@ msgstr "Ajuda"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "INSERT"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
@@ -714,35 +778,52 @@ msgstr "PAL"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu Principal"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Falha ao iniciar mundo"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
"Nenhum mundo seleccionado e nenhum endereço providenciado. Nada para fazer."
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Não foi possível encontrar ou carregar jogo \""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "gamespec inválido."
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Erro de conexão (excedeu tempo?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Verifique debug.txt para mais detalhes."
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Controlos Normais:\n"
|
||||
#~ "- WASD: Andar\n"
|
||||
#~ "- Botão esq.: partir/atacar\n"
|
||||
#~ "- Botão dir.: colocar/usar\n"
|
||||
#~ "- Roda do Rato: seleccionar item\n"
|
||||
#~ "- 0...9: seleccionar item\n"
|
||||
#~ "- Shift: agachar\n"
|
||||
#~ "- R: Mudar visualização de todos os chunks\n"
|
||||
#~ "- I: Inventário\n"
|
||||
#~ "- ESC: Este menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
|
||||
831
po/pt_BR/minetest.po
Normal file
831
po/pt_BR/minetest.po
Normal file
@@ -0,0 +1,831 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-15 18:58+0200\n"
|
||||
"Last-Translator: Frederico Guimarães <frederico@teia.bio.br>\n"
|
||||
"Language-Team: LANGUAGE <contato@ejweb.com.br>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "Texturas dos itens..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "Carregando..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "Criando o servidor..."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "Criando o cliente..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "Resolvendo os endereços..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "Conectando ao servidor..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "Desligando tudo..."
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Verifique o debug.txt para mais detalhes."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
"Atenção: Alguns mods ainda não foram configurados.\n"
|
||||
"E eles serão ativados por padrão, quando você salvar a configuração."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
"Atenção: Alguns mods configurados não foram encontrados.\n"
|
||||
"Suas definições serão removidas quando você salvar a configuração."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr "habilitado"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Habilitar tudo"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Desabilitar tudo"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "depende de:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "é necessário para:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Salvar"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "A configuração foi salva. "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Atenção: A configuração não está consistente."
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "Sim"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "Não"
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "Nome do mundo"
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "Jogo"
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "Criar"
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr "Você morreu."
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr "Reviver"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "Botão esq.: Move todos os itens, Botão dir.: Move um item"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
"Teclas. (Se este menu estiver com problema, remova itens do minetest.conf)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "\"Usar\" = desce"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "Aperte duas vezes \"saltar\" para ativar o voo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "Essa tecla já está em uso"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "pressione uma tecla"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Avançar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Esquerda"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "Direita"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Usar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "Saltar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Esgueirar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Soltar"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "Inventário"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "Bate-papo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "Alternar voo"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "Alternar corrida"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "Alternar mov.livre"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "Selecionar distância"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "Imprimir pilha (log)"
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "Não foi possível criar o mundo: O nome contém caracteres inválidos"
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "Não foi possivel criar o mundo: Já existe um mundo com esse nome"
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "Um jogador"
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "Vários jogadores"
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "Avançado"
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "Configurações"
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "Créditos"
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "Selecione um mundo:"
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "Novo"
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "Configurar"
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "Jogar"
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "Modo criativo"
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "Habilitar dano"
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "Nome/Senha"
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "Favoritos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "Lista de servidores públicos:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "Endereço/Porta"
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "Exibir públicos"
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "Exibir favoritos"
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "Conectar"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "Deixe o endereço em branco para iniciar um servidor local."
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "Iniciar o jogo/Conectar"
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "Público"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "Excluir o mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "Criar o mundo"
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "Árvores mais detalhadas"
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "Iluminação suave"
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "Nuvens 3D"
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "Água opaca"
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "Mip-Mapping"
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "Filtragem anisotrópica"
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "Filtragem bi-linear"
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "Filtragem tri-linear"
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "Sombreadores"
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "Precarga dos elementos visuais"
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "Habilitar partículas"
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "Líquido finito"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "Mudar teclas"
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "É necessário um endereço."
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "Não foi possível excluir o mundo: Nenhum foi selecionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "Arquivos a serem excluídos"
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "Não foi possivel criar o mundo: Não foi encontrado nenhum jogo"
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "Não foi possível configurar o mundo: Nada foi selecionado"
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "Não foi possível excluir todos os arquivos do mundo"
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr "Senha antiga"
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "Nova senha"
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "Confirmar a senha"
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "Alterar"
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "As senhas não correspondem!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "Continuar"
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "Alterar a senha"
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "Volume do som"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "Sair para o menu"
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "Sair do Minetest"
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"Controles padrão:\n"
|
||||
"- WASD: mover\n"
|
||||
"- Espaço: pular/escalar\n"
|
||||
"- Shift: esgueirar/descer\n"
|
||||
"- Q: descartar o item\n"
|
||||
"- I: inventário\n"
|
||||
"- Mouse: virar/olhar\n"
|
||||
"- Botão esq. do mouse: cavar/atingir\n"
|
||||
"- Botão dir. do mouse: colocar/usar\n"
|
||||
"- Roda do mouse: selecionar item\n"
|
||||
"- T: bate-papo\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "Volume do som: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr "Botão esquerdo"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr "Roda do mouse"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr "Botão direito"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr "Botão X 1"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr "Backspace"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr "Limpar"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr "Enter"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr "Botão X 2"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr "Caps Lock"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr "Ctrl"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr "Kana"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr "Convert"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr "Esc"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr "Final"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr "Junja"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr "Kanji"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr "Nonconvert"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr "Aceitar"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr "Mode Change"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr "Page Down"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr "Page Up"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr "Espaço"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr "Abaixo"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr "Executar"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr "Print Screen"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr "Select"
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr "Acima"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr "Ajuda"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr "Captura de tela"
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr "Windows esq."
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr "Apps"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr "Tecl.num.0"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr "Tecl.num.1"
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr "Windows dir."
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr "Sleep"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr "Tecl.num.2"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr "Tecl.num.3"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr "Tecl.num.4"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr "Tecl.num.5"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr "Tecl.num.6"
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr "Tecl.num.7"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr "Tecl.num.*"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr "Tecl.num.+"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr "Tecl.num.-"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr "Tecl.num./"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr "Tecl.num.8"
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr "Tecl.num.9"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr "Shift esq."
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr "Shift dir."
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr "Ctrl esq."
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr "Menu esq."
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr "Ctrl dir."
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr "Menu dir."
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr "Vírgula"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr "Menos"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr "Ponto"
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr "Mais"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr "Attn"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr "CrSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr "Apagar OEF"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr "ExSel"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr "Limpar OEM"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr "PA1"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "Não foi possível iniciar o mundo"
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
"Nenhum mundo foi selecionado e nenhum endereço fornecido. Não existe nada a "
|
||||
"ser feito."
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "Não foi possível localizar ou carregar jogo \""
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "Especificação do jogo inválida."
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "Erro de conexão (tempo excedido?)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "Controles padrão:\n"
|
||||
#~ "- WASD: andar\n"
|
||||
#~ "- Botão esquerdo: cavar/golpear\n"
|
||||
#~ "- Botão direito: colocar/usar\n"
|
||||
#~ "- Roda do mouse: selecionar item\n"
|
||||
#~ "- 0...9: selecionar item\n"
|
||||
#~ "- Shift: esgueirar\n"
|
||||
#~ "- R: alternar a distância de visualização\n"
|
||||
#~ "- I: inventário\n"
|
||||
#~ "- ESC: este menu\n"
|
||||
#~ "- T: bate-papo\n"
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,13 +17,47 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -33,56 +67,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -94,264 +128,280 @@ msgstr ""
|
||||
msgid "Respawn"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr ""
|
||||
|
||||
@@ -359,51 +409,63 @@ msgstr ""
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
@@ -698,32 +760,26 @@ msgstr ""
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
787
po/uk/minetest.po
Normal file
787
po/uk/minetest.po
Normal file
@@ -0,0 +1,787 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-04-23 17:00+0200\n"
|
||||
"Last-Translator: ?????? ???????? <Martin_Devil@mail.ru>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr ""
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr "\nДеталі у файлі debug.txt."
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:208
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "Увімкнути Все"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "Вимкнути Усе"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "залежить від:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "Зберегти"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "Налаштування Збережено!"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "Попередження: Помилкова конфігурація."
|
||||
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiDeathScreen.cpp:96
|
||||
msgid "You died."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiDeathScreen.cpp:104
|
||||
msgid "Respawn"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "Уперед"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "Назад"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "Уліво"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "Використовувата"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "Крастися"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "Викинути"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:108
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr ""
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Middle Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Right Button"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "X Button 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Tab"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "X Button 2"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Capital"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Kana"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Convert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Escape"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Junja"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Kanji"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
msgid "Nonconvert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Mode Change"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Prior"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Execute"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:228
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Insert"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:229
|
||||
msgid "Snapshot"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:232
|
||||
msgid "Left Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Apps"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 0"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Numpad 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Right Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:233
|
||||
msgid "Sleep"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 2"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 3"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 4"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 5"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 6"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:234
|
||||
msgid "Numpad 7"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad *"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad +"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad -"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad /"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 8"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:235
|
||||
msgid "Numpad 9"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Num Lock"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:239
|
||||
msgid "Scroll Lock"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Left Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:240
|
||||
msgid "Right Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Left Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Control"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
msgid "Right Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Comma"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Minus"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:243
|
||||
msgid "Plus"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "Attn"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
msgid "CrSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Erase OEF"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "ExSel"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "OEM Clear"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "PA1"
|
||||
msgstr ""
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr ""
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: minetest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-30 20:25+0100\n"
|
||||
"PO-Revision-Date: 2013-02-23 03:40+0200\n"
|
||||
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
|
||||
"PO-Revision-Date: 2013-05-18 16:23+0200\n"
|
||||
"Last-Translator: Shen Zheyu <arsdragonfly@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -18,7 +18,43 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 1.4-dev\n"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:125
|
||||
#: src/client.cpp:2846
|
||||
msgid "Item textures..."
|
||||
msgstr "物品材质..."
|
||||
|
||||
#: src/game.cpp:912
|
||||
msgid "Loading..."
|
||||
msgstr "载入中..."
|
||||
|
||||
#: src/game.cpp:972
|
||||
msgid "Creating server...."
|
||||
msgstr "正在建立服务器...."
|
||||
|
||||
#: src/game.cpp:988
|
||||
msgid "Creating client..."
|
||||
msgstr "正在建立客户端..."
|
||||
|
||||
#: src/game.cpp:1003
|
||||
msgid "Resolving address..."
|
||||
msgstr "正在解析地址..."
|
||||
|
||||
#: src/game.cpp:1079
|
||||
msgid "Connecting to server..."
|
||||
msgstr "正在连接服务器..."
|
||||
|
||||
#: src/game.cpp:3348
|
||||
msgid "Shutting down stuff..."
|
||||
msgstr "关闭中......"
|
||||
|
||||
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"查看 debug.txt 以获得详细信息。"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:123
|
||||
msgid ""
|
||||
"Warning: Some mods are not configured yet.\n"
|
||||
"They will be enabled by default when you save the configuration. "
|
||||
@@ -26,7 +62,7 @@ msgstr ""
|
||||
"警告:一些MOD仍未设定。\n"
|
||||
"它们会在你保存配置的时候自动启用。 "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:144
|
||||
#: src/guiConfigureWorld.cpp:143
|
||||
msgid ""
|
||||
"Warning: Some configured mods are missing.\n"
|
||||
"Their setting will be removed when you save the configuration. "
|
||||
@@ -38,56 +74,56 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr "启用"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:215
|
||||
#: src/guiConfigureWorld.cpp:218
|
||||
msgid "Enable All"
|
||||
msgstr "全部启用"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:222
|
||||
#: src/guiConfigureWorld.cpp:227
|
||||
msgid "Disable All"
|
||||
msgstr "全部禁用"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:228
|
||||
#: src/guiConfigureWorld.cpp:235
|
||||
msgid "depends on:"
|
||||
msgstr "依赖于:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:240
|
||||
#: src/guiConfigureWorld.cpp:248
|
||||
msgid "is required by:"
|
||||
msgstr "需要:"
|
||||
msgstr "被需要:"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:262 src/guiCreateWorld.cpp:165
|
||||
#: src/guiKeyChangeMenu.cpp:179 src/keycode.cpp:223
|
||||
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
|
||||
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
|
||||
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
#: src/guiConfigureWorld.cpp:394
|
||||
#: src/guiConfigureWorld.cpp:403
|
||||
msgid "Configuration saved. "
|
||||
msgstr "配置已保存。 "
|
||||
|
||||
#: src/guiConfigureWorld.cpp:402
|
||||
#: src/guiConfigureWorld.cpp:415
|
||||
msgid "Warning: Configuration not consistent. "
|
||||
msgstr "警告:配置不一致。 "
|
||||
|
||||
#: src/guiConfirmMenu.cpp:120
|
||||
#: src/guiConfirmMenu.cpp:119
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
#: src/guiConfirmMenu.cpp:126
|
||||
#: src/guiConfirmMenu.cpp:127
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
#: src/guiCreateWorld.cpp:116
|
||||
#: src/guiCreateWorld.cpp:125
|
||||
msgid "World name"
|
||||
msgstr "世界名称"
|
||||
|
||||
#: src/guiCreateWorld.cpp:135
|
||||
#: src/guiCreateWorld.cpp:145
|
||||
msgid "Game"
|
||||
msgstr "游戏"
|
||||
|
||||
#: src/guiCreateWorld.cpp:159
|
||||
#: src/guiCreateWorld.cpp:169
|
||||
msgid "Create"
|
||||
msgstr "创建"
|
||||
|
||||
@@ -99,267 +135,280 @@ msgstr "你死了。"
|
||||
msgid "Respawn"
|
||||
msgstr "重生"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:572
|
||||
#: src/guiFormSpecMenu.cpp:582
|
||||
msgid "Left click: Move all items, Right click: Move single item"
|
||||
msgstr "左键:移动所有物品,右键:移动单个物品"
|
||||
|
||||
#: src/guiFormSpecMenu.cpp:597 src/guiMessageMenu.cpp:109
|
||||
#: src/guiTextInputMenu.cpp:123
|
||||
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
|
||||
#: src/guiTextInputMenu.cpp:130
|
||||
msgid "Proceed"
|
||||
msgstr "继续游戏"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:114
|
||||
#: src/guiKeyChangeMenu.cpp:121
|
||||
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
|
||||
msgstr "键位配置。(如果这个菜单被弄乱,从minetest.conf中删掉点东西)"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:151
|
||||
#: src/guiKeyChangeMenu.cpp:161
|
||||
msgid "\"Use\" = climb down"
|
||||
msgstr "“使用” = 向下爬"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:164
|
||||
#: src/guiKeyChangeMenu.cpp:176
|
||||
msgid "Double tap \"jump\" to toggle fly"
|
||||
msgstr "连按两次“跳”切换飞行状态"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:269
|
||||
#: src/guiKeyChangeMenu.cpp:290
|
||||
msgid "Key already in use"
|
||||
msgstr "按键已被占用"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:347
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
msgid "press key"
|
||||
msgstr "按键"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:372
|
||||
#: src/guiKeyChangeMenu.cpp:400
|
||||
msgid "Forward"
|
||||
msgstr "向前"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:373
|
||||
#: src/guiKeyChangeMenu.cpp:401
|
||||
msgid "Backward"
|
||||
msgstr "向后"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
|
||||
msgid "Left"
|
||||
msgstr "向左"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
|
||||
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
|
||||
msgid "Right"
|
||||
msgstr "向右"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:376
|
||||
#: src/guiKeyChangeMenu.cpp:404
|
||||
msgid "Use"
|
||||
msgstr "使用"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:377
|
||||
#: src/guiKeyChangeMenu.cpp:405
|
||||
msgid "Jump"
|
||||
msgstr "跳"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:378
|
||||
#: src/guiKeyChangeMenu.cpp:406
|
||||
msgid "Sneak"
|
||||
msgstr "潜行"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:379
|
||||
#: src/guiKeyChangeMenu.cpp:407
|
||||
msgid "Drop"
|
||||
msgstr "丢出"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:380
|
||||
#: src/guiKeyChangeMenu.cpp:408
|
||||
msgid "Inventory"
|
||||
msgstr "物品栏"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:381
|
||||
#: src/guiKeyChangeMenu.cpp:409
|
||||
msgid "Chat"
|
||||
msgstr "聊天"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:382
|
||||
#: src/guiKeyChangeMenu.cpp:410
|
||||
msgid "Command"
|
||||
msgstr "命令"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:383
|
||||
#: src/guiKeyChangeMenu.cpp:411
|
||||
msgid "Console"
|
||||
msgstr "控制台"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:384
|
||||
#: src/guiKeyChangeMenu.cpp:412
|
||||
msgid "Toggle fly"
|
||||
msgstr "切换飞行状态"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:385
|
||||
#: src/guiKeyChangeMenu.cpp:413
|
||||
msgid "Toggle fast"
|
||||
msgstr "切换快速移动状态"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:386
|
||||
#: src/guiKeyChangeMenu.cpp:414
|
||||
msgid "Toggle noclip"
|
||||
msgstr "切换穿墙模式"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:387
|
||||
#: src/guiKeyChangeMenu.cpp:415
|
||||
msgid "Range select"
|
||||
msgstr "选择范围"
|
||||
|
||||
#: src/guiKeyChangeMenu.cpp:388
|
||||
#, fuzzy
|
||||
#: src/guiKeyChangeMenu.cpp:416
|
||||
msgid "Print stacks"
|
||||
msgstr "打印栈"
|
||||
|
||||
#: src/guiMainMenu.cpp:55
|
||||
#: src/guiMainMenu.cpp:92
|
||||
msgid "Cannot create world: Name contains invalid characters"
|
||||
msgstr "无法创建世界:名字包含非法字符"
|
||||
|
||||
#: src/guiMainMenu.cpp:64
|
||||
#: src/guiMainMenu.cpp:103
|
||||
msgid "Cannot create world: A world by this name already exists"
|
||||
msgstr "无法创建世界:同名世界已经存在"
|
||||
|
||||
#: src/guiMainMenu.cpp:245
|
||||
#: src/guiMainMenu.cpp:285
|
||||
msgid "Singleplayer"
|
||||
msgstr "单人游戏"
|
||||
|
||||
#: src/guiMainMenu.cpp:246
|
||||
#: src/guiMainMenu.cpp:288
|
||||
msgid "Multiplayer"
|
||||
msgstr "多人游戏"
|
||||
|
||||
#: src/guiMainMenu.cpp:247
|
||||
#: src/guiMainMenu.cpp:291
|
||||
msgid "Advanced"
|
||||
msgstr "高级联机设置"
|
||||
|
||||
#: src/guiMainMenu.cpp:248
|
||||
#: src/guiMainMenu.cpp:294
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
#: src/guiMainMenu.cpp:249
|
||||
#: src/guiMainMenu.cpp:297
|
||||
msgid "Credits"
|
||||
msgstr "关于"
|
||||
|
||||
#: src/guiMainMenu.cpp:280
|
||||
#: src/guiMainMenu.cpp:330
|
||||
msgid "Select World:"
|
||||
msgstr "选择世界:"
|
||||
|
||||
#: src/guiMainMenu.cpp:302 src/guiMainMenu.cpp:449 src/keycode.cpp:229
|
||||
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
|
||||
msgid "Delete"
|
||||
msgstr "删除"
|
||||
|
||||
#: src/guiMainMenu.cpp:309
|
||||
#: src/guiMainMenu.cpp:369
|
||||
msgid "New"
|
||||
msgstr "新建"
|
||||
|
||||
#: src/guiMainMenu.cpp:317
|
||||
#: src/guiMainMenu.cpp:379
|
||||
msgid "Configure"
|
||||
msgstr "配置"
|
||||
|
||||
#: src/guiMainMenu.cpp:332 src/keycode.cpp:248
|
||||
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
|
||||
msgid "Play"
|
||||
msgstr "开始游戏"
|
||||
|
||||
#: src/guiMainMenu.cpp:343 src/guiMainMenu.cpp:557
|
||||
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
|
||||
msgid "Creative Mode"
|
||||
msgstr "创造模式"
|
||||
|
||||
#: src/guiMainMenu.cpp:349 src/guiMainMenu.cpp:563
|
||||
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
|
||||
msgid "Enable Damage"
|
||||
msgstr "开启伤害"
|
||||
|
||||
#: src/guiMainMenu.cpp:369 src/guiMainMenu.cpp:479
|
||||
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
|
||||
msgid "Name/Password"
|
||||
msgstr "名字/密码"
|
||||
|
||||
#: src/guiMainMenu.cpp:408 src/guiMainMenu.cpp:506
|
||||
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
|
||||
msgid "Favorites:"
|
||||
msgstr "最爱的服务器:"
|
||||
|
||||
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
|
||||
msgid "Public Server List:"
|
||||
msgstr "公共服务器列表:"
|
||||
|
||||
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
|
||||
msgid "Address/Port"
|
||||
msgstr "地址/端口"
|
||||
|
||||
#: src/guiMainMenu.cpp:435 src/guiMainMenu.cpp:1075
|
||||
#, fuzzy
|
||||
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
|
||||
msgid "Show Public"
|
||||
msgstr "显示公共"
|
||||
|
||||
#: src/guiMainMenu.cpp:439 src/guiMainMenu.cpp:1083
|
||||
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
|
||||
msgid "Show Favorites"
|
||||
msgstr "显示最爱"
|
||||
|
||||
#: src/guiMainMenu.cpp:459
|
||||
#: src/guiMainMenu.cpp:591
|
||||
msgid "Connect"
|
||||
msgstr "连接"
|
||||
|
||||
#: src/guiMainMenu.cpp:529
|
||||
#: src/guiMainMenu.cpp:668
|
||||
msgid "Leave address blank to start a local server."
|
||||
msgstr "地址栏留空可启动本地服务器。"
|
||||
|
||||
#: src/guiMainMenu.cpp:538
|
||||
#: src/guiMainMenu.cpp:678
|
||||
msgid "Start Game / Connect"
|
||||
msgstr "启动游戏/连接"
|
||||
|
||||
#: src/guiMainMenu.cpp:570 src/guiMainMenu.cpp:1006
|
||||
#: src/guiMainMenu.cpp:716
|
||||
msgid "Public"
|
||||
msgstr "公共服务器"
|
||||
|
||||
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
|
||||
msgid "Delete world"
|
||||
msgstr "删除世界"
|
||||
|
||||
#: src/guiMainMenu.cpp:577
|
||||
#: src/guiMainMenu.cpp:735
|
||||
msgid "Create world"
|
||||
msgstr "创造世界"
|
||||
|
||||
#: src/guiMainMenu.cpp:611
|
||||
#, fuzzy
|
||||
#: src/guiMainMenu.cpp:773
|
||||
msgid "Fancy trees"
|
||||
msgstr "更好看的树"
|
||||
msgstr "更漂亮的树"
|
||||
|
||||
#: src/guiMainMenu.cpp:617
|
||||
#: src/guiMainMenu.cpp:781
|
||||
msgid "Smooth Lighting"
|
||||
msgstr "平滑光照"
|
||||
|
||||
#: src/guiMainMenu.cpp:623
|
||||
#: src/guiMainMenu.cpp:789
|
||||
msgid "3D Clouds"
|
||||
msgstr "3D云彩"
|
||||
|
||||
#: src/guiMainMenu.cpp:629
|
||||
#: src/guiMainMenu.cpp:797
|
||||
msgid "Opaque water"
|
||||
msgstr "不反光的水"
|
||||
msgstr "不透明的水"
|
||||
|
||||
#: src/guiMainMenu.cpp:639
|
||||
#: src/guiMainMenu.cpp:809
|
||||
msgid "Mip-Mapping"
|
||||
msgstr "贴图处理"
|
||||
|
||||
#: src/guiMainMenu.cpp:646
|
||||
#: src/guiMainMenu.cpp:818
|
||||
msgid "Anisotropic Filtering"
|
||||
msgstr "各向异性过滤"
|
||||
|
||||
#: src/guiMainMenu.cpp:653
|
||||
#: src/guiMainMenu.cpp:827
|
||||
msgid "Bi-Linear Filtering"
|
||||
msgstr "双线性过滤"
|
||||
|
||||
#: src/guiMainMenu.cpp:660
|
||||
#: src/guiMainMenu.cpp:836
|
||||
msgid "Tri-Linear Filtering"
|
||||
msgstr "三线性过滤"
|
||||
|
||||
#: src/guiMainMenu.cpp:668
|
||||
#: src/guiMainMenu.cpp:846
|
||||
msgid "Shaders"
|
||||
msgstr "着色器"
|
||||
|
||||
#: src/guiMainMenu.cpp:675
|
||||
#: src/guiMainMenu.cpp:855
|
||||
msgid "Preload item visuals"
|
||||
msgstr "预先加载物品图像"
|
||||
|
||||
#: src/guiMainMenu.cpp:682
|
||||
#: src/guiMainMenu.cpp:864
|
||||
msgid "Enable Particles"
|
||||
msgstr "启用粒子效果"
|
||||
|
||||
#: src/guiMainMenu.cpp:692
|
||||
#: src/guiMainMenu.cpp:873
|
||||
msgid "Finite liquid"
|
||||
msgstr "液体有限延伸"
|
||||
|
||||
#: src/guiMainMenu.cpp:885
|
||||
msgid "Change keys"
|
||||
msgstr "改变键位设置"
|
||||
|
||||
#: src/guiMainMenu.cpp:977
|
||||
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
|
||||
msgid "Address required."
|
||||
msgstr "需要地址。"
|
||||
|
||||
#: src/guiMainMenu.cpp:995
|
||||
#: src/guiMainMenu.cpp:1231
|
||||
msgid "Cannot delete world: Nothing selected"
|
||||
msgstr "无法删除世界:没有选择世界"
|
||||
|
||||
#: src/guiMainMenu.cpp:1010
|
||||
#: src/guiMainMenu.cpp:1246
|
||||
msgid "Files to be deleted"
|
||||
msgstr "将被删除的文件"
|
||||
|
||||
#: src/guiMainMenu.cpp:1026
|
||||
#: src/guiMainMenu.cpp:1267
|
||||
msgid "Cannot create world: No games found"
|
||||
msgstr "无法创造世界:未找到游戏模式"
|
||||
|
||||
#: src/guiMainMenu.cpp:1042
|
||||
#: src/guiMainMenu.cpp:1286
|
||||
msgid "Cannot configure world: Nothing selected"
|
||||
msgstr "无法配置世界:没有选择世界"
|
||||
|
||||
#: src/guiMainMenu.cpp:1146
|
||||
#: src/guiMainMenu.cpp:1428
|
||||
msgid "Failed to delete all world files"
|
||||
msgstr "无法删除所有该世界的文件"
|
||||
|
||||
@@ -367,64 +416,75 @@ msgstr "无法删除所有该世界的文件"
|
||||
msgid "Old Password"
|
||||
msgstr "旧密码"
|
||||
|
||||
#: src/guiPasswordChange.cpp:125
|
||||
#: src/guiPasswordChange.cpp:126
|
||||
msgid "New Password"
|
||||
msgstr "新密码"
|
||||
|
||||
#: src/guiPasswordChange.cpp:141
|
||||
#: src/guiPasswordChange.cpp:143
|
||||
msgid "Confirm Password"
|
||||
msgstr "确认密码"
|
||||
|
||||
#: src/guiPasswordChange.cpp:158
|
||||
#: src/guiPasswordChange.cpp:161
|
||||
msgid "Change"
|
||||
msgstr "更改"
|
||||
|
||||
#: src/guiPasswordChange.cpp:167
|
||||
#: src/guiPasswordChange.cpp:170
|
||||
msgid "Passwords do not match!"
|
||||
msgstr "密码不匹配!"
|
||||
|
||||
#: src/guiPauseMenu.cpp:118
|
||||
#: src/guiPauseMenu.cpp:122
|
||||
msgid "Continue"
|
||||
msgstr "继续"
|
||||
|
||||
#: src/guiPauseMenu.cpp:127
|
||||
#: src/guiPauseMenu.cpp:133
|
||||
msgid "Change Password"
|
||||
msgstr "更改密码"
|
||||
|
||||
#: src/guiPauseMenu.cpp:135
|
||||
#: src/guiPauseMenu.cpp:143
|
||||
msgid "Sound Volume"
|
||||
msgstr "音量"
|
||||
|
||||
#: src/guiPauseMenu.cpp:152
|
||||
msgid "Exit to Menu"
|
||||
msgstr "退出至菜单"
|
||||
|
||||
#: src/guiPauseMenu.cpp:142
|
||||
#: src/guiPauseMenu.cpp:161
|
||||
msgid "Exit to OS"
|
||||
msgstr "退出至操作系统"
|
||||
|
||||
#: src/guiPauseMenu.cpp:149
|
||||
#: src/guiPauseMenu.cpp:170
|
||||
msgid ""
|
||||
"Default Controls:\n"
|
||||
"- WASD: Walk\n"
|
||||
"- Mouse left: dig/hit\n"
|
||||
"- WASD: move\n"
|
||||
"- Space: jump/climb\n"
|
||||
"- Shift: sneak/go down\n"
|
||||
"- Q: drop item\n"
|
||||
"- I: inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- 0...9: select item\n"
|
||||
"- Shift: sneak\n"
|
||||
"- R: Toggle viewing all loaded chunks\n"
|
||||
"- I: Inventory menu\n"
|
||||
"- ESC: This menu\n"
|
||||
"- T: Chat\n"
|
||||
"- T: chat\n"
|
||||
msgstr ""
|
||||
"默认控制:\n"
|
||||
"W/A/S/D: 走\n"
|
||||
"空格: 跳\n"
|
||||
"鼠标左键: 挖方块/攻击\n"
|
||||
"鼠标右键: 放置/使用\n"
|
||||
"W/A/S/D: 移动\n"
|
||||
"空格: 跳/爬\n"
|
||||
"Shift: 潜行/向下\n"
|
||||
"Q: 丢物品\n"
|
||||
"I: 物品栏\n"
|
||||
"鼠标:转身/环顾\n"
|
||||
"鼠标左键: 挖\n"
|
||||
"鼠标右键: 放/使用\n"
|
||||
"鼠标滚轮: 选择物品\n"
|
||||
"0-9: 选择物品\n"
|
||||
"Shift: 潜行\n"
|
||||
"R:切换查看所有已载入区块\n"
|
||||
"I:物品栏\n"
|
||||
"ESC:菜单\n"
|
||||
"T:聊天\n"
|
||||
"T: 聊天\n"
|
||||
|
||||
#: src/guiVolumeChange.cpp:108
|
||||
msgid "Sound Volume: "
|
||||
msgstr "音量: "
|
||||
|
||||
#: src/guiVolumeChange.cpp:122
|
||||
msgid "Exit"
|
||||
msgstr "退出"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
msgid "Left Button"
|
||||
@@ -439,7 +499,6 @@ msgid "Right Button"
|
||||
msgstr "右键"
|
||||
|
||||
#: src/keycode.cpp:223
|
||||
#, fuzzy
|
||||
msgid "X Button 1"
|
||||
msgstr "X键1"
|
||||
|
||||
@@ -448,9 +507,8 @@ msgid "Back"
|
||||
msgstr "退格"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "清除"
|
||||
msgstr "Clear键"
|
||||
|
||||
#: src/keycode.cpp:224
|
||||
msgid "Return"
|
||||
@@ -473,7 +531,6 @@ msgid "Control"
|
||||
msgstr "Ctrl"
|
||||
|
||||
#: src/keycode.cpp:225
|
||||
#, fuzzy
|
||||
msgid "Kana"
|
||||
msgstr "假名"
|
||||
|
||||
@@ -498,22 +555,18 @@ msgid "Escape"
|
||||
msgstr "Escape键"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Final"
|
||||
msgstr "最终"
|
||||
msgstr "Final键"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Junja"
|
||||
msgstr "Junja"
|
||||
msgstr "Junja键"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Kanji"
|
||||
msgstr "汉字"
|
||||
msgstr "Kanji键"
|
||||
|
||||
#: src/keycode.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Nonconvert"
|
||||
msgstr "无变换"
|
||||
|
||||
@@ -538,9 +591,8 @@ msgid "Next"
|
||||
msgstr "下一个"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
#, fuzzy
|
||||
msgid "Prior"
|
||||
msgstr "前一个"
|
||||
msgstr "Prior键"
|
||||
|
||||
#: src/keycode.cpp:227
|
||||
msgid "Space"
|
||||
@@ -671,17 +723,14 @@ msgid "Left Control"
|
||||
msgstr "左Control键"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
#, fuzzy
|
||||
msgid "Left Menu"
|
||||
msgstr "左菜单"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
#, fuzzy
|
||||
msgid "Right Control"
|
||||
msgstr "右控制"
|
||||
msgstr "右Control键"
|
||||
|
||||
#: src/keycode.cpp:241
|
||||
#, fuzzy
|
||||
msgid "Right Menu"
|
||||
msgstr "右菜单"
|
||||
|
||||
@@ -702,68 +751,79 @@ msgid "Plus"
|
||||
msgstr "加号"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
#, fuzzy
|
||||
msgid "Attn"
|
||||
msgstr "注意"
|
||||
msgstr "Attn键"
|
||||
|
||||
#: src/keycode.cpp:247
|
||||
#, fuzzy
|
||||
msgid "CrSel"
|
||||
msgstr "CrSel"
|
||||
msgstr "CrSel键"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "Erase OEF"
|
||||
msgstr "Erase OEF"
|
||||
msgstr "Erase OEF键"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "ExSel"
|
||||
msgstr "不选"
|
||||
msgstr "ExSel键"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "OEM Clear"
|
||||
msgstr "默认设置"
|
||||
msgstr "OEM Clear键"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
#, fuzzy
|
||||
msgid "PA1"
|
||||
msgstr "PA1"
|
||||
msgstr "PA1键"
|
||||
|
||||
#: src/keycode.cpp:248
|
||||
msgid "Zoom"
|
||||
msgstr "缩放"
|
||||
|
||||
#: src/main.cpp:1384
|
||||
#: src/main.cpp:1680
|
||||
msgid "Main Menu"
|
||||
msgstr "主菜单"
|
||||
|
||||
#: src/main.cpp:1633
|
||||
#: src/main.cpp:2035
|
||||
msgid "Failed to initialize world"
|
||||
msgstr "无法初始化世界"
|
||||
|
||||
#: src/main.cpp:1645
|
||||
#: src/main.cpp:2048
|
||||
msgid "No world selected and no address provided. Nothing to do."
|
||||
msgstr "没有选择世界或提供地址。未执行操作。"
|
||||
|
||||
#: src/main.cpp:1653
|
||||
#: src/main.cpp:2056
|
||||
msgid "Could not find or load game \""
|
||||
msgstr "无法找到或载入游戏模式“"
|
||||
|
||||
#: src/main.cpp:1667
|
||||
#, fuzzy
|
||||
#: src/main.cpp:2070
|
||||
msgid "Invalid gamespec."
|
||||
msgstr "非法游戏模式规格。"
|
||||
|
||||
#: src/main.cpp:1707
|
||||
#: src/main.cpp:2111
|
||||
msgid "Connection error (timed out?)"
|
||||
msgstr "连接出错(超时?)"
|
||||
|
||||
#: src/main.cpp:1718
|
||||
msgid ""
|
||||
"\n"
|
||||
"Check debug.txt for details."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"查看 debug.txt 以获得详细信息。"
|
||||
#~ msgid ""
|
||||
#~ "Default Controls:\n"
|
||||
#~ "- WASD: Walk\n"
|
||||
#~ "- Mouse left: dig/hit\n"
|
||||
#~ "- Mouse right: place/use\n"
|
||||
#~ "- Mouse wheel: select item\n"
|
||||
#~ "- 0...9: select item\n"
|
||||
#~ "- Shift: sneak\n"
|
||||
#~ "- R: Toggle viewing all loaded chunks\n"
|
||||
#~ "- I: Inventory menu\n"
|
||||
#~ "- ESC: This menu\n"
|
||||
#~ "- T: Chat\n"
|
||||
#~ msgstr ""
|
||||
#~ "默认控制:\n"
|
||||
#~ "W/A/S/D: 走\n"
|
||||
#~ "空格: 跳\n"
|
||||
#~ "鼠标左键: 挖方块/攻击\n"
|
||||
#~ "鼠标右键: 放置/使用\n"
|
||||
#~ "鼠标滚轮: 选择物品\n"
|
||||
#~ "0-9: 选择物品\n"
|
||||
#~ "Shift: 潜行\n"
|
||||
#~ "R:切换查看所有已载入区块\n"
|
||||
#~ "I:物品栏\n"
|
||||
#~ "ESC:菜单\n"
|
||||
#~ "T:聊天\n"
|
||||
|
||||
@@ -161,7 +161,7 @@ else()
|
||||
endif(APPLE)
|
||||
endif(BUILD_CLIENT)
|
||||
find_package(ZLIB REQUIRED)
|
||||
set(PLATFORM_LIBS -lpthread ${CMAKE_DL_LIBS})
|
||||
set(PLATFORM_LIBS -lpthread -lrt ${CMAKE_DL_LIBS})
|
||||
#set(CLIENT_PLATFORM_LIBS -lXxf86vm)
|
||||
# This way Xxf86vm is found on OpenBSD too
|
||||
find_library(XXF86VM_LIBRARY Xxf86vm)
|
||||
@@ -172,6 +172,7 @@ endif()
|
||||
find_package(Jthread REQUIRED)
|
||||
find_package(Sqlite3 REQUIRED)
|
||||
find_package(Json REQUIRED)
|
||||
find_package(OpenGLES2)
|
||||
|
||||
if(USE_FREETYPE)
|
||||
find_package(Freetype REQUIRED)
|
||||
@@ -179,16 +180,35 @@ if(USE_FREETYPE)
|
||||
set(CGUITTFONT_LIBRARY cguittfont)
|
||||
endif(USE_FREETYPE)
|
||||
|
||||
# Do not use system-wide installation of Lua, because it'll likely be a
|
||||
# different version and/or has different build options.
|
||||
set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
|
||||
set(LUA_LIBRARY "lua")
|
||||
|
||||
find_library(LUA_LIBRARY luajit
|
||||
NAMES luajit-5.1)
|
||||
find_path(LUA_INCLUDE_DIR luajit.h
|
||||
NAMES luajit.h
|
||||
PATH_SUFFIXES luajit-2.0)
|
||||
message (STATUS "LuaJIT library: ${LUA_LIBRARY}")
|
||||
message (STATUS "LuaJIT headers: ${LUA_INCLUDE_DIR}")
|
||||
|
||||
if(LUA_LIBRARY AND LUA_INCLUDE_DIR)
|
||||
message (STATUS "LuaJIT found.")
|
||||
else(LUA_LIBRARY AND LUA_INCLUDE_DIR)
|
||||
message (STATUS "LuaJIT not found, using bundled Lua.")
|
||||
set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
|
||||
set(LUA_LIBRARY "lua")
|
||||
add_subdirectory(lua)
|
||||
endif(LUA_LIBRARY AND LUA_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(LUA_LIBRARY)
|
||||
mark_as_advanced(LUA_INCLUDE_DIR)
|
||||
|
||||
configure_file(
|
||||
"${PROJECT_SOURCE_DIR}/cmake_config.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake_config.h"
|
||||
)
|
||||
|
||||
add_subdirectory(script)
|
||||
add_subdirectory(util)
|
||||
|
||||
set(common_SRCS
|
||||
rollback_interface.cpp
|
||||
rollback.cpp
|
||||
@@ -205,14 +225,17 @@ set(common_SRCS
|
||||
itemdef.cpp
|
||||
nodedef.cpp
|
||||
object_properties.cpp
|
||||
scriptapi.cpp
|
||||
script.cpp
|
||||
log.cpp
|
||||
content_sao.cpp
|
||||
emerge.cpp
|
||||
mapgen.cpp
|
||||
mapgen_v6.cpp
|
||||
mapgen_v7.cpp
|
||||
mapgen_indev.cpp
|
||||
mapgen_singlenode.cpp
|
||||
treegen.cpp
|
||||
dungeongen.cpp
|
||||
cavegen.cpp
|
||||
content_nodemeta.cpp
|
||||
content_mapnode.cpp
|
||||
collision.cpp
|
||||
@@ -246,12 +269,9 @@ set(common_SRCS
|
||||
clientserver.cpp
|
||||
staticobject.cpp
|
||||
serverlist.cpp
|
||||
util/serialize.cpp
|
||||
util/directiontables.cpp
|
||||
util/numeric.cpp
|
||||
util/pointedthing.cpp
|
||||
util/string.cpp
|
||||
util/timetaker.cpp
|
||||
pathfinder.cpp
|
||||
${SCRIPT_SRCS}
|
||||
${UTIL_SRCS}
|
||||
)
|
||||
|
||||
# This gives us the icon
|
||||
@@ -291,6 +311,7 @@ set(minetest_SRCS
|
||||
particles.cpp
|
||||
clientobject.cpp
|
||||
chat.cpp
|
||||
hud.cpp
|
||||
guiMainMenu.cpp
|
||||
guiKeyChangeMenu.cpp
|
||||
guiMessageMenu.cpp
|
||||
@@ -327,6 +348,7 @@ set(minetestserver_SRCS
|
||||
|
||||
include_directories(
|
||||
${PROJECT_BINARY_DIR}
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${IRRLICHT_INCLUDE_DIR}
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${CMAKE_BUILD_TYPE}
|
||||
@@ -337,6 +359,7 @@ include_directories(
|
||||
${SQLITE3_INCLUDE_DIR}
|
||||
${LUA_INCLUDE_DIR}
|
||||
${JSON_INCLUDE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/script
|
||||
)
|
||||
|
||||
if(USE_FREETYPE)
|
||||
@@ -371,6 +394,7 @@ if(BUILD_CLIENT)
|
||||
${SQLITE3_LIBRARY}
|
||||
${LUA_LIBRARY}
|
||||
${JSON_LIBRARY}
|
||||
${OPENGLES2_LIBRARIES}
|
||||
${PLATFORM_LIBS}
|
||||
${CLIENT_PLATFORM_LIBS}
|
||||
)
|
||||
@@ -580,11 +604,6 @@ if (BUILD_CLIENT AND USE_FREETYPE)
|
||||
add_subdirectory(cguittfont)
|
||||
endif (BUILD_CLIENT AND USE_FREETYPE)
|
||||
|
||||
if (LUA_FOUND)
|
||||
else (LUA_FOUND)
|
||||
add_subdirectory(lua)
|
||||
endif (LUA_FOUND)
|
||||
|
||||
if (JSON_FOUND)
|
||||
else (JSON_FOUND)
|
||||
add_subdirectory(json)
|
||||
|
||||
@@ -61,7 +61,7 @@ class ActiveObject
|
||||
}
|
||||
|
||||
virtual u8 getType() const = 0;
|
||||
|
||||
virtual bool getCollisionBox(aabb3f *toset) = 0;
|
||||
protected:
|
||||
u16 m_id; // 0 is invalid, "no id"
|
||||
};
|
||||
|
||||
267
src/biome.cpp
267
src/biome.cpp
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr2@cs.scranton.edu>
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -23,68 +23,50 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "log.h"
|
||||
#include "main.h"
|
||||
|
||||
#define BT_NONE 0
|
||||
#define BT_OCEAN 1
|
||||
#define BT_LAKE 2
|
||||
#define BT_SBEACH 3
|
||||
#define BT_GBEACH 4
|
||||
#define BT_PLAINS 5
|
||||
#define BT_HILLS 6
|
||||
#define BT_EXTREMEHILLS 7
|
||||
#define BT_MOUNTAINS 8
|
||||
#define BT_DESERT 9
|
||||
#define BT_DESERTHILLS 10
|
||||
#define BT_HELL 11
|
||||
#define BT_AETHER 12
|
||||
|
||||
#define BT_BTMASK 0x3F
|
||||
|
||||
#define BTF_SNOW 0x40
|
||||
#define BTF_FOREST 0x80
|
||||
|
||||
#define BGFREQ_1 ( 0.40)
|
||||
#define BGFREQ_2 (BGFREQ_1 + 0.05)
|
||||
#define BGFREQ_3 (BGFREQ_2 + 0.08)
|
||||
#define BGFREQ_4 (BGFREQ_3 + 0.35)
|
||||
#define BGFREQ_5 (BGFREQ_4 + 0.18)
|
||||
//BGFREQ_5 is not checked as an upper bound; it ought to sum up to 1.00, but it's okay if it doesn't.
|
||||
NoiseParams nparams_biome_def_heat =
|
||||
{50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.70};
|
||||
NoiseParams nparams_biome_def_humidity =
|
||||
{50, 50, v3f(500.0, 500.0, 500.0), 842, 3, 0.55};
|
||||
|
||||
|
||||
/*float bg1_temps[] = {0.0};
|
||||
int bg1_biomes[] = {BT_OCEAN};
|
||||
BiomeDefManager::BiomeDefManager() {
|
||||
biome_registration_finished = false;
|
||||
np_heat = &nparams_biome_def_heat;
|
||||
np_humidity = &nparams_biome_def_humidity;
|
||||
|
||||
float bg2_temps[] = {10.0};
|
||||
int bg2_biomes[] = {BT_GBEACH, BT_SBEACH};
|
||||
// Create default biome to be used in case none exist
|
||||
Biome *b = new Biome;
|
||||
|
||||
b->id = 0;
|
||||
b->name = "Default";
|
||||
b->flags = 0;
|
||||
|
||||
float bg3_temps[] = {30.0, 40.0};
|
||||
int bg3_biomes[] = {BT_HILLS, BT_EXTREMEHILLS, BT_MOUNTAINS};
|
||||
b->c_top = CONTENT_AIR;
|
||||
b->top_depth = 0;
|
||||
b->c_filler = b->c_top;
|
||||
b->filler_height = MAP_GENERATION_LIMIT;
|
||||
|
||||
float bg4_temps[] = {25.0, 30.0, 35.0, 40.0};
|
||||
int bg4_biomes[] = {BT_HILLS, BT_EXTREMEHILLS, BT_MOUNTAINS, BT_DESERT, BT_DESERTHILLS};
|
||||
b->height_min = -MAP_GENERATION_LIMIT;
|
||||
b->height_max = MAP_GENERATION_LIMIT;
|
||||
b->heat_point = 0.0;
|
||||
b->humidity_point = 0.0;
|
||||
|
||||
float bg5_temps[] = {5.0, 40.0};
|
||||
int bg5_biomes[] = {BT_LAKE, BT_PLAINS, BT_DESERT};*/
|
||||
|
||||
NoiseParams np_default = {20.0, 15.0, v3f(250., 250., 250.), 82341, 5, 0.6};
|
||||
|
||||
|
||||
BiomeDefManager::BiomeDefManager(IGameDef *gamedef) {
|
||||
this->m_gamedef = gamedef;
|
||||
this->ndef = gamedef->ndef();
|
||||
|
||||
//the initial biome group
|
||||
bgroups.push_back(new std::vector<Biome *>);
|
||||
biomes.push_back(b);
|
||||
}
|
||||
|
||||
|
||||
BiomeDefManager::~BiomeDefManager() {
|
||||
for (unsigned int i = 0; i != bgroups.size(); i++)
|
||||
delete bgroups[i];
|
||||
//if (biomecache)
|
||||
// delete[] biomecache;
|
||||
|
||||
for (size_t i = 0; i != biomes.size(); i++)
|
||||
delete biomes[i];
|
||||
}
|
||||
|
||||
|
||||
Biome *BiomeDefManager::createBiome(BiomeTerrainType btt) {
|
||||
switch (btt) {
|
||||
/*switch (btt) {
|
||||
case BIOME_TERRAIN_NORMAL:
|
||||
return new Biome;
|
||||
case BIOME_TERRAIN_LIQUID:
|
||||
@@ -92,142 +74,97 @@ Biome *BiomeDefManager::createBiome(BiomeTerrainType btt) {
|
||||
case BIOME_TERRAIN_NETHER:
|
||||
return new BiomeHell;
|
||||
case BIOME_TERRAIN_AETHER:
|
||||
return new BiomeAether;
|
||||
return new BiomeSky;
|
||||
case BIOME_TERRAIN_FLAT:
|
||||
return new BiomeSuperflat;
|
||||
}
|
||||
return NULL;
|
||||
return NULL;*/
|
||||
return new Biome;
|
||||
}
|
||||
|
||||
|
||||
void BiomeDefManager::addBiomeGroup(float freq) {
|
||||
int size = bgroup_freqs.size();
|
||||
float newfreq = freq;
|
||||
// just a PoC, obviously needs optimization later on (precalculate this)
|
||||
void BiomeDefManager::calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map) {
|
||||
int i = 0;
|
||||
for (int y = 0; y != input->mapsize.Y; y++) {
|
||||
for (int x = 0; x != input->mapsize.X; x++, i++) {
|
||||
float heat = (input->heat_map[i] + 1) * 50;
|
||||
float humidity = (input->humidity_map[i] + 1) * 50;
|
||||
biomeid_map[i] = getBiome(heat, humidity, input->height_map[i])->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (size)
|
||||
newfreq += bgroup_freqs[size - 1];
|
||||
bgroup_freqs.push_back(newfreq);
|
||||
bgroups.push_back(new std::vector<Biome *>);
|
||||
|
||||
verbosestream << "BiomeDefManager: added biome group with frequency " <<
|
||||
newfreq << std::endl;
|
||||
void BiomeDefManager::resolveNodeNames(INodeDefManager *ndef) {
|
||||
Biome *b;
|
||||
|
||||
biome_registration_finished = true;
|
||||
|
||||
for (size_t i = 0; i != biomes.size(); i++) {
|
||||
b = biomes[i];
|
||||
|
||||
if (b->c_top == CONTENT_IGNORE) {
|
||||
b->c_top = ndef->getId(b->top_nodename);
|
||||
if (b->c_top == CONTENT_IGNORE) {
|
||||
errorstream << "BiomeDefManager::resolveNodeNames: node '"
|
||||
<< b->top_nodename << "' not defined" << std::endl;
|
||||
b->c_top = CONTENT_AIR;
|
||||
b->top_depth = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (b->c_filler == CONTENT_IGNORE) {
|
||||
b->c_filler = ndef->getId(b->filler_nodename);
|
||||
if (b->c_filler == CONTENT_IGNORE) {
|
||||
errorstream << "BiomeDefManager::resolveNodeNames: node '"
|
||||
<< b->filler_nodename << "' not defined" << std::endl;
|
||||
b->c_filler = CONTENT_AIR;
|
||||
b->filler_height = MAP_GENERATION_LIMIT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BiomeDefManager::addBiome(Biome *b) {
|
||||
std::vector<Biome *> *bgroup;
|
||||
|
||||
if ((unsigned int)b->groupid >= bgroups.size()) {
|
||||
errorstream << "BiomeDefManager: attempted to add biome '" << b->name
|
||||
<< "' to nonexistent biome group " << b->groupid << std::endl;
|
||||
if (biome_registration_finished) {
|
||||
errorstream << "BIomeDefManager: biome registration already finished, dropping " << b->name <<std::endl;
|
||||
delete b;
|
||||
return;
|
||||
}
|
||||
|
||||
size_t nbiomes = biomes.size();
|
||||
if (nbiomes >= 0xFF) {
|
||||
errorstream << "BiomeDefManager: too many biomes, dropping " << b->name << std::endl;
|
||||
delete b;
|
||||
return;
|
||||
}
|
||||
|
||||
bgroup = bgroups[b->groupid];
|
||||
bgroup->push_back(b);
|
||||
|
||||
verbosestream << "BiomeDefManager: added biome '" << b->name <<
|
||||
"' to biome group " << (int)b->groupid << std::endl;
|
||||
b->id = (u8)nbiomes;
|
||||
biomes.push_back(b);
|
||||
verbosestream << "BiomeDefManager: added biome " << b->name << std::endl;
|
||||
}
|
||||
|
||||
|
||||
void BiomeDefManager::addDefaultBiomes() {
|
||||
Biome *b;
|
||||
Biome *BiomeDefManager::getBiome(float heat, float humidity, s16 y) {
|
||||
Biome *b, *biome_closest = NULL;
|
||||
float dist_min = FLT_MAX;
|
||||
|
||||
b = new Biome;
|
||||
b->name = "Default";
|
||||
b->n_top = MapNode(ndef->getId("mapgen_stone"));
|
||||
b->n_filler = b->n_top;
|
||||
b->ntopnodes = 0;
|
||||
b->height_min = -MAP_GENERATION_LIMIT;
|
||||
b->height_max = MAP_GENERATION_LIMIT;
|
||||
b->heat_min = FLT_MIN;
|
||||
b->heat_max = FLT_MAX;
|
||||
b->humidity_min = FLT_MIN;
|
||||
b->humidity_max = FLT_MAX;
|
||||
b->np = &np_default;
|
||||
biome_default = b;
|
||||
}
|
||||
for (size_t i = 1; i < biomes.size(); i++) {
|
||||
b = biomes[i];
|
||||
if (y > b->height_max || y < b->height_min)
|
||||
continue;
|
||||
|
||||
|
||||
Biome *BiomeDefManager::getBiome(float bgfreq, float heat, float humidity) {
|
||||
std::vector<Biome *> *bgroup;
|
||||
Biome *b;
|
||||
int i;
|
||||
|
||||
int ngroups = bgroup_freqs.size();
|
||||
if (!ngroups)
|
||||
return biome_default;
|
||||
for (i = 0; (i != ngroups) && (bgfreq > bgroup_freqs[i]); i++);
|
||||
bgroup = bgroups[i];
|
||||
|
||||
int nbiomes = bgroup->size();
|
||||
for (i = 0; i != nbiomes; i++) {
|
||||
b = bgroup->operator[](i);
|
||||
if (heat >= b->heat_min && heat <= b->heat_max &&
|
||||
humidity >= b->humidity_min && humidity <= b->humidity_max)
|
||||
return b;
|
||||
float d_heat = heat - b->heat_point;
|
||||
float d_humidity = humidity - b->humidity_point;
|
||||
float dist = (d_heat * d_heat) +
|
||||
(d_humidity * d_humidity);
|
||||
if (dist < dist_min) {
|
||||
dist_min = dist;
|
||||
biome_closest = b;
|
||||
}
|
||||
}
|
||||
|
||||
return biome_default;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////// [ Generic biome ] ////////////////////////////////
|
||||
|
||||
|
||||
int Biome::getSurfaceHeight(float noise_terrain) {
|
||||
return np->offset + np->scale * noise_terrain;
|
||||
}
|
||||
|
||||
|
||||
void Biome::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////// [ Ocean biome ] /////////////////////////////////
|
||||
|
||||
|
||||
void BiomeLiquid::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////// [ Nether biome ] /////////////////////////////////
|
||||
|
||||
|
||||
int BiomeHell::getSurfaceHeight(float noise_terrain) {
|
||||
return np->offset + np->scale * noise_terrain;
|
||||
}
|
||||
|
||||
|
||||
void BiomeHell::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////// [ Aether biome ] ////////////////////////////////
|
||||
|
||||
|
||||
int BiomeAether::getSurfaceHeight(float noise_terrain) {
|
||||
return np->offset + np->scale * noise_terrain;
|
||||
}
|
||||
|
||||
|
||||
void BiomeAether::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////// [ Superflat biome ] ///////////////////////////////
|
||||
|
||||
|
||||
int BiomeSuperflat::getSurfaceHeight(float noise_terrain) {
|
||||
return ntopnodes;
|
||||
}
|
||||
|
||||
|
||||
void BiomeSuperflat::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
|
||||
|
||||
|
||||
return biome_closest ? biome_closest : biomes[0];
|
||||
}
|
||||
|
||||
77
src/biome.h
77
src/biome.h
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr2@cs.scranton.edu>
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "noise.h"
|
||||
#include "mapgen.h"
|
||||
|
||||
|
||||
enum BiomeTerrainType
|
||||
{
|
||||
BIOME_TERRAIN_NORMAL,
|
||||
@@ -37,62 +36,54 @@ enum BiomeTerrainType
|
||||
BIOME_TERRAIN_FLAT
|
||||
};
|
||||
|
||||
extern NoiseParams nparams_biome_def_heat;
|
||||
extern NoiseParams nparams_biome_def_humidity;
|
||||
|
||||
class Biome {
|
||||
public:
|
||||
MapNode n_top;
|
||||
MapNode n_filler;
|
||||
s16 ntopnodes;
|
||||
s8 groupid;
|
||||
s8 flags;
|
||||
u8 id;
|
||||
std::string name;
|
||||
u32 flags;
|
||||
|
||||
std::string top_nodename;
|
||||
std::string filler_nodename;
|
||||
|
||||
content_t c_top;
|
||||
s16 top_depth;
|
||||
|
||||
content_t c_filler;
|
||||
s16 filler_height;
|
||||
|
||||
s16 height_min;
|
||||
s16 height_max;
|
||||
float heat_min;
|
||||
float heat_max;
|
||||
float humidity_min;
|
||||
float humidity_max;
|
||||
std::string name;
|
||||
NoiseParams *np;
|
||||
|
||||
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
||||
virtual int getSurfaceHeight(float noise_terrain);
|
||||
float heat_point;
|
||||
float humidity_point;
|
||||
};
|
||||
|
||||
class BiomeLiquid : public Biome {
|
||||
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
||||
};
|
||||
|
||||
class BiomeHell : public Biome {
|
||||
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
||||
virtual int getSurfaceHeight(float noise_terrain);
|
||||
};
|
||||
|
||||
class BiomeAether : public Biome {
|
||||
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
||||
virtual int getSurfaceHeight(float noise_terrain);
|
||||
};
|
||||
|
||||
class BiomeSuperflat : public Biome {
|
||||
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
||||
virtual int getSurfaceHeight(float noise_terrain);
|
||||
struct BiomeNoiseInput {
|
||||
v2s16 mapsize;
|
||||
float *heat_map;
|
||||
float *humidity_map;
|
||||
s16 *height_map;
|
||||
};
|
||||
|
||||
class BiomeDefManager {
|
||||
public:
|
||||
std::vector<float> bgroup_freqs;
|
||||
std::vector<std::vector<Biome *> *> bgroups;
|
||||
Biome *biome_default;
|
||||
IGameDef *m_gamedef;
|
||||
INodeDefManager *ndef;
|
||||
std::vector<Biome *> biomes;
|
||||
|
||||
BiomeDefManager(IGameDef *gamedef);
|
||||
bool biome_registration_finished;
|
||||
NoiseParams *np_heat;
|
||||
NoiseParams *np_humidity;
|
||||
|
||||
BiomeDefManager();
|
||||
~BiomeDefManager();
|
||||
|
||||
|
||||
Biome *createBiome(BiomeTerrainType btt);
|
||||
Biome *getBiome(float bgfreq, float heat, float humidity);
|
||||
void calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map);
|
||||
Biome *getBiome(float heat, float humidity, s16 y);
|
||||
|
||||
void addBiomeGroup(float freq);
|
||||
void addBiome(Biome *b);
|
||||
void addDefaultBiomes();
|
||||
void resolveNodeNames(INodeDefManager *ndef);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
105
src/camera.cpp
105
src/camera.cpp
@@ -67,9 +67,16 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
|
||||
m_view_bobbing_anim(0),
|
||||
m_view_bobbing_state(0),
|
||||
m_view_bobbing_speed(0),
|
||||
m_view_bobbing_fall(0),
|
||||
|
||||
m_digging_anim(0),
|
||||
m_digging_button(-1)
|
||||
m_digging_button(-1),
|
||||
m_dummymesh(createCubeMesh(v3f(1,1,1))),
|
||||
|
||||
m_wield_change_timer(0.125),
|
||||
m_wield_mesh_next(NULL),
|
||||
m_previous_playeritem(-1),
|
||||
m_previous_itemname("")
|
||||
{
|
||||
//dstream<<__FUNCTION_NAME<<std::endl;
|
||||
|
||||
@@ -84,13 +91,14 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
|
||||
// all other 3D scene nodes and before the GUI.
|
||||
m_wieldmgr = smgr->createNewSceneManager();
|
||||
m_wieldmgr->addCameraSceneNode();
|
||||
m_wieldnode = m_wieldmgr->addMeshSceneNode(createCubeMesh(v3f(1,1,1)), NULL); // need a dummy mesh
|
||||
m_wieldnode = m_wieldmgr->addMeshSceneNode(m_dummymesh, NULL); // need a dummy mesh
|
||||
}
|
||||
|
||||
Camera::~Camera()
|
||||
{
|
||||
m_wieldnode->setMesh(NULL);
|
||||
m_wieldmgr->drop();
|
||||
|
||||
delete m_dummymesh;
|
||||
}
|
||||
|
||||
bool Camera::successfullyCreated(std::wstring& error_message)
|
||||
@@ -132,6 +140,29 @@ inline f32 my_modf(f32 x)
|
||||
|
||||
void Camera::step(f32 dtime)
|
||||
{
|
||||
if(m_view_bobbing_fall > 0)
|
||||
{
|
||||
m_view_bobbing_fall -= 3 * dtime;
|
||||
if(m_view_bobbing_fall <= 0)
|
||||
m_view_bobbing_fall = -1; // Mark the effect as finished
|
||||
}
|
||||
|
||||
bool was_under_zero = m_wield_change_timer < 0;
|
||||
if(m_wield_change_timer < 0.125)
|
||||
m_wield_change_timer += dtime;
|
||||
if(m_wield_change_timer > 0.125)
|
||||
m_wield_change_timer = 0.125;
|
||||
|
||||
if(m_wield_change_timer >= 0 && was_under_zero) {
|
||||
if(m_wield_mesh_next) {
|
||||
m_wieldnode->setMesh(m_wield_mesh_next);
|
||||
m_wieldnode->setVisible(true);
|
||||
} else {
|
||||
m_wieldnode->setVisible(false);
|
||||
}
|
||||
m_wield_mesh_next = NULL;
|
||||
}
|
||||
|
||||
if (m_view_bobbing_state != 0)
|
||||
{
|
||||
//f32 offset = dtime * m_view_bobbing_speed * 0.035;
|
||||
@@ -218,6 +249,8 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
|
||||
// Smooth the movement when walking up stairs
|
||||
v3f old_player_position = m_playernode->getPosition();
|
||||
v3f player_position = player->getPosition();
|
||||
if (player->isAttached && player->parent)
|
||||
player_position = player->parent->getPosition();
|
||||
//if(player->touching_ground && player_position.Y > old_player_position.Y)
|
||||
if(player->touching_ground &&
|
||||
player_position.Y > old_player_position.Y)
|
||||
@@ -233,11 +266,30 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
|
||||
m_playernode->setRotation(v3f(0, -1 * player->getYaw(), 0));
|
||||
m_playernode->updateAbsolutePosition();
|
||||
|
||||
//Get camera tilt timer (hurt animation)
|
||||
// Get camera tilt timer (hurt animation)
|
||||
float cameratilt = fabs(fabs(player->hurt_tilt_timer-0.75)-0.75);
|
||||
|
||||
// Fall bobbing animation
|
||||
float fall_bobbing = 0;
|
||||
if(player->camera_impact >= 1)
|
||||
{
|
||||
if(m_view_bobbing_fall == -1) // Effect took place and has finished
|
||||
player->camera_impact = m_view_bobbing_fall = 0;
|
||||
else if(m_view_bobbing_fall == 0) // Initialize effect
|
||||
m_view_bobbing_fall = 1;
|
||||
|
||||
// Convert 0 -> 1 to 0 -> 1 -> 0
|
||||
fall_bobbing = m_view_bobbing_fall < 0.5 ? m_view_bobbing_fall * 2 : -(m_view_bobbing_fall - 0.5) * 2 + 1;
|
||||
// Smoothen and invert the above
|
||||
fall_bobbing = sin(fall_bobbing * 0.5 * M_PI) * -1;
|
||||
// Amplify according to the intensity of the impact
|
||||
fall_bobbing *= (1 - rangelim(50 / player->camera_impact, 0, 1)) * 5;
|
||||
|
||||
fall_bobbing *= g_settings->getFloat("fall_bobbing_amount");
|
||||
}
|
||||
|
||||
// Set head node transformation
|
||||
m_headnode->setPosition(player->getEyeOffset()+v3f(0,cameratilt*-player->hurt_tilt_strength,0));
|
||||
m_headnode->setPosition(player->getEyeOffset()+v3f(0,cameratilt*-player->hurt_tilt_strength+fall_bobbing,0));
|
||||
m_headnode->setRotation(v3f(player->getPitch(), 0, cameratilt*player->hurt_tilt_strength));
|
||||
m_headnode->updateAbsolutePosition();
|
||||
|
||||
@@ -311,8 +363,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
|
||||
m_fov_y = fov_degrees * M_PI / 180.0;
|
||||
// Increase vertical FOV on lower aspect ratios (<16:10)
|
||||
m_fov_y *= MYMAX(1.0, MYMIN(1.4, sqrt(16./10. / m_aspect)));
|
||||
// WTF is this? It can't be right
|
||||
m_fov_x = 2 * atan(0.5 * m_aspect * tan(m_fov_y));
|
||||
m_fov_x = 2 * atan(m_aspect * tan(0.5 * m_fov_y));
|
||||
m_cameranode->setAspectRatio(m_aspect);
|
||||
m_cameranode->setFOV(m_fov_y);
|
||||
|
||||
@@ -321,6 +372,10 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
|
||||
v3f wield_position = v3f(55, -35, 65);
|
||||
//v3f wield_rotation = v3f(-100, 120, -100);
|
||||
v3f wield_rotation = v3f(-100, 120, -100);
|
||||
if(m_wield_change_timer < 0)
|
||||
wield_position.Y -= 40 + m_wield_change_timer*320;
|
||||
else
|
||||
wield_position.Y -= 40 - m_wield_change_timer*320;
|
||||
if(m_digging_anim < 0.05 || m_digging_anim > 0.5){
|
||||
f32 frac = 1.0;
|
||||
if(m_digging_anim > 0.5)
|
||||
@@ -529,18 +584,34 @@ void Camera::setDigging(s32 button)
|
||||
m_digging_button = button;
|
||||
}
|
||||
|
||||
void Camera::wield(const ItemStack &item)
|
||||
void Camera::wield(const ItemStack &item, u16 playeritem)
|
||||
{
|
||||
IItemDefManager *idef = m_gamedef->idef();
|
||||
scene::IMesh *wield_mesh = idef->getWieldMesh(item.getDefinition(idef).name, m_gamedef);
|
||||
if(wield_mesh)
|
||||
{
|
||||
m_wieldnode->setMesh(wield_mesh);
|
||||
m_wieldnode->setVisible(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_wieldnode->setVisible(false);
|
||||
std::string itemname = item.getDefinition(idef).name;
|
||||
m_wield_mesh_next = idef->getWieldMesh(itemname, m_gamedef);
|
||||
if(playeritem != m_previous_playeritem &&
|
||||
!(m_previous_itemname == "" && itemname == "")) {
|
||||
m_previous_playeritem = playeritem;
|
||||
m_previous_itemname = itemname;
|
||||
if(m_wield_change_timer >= 0.125)
|
||||
m_wield_change_timer = -0.125;
|
||||
else if(m_wield_change_timer > 0) {
|
||||
m_wield_change_timer = -m_wield_change_timer;
|
||||
}
|
||||
} else {
|
||||
if(m_wield_mesh_next) {
|
||||
m_wieldnode->setMesh(m_wield_mesh_next);
|
||||
m_wieldnode->setVisible(true);
|
||||
} else {
|
||||
m_wieldnode->setVisible(false);
|
||||
}
|
||||
m_wield_mesh_next = NULL;
|
||||
if(m_previous_itemname != itemname) {
|
||||
m_previous_itemname = itemname;
|
||||
m_wield_change_timer = 0;
|
||||
}
|
||||
else
|
||||
m_wield_change_timer = 0.125;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
13
src/camera.h
13
src/camera.h
@@ -117,7 +117,7 @@ class Camera
|
||||
void setDigging(s32 button);
|
||||
|
||||
// Replace the wielded item mesh
|
||||
void wield(const ItemStack &item);
|
||||
void wield(const ItemStack &item, u16 playeritem);
|
||||
|
||||
// Draw the wielded tool.
|
||||
// This has to happen *after* the main scene is drawn.
|
||||
@@ -166,6 +166,8 @@ class Camera
|
||||
s32 m_view_bobbing_state;
|
||||
// Speed of view bobbing animation
|
||||
f32 m_view_bobbing_speed;
|
||||
// Fall view bobbing
|
||||
f32 m_view_bobbing_fall;
|
||||
|
||||
// Digging animation frame (0 <= m_digging_anim < 1)
|
||||
f32 m_digging_anim;
|
||||
@@ -173,6 +175,15 @@ class Camera
|
||||
// If 0, left-click digging animation
|
||||
// If 1, right-click digging animation
|
||||
s32 m_digging_button;
|
||||
|
||||
//dummymesh for camera
|
||||
irr::scene::IAnimatedMesh* m_dummymesh;
|
||||
|
||||
// Animation when changing wielded item
|
||||
f32 m_wield_change_timer;
|
||||
scene::IMesh *m_wield_mesh_next;
|
||||
u16 m_previous_playeritem;
|
||||
std::string m_previous_itemname;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
533
src/cavegen.cpp
Normal file
533
src/cavegen.cpp
Normal file
@@ -0,0 +1,533 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include "util/numeric.h"
|
||||
#include "map.h"
|
||||
#include "mapgen.h"
|
||||
#include "mapgen_v6.h"
|
||||
#include "mapgen_v7.h"
|
||||
#include "cavegen.h"
|
||||
|
||||
|
||||
CaveV6::CaveV6(MapgenV6 *mg, PseudoRandom *ps, PseudoRandom *ps2, bool is_large_cave) {
|
||||
this->mg = mg;
|
||||
this->vm = mg->vm;
|
||||
this->ndef = mg->ndef;
|
||||
this->water_level = mg->water_level;
|
||||
this->large_cave = is_large_cave;
|
||||
this->ps = ps;
|
||||
this->ps2 = ps2;
|
||||
this->c_water_source = mg->c_water_source;
|
||||
this->c_lava_source = mg->c_lava_source;
|
||||
|
||||
min_tunnel_diameter = 2;
|
||||
max_tunnel_diameter = ps->range(2, 6);
|
||||
dswitchint = ps->range(1, 14);
|
||||
flooded = true;
|
||||
|
||||
if (large_cave) {
|
||||
part_max_length_rs = ps->range(2,4);
|
||||
tunnel_routepoints = ps->range(5, ps->range(15,30));
|
||||
min_tunnel_diameter = 5;
|
||||
max_tunnel_diameter = ps->range(7, ps->range(8,24));
|
||||
} else {
|
||||
part_max_length_rs = ps->range(2,9);
|
||||
tunnel_routepoints = ps->range(10, ps->range(15,30));
|
||||
}
|
||||
|
||||
large_cave_is_flat = (ps->range(0,1) == 0);
|
||||
}
|
||||
|
||||
|
||||
void CaveV6::makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height) {
|
||||
node_min = nmin;
|
||||
node_max = nmax;
|
||||
max_stone_y = max_stone_height;
|
||||
main_direction = v3f(0, 0, 0);
|
||||
|
||||
// Allowed route area size in nodes
|
||||
ar = node_max - node_min + v3s16(1, 1, 1);
|
||||
// Area starting point in nodes
|
||||
of = node_min;
|
||||
|
||||
// Allow a bit more
|
||||
//(this should be more than the maximum radius of the tunnel)
|
||||
const s16 max_spread_amount = MAP_BLOCKSIZE;
|
||||
s16 insure = 10;
|
||||
s16 more = max_spread_amount - max_tunnel_diameter / 2 - insure;
|
||||
ar += v3s16(1,0,1) * more * 2;
|
||||
of -= v3s16(1,0,1) * more;
|
||||
|
||||
route_y_min = 0;
|
||||
// Allow half a diameter + 7 over stone surface
|
||||
route_y_max = -of.Y + max_stone_y + max_tunnel_diameter / 2 + 7;
|
||||
|
||||
// Limit maximum to area
|
||||
route_y_max = rangelim(route_y_max, 0, ar.Y - 1);
|
||||
|
||||
if (large_cave) {
|
||||
s16 min = 0;
|
||||
if (node_min.Y < water_level && node_max.Y > water_level) {
|
||||
min = water_level - max_tunnel_diameter/3 - of.Y;
|
||||
route_y_max = water_level + max_tunnel_diameter/3 - of.Y;
|
||||
}
|
||||
route_y_min = ps->range(min, min + max_tunnel_diameter);
|
||||
route_y_min = rangelim(route_y_min, 0, route_y_max);
|
||||
}
|
||||
|
||||
s16 route_start_y_min = route_y_min;
|
||||
s16 route_start_y_max = route_y_max;
|
||||
|
||||
route_start_y_min = rangelim(route_start_y_min, 0, ar.Y-1);
|
||||
route_start_y_max = rangelim(route_start_y_max, route_start_y_min, ar.Y-1);
|
||||
|
||||
// Randomize starting position
|
||||
orp = v3f(
|
||||
(float)(ps->next() % ar.X) + 0.5,
|
||||
(float)(ps->range(route_start_y_min, route_start_y_max)) + 0.5,
|
||||
(float)(ps->next() % ar.Z) + 0.5
|
||||
);
|
||||
|
||||
// Generate some tunnel starting from orp
|
||||
for (u16 j = 0; j < tunnel_routepoints; j++)
|
||||
makeTunnel(j % dswitchint == 0);
|
||||
}
|
||||
|
||||
|
||||
void CaveV6::makeTunnel(bool dirswitch) {
|
||||
if (dirswitch && !large_cave) {
|
||||
main_direction = v3f(
|
||||
((float)(ps->next() % 20) - (float)10) / 10,
|
||||
((float)(ps->next() % 20) - (float)10) / 30,
|
||||
((float)(ps->next() % 20) - (float)10) / 10
|
||||
);
|
||||
main_direction *= (float)ps->range(0, 10) / 10;
|
||||
}
|
||||
|
||||
// Randomize size
|
||||
s16 min_d = min_tunnel_diameter;
|
||||
s16 max_d = max_tunnel_diameter;
|
||||
rs = ps->range(min_d, max_d);
|
||||
|
||||
v3s16 maxlen;
|
||||
if (large_cave) {
|
||||
maxlen = v3s16(
|
||||
rs * part_max_length_rs,
|
||||
rs * part_max_length_rs / 2,
|
||||
rs * part_max_length_rs
|
||||
);
|
||||
} else {
|
||||
maxlen = v3s16(
|
||||
rs * part_max_length_rs,
|
||||
ps->range(1, rs * part_max_length_rs),
|
||||
rs * part_max_length_rs
|
||||
);
|
||||
}
|
||||
|
||||
v3f vec(
|
||||
(float)(ps->next() % (maxlen.X * 1)) - (float)maxlen.X / 2,
|
||||
(float)(ps->next() % (maxlen.Y * 1)) - (float)maxlen.Y / 2,
|
||||
(float)(ps->next() % (maxlen.Z * 1)) - (float)maxlen.Z / 2
|
||||
);
|
||||
|
||||
// Jump downward sometimes
|
||||
if (!large_cave && ps->range(0, 12) == 0) {
|
||||
vec = v3f(
|
||||
(float)(ps->next() % (maxlen.X * 1)) - (float)maxlen.X / 2,
|
||||
(float)(ps->next() % (maxlen.Y * 2)) - (float)maxlen.Y,
|
||||
(float)(ps->next() % (maxlen.Z * 1)) - (float)maxlen.Z / 2
|
||||
);
|
||||
}
|
||||
|
||||
vec += main_direction;
|
||||
|
||||
v3f rp = orp + vec;
|
||||
if (rp.X < 0)
|
||||
rp.X = 0;
|
||||
else if (rp.X >= ar.X)
|
||||
rp.X = ar.X - 1;
|
||||
|
||||
if (rp.Y < route_y_min)
|
||||
rp.Y = route_y_min;
|
||||
else if (rp.Y >= route_y_max)
|
||||
rp.Y = route_y_max - 1;
|
||||
|
||||
if (rp.Z < 0)
|
||||
rp.Z = 0;
|
||||
else if (rp.Z >= ar.Z)
|
||||
rp.Z = ar.Z - 1;
|
||||
|
||||
vec = rp - orp;
|
||||
|
||||
float veclen = vec.getLength();
|
||||
// As odd as it sounds, veclen is *exactly* 0.0 sometimes, causing a FPE
|
||||
if (veclen < 0.05)
|
||||
veclen = 1.0;
|
||||
|
||||
// Every second section is rough
|
||||
bool randomize_xz = (ps2->range(1, 2) == 1);
|
||||
|
||||
// Carve routes
|
||||
for (float f = 0; f < 1.0; f += 1.0 / veclen)
|
||||
carveRoute(vec, f, randomize_xz);
|
||||
|
||||
orp = rp;
|
||||
}
|
||||
|
||||
|
||||
void CaveV6::carveRoute(v3f vec, float f, bool randomize_xz) {
|
||||
MapNode airnode(CONTENT_AIR);
|
||||
MapNode waternode(c_water_source);
|
||||
MapNode lavanode(c_lava_source);
|
||||
|
||||
v3s16 startp(orp.X, orp.Y, orp.Z);
|
||||
startp += of;
|
||||
|
||||
v3f fp = orp + vec * f;
|
||||
fp.X += 0.1 * ps->range(-10, 10);
|
||||
fp.Z += 0.1 * ps->range(-10, 10);
|
||||
v3s16 cp(fp.X, fp.Y, fp.Z);
|
||||
|
||||
s16 d0 = -rs/2;
|
||||
s16 d1 = d0 + rs;
|
||||
if (randomize_xz) {
|
||||
d0 += ps->range(-1, 1);
|
||||
d1 += ps->range(-1, 1);
|
||||
}
|
||||
|
||||
for (s16 z0 = d0; z0 <= d1; z0++) {
|
||||
s16 si = rs / 2 - MYMAX(0, abs(z0) - rs / 7 - 1);
|
||||
for (s16 x0 = -si - ps->range(0,1); x0 <= si - 1 + ps->range(0,1); x0++) {
|
||||
s16 maxabsxz = MYMAX(abs(x0), abs(z0));
|
||||
s16 si2 = rs / 2 - MYMAX(0, maxabsxz - rs / 7 - 1);
|
||||
for (s16 y0 = -si2; y0 <= si2; y0++) {
|
||||
if (large_cave_is_flat) {
|
||||
// Make large caves not so tall
|
||||
if (rs > 7 && abs(y0) >= rs / 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0);
|
||||
p += of;
|
||||
|
||||
if (vm->m_area.contains(p) == false)
|
||||
continue;
|
||||
|
||||
u32 i = vm->m_area.index(p);
|
||||
|
||||
if (large_cave) {
|
||||
int full_ymin = node_min.Y - MAP_BLOCKSIZE;
|
||||
int full_ymax = node_max.Y + MAP_BLOCKSIZE;
|
||||
|
||||
if (flooded && full_ymin < water_level && full_ymax > water_level) {
|
||||
vm->m_data[i] = (p.Y <= water_level) ? waternode : airnode;
|
||||
} else if (flooded && full_ymax < water_level) {
|
||||
vm->m_data[i] = (p.Y < startp.Y - 2) ? lavanode : airnode;
|
||||
} else {
|
||||
vm->m_data[i] = airnode;
|
||||
}
|
||||
} else {
|
||||
// Don't replace air or water or lava or ignore
|
||||
content_t c = vm->m_data[i].getContent();
|
||||
if (c == CONTENT_IGNORE || c == CONTENT_AIR ||
|
||||
c == c_water_source || c == c_lava_source)
|
||||
continue;
|
||||
|
||||
vm->m_data[i] = airnode;
|
||||
vm->m_flags[i] |= VMANIP_FLAG_CAVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////// Caves V7
|
||||
|
||||
CaveV7::CaveV7(MapgenV7 *mg, PseudoRandom *ps, bool is_large_cave) {
|
||||
this->mg = mg;
|
||||
this->vm = mg->vm;
|
||||
this->ndef = mg->ndef;
|
||||
this->water_level = mg->water_level;
|
||||
this->large_cave = is_large_cave;
|
||||
this->ps = ps;
|
||||
this->c_water_source = mg->c_water_source;
|
||||
this->c_lava_source = mg->c_lava_source;
|
||||
|
||||
dswitchint = ps->range(1, 14);
|
||||
flooded = ps->range(1, 2) == 2;
|
||||
|
||||
if (large_cave) {
|
||||
part_max_length_rs = ps->range(2, 4);
|
||||
tunnel_routepoints = ps->range(5, ps->range(15, 30));
|
||||
min_tunnel_diameter = 5;
|
||||
max_tunnel_diameter = ps->range(7, ps->range(8, 24));
|
||||
} else {
|
||||
part_max_length_rs = ps->range(2, 9);
|
||||
tunnel_routepoints = ps->range(10, ps->range(15, 30));
|
||||
min_tunnel_diameter = 2;
|
||||
max_tunnel_diameter = ps->range(2, 6);
|
||||
}
|
||||
|
||||
large_cave_is_flat = (ps->range(0, 1) == 0);
|
||||
}
|
||||
|
||||
|
||||
void CaveV7::makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height) {
|
||||
node_min = nmin;
|
||||
node_max = nmax;
|
||||
max_stone_y = max_stone_height;
|
||||
main_direction = v3f(0, 0, 0);
|
||||
|
||||
// Allowed route area size in nodes
|
||||
ar = node_max - node_min + v3s16(1, 1, 1);
|
||||
// Area starting point in nodes
|
||||
of = node_min;
|
||||
|
||||
// Allow a bit more
|
||||
//(this should be more than the maximum radius of the tunnel)
|
||||
s16 insure = 10;
|
||||
s16 more = MAP_BLOCKSIZE - max_tunnel_diameter / 2 - insure;
|
||||
ar += v3s16(1,0,1) * more * 2;
|
||||
of -= v3s16(1,0,1) * more;
|
||||
|
||||
route_y_min = 0;
|
||||
// Allow half a diameter + 7 over stone surface
|
||||
route_y_max = -of.Y + max_stone_y + max_tunnel_diameter / 2 + 7;
|
||||
|
||||
// Limit maximum to area
|
||||
route_y_max = rangelim(route_y_max, 0, ar.Y - 1);
|
||||
|
||||
if (large_cave) {
|
||||
s16 min = 0;
|
||||
if (node_min.Y < water_level && node_max.Y > water_level) {
|
||||
min = water_level - max_tunnel_diameter/3 - of.Y;
|
||||
route_y_max = water_level + max_tunnel_diameter/3 - of.Y;
|
||||
}
|
||||
route_y_min = ps->range(min, min + max_tunnel_diameter);
|
||||
route_y_min = rangelim(route_y_min, 0, route_y_max);
|
||||
}
|
||||
|
||||
s16 route_start_y_min = route_y_min;
|
||||
s16 route_start_y_max = route_y_max;
|
||||
|
||||
route_start_y_min = rangelim(route_start_y_min, 0, ar.Y - 1);
|
||||
route_start_y_max = rangelim(route_start_y_max, route_start_y_min, ar.Y - 1);
|
||||
|
||||
// Randomize starting position
|
||||
orp = v3f(
|
||||
(float)(ps->next() % ar.X) + 0.5,
|
||||
(float)(ps->range(route_start_y_min, route_start_y_max)) + 0.5,
|
||||
(float)(ps->next() % ar.Z) + 0.5
|
||||
);
|
||||
|
||||
// Generate some tunnel starting from orp
|
||||
for (u16 j = 0; j < tunnel_routepoints; j++)
|
||||
makeTunnel(j % dswitchint == 0);
|
||||
}
|
||||
|
||||
|
||||
void CaveV7::makeTunnel(bool dirswitch) {
|
||||
if (dirswitch && !large_cave) {
|
||||
main_direction = v3f(
|
||||
((float)(ps->next() % 20) - (float)10) / 10,
|
||||
((float)(ps->next() % 20) - (float)10) / 30,
|
||||
((float)(ps->next() % 20) - (float)10) / 10
|
||||
);
|
||||
main_direction *= (float)ps->range(0, 10) / 10;
|
||||
}
|
||||
|
||||
// Randomize size
|
||||
s16 min_d = min_tunnel_diameter;
|
||||
s16 max_d = max_tunnel_diameter;
|
||||
rs = ps->range(min_d, max_d);
|
||||
|
||||
v3s16 maxlen;
|
||||
if (large_cave) {
|
||||
maxlen = v3s16(
|
||||
rs * part_max_length_rs,
|
||||
rs * part_max_length_rs / 2,
|
||||
rs * part_max_length_rs
|
||||
);
|
||||
} else {
|
||||
maxlen = v3s16(
|
||||
rs * part_max_length_rs,
|
||||
ps->range(1, rs * part_max_length_rs),
|
||||
rs * part_max_length_rs
|
||||
);
|
||||
}
|
||||
|
||||
v3f vec;
|
||||
// Jump downward sometimes
|
||||
if (!large_cave && ps->range(0, 12) == 0) {
|
||||
vec = v3f(
|
||||
(float)(ps->next() % (maxlen.X * 1)) - (float)maxlen.X / 2,
|
||||
(float)(ps->next() % (maxlen.Y * 2)) - (float)maxlen.Y,
|
||||
(float)(ps->next() % (maxlen.Z * 1)) - (float)maxlen.Z / 2
|
||||
);
|
||||
} else {
|
||||
vec = v3f(
|
||||
(float)(ps->next() % (maxlen.X * 1)) - (float)maxlen.X / 2,
|
||||
(float)(ps->next() % (maxlen.Y * 1)) - (float)maxlen.Y / 2,
|
||||
(float)(ps->next() % (maxlen.Z * 1)) - (float)maxlen.Z / 2
|
||||
);
|
||||
}
|
||||
|
||||
// Do not make large caves that are above ground.
|
||||
// It is only necessary to check the startpoint and endpoint.
|
||||
if (large_cave) {
|
||||
v3s16 orpi(orp.X, orp.Y, orp.Z);
|
||||
v3s16 veci(vec.X, vec.Y, vec.Z);
|
||||
v3s16 p;
|
||||
|
||||
p = orpi + veci + of + rs / 2;
|
||||
if (p.Z >= node_min.Z && p.Z <= node_max.Z &&
|
||||
p.X >= node_min.X && p.X <= node_max.X) {
|
||||
u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X);
|
||||
s16 h = mg->ridge_heightmap[index];
|
||||
if (h < p.Y)
|
||||
return;
|
||||
} else if (p.Y > water_level) {
|
||||
return; // If it's not in our heightmap, use a simple heuristic
|
||||
}
|
||||
|
||||
p = orpi + of + rs / 2;
|
||||
if (p.Z >= node_min.Z && p.Z <= node_max.Z &&
|
||||
p.X >= node_min.X && p.X <= node_max.X) {
|
||||
u32 index = (p.Z - node_min.Z) * mg->ystride + (p.X - node_min.X);
|
||||
s16 h = mg->ridge_heightmap[index];
|
||||
if (h < p.Y)
|
||||
return;
|
||||
} else if (p.Y > water_level) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
vec += main_direction;
|
||||
|
||||
v3f rp = orp + vec;
|
||||
if (rp.X < 0)
|
||||
rp.X = 0;
|
||||
else if (rp.X >= ar.X)
|
||||
rp.X = ar.X - 1;
|
||||
|
||||
if (rp.Y < route_y_min)
|
||||
rp.Y = route_y_min;
|
||||
else if (rp.Y >= route_y_max)
|
||||
rp.Y = route_y_max - 1;
|
||||
|
||||
if (rp.Z < 0)
|
||||
rp.Z = 0;
|
||||
else if (rp.Z >= ar.Z)
|
||||
rp.Z = ar.Z - 1;
|
||||
|
||||
vec = rp - orp;
|
||||
|
||||
float veclen = vec.getLength();
|
||||
if (veclen < 0.05)
|
||||
veclen = 1.0;
|
||||
|
||||
// Every second section is rough
|
||||
bool randomize_xz = (ps->range(1, 2) == 1);
|
||||
|
||||
// Make a ravine every once in a while if it's long enough
|
||||
float xylen = vec.X * vec.X + vec.Z * vec.Z;
|
||||
bool is_ravine = (xylen > 500.0) && !large_cave && (ps->range(1, 8) == 1);
|
||||
|
||||
// Carve routes
|
||||
for (float f = 0; f < 1.0; f += 1.0 / veclen)
|
||||
carveRoute(vec, f, randomize_xz, is_ravine);
|
||||
|
||||
orp = rp;
|
||||
}
|
||||
|
||||
|
||||
void CaveV7::carveRoute(v3f vec, float f, bool randomize_xz, bool is_ravine) {
|
||||
MapNode airnode(CONTENT_AIR);
|
||||
MapNode waternode(c_water_source);
|
||||
MapNode lavanode(c_lava_source);
|
||||
MapNode liquidnode = ps->range(0, 4) ? lavanode : waternode;
|
||||
|
||||
v3s16 startp(orp.X, orp.Y, orp.Z);
|
||||
startp += of;
|
||||
|
||||
v3f fp = orp + vec * f;
|
||||
fp.X += 0.1 * ps->range(-10, 10);
|
||||
fp.Z += 0.1 * ps->range(-10, 10);
|
||||
v3s16 cp(fp.X, fp.Y, fp.Z);
|
||||
|
||||
s16 d0 = -rs/2;
|
||||
s16 d1 = d0 + rs;
|
||||
if (randomize_xz) {
|
||||
d0 += ps->range(-1, 1);
|
||||
d1 += ps->range(-1, 1);
|
||||
}
|
||||
|
||||
bool flat_cave_floor = !large_cave && ps->range(0, 2) == 2;
|
||||
|
||||
for (s16 z0 = d0; z0 <= d1; z0++) {
|
||||
s16 si = rs / 2 - MYMAX(0, abs(z0) - rs / 7 - 1);
|
||||
for (s16 x0 = -si - ps->range(0,1); x0 <= si - 1 + ps->range(0,1); x0++) {
|
||||
s16 maxabsxz = MYMAX(abs(x0), abs(z0));
|
||||
|
||||
s16 si2 = is_ravine ? MYMIN(ps->range(25, 26), ar.Y) :
|
||||
rs / 2 - MYMAX(0, maxabsxz - rs / 7 - 1);
|
||||
|
||||
for (s16 y0 = -si2; y0 <= si2; y0++) {
|
||||
// Make better floors in small caves
|
||||
if(flat_cave_floor && y0 <= -rs/2 && rs<=7)
|
||||
continue;
|
||||
|
||||
if (large_cave_is_flat) {
|
||||
// Make large caves not so tall
|
||||
if (rs > 7 && abs(y0) >= rs / 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0);
|
||||
p += of;
|
||||
|
||||
if (vm->m_area.contains(p) == false)
|
||||
continue;
|
||||
|
||||
u32 i = vm->m_area.index(p);
|
||||
|
||||
// Don't replace air or water or lava
|
||||
content_t c = vm->m_data[i].getContent();
|
||||
if (c == CONTENT_AIR || c == c_water_source || c == c_lava_source)
|
||||
continue;
|
||||
|
||||
if (large_cave) {
|
||||
int full_ymin = node_min.Y - MAP_BLOCKSIZE;
|
||||
int full_ymax = node_max.Y + MAP_BLOCKSIZE;
|
||||
|
||||
if (flooded && full_ymin < water_level && full_ymax > water_level)
|
||||
vm->m_data[i] = (p.Y <= water_level) ? waternode : airnode;
|
||||
else if (flooded && full_ymax < water_level)
|
||||
vm->m_data[i] = (p.Y < startp.Y - 4) ? liquidnode : airnode;
|
||||
else
|
||||
vm->m_data[i] = airnode;
|
||||
} else {
|
||||
vm->m_data[i] = airnode;
|
||||
vm->m_flags[i] |= VMANIP_FLAG_CAVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
115
src/cavegen.h
Normal file
115
src/cavegen.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef CAVEGEN_HEADER
|
||||
#define CAVEGEN_HEADER
|
||||
|
||||
#define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1
|
||||
|
||||
class MapgenV6;
|
||||
class MapgenV7;
|
||||
|
||||
class CaveV6 {
|
||||
public:
|
||||
MapgenV6 *mg;
|
||||
ManualMapVoxelManipulator *vm;
|
||||
INodeDefManager *ndef;
|
||||
|
||||
s16 min_tunnel_diameter;
|
||||
s16 max_tunnel_diameter;
|
||||
u16 tunnel_routepoints;
|
||||
int dswitchint;
|
||||
int part_max_length_rs;
|
||||
|
||||
bool large_cave;
|
||||
bool large_cave_is_flat;
|
||||
bool flooded;
|
||||
|
||||
s16 max_stone_y;
|
||||
v3s16 node_min;
|
||||
v3s16 node_max;
|
||||
|
||||
v3f orp; // starting point, relative to caved space
|
||||
v3s16 of; // absolute coordinates of caved space
|
||||
v3s16 ar; // allowed route area
|
||||
s16 rs; // tunnel radius size
|
||||
v3f main_direction;
|
||||
|
||||
s16 route_y_min;
|
||||
s16 route_y_max;
|
||||
|
||||
PseudoRandom *ps;
|
||||
PseudoRandom *ps2;
|
||||
|
||||
content_t c_water_source;
|
||||
content_t c_lava_source;
|
||||
|
||||
int water_level;
|
||||
|
||||
CaveV6() {}
|
||||
CaveV6(MapgenV6 *mg, PseudoRandom *ps, PseudoRandom *ps2, bool large_cave);
|
||||
void makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height);
|
||||
void makeTunnel(bool dirswitch);
|
||||
void carveRoute(v3f vec, float f, bool randomize_xz);
|
||||
};
|
||||
|
||||
class CaveV7 {
|
||||
public:
|
||||
MapgenV7 *mg;
|
||||
ManualMapVoxelManipulator *vm;
|
||||
INodeDefManager *ndef;
|
||||
|
||||
s16 min_tunnel_diameter;
|
||||
s16 max_tunnel_diameter;
|
||||
u16 tunnel_routepoints;
|
||||
int dswitchint;
|
||||
int part_max_length_rs;
|
||||
|
||||
bool large_cave;
|
||||
bool large_cave_is_flat;
|
||||
bool flooded;
|
||||
|
||||
s16 max_stone_y;
|
||||
v3s16 node_min;
|
||||
v3s16 node_max;
|
||||
|
||||
v3f orp; // starting point, relative to caved space
|
||||
v3s16 of; // absolute coordinates of caved space
|
||||
v3s16 ar; // allowed route area
|
||||
s16 rs; // tunnel radius size
|
||||
v3f main_direction;
|
||||
|
||||
s16 route_y_min;
|
||||
s16 route_y_max;
|
||||
|
||||
PseudoRandom *ps;
|
||||
|
||||
content_t c_water_source;
|
||||
content_t c_lava_source;
|
||||
|
||||
int water_level;
|
||||
|
||||
CaveV7() {}
|
||||
CaveV7(MapgenV7 *mg, PseudoRandom *ps, bool large_cave);
|
||||
void makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height);
|
||||
void makeTunnel(bool dirswitch);
|
||||
void carveRoute(v3f vec, float f, bool randomize_xz, bool is_ravine);
|
||||
};
|
||||
|
||||
#endif
|
||||
24
src/chat.cpp
24
src/chat.cpp
@@ -117,8 +117,8 @@ void ChatBuffer::deleteOldest(u32 count)
|
||||
--count;
|
||||
}
|
||||
|
||||
m_unformatted.erase(0, del_unformatted);
|
||||
m_formatted.erase(0, del_formatted);
|
||||
m_unformatted.erase(m_unformatted.begin(), m_unformatted.begin() + del_unformatted);
|
||||
m_formatted.erase(m_formatted.begin(), m_formatted.begin() + del_formatted);
|
||||
}
|
||||
|
||||
void ChatBuffer::deleteByAge(f32 maxAge)
|
||||
@@ -232,10 +232,10 @@ void ChatBuffer::scrollTop()
|
||||
}
|
||||
|
||||
u32 ChatBuffer::formatChatLine(const ChatLine& line, u32 cols,
|
||||
core::array<ChatFormattedLine>& destination) const
|
||||
std::vector<ChatFormattedLine>& destination) const
|
||||
{
|
||||
u32 num_added = 0;
|
||||
core::array<ChatFormattedFragment> next_frags;
|
||||
std::vector<ChatFormattedFragment> next_frags;
|
||||
ChatFormattedLine next_line;
|
||||
ChatFormattedFragment temp_frag;
|
||||
u32 out_column = 0;
|
||||
@@ -292,7 +292,7 @@ u32 ChatBuffer::formatChatLine(const ChatLine& line, u32 cols,
|
||||
frag.column = out_column;
|
||||
next_line.fragments.push_back(frag);
|
||||
out_column += frag.text.size();
|
||||
next_frags.erase(0, 1);
|
||||
next_frags.erase(next_frags.begin());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -414,7 +414,7 @@ std::wstring ChatPrompt::submit()
|
||||
if (!line.empty())
|
||||
m_history.push_back(line);
|
||||
if (m_history.size() > m_history_limit)
|
||||
m_history.erase(0);
|
||||
m_history.erase(m_history.begin());
|
||||
m_history_index = m_history.size();
|
||||
m_view = 0;
|
||||
m_cursor = 0;
|
||||
@@ -464,7 +464,7 @@ void ChatPrompt::historyNext()
|
||||
}
|
||||
}
|
||||
|
||||
void ChatPrompt::nickCompletion(const core::list<std::wstring>& names, bool backwards)
|
||||
void ChatPrompt::nickCompletion(const std::list<std::string>& names, bool backwards)
|
||||
{
|
||||
// Two cases:
|
||||
// (a) m_nick_completion_start == m_nick_completion_end == 0
|
||||
@@ -492,14 +492,14 @@ void ChatPrompt::nickCompletion(const core::list<std::wstring>& names, bool back
|
||||
std::wstring prefix = m_line.substr(prefix_start, prefix_end - prefix_start);
|
||||
|
||||
// find all names that start with the selected prefix
|
||||
core::array<std::wstring> completions;
|
||||
for (core::list<std::wstring>::ConstIterator
|
||||
std::vector<std::wstring> completions;
|
||||
for (std::list<std::string>::const_iterator
|
||||
i = names.begin();
|
||||
i != names.end(); i++)
|
||||
i != names.end(); ++i)
|
||||
{
|
||||
if (str_starts_with(*i, prefix, true))
|
||||
if (str_starts_with(narrow_to_wide(*i), prefix, true))
|
||||
{
|
||||
std::wstring completion = *i;
|
||||
std::wstring completion = narrow_to_wide(*i);
|
||||
if (prefix_start == 0)
|
||||
completion += L":";
|
||||
completions.push_back(completion);
|
||||
|
||||
14
src/chat.h
14
src/chat.h
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
#include "irrlichttypes_bloated.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
||||
// Chat console related classes, only used by the client
|
||||
|
||||
@@ -55,7 +57,7 @@ struct ChatFormattedFragment
|
||||
struct ChatFormattedLine
|
||||
{
|
||||
// Array of text fragments
|
||||
core::array<ChatFormattedFragment> fragments;
|
||||
std::vector<ChatFormattedFragment> fragments;
|
||||
// true if first line of one formatted ChatLine
|
||||
bool first;
|
||||
};
|
||||
@@ -110,7 +112,7 @@ class ChatBuffer
|
||||
// Appends the formatted lines to the destination array and
|
||||
// returns the number of formatted lines.
|
||||
u32 formatChatLine(const ChatLine& line, u32 cols,
|
||||
core::array<ChatFormattedLine>& destination) const;
|
||||
std::vector<ChatFormattedLine>& destination) const;
|
||||
|
||||
protected:
|
||||
s32 getTopScrollPos() const;
|
||||
@@ -120,7 +122,7 @@ class ChatBuffer
|
||||
// Scrollback size
|
||||
u32 m_scrollback;
|
||||
// Array of unformatted chat lines
|
||||
core::array<ChatLine> m_unformatted;
|
||||
std::vector<ChatLine> m_unformatted;
|
||||
|
||||
// Number of character columns in console
|
||||
u32 m_cols;
|
||||
@@ -129,7 +131,7 @@ class ChatBuffer
|
||||
// Scroll position (console's top line index into m_formatted)
|
||||
s32 m_scroll;
|
||||
// Array of formatted lines
|
||||
core::array<ChatFormattedLine> m_formatted;
|
||||
std::vector<ChatFormattedLine> m_formatted;
|
||||
// Empty formatted line, for error returns
|
||||
ChatFormattedLine m_empty_formatted_line;
|
||||
};
|
||||
@@ -158,7 +160,7 @@ class ChatPrompt
|
||||
void historyNext();
|
||||
|
||||
// Nick completion
|
||||
void nickCompletion(const core::list<std::wstring>& names, bool backwards);
|
||||
void nickCompletion(const std::list<std::string>& names, bool backwards);
|
||||
|
||||
// Update console size and reformat the visible portion of the prompt
|
||||
void reformat(u32 cols);
|
||||
@@ -209,7 +211,7 @@ class ChatPrompt
|
||||
// Currently edited line
|
||||
std::wstring m_line;
|
||||
// History buffer
|
||||
core::array<std::wstring> m_history;
|
||||
std::vector<std::wstring> m_history;
|
||||
// History index (0 <= m_history_index <= m_history.size())
|
||||
u32 m_history_index;
|
||||
// Maximum number of history entries
|
||||
|
||||
367
src/client.cpp
367
src/client.cpp
@@ -29,6 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "mapblock.h"
|
||||
#include "settings.h"
|
||||
#include "profiler.h"
|
||||
#include "gettext.h"
|
||||
#include "log.h"
|
||||
#include "nodemetadata.h"
|
||||
#include "nodedef.h"
|
||||
@@ -45,6 +46,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "IMeshCache.h"
|
||||
#include "util/serialize.h"
|
||||
#include "config.h"
|
||||
#include "util/directiontables.h"
|
||||
|
||||
#if USE_CURL
|
||||
#include <curl/curl.h>
|
||||
@@ -232,8 +234,8 @@ void * MediaFetchThread::Thread()
|
||||
#if USE_CURL
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
for (core::list<MediaRequest>::Iterator i = m_file_requests.begin();
|
||||
i != m_file_requests.end(); i++) {
|
||||
for (std::list<MediaRequest>::iterator i = m_file_requests.begin();
|
||||
i != m_file_requests.end(); ++i) {
|
||||
curl = curl_easy_init();
|
||||
assert(curl);
|
||||
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
|
||||
@@ -348,6 +350,11 @@ Client::~Client()
|
||||
m_mesh_update_thread.setRun(false);
|
||||
while(m_mesh_update_thread.IsRunning())
|
||||
sleep_ms(100);
|
||||
while(!m_mesh_update_thread.m_queue_out.empty()) {
|
||||
MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_front();
|
||||
delete r.mesh;
|
||||
}
|
||||
|
||||
|
||||
delete m_inventory_from_server;
|
||||
|
||||
@@ -360,9 +367,18 @@ Client::~Client()
|
||||
}
|
||||
}
|
||||
|
||||
for (core::list<MediaFetchThread*>::Iterator i = m_media_fetch_threads.begin();
|
||||
i != m_media_fetch_threads.end(); i++)
|
||||
for (std::list<MediaFetchThread*>::iterator i = m_media_fetch_threads.begin();
|
||||
i != m_media_fetch_threads.end(); ++i)
|
||||
delete *i;
|
||||
|
||||
// cleanup 3d model meshes on client shutdown
|
||||
while (m_device->getSceneManager()->getMeshCache()->getMeshCount() != 0) {
|
||||
scene::IAnimatedMesh * mesh =
|
||||
m_device->getSceneManager()->getMeshCache()->getMeshByIndex(0);
|
||||
|
||||
if (mesh != NULL)
|
||||
m_device->getSceneManager()->getMeshCache()->removeMesh(mesh);
|
||||
}
|
||||
}
|
||||
|
||||
void Client::connect(Address address)
|
||||
@@ -585,7 +601,7 @@ void Client::step(float dtime)
|
||||
if(m_map_timer_and_unload_interval.step(dtime, map_timer_and_unload_dtime))
|
||||
{
|
||||
ScopeProfiler sp(g_profiler, "Client: map timer and unload");
|
||||
core::list<v3s16> deleted_blocks;
|
||||
std::list<v3s16> deleted_blocks;
|
||||
m_env.getMap().timerUpdate(map_timer_and_unload_dtime,
|
||||
g_settings->getFloat("client_unload_unused_data_timeout"),
|
||||
&deleted_blocks);
|
||||
@@ -599,8 +615,8 @@ void Client::step(float dtime)
|
||||
NOTE: This loop is intentionally iterated the way it is.
|
||||
*/
|
||||
|
||||
core::list<v3s16>::Iterator i = deleted_blocks.begin();
|
||||
core::list<v3s16> sendlist;
|
||||
std::list<v3s16>::iterator i = deleted_blocks.begin();
|
||||
std::list<v3s16> sendlist;
|
||||
for(;;)
|
||||
{
|
||||
if(sendlist.size() == 255 || i == deleted_blocks.end())
|
||||
@@ -619,9 +635,9 @@ void Client::step(float dtime)
|
||||
writeU16(&reply[0], TOSERVER_DELETEDBLOCKS);
|
||||
reply[2] = sendlist.size();
|
||||
u32 k = 0;
|
||||
for(core::list<v3s16>::Iterator
|
||||
for(std::list<v3s16>::iterator
|
||||
j = sendlist.begin();
|
||||
j != sendlist.end(); j++)
|
||||
j != sendlist.end(); ++j)
|
||||
{
|
||||
writeV3S16(&reply[2+1+6*k], *j);
|
||||
k++;
|
||||
@@ -635,7 +651,7 @@ void Client::step(float dtime)
|
||||
}
|
||||
|
||||
sendlist.push_back(*i);
|
||||
i++;
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -727,7 +743,7 @@ void Client::step(float dtime)
|
||||
<<std::endl;*/
|
||||
|
||||
int num_processed_meshes = 0;
|
||||
while(m_mesh_update_thread.m_queue_out.size() > 0)
|
||||
while(!m_mesh_update_thread.m_queue_out.empty())
|
||||
{
|
||||
num_processed_meshes++;
|
||||
MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_front();
|
||||
@@ -746,6 +762,8 @@ void Client::step(float dtime)
|
||||
|
||||
// Replace with the new mesh
|
||||
block->mesh = r.mesh;
|
||||
} else {
|
||||
delete r.mesh;
|
||||
}
|
||||
if(r.ack_block_to_server)
|
||||
{
|
||||
@@ -779,10 +797,10 @@ void Client::step(float dtime)
|
||||
*/
|
||||
if (m_media_receive_started) {
|
||||
bool all_stopped = true;
|
||||
for (core::list<MediaFetchThread*>::Iterator thread = m_media_fetch_threads.begin();
|
||||
thread != m_media_fetch_threads.end(); thread++) {
|
||||
for (std::list<MediaFetchThread*>::iterator thread = m_media_fetch_threads.begin();
|
||||
thread != m_media_fetch_threads.end(); ++thread) {
|
||||
all_stopped &= !(*thread)->IsRunning();
|
||||
while ((*thread)->m_file_data.size() > 0) {
|
||||
while (!(*thread)->m_file_data.empty()) {
|
||||
std::pair <std::string, std::string> out = (*thread)->m_file_data.pop_front();
|
||||
++m_media_received_count;
|
||||
|
||||
@@ -803,9 +821,9 @@ void Client::step(float dtime)
|
||||
}
|
||||
|
||||
{
|
||||
core::map<std::string, std::string>::Node *n;
|
||||
std::map<std::string, std::string>::iterator n;
|
||||
n = m_media_name_sha1_map.find(out.first);
|
||||
if(n == NULL)
|
||||
if(n == m_media_name_sha1_map.end())
|
||||
errorstream<<"The server sent a file that has not "
|
||||
<<"been announced."<<std::endl;
|
||||
else
|
||||
@@ -814,11 +832,11 @@ void Client::step(float dtime)
|
||||
}
|
||||
}
|
||||
if (all_stopped) {
|
||||
core::list<MediaRequest> fetch_failed;
|
||||
for (core::list<MediaFetchThread*>::Iterator thread = m_media_fetch_threads.begin();
|
||||
thread != m_media_fetch_threads.end(); thread++) {
|
||||
for (core::list<MediaRequest>::Iterator request = (*thread)->m_failed.begin();
|
||||
request != (*thread)->m_failed.end(); request++)
|
||||
std::list<MediaRequest> fetch_failed;
|
||||
for (std::list<MediaFetchThread*>::iterator thread = m_media_fetch_threads.begin();
|
||||
thread != m_media_fetch_threads.end(); ++thread) {
|
||||
for (std::list<MediaRequest>::iterator request = (*thread)->m_failed.begin();
|
||||
request != (*thread)->m_failed.end(); ++request)
|
||||
fetch_failed.push_back(*request);
|
||||
(*thread)->m_failed.clear();
|
||||
}
|
||||
@@ -976,16 +994,28 @@ bool Client::loadMedia(const std::string &data, const std::string &filename)
|
||||
{
|
||||
verbosestream<<"Client: Storing model into Irrlicht: "
|
||||
<<"\""<<filename<<"\""<<std::endl;
|
||||
scene::ISceneManager *smgr = m_device->getSceneManager();
|
||||
|
||||
//check if mesh was already cached
|
||||
scene::IAnimatedMesh *mesh =
|
||||
smgr->getMeshCache()->getMeshByName(filename.c_str());
|
||||
|
||||
if (mesh != NULL) {
|
||||
errorstream << "Multiple models with name: " << filename.c_str() <<
|
||||
" found replacing previous model!" << std::endl;
|
||||
|
||||
smgr->getMeshCache()->removeMesh(mesh);
|
||||
mesh = 0;
|
||||
}
|
||||
|
||||
io::IFileSystem *irrfs = m_device->getFileSystem();
|
||||
io::IReadFile *rfile = irrfs->createMemoryReadFile(
|
||||
*data_rw, data_rw.getSize(), filename.c_str());
|
||||
assert(rfile);
|
||||
|
||||
scene::ISceneManager *smgr = m_device->getSceneManager();
|
||||
scene::IAnimatedMesh *mesh = smgr->getMesh(rfile);
|
||||
mesh = smgr->getMesh(rfile);
|
||||
smgr->getMeshCache()->addMesh(filename.c_str(), mesh);
|
||||
|
||||
rfile->drop();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1015,14 +1045,14 @@ void Client::deletingPeer(con::Peer *peer, bool timeout)
|
||||
string name
|
||||
}
|
||||
*/
|
||||
void Client::request_media(const core::list<MediaRequest> &file_requests)
|
||||
void Client::request_media(const std::list<MediaRequest> &file_requests)
|
||||
{
|
||||
std::ostringstream os(std::ios_base::binary);
|
||||
writeU16(os, TOSERVER_REQUEST_MEDIA);
|
||||
writeU16(os, file_requests.size());
|
||||
|
||||
for(core::list<MediaRequest>::ConstIterator i = file_requests.begin();
|
||||
i != file_requests.end(); i++) {
|
||||
for(std::list<MediaRequest>::const_iterator i = file_requests.begin();
|
||||
i != file_requests.end(); ++i) {
|
||||
os<<serializeString(i->name);
|
||||
}
|
||||
|
||||
@@ -1622,7 +1652,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
||||
infostream<<"Client: Received media announcement: packet size: "
|
||||
<<datasize<<std::endl;
|
||||
|
||||
core::list<MediaRequest> file_requests;
|
||||
std::list<MediaRequest> file_requests;
|
||||
|
||||
for(int i=0; i<num_files; i++)
|
||||
{
|
||||
@@ -1641,7 +1671,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
||||
std::string sha1_hex = hex_encode(sha1_raw);
|
||||
std::ostringstream tmp_os(std::ios_base::binary);
|
||||
bool found_in_cache = m_media_cache.load_sha1(sha1_raw, tmp_os);
|
||||
m_media_name_sha1_map.set(name, sha1_raw);
|
||||
m_media_name_sha1_map[name] = sha1_raw;
|
||||
|
||||
// If found in cache, try to load it from there
|
||||
if(found_in_cache)
|
||||
@@ -1677,16 +1707,16 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
||||
request_media(file_requests);
|
||||
} else {
|
||||
#if USE_CURL
|
||||
core::list<MediaFetchThread*>::Iterator cur = m_media_fetch_threads.begin();
|
||||
for(core::list<MediaRequest>::Iterator i = file_requests.begin();
|
||||
i != file_requests.end(); i++) {
|
||||
std::list<MediaFetchThread*>::iterator cur = m_media_fetch_threads.begin();
|
||||
for(std::list<MediaRequest>::iterator i = file_requests.begin();
|
||||
i != file_requests.end(); ++i) {
|
||||
(*cur)->m_file_requests.push_back(*i);
|
||||
cur++;
|
||||
if (cur == m_media_fetch_threads.end())
|
||||
cur = m_media_fetch_threads.begin();
|
||||
}
|
||||
for (core::list<MediaFetchThread*>::Iterator i = m_media_fetch_threads.begin();
|
||||
i != m_media_fetch_threads.end(); i++) {
|
||||
for (std::list<MediaFetchThread*>::iterator i = m_media_fetch_threads.begin();
|
||||
i != m_media_fetch_threads.end(); ++i) {
|
||||
(*i)->m_remote_url = remote_media;
|
||||
(*i)->Start();
|
||||
}
|
||||
@@ -1762,9 +1792,9 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
||||
}
|
||||
|
||||
{
|
||||
core::map<std::string, std::string>::Node *n;
|
||||
std::map<std::string, std::string>::iterator n;
|
||||
n = m_media_name_sha1_map.find(name);
|
||||
if(n == NULL)
|
||||
if(n == m_media_name_sha1_map.end())
|
||||
errorstream<<"The server sent a file that has not "
|
||||
<<"been announced."<<std::endl;
|
||||
else
|
||||
@@ -1936,6 +1966,193 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
||||
event.show_formspec.formname = new std::string(formname);
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_SPAWN_PARTICLE)
|
||||
{
|
||||
std::string datastring((char*)&data[2], datasize-2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
v3f pos = readV3F1000(is);
|
||||
v3f vel = readV3F1000(is);
|
||||
v3f acc = readV3F1000(is);
|
||||
float expirationtime = readF1000(is);
|
||||
float size = readF1000(is);
|
||||
bool collisiondetection = readU8(is);
|
||||
std::string texture = deSerializeLongString(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_SPAWN_PARTICLE;
|
||||
event.spawn_particle.pos = new v3f (pos);
|
||||
event.spawn_particle.vel = new v3f (vel);
|
||||
event.spawn_particle.acc = new v3f (acc);
|
||||
|
||||
event.spawn_particle.expirationtime = expirationtime;
|
||||
event.spawn_particle.size = size;
|
||||
event.spawn_particle.collisiondetection =
|
||||
collisiondetection;
|
||||
event.spawn_particle.texture = new std::string(texture);
|
||||
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_ADD_PARTICLESPAWNER)
|
||||
{
|
||||
std::string datastring((char*)&data[2], datasize-2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
u16 amount = readU16(is);
|
||||
float spawntime = readF1000(is);
|
||||
v3f minpos = readV3F1000(is);
|
||||
v3f maxpos = readV3F1000(is);
|
||||
v3f minvel = readV3F1000(is);
|
||||
v3f maxvel = readV3F1000(is);
|
||||
v3f minacc = readV3F1000(is);
|
||||
v3f maxacc = readV3F1000(is);
|
||||
float minexptime = readF1000(is);
|
||||
float maxexptime = readF1000(is);
|
||||
float minsize = readF1000(is);
|
||||
float maxsize = readF1000(is);
|
||||
bool collisiondetection = readU8(is);
|
||||
std::string texture = deSerializeLongString(is);
|
||||
u32 id = readU32(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_ADD_PARTICLESPAWNER;
|
||||
event.add_particlespawner.amount = amount;
|
||||
event.add_particlespawner.spawntime = spawntime;
|
||||
|
||||
event.add_particlespawner.minpos = new v3f (minpos);
|
||||
event.add_particlespawner.maxpos = new v3f (maxpos);
|
||||
event.add_particlespawner.minvel = new v3f (minvel);
|
||||
event.add_particlespawner.maxvel = new v3f (maxvel);
|
||||
event.add_particlespawner.minacc = new v3f (minacc);
|
||||
event.add_particlespawner.maxacc = new v3f (maxacc);
|
||||
|
||||
event.add_particlespawner.minexptime = minexptime;
|
||||
event.add_particlespawner.maxexptime = maxexptime;
|
||||
event.add_particlespawner.minsize = minsize;
|
||||
event.add_particlespawner.maxsize = maxsize;
|
||||
event.add_particlespawner.collisiondetection = collisiondetection;
|
||||
event.add_particlespawner.texture = new std::string(texture);
|
||||
event.add_particlespawner.id = id;
|
||||
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_DELETE_PARTICLESPAWNER)
|
||||
{
|
||||
std::string datastring((char*)&data[2], datasize-2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
u32 id = readU16(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_DELETE_PARTICLESPAWNER;
|
||||
event.delete_particlespawner.id = id;
|
||||
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_HUDADD)
|
||||
{
|
||||
std::string datastring((char *)&data[2], datasize - 2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
u32 id = readU32(is);
|
||||
u8 type = readU8(is);
|
||||
v2f pos = readV2F1000(is);
|
||||
std::string name = deSerializeString(is);
|
||||
v2f scale = readV2F1000(is);
|
||||
std::string text = deSerializeString(is);
|
||||
u32 number = readU32(is);
|
||||
u32 item = readU32(is);
|
||||
u32 dir = readU32(is);
|
||||
v2f align = readV2F1000(is);
|
||||
v2f offset = readV2F1000(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_HUDADD;
|
||||
event.hudadd.id = id;
|
||||
event.hudadd.type = type;
|
||||
event.hudadd.pos = new v2f(pos);
|
||||
event.hudadd.name = new std::string(name);
|
||||
event.hudadd.scale = new v2f(scale);
|
||||
event.hudadd.text = new std::string(text);
|
||||
event.hudadd.number = number;
|
||||
event.hudadd.item = item;
|
||||
event.hudadd.dir = dir;
|
||||
event.hudadd.align = new v2f(align);
|
||||
event.hudadd.offset = new v2f(offset);
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_HUDRM)
|
||||
{
|
||||
std::string datastring((char *)&data[2], datasize - 2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
u32 id = readU32(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_HUDRM;
|
||||
event.hudrm.id = id;
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_HUDCHANGE)
|
||||
{
|
||||
std::string sdata;
|
||||
v2f v2fdata;
|
||||
u32 intdata = 0;
|
||||
|
||||
std::string datastring((char *)&data[2], datasize - 2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
u32 id = readU32(is);
|
||||
u8 stat = (HudElementStat)readU8(is);
|
||||
|
||||
if (stat == HUD_STAT_POS || stat == HUD_STAT_SCALE ||
|
||||
stat == HUD_STAT_ALIGN || stat == HUD_STAT_OFFSET)
|
||||
v2fdata = readV2F1000(is);
|
||||
else if (stat == HUD_STAT_NAME || stat == HUD_STAT_TEXT)
|
||||
sdata = deSerializeString(is);
|
||||
else
|
||||
intdata = readU32(is);
|
||||
|
||||
ClientEvent event;
|
||||
event.type = CE_HUDCHANGE;
|
||||
event.hudchange.id = id;
|
||||
event.hudchange.stat = (HudElementStat)stat;
|
||||
event.hudchange.v2fdata = new v2f(v2fdata);
|
||||
event.hudchange.sdata = new std::string(sdata);
|
||||
event.hudchange.data = intdata;
|
||||
m_client_event_queue.push_back(event);
|
||||
}
|
||||
else if(command == TOCLIENT_HUD_SET_FLAGS)
|
||||
{
|
||||
std::string datastring((char *)&data[2], datasize - 2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
Player *player = m_env.getLocalPlayer();
|
||||
assert(player != NULL);
|
||||
|
||||
u32 flags = readU32(is);
|
||||
u32 mask = readU32(is);
|
||||
|
||||
player->hud_flags &= ~mask;
|
||||
player->hud_flags |= flags;
|
||||
}
|
||||
else if(command == TOCLIENT_HUD_SET_PARAM)
|
||||
{
|
||||
std::string datastring((char *)&data[2], datasize - 2);
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
Player *player = m_env.getLocalPlayer();
|
||||
assert(player != NULL);
|
||||
|
||||
u16 param = readU16(is);
|
||||
std::string value = deSerializeString(is);
|
||||
|
||||
if(param == HUD_PARAM_HOTBAR_ITEMCOUNT && value.size() == 4){
|
||||
s32 hotbar_itemcount = readS32((u8*) value.c_str());
|
||||
if(hotbar_itemcount > 0 && hotbar_itemcount <= HUD_HOTBAR_ITEMCOUNT_MAX)
|
||||
player->hud_hotbar_itemcount = hotbar_itemcount;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
infostream<<"Client: Ignoring unknown command "
|
||||
@@ -2231,7 +2448,7 @@ void Client::sendPlayerItem(u16 item)
|
||||
|
||||
void Client::removeNode(v3s16 p)
|
||||
{
|
||||
core::map<v3s16, MapBlock*> modified_blocks;
|
||||
std::map<v3s16, MapBlock*> modified_blocks;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2245,12 +2462,11 @@ void Client::removeNode(v3s16 p)
|
||||
// add urgent task to update the modified node
|
||||
addUpdateMeshTaskForNode(p, false, true);
|
||||
|
||||
for(core::map<v3s16, MapBlock * >::Iterator
|
||||
i = modified_blocks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<v3s16, MapBlock * >::iterator
|
||||
i = modified_blocks.begin();
|
||||
i != modified_blocks.end(); ++i)
|
||||
{
|
||||
v3s16 p = i.getNode()->getKey();
|
||||
addUpdateMeshTaskWithEdge(p);
|
||||
addUpdateMeshTaskWithEdge(i->first);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2258,7 +2474,7 @@ void Client::addNode(v3s16 p, MapNode n)
|
||||
{
|
||||
TimeTaker timer1("Client::addNode()");
|
||||
|
||||
core::map<v3s16, MapBlock*> modified_blocks;
|
||||
std::map<v3s16, MapBlock*> modified_blocks;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2268,12 +2484,11 @@ void Client::addNode(v3s16 p, MapNode n)
|
||||
catch(InvalidPositionException &e)
|
||||
{}
|
||||
|
||||
for(core::map<v3s16, MapBlock * >::Iterator
|
||||
i = modified_blocks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<v3s16, MapBlock * >::iterator
|
||||
i = modified_blocks.begin();
|
||||
i != modified_blocks.end(); ++i)
|
||||
{
|
||||
v3s16 p = i.getNode()->getKey();
|
||||
addUpdateMeshTaskWithEdge(p);
|
||||
addUpdateMeshTaskWithEdge(i->first);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2365,6 +2580,9 @@ void Client::inventoryAction(InventoryAction *a)
|
||||
Predict some local inventory changes
|
||||
*/
|
||||
a->clientApply(this, this);
|
||||
|
||||
// Remove it
|
||||
delete a;
|
||||
}
|
||||
|
||||
ClientActiveObject * Client::getSelectedActiveObject(
|
||||
@@ -2373,7 +2591,7 @@ ClientActiveObject * Client::getSelectedActiveObject(
|
||||
core::line3d<f32> shootline_on_map
|
||||
)
|
||||
{
|
||||
core::array<DistanceSortedActiveObject> objects;
|
||||
std::vector<DistanceSortedActiveObject> objects;
|
||||
|
||||
m_env.getActiveObjects(from_pos_f_on_map, max_d, objects);
|
||||
|
||||
@@ -2381,7 +2599,7 @@ ClientActiveObject * Client::getSelectedActiveObject(
|
||||
|
||||
// Sort them.
|
||||
// After this, the closest object is the first in the array.
|
||||
objects.sort();
|
||||
std::sort(objects.begin(), objects.end());
|
||||
|
||||
for(u32 i=0; i<objects.size(); i++)
|
||||
{
|
||||
@@ -2420,18 +2638,9 @@ void Client::printDebugInfo(std::ostream &os)
|
||||
<<std::endl;*/
|
||||
}
|
||||
|
||||
core::list<std::wstring> Client::getConnectedPlayerNames()
|
||||
std::list<std::string> Client::getConnectedPlayerNames()
|
||||
{
|
||||
core::list<Player*> players = m_env.getPlayers(true);
|
||||
core::list<std::wstring> playerNames;
|
||||
for(core::list<Player*>::Iterator
|
||||
i = players.begin();
|
||||
i != players.end(); i++)
|
||||
{
|
||||
Player *player = *i;
|
||||
playerNames.push_back(narrow_to_wide(player->getName()));
|
||||
}
|
||||
return playerNames;
|
||||
return m_env.getPlayerNames();
|
||||
}
|
||||
|
||||
float Client::getAnimationTime()
|
||||
@@ -2558,21 +2767,14 @@ void Client::addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server, bool
|
||||
}
|
||||
catch(InvalidPositionException &e){}
|
||||
// Leading edge
|
||||
try{
|
||||
v3s16 p = blockpos + v3s16(-1,0,0);
|
||||
addUpdateMeshTask(p, false, urgent);
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
try{
|
||||
v3s16 p = blockpos + g_6dirs[i];
|
||||
addUpdateMeshTask(p, false, urgent);
|
||||
}
|
||||
catch(InvalidPositionException &e){}
|
||||
}
|
||||
catch(InvalidPositionException &e){}
|
||||
try{
|
||||
v3s16 p = blockpos + v3s16(0,-1,0);
|
||||
addUpdateMeshTask(p, false, urgent);
|
||||
}
|
||||
catch(InvalidPositionException &e){}
|
||||
try{
|
||||
v3s16 p = blockpos + v3s16(0,0,-1);
|
||||
addUpdateMeshTask(p, false, urgent);
|
||||
}
|
||||
catch(InvalidPositionException &e){}
|
||||
}
|
||||
|
||||
void Client::addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server, bool urgent)
|
||||
@@ -2627,7 +2829,10 @@ ClientEvent Client::getClientEvent()
|
||||
return m_client_event_queue.pop_front();
|
||||
}
|
||||
|
||||
void Client::afterContentReceived()
|
||||
void draw_load_screen(const std::wstring &text,
|
||||
IrrlichtDevice* device, gui::IGUIFont* font,
|
||||
float dtime=0 ,int percent=0, bool clouds=true);
|
||||
void Client::afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font)
|
||||
{
|
||||
infostream<<"Client::afterContentReceived() started"<<std::endl;
|
||||
assert(m_itemdef_received);
|
||||
@@ -2662,13 +2867,23 @@ void Client::afterContentReceived()
|
||||
if(g_settings->getBool("preload_item_visuals"))
|
||||
{
|
||||
verbosestream<<"Updating item textures and meshes"<<std::endl;
|
||||
wchar_t* text = wgettext("Item textures...");
|
||||
draw_load_screen(text,device,font,0,0);
|
||||
std::set<std::string> names = m_itemdef->getAll();
|
||||
size_t size = names.size();
|
||||
size_t count = 0;
|
||||
int percent = 0;
|
||||
for(std::set<std::string>::const_iterator
|
||||
i = names.begin(); i != names.end(); ++i){
|
||||
// Asking for these caches the result
|
||||
m_itemdef->getInventoryTexture(*i, this);
|
||||
m_itemdef->getWieldMesh(*i, this);
|
||||
count++;
|
||||
percent = count*100/size;
|
||||
if (count%50 == 0) // only update every 50 item
|
||||
draw_load_screen(text,device,font,0,percent);
|
||||
}
|
||||
delete[] text;
|
||||
}
|
||||
|
||||
// Start mesh update thread after setting up content definitions
|
||||
|
||||
81
src/client.h
81
src/client.h
@@ -36,6 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "server.h"
|
||||
#include "particles.h"
|
||||
#include "util/pointedthing.h"
|
||||
#include <algorithm>
|
||||
|
||||
struct MeshMakeData;
|
||||
class MapBlockMesh;
|
||||
@@ -142,9 +143,9 @@ class MediaFetchThread : public SimpleThread
|
||||
|
||||
void * Thread();
|
||||
|
||||
core::list<MediaRequest> m_file_requests;
|
||||
std::list<MediaRequest> m_file_requests;
|
||||
MutexedQueue<std::pair<std::string, std::string> > m_file_data;
|
||||
core::list<MediaRequest> m_failed;
|
||||
std::list<MediaRequest> m_failed;
|
||||
std::string m_remote_url;
|
||||
IGameDef *m_gamedef;
|
||||
};
|
||||
@@ -156,7 +157,13 @@ enum ClientEventType
|
||||
CE_PLAYER_FORCE_MOVE,
|
||||
CE_DEATHSCREEN,
|
||||
CE_TEXTURES_UPDATED,
|
||||
CE_SHOW_FORMSPEC
|
||||
CE_SHOW_FORMSPEC,
|
||||
CE_SPAWN_PARTICLE,
|
||||
CE_ADD_PARTICLESPAWNER,
|
||||
CE_DELETE_PARTICLESPAWNER,
|
||||
CE_HUDADD,
|
||||
CE_HUDRM,
|
||||
CE_HUDCHANGE
|
||||
};
|
||||
|
||||
struct ClientEvent
|
||||
@@ -179,11 +186,63 @@ struct ClientEvent
|
||||
f32 camera_point_target_z;
|
||||
} deathscreen;
|
||||
struct{
|
||||
std::string* formspec;
|
||||
std::string* formname;
|
||||
std::string *formspec;
|
||||
std::string *formname;
|
||||
} show_formspec;
|
||||
struct{
|
||||
} textures_updated;
|
||||
struct{
|
||||
v3f *pos;
|
||||
v3f *vel;
|
||||
v3f *acc;
|
||||
f32 expirationtime;
|
||||
f32 size;
|
||||
bool collisiondetection;
|
||||
std::string *texture;
|
||||
} spawn_particle;
|
||||
struct{
|
||||
u16 amount;
|
||||
f32 spawntime;
|
||||
v3f *minpos;
|
||||
v3f *maxpos;
|
||||
v3f *minvel;
|
||||
v3f *maxvel;
|
||||
v3f *minacc;
|
||||
v3f *maxacc;
|
||||
f32 minexptime;
|
||||
f32 maxexptime;
|
||||
f32 minsize;
|
||||
f32 maxsize;
|
||||
bool collisiondetection;
|
||||
std::string *texture;
|
||||
u32 id;
|
||||
} add_particlespawner;
|
||||
struct{
|
||||
u32 id;
|
||||
} delete_particlespawner;
|
||||
struct{
|
||||
u32 id;
|
||||
u8 type;
|
||||
v2f *pos;
|
||||
std::string *name;
|
||||
v2f *scale;
|
||||
std::string *text;
|
||||
u32 number;
|
||||
u32 item;
|
||||
u32 dir;
|
||||
v2f *align;
|
||||
v2f *offset;
|
||||
} hudadd;
|
||||
struct{
|
||||
u32 id;
|
||||
} hudrm;
|
||||
struct{
|
||||
u32 id;
|
||||
HudElementStat stat;
|
||||
v2f *v2fdata;
|
||||
std::string *sdata;
|
||||
u32 data;
|
||||
} hudchange;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -282,7 +341,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
// Prints a line or two of info
|
||||
void printDebugInfo(std::ostream &os);
|
||||
|
||||
core::list<std::wstring> getConnectedPlayerNames();
|
||||
std::list<std::string> getConnectedPlayerNames();
|
||||
|
||||
float getAnimationTime();
|
||||
|
||||
@@ -326,7 +385,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
bool nodedefReceived()
|
||||
{ return m_nodedef_received; }
|
||||
|
||||
void afterContentReceived();
|
||||
void afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font);
|
||||
|
||||
float getRTT(void);
|
||||
|
||||
@@ -347,7 +406,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
// Insert a media file appropriately into the appropriate manager
|
||||
bool loadMedia(const std::string &data, const std::string &filename);
|
||||
|
||||
void request_media(const core::list<MediaRequest> &file_requests);
|
||||
void request_media(const std::list<MediaRequest> &file_requests);
|
||||
|
||||
// Virtual methods from con::PeerHandler
|
||||
void peerAdded(con::Peer *peer);
|
||||
@@ -377,7 +436,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
MtEventManager *m_event;
|
||||
|
||||
MeshUpdateThread m_mesh_update_thread;
|
||||
core::list<MediaFetchThread*> m_media_fetch_threads;
|
||||
std::list<MediaFetchThread*> m_media_fetch_threads;
|
||||
ClientEnvironment m_env;
|
||||
con::Connection m_con;
|
||||
IrrlichtDevice *m_device;
|
||||
@@ -387,7 +446,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
bool m_inventory_updated;
|
||||
Inventory *m_inventory_from_server;
|
||||
float m_inventory_from_server_age;
|
||||
core::map<v3s16, bool> m_active_blocks;
|
||||
std::set<v3s16> m_active_blocks;
|
||||
PacketCounter m_packetcounter;
|
||||
// Block mesh animation parameters
|
||||
float m_animation_time;
|
||||
@@ -405,7 +464,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
|
||||
Queue<ClientEvent> m_client_event_queue;
|
||||
FileCache m_media_cache;
|
||||
// Mapping from media file name to SHA1 checksum
|
||||
core::map<std::string, std::string> m_media_name_sha1_map;
|
||||
std::map<std::string, std::string> m_media_name_sha1_map;
|
||||
bool m_media_receive_started;
|
||||
u32 m_media_count;
|
||||
u32 m_media_received_count;
|
||||
|
||||
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "profiler.h"
|
||||
#include "settings.h"
|
||||
#include "util/mathconstants.h"
|
||||
#include <algorithm>
|
||||
|
||||
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
|
||||
|
||||
@@ -83,7 +84,7 @@ MapSector * ClientMap::emergeSector(v2s16 p2d)
|
||||
|
||||
{
|
||||
//JMutexAutoLock lock(m_sector_mutex); // Bulk comment-out
|
||||
m_sectors.insert(p2d, sector);
|
||||
m_sectors[p2d] = sector;
|
||||
}
|
||||
|
||||
return sector;
|
||||
@@ -164,11 +165,11 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
|
||||
INodeDefManager *nodemgr = m_gamedef->ndef();
|
||||
|
||||
for(core::map<v3s16, MapBlock*>::Iterator
|
||||
i = m_drawlist.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<v3s16, MapBlock*>::iterator
|
||||
i = m_drawlist.begin();
|
||||
i != m_drawlist.end(); ++i)
|
||||
{
|
||||
MapBlock *block = i.getNode()->getValue();
|
||||
MapBlock *block = i->second;
|
||||
block->refDrop();
|
||||
}
|
||||
m_drawlist.clear();
|
||||
@@ -215,11 +216,11 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
// Blocks from which stuff was actually drawn
|
||||
//u32 blocks_without_stuff = 0;
|
||||
|
||||
for(core::map<v2s16, MapSector*>::Iterator
|
||||
si = m_sectors.getIterator();
|
||||
si.atEnd() == false; si++)
|
||||
for(std::map<v2s16, MapSector*>::iterator
|
||||
si = m_sectors.begin();
|
||||
si != m_sectors.end(); ++si)
|
||||
{
|
||||
MapSector *sector = si.getNode()->getValue();
|
||||
MapSector *sector = si->second;
|
||||
v2s16 sp = sector->getPos();
|
||||
|
||||
if(m_control.range_all == false)
|
||||
@@ -231,7 +232,7 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
continue;
|
||||
}
|
||||
|
||||
core::list< MapBlock * > sectorblocks;
|
||||
std::list< MapBlock * > sectorblocks;
|
||||
sector->getBlocks(sectorblocks);
|
||||
|
||||
/*
|
||||
@@ -240,7 +241,7 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
|
||||
u32 sector_blocks_drawn = 0;
|
||||
|
||||
core::list< MapBlock * >::Iterator i;
|
||||
std::list< MapBlock * >::iterator i;
|
||||
for(i=sectorblocks.begin(); i!=sectorblocks.end(); i++)
|
||||
{
|
||||
MapBlock *block = *i;
|
||||
@@ -350,7 +351,7 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
} // foreach sectorblocks
|
||||
|
||||
if(sector_blocks_drawn != 0)
|
||||
m_last_drawn_sectors[sp] = true;
|
||||
m_last_drawn_sectors.insert(sp);
|
||||
}
|
||||
|
||||
m_control.blocks_would_have_drawn = blocks_would_have_drawn;
|
||||
@@ -368,12 +369,12 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
|
||||
struct MeshBufList
|
||||
{
|
||||
video::SMaterial m;
|
||||
core::list<scene::IMeshBuffer*> bufs;
|
||||
std::list<scene::IMeshBuffer*> bufs;
|
||||
};
|
||||
|
||||
struct MeshBufListList
|
||||
{
|
||||
core::list<MeshBufList> lists;
|
||||
std::list<MeshBufList> lists;
|
||||
|
||||
void clear()
|
||||
{
|
||||
@@ -382,8 +383,8 @@ struct MeshBufListList
|
||||
|
||||
void add(scene::IMeshBuffer *buf)
|
||||
{
|
||||
for(core::list<MeshBufList>::Iterator i = lists.begin();
|
||||
i != lists.end(); i++){
|
||||
for(std::list<MeshBufList>::iterator i = lists.begin();
|
||||
i != lists.end(); ++i){
|
||||
MeshBufList &l = *i;
|
||||
if(l.m == buf->getMaterial()){
|
||||
l.bufs.push_back(buf);
|
||||
@@ -487,11 +488,11 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
||||
|
||||
MeshBufListList drawbufs;
|
||||
|
||||
for(core::map<v3s16, MapBlock*>::Iterator
|
||||
i = m_drawlist.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<v3s16, MapBlock*>::iterator
|
||||
i = m_drawlist.begin();
|
||||
i != m_drawlist.end(); ++i)
|
||||
{
|
||||
MapBlock *block = i.getNode()->getValue();
|
||||
MapBlock *block = i->second;
|
||||
|
||||
// If the mesh of the block happened to get deleted, ignore it
|
||||
if(block->mesh == NULL)
|
||||
@@ -569,11 +570,11 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
||||
}
|
||||
}
|
||||
|
||||
core::list<MeshBufList> &lists = drawbufs.lists;
|
||||
std::list<MeshBufList> &lists = drawbufs.lists;
|
||||
|
||||
int timecheck_counter = 0;
|
||||
for(core::list<MeshBufList>::Iterator i = lists.begin();
|
||||
i != lists.end(); i++)
|
||||
for(std::list<MeshBufList>::iterator i = lists.begin();
|
||||
i != lists.end(); ++i)
|
||||
{
|
||||
{
|
||||
timecheck_counter++;
|
||||
@@ -595,8 +596,8 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
||||
|
||||
driver->setMaterial(list.m);
|
||||
|
||||
for(core::list<scene::IMeshBuffer*>::Iterator j = list.bufs.begin();
|
||||
j != list.bufs.end(); j++)
|
||||
for(std::list<scene::IMeshBuffer*>::iterator j = list.bufs.begin();
|
||||
j != list.bufs.end(); ++j)
|
||||
{
|
||||
scene::IMeshBuffer *buf = *j;
|
||||
driver->drawMeshBuffer(buf);
|
||||
@@ -769,7 +770,7 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
|
||||
float sunlight_min_d = max_d*0.8;
|
||||
if(sunlight_min_d > 35*BS)
|
||||
sunlight_min_d = 35*BS;
|
||||
core::array<int> values;
|
||||
std::vector<int> values;
|
||||
for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){
|
||||
v3f z_dir = z_directions[i];
|
||||
z_dir.normalize();
|
||||
@@ -798,7 +799,7 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
|
||||
}
|
||||
int brightness_sum = 0;
|
||||
int brightness_count = 0;
|
||||
values.sort();
|
||||
std::sort(values.begin(), values.end());
|
||||
u32 num_values_to_use = values.size();
|
||||
if(num_values_to_use >= 10)
|
||||
num_values_to_use -= num_values_to_use/2;
|
||||
|
||||
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
#include "irrlichttypes_extrabloated.h"
|
||||
#include "map.h"
|
||||
#include <set>
|
||||
#include <map>
|
||||
|
||||
struct MapDrawControl
|
||||
{
|
||||
@@ -128,7 +130,7 @@ class ClientMap : public Map, public scene::ISceneNode
|
||||
// Check if sector was drawn on last render()
|
||||
bool sectorWasDrawn(v2s16 p)
|
||||
{
|
||||
return (m_last_drawn_sectors.find(p) != NULL);
|
||||
return (m_last_drawn_sectors.find(p) != m_last_drawn_sectors.end());
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -143,9 +145,9 @@ class ClientMap : public Map, public scene::ISceneNode
|
||||
f32 m_camera_fov;
|
||||
JMutex m_camera_mutex;
|
||||
|
||||
core::map<v3s16, MapBlock*> m_drawlist;
|
||||
std::map<v3s16, MapBlock*> m_drawlist;
|
||||
|
||||
core::map<v2s16, bool> m_last_drawn_sectors;
|
||||
std::set<v2s16> m_last_drawn_sectors;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -43,9 +43,9 @@ ClientActiveObject* ClientActiveObject::create(u8 type, IGameDef *gamedef,
|
||||
ClientEnvironment *env)
|
||||
{
|
||||
// Find factory function
|
||||
core::map<u16, Factory>::Node *n;
|
||||
std::map<u16, Factory>::iterator n;
|
||||
n = m_types.find(type);
|
||||
if(n == NULL)
|
||||
if(n == m_types.end())
|
||||
{
|
||||
// If factory is not found, just return.
|
||||
dstream<<"WARNING: ClientActiveObject: No factory for type="
|
||||
@@ -53,18 +53,18 @@ ClientActiveObject* ClientActiveObject::create(u8 type, IGameDef *gamedef,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Factory f = n->getValue();
|
||||
Factory f = n->second;
|
||||
ClientActiveObject *object = (*f)(gamedef, env);
|
||||
return object;
|
||||
}
|
||||
|
||||
void ClientActiveObject::registerType(u16 type, Factory f)
|
||||
{
|
||||
core::map<u16, Factory>::Node *n;
|
||||
std::map<u16, Factory>::iterator n;
|
||||
n = m_types.find(type);
|
||||
if(n)
|
||||
if(n != m_types.end())
|
||||
return;
|
||||
m_types.insert(type, f);
|
||||
m_types[type] = f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
#include "irrlichttypes_extrabloated.h"
|
||||
#include "activeobject.h"
|
||||
#include <map>
|
||||
|
||||
/*
|
||||
|
||||
@@ -96,7 +97,7 @@ class ClientActiveObject : public ActiveObject
|
||||
ClientEnvironment *m_env;
|
||||
private:
|
||||
// Used for creating objects based on type
|
||||
static core::map<u16, Factory> m_types;
|
||||
static std::map<u16, Factory> m_types;
|
||||
};
|
||||
|
||||
struct DistanceSortedActiveObject
|
||||
@@ -110,7 +111,7 @@ struct DistanceSortedActiveObject
|
||||
d = a_d;
|
||||
}
|
||||
|
||||
bool operator < (DistanceSortedActiveObject &other)
|
||||
bool operator < (const DistanceSortedActiveObject &other) const
|
||||
{
|
||||
return d < other.d;
|
||||
}
|
||||
|
||||
@@ -79,9 +79,25 @@ SharedBuffer<u8> makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed);
|
||||
Serialization format changes
|
||||
PROTOCOL_VERSION 16:
|
||||
TOCLIENT_SHOW_FORMSPEC
|
||||
PROTOCOL_VERSION 17:
|
||||
Serialization format change: include backface_culling flag in TileDef
|
||||
Added rightclickable field in nodedef
|
||||
TOCLIENT_SPAWN_PARTICLE
|
||||
TOCLIENT_ADD_PARTICLESPAWNER
|
||||
TOCLIENT_DELETE_PARTICLESPAWNER
|
||||
PROTOCOL_VERSION 18:
|
||||
damageGroups added to ToolCapabilities
|
||||
sound_place added to ItemDefinition
|
||||
PROTOCOL_VERSION 19:
|
||||
GENERIC_CMD_SET_PHYSICS_OVERRIDE
|
||||
PROTOCOL_VERSION 20:
|
||||
TOCLIENT_HUDADD
|
||||
TOCLIENT_HUDRM
|
||||
TOCLIENT_HUDCHANGE
|
||||
TOCLIENT_HUD_SET_FLAGS
|
||||
*/
|
||||
|
||||
#define LATEST_PROTOCOL_VERSION 16
|
||||
#define LATEST_PROTOCOL_VERSION 20
|
||||
|
||||
// Server's supported network protocol range
|
||||
#define SERVER_PROTOCOL_VERSION_MIN 13
|
||||
@@ -356,6 +372,7 @@ enum ToClientCommand
|
||||
u8[len] name
|
||||
[2] serialized inventory
|
||||
*/
|
||||
|
||||
TOCLIENT_SHOW_FORMSPEC = 0x44,
|
||||
/*
|
||||
[0] u16 command
|
||||
@@ -381,6 +398,96 @@ enum ToClientCommand
|
||||
f1000 movement_liquid_sink
|
||||
f1000 movement_gravity
|
||||
*/
|
||||
|
||||
TOCLIENT_SPAWN_PARTICLE = 0x46,
|
||||
/*
|
||||
u16 command
|
||||
v3f1000 pos
|
||||
v3f1000 velocity
|
||||
v3f1000 acceleration
|
||||
f1000 expirationtime
|
||||
f1000 size
|
||||
u8 bool collisiondetection
|
||||
u32 len
|
||||
u8[len] texture
|
||||
*/
|
||||
|
||||
TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
|
||||
/*
|
||||
u16 command
|
||||
u16 amount
|
||||
f1000 spawntime
|
||||
v3f1000 minpos
|
||||
v3f1000 maxpos
|
||||
v3f1000 minvel
|
||||
v3f1000 maxvel
|
||||
v3f1000 minacc
|
||||
v3f1000 maxacc
|
||||
f1000 minexptime
|
||||
f1000 maxexptime
|
||||
f1000 minsize
|
||||
f1000 maxsize
|
||||
u8 bool collisiondetection
|
||||
u32 len
|
||||
u8[len] texture
|
||||
u32 id
|
||||
*/
|
||||
|
||||
TOCLIENT_DELETE_PARTICLESPAWNER = 0x48,
|
||||
/*
|
||||
u16 command
|
||||
u32 id
|
||||
*/
|
||||
|
||||
TOCLIENT_HUDADD = 0x49,
|
||||
/*
|
||||
u16 command
|
||||
u32 id
|
||||
u8 type
|
||||
v2f1000 pos
|
||||
u32 len
|
||||
u8[len] name
|
||||
v2f1000 scale
|
||||
u32 len2
|
||||
u8[len2] text
|
||||
u32 number
|
||||
u32 item
|
||||
u32 dir
|
||||
v2f1000 align
|
||||
v2f1000 offset
|
||||
*/
|
||||
|
||||
TOCLIENT_HUDRM = 0x4a,
|
||||
/*
|
||||
u16 command
|
||||
u32 id
|
||||
*/
|
||||
|
||||
TOCLIENT_HUDCHANGE = 0x4b,
|
||||
/*
|
||||
u16 command
|
||||
u32 id
|
||||
u8 stat
|
||||
[v2f1000 data |
|
||||
u32 len
|
||||
u8[len] data |
|
||||
u32 data]
|
||||
*/
|
||||
|
||||
TOCLIENT_HUD_SET_FLAGS = 0x4c,
|
||||
/*
|
||||
u16 command
|
||||
u32 flags
|
||||
u32 mask
|
||||
*/
|
||||
|
||||
TOCLIENT_HUD_SET_PARAM = 0x4d,
|
||||
/*
|
||||
u16 command
|
||||
u16 param
|
||||
u16 len
|
||||
u8[len] value
|
||||
*/
|
||||
};
|
||||
|
||||
enum ToServerCommand
|
||||
|
||||
@@ -29,7 +29,8 @@ Clouds::Clouds(
|
||||
scene::ISceneNode* parent,
|
||||
scene::ISceneManager* mgr,
|
||||
s32 id,
|
||||
u32 seed
|
||||
u32 seed,
|
||||
s16 cloudheight
|
||||
):
|
||||
scene::ISceneNode(parent, mgr, id),
|
||||
m_seed(seed),
|
||||
@@ -45,7 +46,8 @@ Clouds::Clouds(
|
||||
//m_material.MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA;
|
||||
m_material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
|
||||
|
||||
m_cloud_y = BS * g_settings->getS16("cloud_height");
|
||||
m_cloud_y = BS * (cloudheight ? cloudheight :
|
||||
g_settings->getS16("cloud_height"));
|
||||
|
||||
m_box = core::aabbox3d<f32>(-BS*1000000,m_cloud_y-BS,-BS*1000000,
|
||||
BS*1000000,m_cloud_y+BS,BS*1000000);
|
||||
|
||||
@@ -30,7 +30,8 @@ class Clouds : public scene::ISceneNode
|
||||
scene::ISceneNode* parent,
|
||||
scene::ISceneManager* mgr,
|
||||
s32 id,
|
||||
u32 seed
|
||||
u32 seed,
|
||||
s16 cloudheight=0
|
||||
);
|
||||
|
||||
~Clouds();
|
||||
|
||||
@@ -23,7 +23,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "nodedef.h"
|
||||
#include "gamedef.h"
|
||||
#include "log.h"
|
||||
#include "environment.h"
|
||||
#include "serverobject.h"
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include "util/timetaker.h"
|
||||
#include "main.h" // g_profiler
|
||||
#include "profiler.h"
|
||||
@@ -186,11 +189,12 @@ bool wouldCollideWithCeiling(
|
||||
}
|
||||
|
||||
|
||||
collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
||||
f32 pos_max_d, const aabb3f &box_0,
|
||||
f32 stepheight, f32 dtime,
|
||||
v3f &pos_f, v3f &speed_f, v3f &accel_f)
|
||||
v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self)
|
||||
{
|
||||
Map *map = &env->getMap();
|
||||
//TimeTaker tt("collisionMoveSimple");
|
||||
ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG);
|
||||
|
||||
@@ -205,16 +209,22 @@ collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
}
|
||||
speed_f += accel_f * dtime;
|
||||
|
||||
// If there is no speed, there are no collisions
|
||||
// If there is no speed, there are no collisions
|
||||
if(speed_f.getLength() == 0)
|
||||
return result;
|
||||
|
||||
// Limit speed for avoiding hangs
|
||||
speed_f.Y=rangelim(speed_f.Y,-5000,5000);
|
||||
speed_f.X=rangelim(speed_f.X,-5000,5000);
|
||||
speed_f.Z=rangelim(speed_f.Z,-5000,5000);
|
||||
|
||||
/*
|
||||
Collect node boxes in movement range
|
||||
*/
|
||||
std::vector<aabb3f> cboxes;
|
||||
std::vector<bool> is_unloaded;
|
||||
std::vector<bool> is_step_up;
|
||||
std::vector<bool> is_object;
|
||||
std::vector<int> bouncy_values;
|
||||
std::vector<v3s16> node_positions;
|
||||
{
|
||||
@@ -256,6 +266,7 @@ collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
is_step_up.push_back(false);
|
||||
bouncy_values.push_back(n_bouncy_value);
|
||||
node_positions.push_back(p);
|
||||
is_object.push_back(false);
|
||||
}
|
||||
}
|
||||
catch(InvalidPositionException &e)
|
||||
@@ -267,14 +278,76 @@ collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
is_step_up.push_back(false);
|
||||
bouncy_values.push_back(0);
|
||||
node_positions.push_back(p);
|
||||
is_object.push_back(false);
|
||||
}
|
||||
}
|
||||
} // tt2
|
||||
|
||||
{
|
||||
ScopeProfiler sp(g_profiler, "collisionMoveSimple objects avg", SPT_AVG);
|
||||
//TimeTaker tt3("collisionMoveSimple collect object boxes");
|
||||
|
||||
/* add object boxes to cboxes */
|
||||
|
||||
|
||||
std::list<ActiveObject*> objects;
|
||||
#ifndef SERVER
|
||||
ClientEnvironment *c_env = dynamic_cast<ClientEnvironment*>(env);
|
||||
if (c_env != 0)
|
||||
{
|
||||
f32 distance = speed_f.getLength();
|
||||
std::vector<DistanceSortedActiveObject> clientobjects;
|
||||
c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects);
|
||||
for (size_t i=0; i < clientobjects.size(); i++)
|
||||
{
|
||||
if ((self == 0) || (self != clientobjects[i].obj)) {
|
||||
objects.push_back((ActiveObject*)clientobjects[i].obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ServerEnvironment *s_env = dynamic_cast<ServerEnvironment*>(env);
|
||||
if (s_env != 0)
|
||||
{
|
||||
f32 distance = speed_f.getLength();
|
||||
std::set<u16> s_objects = s_env->getObjectsInsideRadius(pos_f,distance * 1.5);
|
||||
for (std::set<u16>::iterator iter = s_objects.begin(); iter != s_objects.end(); iter++)
|
||||
{
|
||||
ServerActiveObject *current = s_env->getActiveObject(*iter);
|
||||
if ((self == 0) || (self != current)) {
|
||||
objects.push_back((ActiveObject*)current);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (std::list<ActiveObject*>::const_iterator iter = objects.begin();iter != objects.end(); ++iter)
|
||||
{
|
||||
ActiveObject *object = *iter;
|
||||
|
||||
if (object != NULL)
|
||||
{
|
||||
aabb3f object_collisionbox;
|
||||
if (object->getCollisionBox(&object_collisionbox))
|
||||
{
|
||||
cboxes.push_back(object_collisionbox);
|
||||
is_unloaded.push_back(false);
|
||||
is_step_up.push_back(false);
|
||||
bouncy_values.push_back(0);
|
||||
node_positions.push_back(v3s16(0,0,0));
|
||||
is_object.push_back(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //tt3
|
||||
|
||||
assert(cboxes.size() == is_unloaded.size());
|
||||
assert(cboxes.size() == is_step_up.size());
|
||||
assert(cboxes.size() == bouncy_values.size());
|
||||
assert(cboxes.size() == node_positions.size());
|
||||
assert(cboxes.size() == is_object.size());
|
||||
|
||||
/*
|
||||
Collision detection
|
||||
@@ -386,7 +459,12 @@ collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
is_collision = false;
|
||||
|
||||
CollisionInfo info;
|
||||
info.type = COLLISION_NODE;
|
||||
if (is_object[nearest_boxindex]) {
|
||||
info.type = COLLISION_OBJECT;
|
||||
}
|
||||
else {
|
||||
info.type = COLLISION_NODE;
|
||||
}
|
||||
info.node_p = node_positions[nearest_boxindex];
|
||||
info.bouncy = bouncy;
|
||||
info.old_speed = speed_f;
|
||||
|
||||
@@ -25,10 +25,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
class Map;
|
||||
class IGameDef;
|
||||
class Environment;
|
||||
class ActiveObject;
|
||||
|
||||
enum CollisionType
|
||||
{
|
||||
COLLISION_NODE
|
||||
COLLISION_NODE,
|
||||
COLLISION_OBJECT,
|
||||
};
|
||||
|
||||
struct CollisionInfo
|
||||
@@ -65,10 +68,10 @@ struct collisionMoveResult
|
||||
};
|
||||
|
||||
// Moves using a single iteration; speed should not exceed pos_max_d/dtime
|
||||
collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
|
||||
collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef,
|
||||
f32 pos_max_d, const aabb3f &box_0,
|
||||
f32 stepheight, f32 dtime,
|
||||
v3f &pos_f, v3f &speed_f, v3f &accel_f);
|
||||
v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self=0);
|
||||
|
||||
#if 0
|
||||
// This doesn't seem to work and isn't used
|
||||
|
||||
@@ -76,19 +76,20 @@ SharedBuffer<u8> makeOriginalPacket(
|
||||
return b;
|
||||
}
|
||||
|
||||
core::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
std::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
SharedBuffer<u8> data,
|
||||
u32 chunksize_max,
|
||||
u16 seqnum)
|
||||
{
|
||||
// Chunk packets, containing the TYPE_SPLIT header
|
||||
core::list<SharedBuffer<u8> > chunks;
|
||||
std::list<SharedBuffer<u8> > chunks;
|
||||
|
||||
u32 chunk_header_size = 7;
|
||||
u32 maximum_data_size = chunksize_max - chunk_header_size;
|
||||
u32 start = 0;
|
||||
u32 end = 0;
|
||||
u32 chunk_num = 0;
|
||||
u16 chunk_count = 0;
|
||||
do{
|
||||
end = start + maximum_data_size - 1;
|
||||
if(end > data.getSize() - 1)
|
||||
@@ -106,16 +107,15 @@ core::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
memcpy(&chunk[chunk_header_size], &data[start], payload_size);
|
||||
|
||||
chunks.push_back(chunk);
|
||||
chunk_count++;
|
||||
|
||||
start = end + 1;
|
||||
chunk_num++;
|
||||
}
|
||||
while(end != data.getSize() - 1);
|
||||
|
||||
u16 chunk_count = chunks.getSize();
|
||||
|
||||
core::list<SharedBuffer<u8> >::Iterator i = chunks.begin();
|
||||
for(; i != chunks.end(); i++)
|
||||
for(std::list<SharedBuffer<u8> >::iterator i = chunks.begin();
|
||||
i != chunks.end(); ++i)
|
||||
{
|
||||
// Write chunk_count
|
||||
writeU16(&((*i)[3]), chunk_count);
|
||||
@@ -124,13 +124,13 @@ core::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
return chunks;
|
||||
}
|
||||
|
||||
core::list<SharedBuffer<u8> > makeAutoSplitPacket(
|
||||
std::list<SharedBuffer<u8> > makeAutoSplitPacket(
|
||||
SharedBuffer<u8> data,
|
||||
u32 chunksize_max,
|
||||
u16 &split_seqnum)
|
||||
{
|
||||
u32 original_header_size = 1;
|
||||
core::list<SharedBuffer<u8> > list;
|
||||
std::list<SharedBuffer<u8> > list;
|
||||
if(data.getSize() + original_header_size > chunksize_max)
|
||||
{
|
||||
list = makeSplitPacket(data, chunksize_max, split_seqnum);
|
||||
@@ -170,11 +170,13 @@ SharedBuffer<u8> makeReliablePacket(
|
||||
ReliablePacketBuffer
|
||||
*/
|
||||
|
||||
ReliablePacketBuffer::ReliablePacketBuffer(): m_list_size(0) {}
|
||||
|
||||
void ReliablePacketBuffer::print()
|
||||
{
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++)
|
||||
for(std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
i != m_list.end();
|
||||
++i)
|
||||
{
|
||||
u16 s = readU16(&(i->data[BASE_HEADER_SIZE+1]));
|
||||
dout_con<<s<<" ";
|
||||
@@ -186,13 +188,12 @@ bool ReliablePacketBuffer::empty()
|
||||
}
|
||||
u32 ReliablePacketBuffer::size()
|
||||
{
|
||||
return m_list.getSize();
|
||||
return m_list_size;
|
||||
}
|
||||
RPBSearchResult ReliablePacketBuffer::findPacket(u16 seqnum)
|
||||
{
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++)
|
||||
std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
for(; i != m_list.end(); ++i)
|
||||
{
|
||||
u16 s = readU16(&(i->data[BASE_HEADER_SIZE+1]));
|
||||
/*dout_con<<"findPacket(): finding seqnum="<<seqnum
|
||||
@@ -218,8 +219,8 @@ BufferedPacket ReliablePacketBuffer::popFirst()
|
||||
if(empty())
|
||||
throw NotFoundException("Buffer is empty");
|
||||
BufferedPacket p = *m_list.begin();
|
||||
core::list<BufferedPacket>::Iterator i = m_list.begin();
|
||||
m_list.erase(i);
|
||||
m_list.erase(m_list.begin());
|
||||
--m_list_size;
|
||||
return p;
|
||||
}
|
||||
BufferedPacket ReliablePacketBuffer::popSeqnum(u16 seqnum)
|
||||
@@ -231,6 +232,7 @@ BufferedPacket ReliablePacketBuffer::popSeqnum(u16 seqnum)
|
||||
}
|
||||
BufferedPacket p = *r;
|
||||
m_list.erase(r);
|
||||
--m_list_size;
|
||||
return p;
|
||||
}
|
||||
void ReliablePacketBuffer::insert(BufferedPacket &p)
|
||||
@@ -240,6 +242,7 @@ void ReliablePacketBuffer::insert(BufferedPacket &p)
|
||||
assert(type == TYPE_RELIABLE);
|
||||
u16 seqnum = readU16(&p.data[BASE_HEADER_SIZE+1]);
|
||||
|
||||
++m_list_size;
|
||||
// Find the right place for the packet and insert it there
|
||||
|
||||
// If list is empty, just add it
|
||||
@@ -250,12 +253,12 @@ void ReliablePacketBuffer::insert(BufferedPacket &p)
|
||||
return;
|
||||
}
|
||||
// Otherwise find the right place
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
// Find the first packet in the list which has a higher seqnum
|
||||
for(; i != m_list.end(); i++){
|
||||
for(; i != m_list.end(); ++i){
|
||||
u16 s = readU16(&(i->data[BASE_HEADER_SIZE+1]));
|
||||
if(s == seqnum){
|
||||
--m_list_size;
|
||||
throw AlreadyExistsException("Same seqnum in list");
|
||||
}
|
||||
if(seqnum_higher(s, seqnum)){
|
||||
@@ -271,14 +274,14 @@ void ReliablePacketBuffer::insert(BufferedPacket &p)
|
||||
return;
|
||||
}
|
||||
// Insert before i
|
||||
m_list.insert_before(i, p);
|
||||
m_list.insert(i, p);
|
||||
}
|
||||
|
||||
void ReliablePacketBuffer::incrementTimeouts(float dtime)
|
||||
{
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++){
|
||||
for(std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
i != m_list.end(); ++i)
|
||||
{
|
||||
i->time += dtime;
|
||||
i->totaltime += dtime;
|
||||
}
|
||||
@@ -286,9 +289,9 @@ void ReliablePacketBuffer::incrementTimeouts(float dtime)
|
||||
|
||||
void ReliablePacketBuffer::resetTimedOuts(float timeout)
|
||||
{
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++){
|
||||
for(std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
i != m_list.end(); ++i)
|
||||
{
|
||||
if(i->time >= timeout)
|
||||
i->time = 0.0;
|
||||
}
|
||||
@@ -296,21 +299,20 @@ void ReliablePacketBuffer::resetTimedOuts(float timeout)
|
||||
|
||||
bool ReliablePacketBuffer::anyTotaltimeReached(float timeout)
|
||||
{
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++){
|
||||
for(std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
i != m_list.end(); ++i)
|
||||
{
|
||||
if(i->totaltime >= timeout)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
core::list<BufferedPacket> ReliablePacketBuffer::getTimedOuts(float timeout)
|
||||
std::list<BufferedPacket> ReliablePacketBuffer::getTimedOuts(float timeout)
|
||||
{
|
||||
core::list<BufferedPacket> timed_outs;
|
||||
core::list<BufferedPacket>::Iterator i;
|
||||
i = m_list.begin();
|
||||
for(; i != m_list.end(); i++)
|
||||
std::list<BufferedPacket> timed_outs;
|
||||
for(std::list<BufferedPacket>::iterator i = m_list.begin();
|
||||
i != m_list.end(); ++i)
|
||||
{
|
||||
if(i->time >= timeout)
|
||||
timed_outs.push_back(*i);
|
||||
@@ -324,11 +326,10 @@ core::list<BufferedPacket> ReliablePacketBuffer::getTimedOuts(float timeout)
|
||||
|
||||
IncomingSplitBuffer::~IncomingSplitBuffer()
|
||||
{
|
||||
core::map<u16, IncomingSplitPacket*>::Iterator i;
|
||||
i = m_buf.getIterator();
|
||||
for(; i.atEnd() == false; i++)
|
||||
for(std::map<u16, IncomingSplitPacket*>::iterator i = m_buf.begin();
|
||||
i != m_buf.end(); ++i)
|
||||
{
|
||||
delete i.getNode()->getValue();
|
||||
delete i->second;
|
||||
}
|
||||
}
|
||||
/*
|
||||
@@ -346,7 +347,7 @@ SharedBuffer<u8> IncomingSplitBuffer::insert(BufferedPacket &p, bool reliable)
|
||||
u16 chunk_num = readU16(&p.data[BASE_HEADER_SIZE+5]);
|
||||
|
||||
// Add if doesn't exist
|
||||
if(m_buf.find(seqnum) == NULL)
|
||||
if(m_buf.find(seqnum) == m_buf.end())
|
||||
{
|
||||
IncomingSplitPacket *sp = new IncomingSplitPacket();
|
||||
sp->chunk_count = chunk_count;
|
||||
@@ -369,7 +370,7 @@ SharedBuffer<u8> IncomingSplitBuffer::insert(BufferedPacket &p, bool reliable)
|
||||
// If chunk already exists, ignore it.
|
||||
// Sometimes two identical packets may arrive when there is network
|
||||
// lag and the server re-sends stuff.
|
||||
if(sp->chunks.find(chunk_num) != NULL)
|
||||
if(sp->chunks.find(chunk_num) != sp->chunks.end())
|
||||
return SharedBuffer<u8>();
|
||||
|
||||
// Cut chunk data out of packet
|
||||
@@ -386,11 +387,10 @@ SharedBuffer<u8> IncomingSplitBuffer::insert(BufferedPacket &p, bool reliable)
|
||||
|
||||
// Calculate total size
|
||||
u32 totalsize = 0;
|
||||
core::map<u16, SharedBuffer<u8> >::Iterator i;
|
||||
i = sp->chunks.getIterator();
|
||||
for(; i.atEnd() == false; i++)
|
||||
for(std::map<u16, SharedBuffer<u8> >::iterator i = sp->chunks.begin();
|
||||
i != sp->chunks.end(); ++i)
|
||||
{
|
||||
totalsize += i.getNode()->getValue().getSize();
|
||||
totalsize += i->second.getSize();
|
||||
}
|
||||
|
||||
SharedBuffer<u8> fulldata(totalsize);
|
||||
@@ -407,34 +407,32 @@ SharedBuffer<u8> IncomingSplitBuffer::insert(BufferedPacket &p, bool reliable)
|
||||
}
|
||||
|
||||
// Remove sp from buffer
|
||||
m_buf.remove(seqnum);
|
||||
m_buf.erase(seqnum);
|
||||
delete sp;
|
||||
|
||||
return fulldata;
|
||||
}
|
||||
void IncomingSplitBuffer::removeUnreliableTimedOuts(float dtime, float timeout)
|
||||
{
|
||||
core::list<u16> remove_queue;
|
||||
core::map<u16, IncomingSplitPacket*>::Iterator i;
|
||||
i = m_buf.getIterator();
|
||||
for(; i.atEnd() == false; i++)
|
||||
std::list<u16> remove_queue;
|
||||
for(std::map<u16, IncomingSplitPacket*>::iterator i = m_buf.begin();
|
||||
i != m_buf.end(); ++i)
|
||||
{
|
||||
IncomingSplitPacket *p = i.getNode()->getValue();
|
||||
IncomingSplitPacket *p = i->second;
|
||||
// Reliable ones are not removed by timeout
|
||||
if(p->reliable == true)
|
||||
continue;
|
||||
p->time += dtime;
|
||||
if(p->time >= timeout)
|
||||
remove_queue.push_back(i.getNode()->getKey());
|
||||
remove_queue.push_back(i->first);
|
||||
}
|
||||
core::list<u16>::Iterator j;
|
||||
j = remove_queue.begin();
|
||||
for(; j != remove_queue.end(); j++)
|
||||
for(std::list<u16>::iterator j = remove_queue.begin();
|
||||
j != remove_queue.end(); ++j)
|
||||
{
|
||||
dout_con<<"NOTE: Removing timed out unreliable split packet"
|
||||
<<std::endl;
|
||||
delete m_buf[*j];
|
||||
m_buf.remove(*j);
|
||||
m_buf.erase(*j);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -556,12 +554,11 @@ Connection::~Connection()
|
||||
{
|
||||
stop();
|
||||
// Delete peers
|
||||
for(core::map<u16, Peer*>::Iterator
|
||||
j = m_peers.getIterator();
|
||||
j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator
|
||||
j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
delete peer;
|
||||
delete j->second;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -591,7 +588,7 @@ void * Connection::Thread()
|
||||
|
||||
runTimeouts(dtime);
|
||||
|
||||
while(m_command_queue.size() != 0){
|
||||
while(!m_command_queue.empty()){
|
||||
ConnectionCommand c = m_command_queue.pop_front();
|
||||
processCommand(c);
|
||||
}
|
||||
@@ -648,18 +645,18 @@ void Connection::processCommand(ConnectionCommand &c)
|
||||
|
||||
void Connection::send(float dtime)
|
||||
{
|
||||
for(core::map<u16, Peer*>::Iterator
|
||||
j = m_peers.getIterator();
|
||||
j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator
|
||||
j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
peer->m_sendtime_accu += dtime;
|
||||
peer->m_num_sent = 0;
|
||||
peer->m_max_num_sent = peer->m_sendtime_accu *
|
||||
peer->m_max_packets_per_second;
|
||||
}
|
||||
Queue<OutgoingPacket> postponed_packets;
|
||||
while(m_outgoing_queue.size() != 0){
|
||||
while(!m_outgoing_queue.empty()){
|
||||
OutgoingPacket packet = m_outgoing_queue.pop_front();
|
||||
Peer *peer = getPeerNoEx(packet.peer_id);
|
||||
if(!peer)
|
||||
@@ -674,14 +671,14 @@ void Connection::send(float dtime)
|
||||
postponed_packets.push_back(packet);
|
||||
}
|
||||
}
|
||||
while(postponed_packets.size() != 0){
|
||||
while(!postponed_packets.empty()){
|
||||
m_outgoing_queue.push_back(postponed_packets.pop_front());
|
||||
}
|
||||
for(core::map<u16, Peer*>::Iterator
|
||||
j = m_peers.getIterator();
|
||||
j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator
|
||||
j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
peer->m_sendtime_accu -= (float)peer->m_num_sent /
|
||||
peer->m_max_packets_per_second;
|
||||
if(peer->m_sendtime_accu > 10. / peer->m_max_packets_per_second)
|
||||
@@ -751,11 +748,11 @@ void Connection::receive()
|
||||
Allow only entries that have has_sent_with_id==false.
|
||||
*/
|
||||
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
std::map<u16, Peer*>::iterator j;
|
||||
j = m_peers.begin();
|
||||
for(; j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
if(peer->has_sent_with_id)
|
||||
continue;
|
||||
if(peer->address == sender)
|
||||
@@ -766,14 +763,14 @@ void Connection::receive()
|
||||
If no peer was found with the same address and port,
|
||||
we shall assume it is a new peer and create an entry.
|
||||
*/
|
||||
if(j.atEnd())
|
||||
if(j == m_peers.end())
|
||||
{
|
||||
// Pass on to adding the peer
|
||||
}
|
||||
// Else: A peer was found.
|
||||
else
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
peer_id = peer->id;
|
||||
PrintInfo(derr_con);
|
||||
derr_con<<"WARNING: Assuming unknown peer to be "
|
||||
@@ -797,7 +794,7 @@ void Connection::receive()
|
||||
for(;;)
|
||||
{
|
||||
// Check if exists
|
||||
if(m_peers.find(peer_id_new) == NULL)
|
||||
if(m_peers.find(peer_id_new) == m_peers.end())
|
||||
break;
|
||||
// Check for overflow
|
||||
if(peer_id_new == 65535){
|
||||
@@ -817,7 +814,7 @@ void Connection::receive()
|
||||
|
||||
// Create a peer
|
||||
Peer *peer = new Peer(peer_id_new, sender);
|
||||
m_peers.insert(peer->id, peer);
|
||||
m_peers[peer->id] = peer;
|
||||
|
||||
// Create peer addition event
|
||||
ConnectionEvent e;
|
||||
@@ -837,9 +834,9 @@ void Connection::receive()
|
||||
// Go on and process whatever it sent
|
||||
}
|
||||
|
||||
core::map<u16, Peer*>::Node *node = m_peers.find(peer_id);
|
||||
std::map<u16, Peer*>::iterator node = m_peers.find(peer_id);
|
||||
|
||||
if(node == NULL)
|
||||
if(node == m_peers.end())
|
||||
{
|
||||
// Peer not found
|
||||
// This means that the peer id of the sender is not PEER_ID_INEXISTENT
|
||||
@@ -849,7 +846,7 @@ void Connection::receive()
|
||||
throw InvalidIncomingDataException("Peer not found (possible timeout)");
|
||||
}
|
||||
|
||||
Peer *peer = node->getValue();
|
||||
Peer *peer = node->second;
|
||||
|
||||
// Validate peer address
|
||||
if(peer->address != sender)
|
||||
@@ -902,12 +899,11 @@ void Connection::runTimeouts(float dtime)
|
||||
float congestion_control_min_rate
|
||||
= g_settings->getFloat("congestion_control_min_rate");
|
||||
|
||||
core::list<u16> timeouted_peers;
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
std::list<u16> timeouted_peers;
|
||||
for(std::map<u16, Peer*>::iterator j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
|
||||
// Update congestion control values
|
||||
peer->congestion_control_aim_rtt = congestion_control_aim_rtt;
|
||||
@@ -934,8 +930,7 @@ void Connection::runTimeouts(float dtime)
|
||||
float resend_timeout = peer->resend_timeout;
|
||||
for(u16 i=0; i<CHANNEL_COUNT; i++)
|
||||
{
|
||||
core::list<BufferedPacket> timed_outs;
|
||||
core::list<BufferedPacket>::Iterator j;
|
||||
std::list<BufferedPacket> timed_outs;
|
||||
|
||||
Channel *channel = &peer->channels[i];
|
||||
|
||||
@@ -966,8 +961,8 @@ void Connection::runTimeouts(float dtime)
|
||||
|
||||
channel->outgoing_reliables.resetTimedOuts(resend_timeout);
|
||||
|
||||
j = timed_outs.begin();
|
||||
for(; j != timed_outs.end(); j++)
|
||||
for(std::list<BufferedPacket>::iterator j = timed_outs.begin();
|
||||
j != timed_outs.end(); ++j)
|
||||
{
|
||||
u16 peer_id = readPeerId(*(j->data));
|
||||
u8 channel = readChannel(*(j->data));
|
||||
@@ -1012,8 +1007,8 @@ void Connection::runTimeouts(float dtime)
|
||||
}
|
||||
|
||||
// Remove timed out peers
|
||||
core::list<u16>::Iterator i = timeouted_peers.begin();
|
||||
for(; i != timeouted_peers.end(); i++)
|
||||
for(std::list<u16>::iterator i = timeouted_peers.begin();
|
||||
i != timeouted_peers.end(); ++i)
|
||||
{
|
||||
PrintInfo(derr_con);
|
||||
derr_con<<"RunTimeouts(): Removing peer "<<(*i)<<std::endl;
|
||||
@@ -1041,13 +1036,13 @@ void Connection::connect(Address address)
|
||||
dout_con<<getDesc()<<" connecting to "<<address.serializeString()
|
||||
<<":"<<address.getPort()<<std::endl;
|
||||
|
||||
core::map<u16, Peer*>::Node *node = m_peers.find(PEER_ID_SERVER);
|
||||
if(node != NULL){
|
||||
std::map<u16, Peer*>::iterator node = m_peers.find(PEER_ID_SERVER);
|
||||
if(node != m_peers.end()){
|
||||
throw ConnectionException("Already connected to a server");
|
||||
}
|
||||
|
||||
Peer *peer = new Peer(PEER_ID_SERVER, address);
|
||||
m_peers.insert(peer->id, peer);
|
||||
m_peers[peer->id] = peer;
|
||||
|
||||
// Create event
|
||||
ConnectionEvent e;
|
||||
@@ -1072,22 +1067,20 @@ void Connection::disconnect()
|
||||
writeU8(&data[1], CONTROLTYPE_DISCO);
|
||||
|
||||
// Send to all
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
rawSendAsPacket(peer->id, 0, data, false);
|
||||
}
|
||||
}
|
||||
|
||||
void Connection::sendToAll(u8 channelnum, SharedBuffer<u8> data, bool reliable)
|
||||
{
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
send(peer->id, channelnum, data, reliable);
|
||||
}
|
||||
}
|
||||
@@ -1108,13 +1101,12 @@ void Connection::send(u16 peer_id, u8 channelnum,
|
||||
if(reliable)
|
||||
chunksize_max -= RELIABLE_HEADER_SIZE;
|
||||
|
||||
core::list<SharedBuffer<u8> > originals;
|
||||
std::list<SharedBuffer<u8> > originals;
|
||||
originals = makeAutoSplitPacket(data, chunksize_max,
|
||||
channel->next_outgoing_split_seqnum);
|
||||
|
||||
core::list<SharedBuffer<u8> >::Iterator i;
|
||||
i = originals.begin();
|
||||
for(; i != originals.end(); i++)
|
||||
for(std::list<SharedBuffer<u8> >::iterator i = originals.begin();
|
||||
i != originals.end(); ++i)
|
||||
{
|
||||
SharedBuffer<u8> original = *i;
|
||||
|
||||
@@ -1187,40 +1179,39 @@ void Connection::rawSend(const BufferedPacket &packet)
|
||||
|
||||
Peer* Connection::getPeer(u16 peer_id)
|
||||
{
|
||||
core::map<u16, Peer*>::Node *node = m_peers.find(peer_id);
|
||||
std::map<u16, Peer*>::iterator node = m_peers.find(peer_id);
|
||||
|
||||
if(node == NULL){
|
||||
if(node == m_peers.end()){
|
||||
throw PeerNotFoundException("GetPeer: Peer not found (possible timeout)");
|
||||
}
|
||||
|
||||
// Error checking
|
||||
assert(node->getValue()->id == peer_id);
|
||||
assert(node->second->id == peer_id);
|
||||
|
||||
return node->getValue();
|
||||
return node->second;
|
||||
}
|
||||
|
||||
Peer* Connection::getPeerNoEx(u16 peer_id)
|
||||
{
|
||||
core::map<u16, Peer*>::Node *node = m_peers.find(peer_id);
|
||||
std::map<u16, Peer*>::iterator node = m_peers.find(peer_id);
|
||||
|
||||
if(node == NULL){
|
||||
if(node == m_peers.end()){
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Error checking
|
||||
assert(node->getValue()->id == peer_id);
|
||||
assert(node->second->id == peer_id);
|
||||
|
||||
return node->getValue();
|
||||
return node->second;
|
||||
}
|
||||
|
||||
core::list<Peer*> Connection::getPeers()
|
||||
std::list<Peer*> Connection::getPeers()
|
||||
{
|
||||
core::list<Peer*> list;
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
std::list<Peer*> list;
|
||||
for(std::map<u16, Peer*>::iterator j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
list.push_back(peer);
|
||||
}
|
||||
return list;
|
||||
@@ -1228,11 +1219,10 @@ core::list<Peer*> Connection::getPeers()
|
||||
|
||||
bool Connection::getFromBuffers(u16 &peer_id, SharedBuffer<u8> &dst)
|
||||
{
|
||||
core::map<u16, Peer*>::Iterator j;
|
||||
j = m_peers.getIterator();
|
||||
for(; j.atEnd() == false; j++)
|
||||
for(std::map<u16, Peer*>::iterator j = m_peers.begin();
|
||||
j != m_peers.end(); ++j)
|
||||
{
|
||||
Peer *peer = j.getNode()->getValue();
|
||||
Peer *peer = j->second;
|
||||
for(u16 i=0; i<CHANNEL_COUNT; i++)
|
||||
{
|
||||
Channel *channel = &peer->channels[i];
|
||||
@@ -1538,7 +1528,7 @@ SharedBuffer<u8> Connection::processPacket(Channel *channel,
|
||||
|
||||
bool Connection::deletePeer(u16 peer_id, bool timeout)
|
||||
{
|
||||
if(m_peers.find(peer_id) == NULL)
|
||||
if(m_peers.find(peer_id) == m_peers.end())
|
||||
return false;
|
||||
|
||||
Peer *peer = m_peers[peer_id];
|
||||
@@ -1549,7 +1539,7 @@ bool Connection::deletePeer(u16 peer_id, bool timeout)
|
||||
putEvent(e);
|
||||
|
||||
delete m_peers[peer_id];
|
||||
m_peers.remove(peer_id);
|
||||
m_peers.erase(peer_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1557,7 +1547,7 @@ bool Connection::deletePeer(u16 peer_id, bool timeout)
|
||||
|
||||
ConnectionEvent Connection::getEvent()
|
||||
{
|
||||
if(m_event_queue.size() == 0){
|
||||
if(m_event_queue.empty()){
|
||||
ConnectionEvent e;
|
||||
e.type = CONNEVENT_NONE;
|
||||
return e;
|
||||
@@ -1602,8 +1592,8 @@ bool Connection::Connected()
|
||||
if(m_peers.size() != 1)
|
||||
return false;
|
||||
|
||||
core::map<u16, Peer*>::Node *node = m_peers.find(PEER_ID_SERVER);
|
||||
if(node == NULL)
|
||||
std::map<u16, Peer*>::iterator node = m_peers.find(PEER_ID_SERVER);
|
||||
if(node == m_peers.end())
|
||||
return false;
|
||||
|
||||
if(m_peer_id == PEER_ID_INEXISTENT)
|
||||
|
||||
@@ -29,6 +29,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "util/thread.h"
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <list>
|
||||
#include <map>
|
||||
|
||||
namespace con
|
||||
{
|
||||
@@ -142,14 +144,14 @@ SharedBuffer<u8> makeOriginalPacket(
|
||||
SharedBuffer<u8> data);
|
||||
|
||||
// Split data in chunks and add TYPE_SPLIT headers to them
|
||||
core::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
std::list<SharedBuffer<u8> > makeSplitPacket(
|
||||
SharedBuffer<u8> data,
|
||||
u32 chunksize_max,
|
||||
u16 seqnum);
|
||||
|
||||
// Depending on size, make a TYPE_ORIGINAL or TYPE_SPLIT packet
|
||||
// Increments split_seqnum if a split packet is made
|
||||
core::list<SharedBuffer<u8> > makeAutoSplitPacket(
|
||||
std::list<SharedBuffer<u8> > makeAutoSplitPacket(
|
||||
SharedBuffer<u8> data,
|
||||
u32 chunksize_max,
|
||||
u16 &split_seqnum);
|
||||
@@ -167,7 +169,7 @@ struct IncomingSplitPacket
|
||||
reliable = false;
|
||||
}
|
||||
// Key is chunk number, value is data without headers
|
||||
core::map<u16, SharedBuffer<u8> > chunks;
|
||||
std::map<u16, SharedBuffer<u8> > chunks;
|
||||
u32 chunk_count;
|
||||
float time; // Seconds from adding
|
||||
bool reliable; // If true, isn't deleted on timeout
|
||||
@@ -268,12 +270,12 @@ with a buffer in the receiving and transmitting end.
|
||||
for fast access to the smallest one.
|
||||
*/
|
||||
|
||||
typedef core::list<BufferedPacket>::Iterator RPBSearchResult;
|
||||
typedef std::list<BufferedPacket>::iterator RPBSearchResult;
|
||||
|
||||
class ReliablePacketBuffer
|
||||
{
|
||||
public:
|
||||
|
||||
ReliablePacketBuffer();
|
||||
void print();
|
||||
bool empty();
|
||||
u32 size();
|
||||
@@ -286,10 +288,11 @@ class ReliablePacketBuffer
|
||||
void incrementTimeouts(float dtime);
|
||||
void resetTimedOuts(float timeout);
|
||||
bool anyTotaltimeReached(float timeout);
|
||||
core::list<BufferedPacket> getTimedOuts(float timeout);
|
||||
std::list<BufferedPacket> getTimedOuts(float timeout);
|
||||
|
||||
private:
|
||||
core::list<BufferedPacket> m_list;
|
||||
std::list<BufferedPacket> m_list;
|
||||
u16 m_list_size;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -310,7 +313,7 @@ class IncomingSplitBuffer
|
||||
|
||||
private:
|
||||
// Key is seqnum
|
||||
core::map<u16, IncomingSplitPacket*> m_buf;
|
||||
std::map<u16, IncomingSplitPacket*> m_buf;
|
||||
};
|
||||
|
||||
class Connection;
|
||||
@@ -589,7 +592,7 @@ class Connection: public SimpleThread
|
||||
void rawSend(const BufferedPacket &packet);
|
||||
Peer* getPeer(u16 peer_id);
|
||||
Peer* getPeerNoEx(u16 peer_id);
|
||||
core::list<Peer*> getPeers();
|
||||
std::list<Peer*> getPeers();
|
||||
bool getFromBuffers(u16 &peer_id, SharedBuffer<u8> &dst);
|
||||
// Returns next data from a buffer if possible
|
||||
// If found, returns true; if not, false.
|
||||
@@ -619,7 +622,7 @@ class Connection: public SimpleThread
|
||||
UDPSocket m_socket;
|
||||
u16 m_peer_id;
|
||||
|
||||
core::map<u16, Peer*> m_peers;
|
||||
std::map<u16, Peer*> m_peers;
|
||||
JMutex m_peers_mutex;
|
||||
|
||||
// Backwards compatibility
|
||||
|
||||
@@ -51,11 +51,15 @@ class GrowGrassABM : public ActiveBlockModifier
|
||||
ServerMap *map = &env->getServerMap();
|
||||
|
||||
MapNode n_top = map->getNodeNoEx(p+v3s16(0,1,0));
|
||||
content_t c_snow = ndef->getId("snow");
|
||||
if(ndef->get(n_top).light_propagates &&
|
||||
!ndef->get(n_top).isLiquid() &&
|
||||
n_top.getLightBlend(env->getDayNightRatio(), ndef) >= 13)
|
||||
{
|
||||
n.setContent(ndef->getId("mapgen_dirt_with_grass"));
|
||||
if(c_snow != CONTENT_IGNORE && n_top.getContent() == c_snow)
|
||||
n.setContent(ndef->getId("dirt_with_snow"));
|
||||
else
|
||||
n.setContent(ndef->getId("mapgen_dirt_with_grass"));
|
||||
map->addNodeWithEvent(p, n);
|
||||
}
|
||||
}
|
||||
@@ -94,11 +98,18 @@ class RemoveGrassABM : public ActiveBlockModifier
|
||||
class MakeTreesFromSaplingsABM : public ActiveBlockModifier
|
||||
{
|
||||
private:
|
||||
content_t c_junglesapling;
|
||||
|
||||
public:
|
||||
MakeTreesFromSaplingsABM(ServerEnvironment *env, INodeDefManager *nodemgr) {
|
||||
c_junglesapling = nodemgr->getId("junglesapling");
|
||||
}
|
||||
|
||||
virtual std::set<std::string> getTriggerContents()
|
||||
{
|
||||
std::set<std::string> s;
|
||||
s.insert("sapling");
|
||||
s.insert("junglesapling");
|
||||
return s;
|
||||
}
|
||||
virtual float getTriggerInterval()
|
||||
@@ -111,37 +122,45 @@ class MakeTreesFromSaplingsABM : public ActiveBlockModifier
|
||||
INodeDefManager *ndef = env->getGameDef()->ndef();
|
||||
ServerMap *map = &env->getServerMap();
|
||||
|
||||
actionstream<<"A sapling grows into a tree at "
|
||||
<<PP(p)<<std::endl;
|
||||
MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0));
|
||||
if (!((ItemGroupList) ndef->get(n_below).groups)["soil"])
|
||||
return;
|
||||
|
||||
bool is_jungle_tree = n.getContent() == c_junglesapling;
|
||||
|
||||
actionstream <<"A " << (is_jungle_tree ? "jungle " : "")
|
||||
<< "sapling grows into a tree at "
|
||||
<< PP(p) << std::endl;
|
||||
|
||||
core::map<v3s16, MapBlock*> modified_blocks;
|
||||
std::map<v3s16, MapBlock*> modified_blocks;
|
||||
v3s16 tree_p = p;
|
||||
ManualMapVoxelManipulator vmanip(map);
|
||||
v3s16 tree_blockp = getNodeBlockPos(tree_p);
|
||||
vmanip.initialEmerge(tree_blockp - v3s16(1,1,1), tree_blockp + v3s16(1,1,1));
|
||||
bool is_apple_tree = myrand()%4 == 0;
|
||||
treegen::make_tree(vmanip, tree_p, is_apple_tree, ndef, myrand());
|
||||
|
||||
if (is_jungle_tree) {
|
||||
treegen::make_jungletree(vmanip, tree_p, ndef, myrand());
|
||||
} else {
|
||||
bool is_apple_tree = myrand() % 4 == 0;
|
||||
treegen::make_tree(vmanip, tree_p, is_apple_tree, ndef, myrand());
|
||||
}
|
||||
|
||||
vmanip.blitBackAll(&modified_blocks);
|
||||
|
||||
// update lighting
|
||||
core::map<v3s16, MapBlock*> lighting_modified_blocks;
|
||||
for(core::map<v3s16, MapBlock*>::Iterator
|
||||
i = modified_blocks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
{
|
||||
lighting_modified_blocks.insert(i.getNode()->getKey(), i.getNode()->getValue());
|
||||
}
|
||||
std::map<v3s16, MapBlock*> lighting_modified_blocks;
|
||||
lighting_modified_blocks.insert(modified_blocks.begin(), modified_blocks.end());
|
||||
map->updateLighting(lighting_modified_blocks, modified_blocks);
|
||||
|
||||
// Send a MEET_OTHER event
|
||||
MapEditEvent event;
|
||||
event.type = MEET_OTHER;
|
||||
for(core::map<v3s16, MapBlock*>::Iterator
|
||||
i = modified_blocks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
// event.modified_blocks.insert(modified_blocks.begin(), modified_blocks.end());
|
||||
for(std::map<v3s16, MapBlock*>::iterator
|
||||
i = modified_blocks.begin();
|
||||
i != modified_blocks.end(); ++i)
|
||||
{
|
||||
v3s16 p = i.getNode()->getKey();
|
||||
event.modified_blocks.insert(p, true);
|
||||
event.modified_blocks.insert(i->first);
|
||||
}
|
||||
map->dispatchEvent(&event);
|
||||
}
|
||||
@@ -172,17 +191,58 @@ class LiquidFlowABM : public ActiveBlockModifier
|
||||
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n)
|
||||
{
|
||||
ServerMap *map = &env->getServerMap();
|
||||
if (map->transforming_liquid_size() < 500)
|
||||
map->transforming_liquid_add(p);
|
||||
if (map->transforming_liquid_size() > 500)
|
||||
return;
|
||||
map->transforming_liquid_add(p);
|
||||
//if ((*map).m_transforming_liquid.size() < 500) (*map).m_transforming_liquid.push_back(p);
|
||||
}
|
||||
};
|
||||
|
||||
class LiquidDropABM : public ActiveBlockModifier
|
||||
{
|
||||
private:
|
||||
std::set<std::string> contents;
|
||||
|
||||
public:
|
||||
LiquidDropABM(ServerEnvironment *env, INodeDefManager *nodemgr)
|
||||
{
|
||||
std::set<content_t> liquids;
|
||||
nodemgr->getIds("group:liquid", liquids);
|
||||
for(std::set<content_t>::const_iterator k = liquids.begin(); k != liquids.end(); k++)
|
||||
contents.insert(nodemgr->get(*k).liquid_alternative_source);
|
||||
}
|
||||
virtual std::set<std::string> getTriggerContents()
|
||||
{ return contents; }
|
||||
virtual std::set<std::string> getRequiredNeighbors()
|
||||
{
|
||||
std::set<std::string> neighbors;
|
||||
neighbors.insert("mapgen_air");
|
||||
return neighbors;
|
||||
}
|
||||
virtual float getTriggerInterval()
|
||||
{ return 20.0; }
|
||||
virtual u32 getTriggerChance()
|
||||
{ return 10; }
|
||||
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n)
|
||||
{
|
||||
ServerMap *map = &env->getServerMap();
|
||||
if (map->transforming_liquid_size() > 500)
|
||||
return;
|
||||
//todo: look around except top
|
||||
MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0));
|
||||
if (n_below.getContent() != CONTENT_AIR)
|
||||
return;
|
||||
map->transforming_liquid_add(p);
|
||||
}
|
||||
};
|
||||
|
||||
void add_legacy_abms(ServerEnvironment *env, INodeDefManager *nodedef)
|
||||
{
|
||||
env->addActiveBlockModifier(new GrowGrassABM());
|
||||
env->addActiveBlockModifier(new RemoveGrassABM());
|
||||
env->addActiveBlockModifier(new MakeTreesFromSaplingsABM());
|
||||
if (g_settings->getBool("liquid_finite"))
|
||||
env->addActiveBlockModifier(new MakeTreesFromSaplingsABM(env, nodedef));
|
||||
if (g_settings->getBool("liquid_finite")) {
|
||||
env->addActiveBlockModifier(new LiquidFlowABM(env, nodedef));
|
||||
env->addActiveBlockModifier(new LiquidDropABM(env, nodedef));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ struct ToolCapabilities;
|
||||
|
||||
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
|
||||
|
||||
core::map<u16, ClientActiveObject::Factory> ClientActiveObject::m_types;
|
||||
std::map<u16, ClientActiveObject::Factory> ClientActiveObject::m_types;
|
||||
|
||||
/*
|
||||
SmoothTranslator
|
||||
@@ -174,6 +174,7 @@ class TestCAO : public ClientActiveObject
|
||||
|
||||
void processMessage(const std::string &data);
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) { return false; }
|
||||
private:
|
||||
scene::IMeshSceneNode *m_node;
|
||||
v3f m_position;
|
||||
@@ -329,6 +330,7 @@ class ItemCAO : public ClientActiveObject
|
||||
std::string infoText()
|
||||
{return m_infotext;}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) { return false; }
|
||||
private:
|
||||
core::aabbox3d<f32> m_selection_box;
|
||||
scene::IMeshSceneNode *m_node;
|
||||
@@ -643,6 +645,22 @@ class GenericCAO : public ClientActiveObject
|
||||
ClientActiveObject::registerType(getType(), create);
|
||||
}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) {
|
||||
if (m_prop.physical) {
|
||||
aabb3f retval;
|
||||
//update collision box
|
||||
toset->MinEdge = m_prop.collisionbox.MinEdge * BS;
|
||||
toset->MaxEdge = m_prop.collisionbox.MaxEdge * BS;
|
||||
|
||||
toset->MinEdge += m_position;
|
||||
toset->MaxEdge += m_position;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void initialize(const std::string &data)
|
||||
{
|
||||
infostream<<"GenericCAO: Got init data"<<std::endl;
|
||||
@@ -690,11 +708,15 @@ class GenericCAO : public ClientActiveObject
|
||||
if(player && player->isLocal()){
|
||||
m_is_local_player = true;
|
||||
}
|
||||
m_env->addPlayerName(m_name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
~GenericCAO()
|
||||
{
|
||||
if(m_is_player){
|
||||
m_env->removePlayerName(m_name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
static ClientActiveObject* create(IGameDef *gamedef, ClientEnvironment *env)
|
||||
@@ -842,7 +864,7 @@ class GenericCAO : public ClientActiveObject
|
||||
m_spritenode = smgr->addBillboardSceneNode(
|
||||
NULL, v2f(1, 1), v3f(0,0,0), -1);
|
||||
m_spritenode->setMaterialTexture(0,
|
||||
tsrc->getTextureRaw("unknown_block.png"));
|
||||
tsrc->getTextureRaw("unknown_node.png"));
|
||||
m_spritenode->setMaterialFlag(video::EMF_LIGHTING, false);
|
||||
m_spritenode->setMaterialFlag(video::EMF_BILINEAR_FILTER, false);
|
||||
m_spritenode->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF);
|
||||
@@ -1111,6 +1133,7 @@ class GenericCAO : public ClientActiveObject
|
||||
{
|
||||
LocalPlayer *player = m_env->getLocalPlayer();
|
||||
player->overridePosition = getParent()->getPosition();
|
||||
m_env->getLocalPlayer()->parent = getParent();
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1127,10 +1150,9 @@ class GenericCAO : public ClientActiveObject
|
||||
v3f p_pos = m_position;
|
||||
v3f p_velocity = m_velocity;
|
||||
v3f p_acceleration = m_acceleration;
|
||||
IGameDef *gamedef = env->getGameDef();
|
||||
moveresult = collisionMoveSimple(&env->getMap(), gamedef,
|
||||
moveresult = collisionMoveSimple(env,env->getGameDef(),
|
||||
pos_max_d, box, stepheight, dtime,
|
||||
p_pos, p_velocity, p_acceleration);
|
||||
p_pos, p_velocity, p_acceleration,this);
|
||||
// Apply results
|
||||
m_position = p_pos;
|
||||
m_velocity = p_velocity;
|
||||
@@ -1246,7 +1268,7 @@ class GenericCAO : public ClientActiveObject
|
||||
{
|
||||
if(m_prop.visual == "sprite")
|
||||
{
|
||||
std::string texturestring = "unknown_block.png";
|
||||
std::string texturestring = "unknown_node.png";
|
||||
if(m_prop.textures.size() >= 1)
|
||||
texturestring = m_prop.textures[0];
|
||||
texturestring += mod;
|
||||
@@ -1312,7 +1334,7 @@ class GenericCAO : public ClientActiveObject
|
||||
{
|
||||
for (u32 i = 0; i < 6; ++i)
|
||||
{
|
||||
std::string texturestring = "unknown_block.png";
|
||||
std::string texturestring = "unknown_node.png";
|
||||
if(m_prop.textures.size() > i)
|
||||
texturestring = m_prop.textures[i];
|
||||
texturestring += mod;
|
||||
@@ -1661,6 +1683,19 @@ class GenericCAO : public ClientActiveObject
|
||||
|
||||
updateTexturePos();
|
||||
}
|
||||
else if(cmd == GENERIC_CMD_SET_PHYSICS_OVERRIDE)
|
||||
{
|
||||
float override_speed = readF1000(is);
|
||||
float override_jump = readF1000(is);
|
||||
float override_gravity = readF1000(is);
|
||||
if(m_is_local_player)
|
||||
{
|
||||
LocalPlayer *player = m_env->getLocalPlayer();
|
||||
player->physics_override_speed = override_speed;
|
||||
player->physics_override_jump = override_jump;
|
||||
player->physics_override_gravity = override_gravity;
|
||||
}
|
||||
}
|
||||
else if(cmd == GENERIC_CMD_SET_ANIMATION)
|
||||
{
|
||||
m_animation_range = readV2F1000(is);
|
||||
|
||||
@@ -42,14 +42,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
// (compatible with ContentFeatures). If you specified 0,0,1,1
|
||||
// for each face, that would be the same as passing NULL.
|
||||
void makeCuboid(MeshCollector *collector, const aabb3f &box,
|
||||
const TileSpec *tiles, int tilecount,
|
||||
TileSpec *tiles, int tilecount,
|
||||
video::SColor &c, const f32* txc)
|
||||
{
|
||||
assert(tilecount >= 1 && tilecount <= 6);
|
||||
|
||||
v3f min = box.MinEdge;
|
||||
v3f max = box.MaxEdge;
|
||||
|
||||
|
||||
|
||||
|
||||
if(txc == NULL)
|
||||
{
|
||||
static const f32 txc_default[24] = {
|
||||
@@ -97,15 +99,70 @@ void makeCuboid(MeshCollector *collector, const aabb3f &box,
|
||||
video::S3DVertex(min.X,min.Y,min.Z, 0,0,-1, c, txc[20],txc[23]),
|
||||
};
|
||||
|
||||
for(s32 j=0; j<24; j++)
|
||||
v2f t;
|
||||
for(int i = 0; i < tilecount; i++)
|
||||
{
|
||||
switch (tiles[i].rotation)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1: //R90
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(90,irr::core::vector2df(0, 0));
|
||||
break;
|
||||
case 2: //R180
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(180,irr::core::vector2df(0, 0));
|
||||
break;
|
||||
case 3: //R270
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(270,irr::core::vector2df(0, 0));
|
||||
break;
|
||||
case 4: //FXR90
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(90,irr::core::vector2df(0, 0));
|
||||
|
||||
tiles[i].texture.pos.Y += tiles[i].texture.size.Y;
|
||||
tiles[i].texture.size.Y *= -1;
|
||||
break;
|
||||
case 5: //FXR270
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(270,irr::core::vector2df(0, 0));
|
||||
t=vertices[i*4].TCoords;
|
||||
tiles[i].texture.pos.Y += tiles[i].texture.size.Y;
|
||||
tiles[i].texture.size.Y *= -1;
|
||||
break;
|
||||
case 6: //FYR90
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(90,irr::core::vector2df(0, 0));
|
||||
tiles[i].texture.pos.X += tiles[i].texture.size.X;
|
||||
tiles[i].texture.size.X *= -1;
|
||||
break;
|
||||
case 7: //FYR270
|
||||
for (int x = 0; x < 4; x++)
|
||||
vertices[i*4+x].TCoords.rotateBy(270,irr::core::vector2df(0, 0));
|
||||
tiles[i].texture.pos.X += tiles[i].texture.size.X;
|
||||
tiles[i].texture.size.X *= -1;
|
||||
break;
|
||||
case 8: //FX
|
||||
tiles[i].texture.pos.Y += tiles[i].texture.size.Y;
|
||||
tiles[i].texture.size.Y *= -1;
|
||||
break;
|
||||
case 9: //FY
|
||||
tiles[i].texture.pos.X += tiles[i].texture.size.X;
|
||||
tiles[i].texture.size.X *= -1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
for(s32 j=0; j<24; j++)
|
||||
{
|
||||
int tileindex = MYMIN(j/4, tilecount-1);
|
||||
vertices[j].TCoords *= tiles[tileindex].texture.size;
|
||||
vertices[j].TCoords += tiles[tileindex].texture.pos;
|
||||
}
|
||||
|
||||
u16 indices[] = {0,1,2,2,3,0};
|
||||
|
||||
// Add to mesh collector
|
||||
for(s32 j=0; j<24; j+=4)
|
||||
{
|
||||
@@ -160,18 +217,145 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
Add water sources to mesh if using new style
|
||||
*/
|
||||
TileSpec tile_liquid = f.special_tiles[0];
|
||||
TileSpec tile_liquid_bfculled = getNodeTile(n, p, v3s16(0,0,0), data);
|
||||
AtlasPointer &pa_liquid = tile_liquid.texture;
|
||||
|
||||
bool top_is_air = false;
|
||||
MapNode n = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(x,y+1,z));
|
||||
if(n.getContent() == CONTENT_AIR)
|
||||
top_is_air = true;
|
||||
|
||||
if(top_is_air == false)
|
||||
continue;
|
||||
bool top_is_same_liquid = false;
|
||||
MapNode ntop = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(x,y+1,z));
|
||||
content_t c_flowing = nodedef->getId(f.liquid_alternative_flowing);
|
||||
content_t c_source = nodedef->getId(f.liquid_alternative_source);
|
||||
if(ntop.getContent() == c_flowing || ntop.getContent() == c_source)
|
||||
top_is_same_liquid = true;
|
||||
|
||||
u16 l = getInteriorLight(n, 0, data);
|
||||
video::SColor c = MapBlock_LightColor(f.alpha, l, decode_light(f.light_source));
|
||||
|
||||
/*
|
||||
Generate sides
|
||||
*/
|
||||
v3s16 side_dirs[4] = {
|
||||
v3s16(1,0,0),
|
||||
v3s16(-1,0,0),
|
||||
v3s16(0,0,1),
|
||||
v3s16(0,0,-1),
|
||||
};
|
||||
for(u32 i=0; i<4; i++)
|
||||
{
|
||||
v3s16 dir = side_dirs[i];
|
||||
|
||||
MapNode neighbor = data->m_vmanip.getNodeNoEx(blockpos_nodes + p + dir);
|
||||
content_t neighbor_content = neighbor.getContent();
|
||||
const ContentFeatures &n_feat = nodedef->get(neighbor_content);
|
||||
MapNode n_top = data->m_vmanip.getNodeNoEx(blockpos_nodes + p + dir+ v3s16(0,1,0));
|
||||
content_t n_top_c = n_top.getContent();
|
||||
|
||||
if(neighbor_content == CONTENT_IGNORE)
|
||||
continue;
|
||||
|
||||
/*
|
||||
If our topside is liquid and neighbor's topside
|
||||
is liquid, don't draw side face
|
||||
*/
|
||||
if(top_is_same_liquid && (n_top_c == c_flowing ||
|
||||
n_top_c == c_source || n_top_c == CONTENT_IGNORE))
|
||||
continue;
|
||||
|
||||
// Don't draw face if neighbor is blocking the view
|
||||
if(n_feat.solidness == 2)
|
||||
continue;
|
||||
|
||||
bool neighbor_is_same_liquid = (neighbor_content == c_source
|
||||
|| neighbor_content == c_flowing);
|
||||
|
||||
// Don't draw any faces if neighbor same is liquid and top is
|
||||
// same liquid
|
||||
if(neighbor_is_same_liquid && !top_is_same_liquid)
|
||||
continue;
|
||||
|
||||
// Use backface culled material if neighbor doesn't have a
|
||||
// solidness of 0
|
||||
const TileSpec *current_tile = &tile_liquid;
|
||||
if(n_feat.solidness != 0 || n_feat.visual_solidness != 0)
|
||||
current_tile = &tile_liquid_bfculled;
|
||||
|
||||
video::S3DVertex vertices[4] =
|
||||
{
|
||||
video::S3DVertex(-BS/2,0,BS/2,0,0,0, c,
|
||||
pa_liquid.x0(), pa_liquid.y1()),
|
||||
video::S3DVertex(BS/2,0,BS/2,0,0,0, c,
|
||||
pa_liquid.x1(), pa_liquid.y1()),
|
||||
video::S3DVertex(BS/2,0,BS/2, 0,0,0, c,
|
||||
pa_liquid.x1(), pa_liquid.y0()),
|
||||
video::S3DVertex(-BS/2,0,BS/2, 0,0,0, c,
|
||||
pa_liquid.x0(), pa_liquid.y0()),
|
||||
};
|
||||
|
||||
/*
|
||||
If our topside is liquid, set upper border of face
|
||||
at upper border of node
|
||||
*/
|
||||
if(top_is_same_liquid)
|
||||
{
|
||||
vertices[2].Pos.Y = 0.5*BS;
|
||||
vertices[3].Pos.Y = 0.5*BS;
|
||||
}
|
||||
/*
|
||||
Otherwise upper position of face is liquid level
|
||||
*/
|
||||
else
|
||||
{
|
||||
vertices[2].Pos.Y = (node_liquid_level-0.5)*BS;
|
||||
vertices[3].Pos.Y = (node_liquid_level-0.5)*BS;
|
||||
}
|
||||
/*
|
||||
If neighbor is liquid, lower border of face is liquid level
|
||||
*/
|
||||
if(neighbor_is_same_liquid)
|
||||
{
|
||||
vertices[0].Pos.Y = (node_liquid_level-0.5)*BS;
|
||||
vertices[1].Pos.Y = (node_liquid_level-0.5)*BS;
|
||||
}
|
||||
/*
|
||||
If neighbor is not liquid, lower border of face is
|
||||
lower border of node
|
||||
*/
|
||||
else
|
||||
{
|
||||
vertices[0].Pos.Y = -0.5*BS;
|
||||
vertices[1].Pos.Y = -0.5*BS;
|
||||
}
|
||||
|
||||
for(s32 j=0; j<4; j++)
|
||||
{
|
||||
if(dir == v3s16(0,0,1))
|
||||
vertices[j].Pos.rotateXZBy(0);
|
||||
if(dir == v3s16(0,0,-1))
|
||||
vertices[j].Pos.rotateXZBy(180);
|
||||
if(dir == v3s16(-1,0,0))
|
||||
vertices[j].Pos.rotateXZBy(90);
|
||||
if(dir == v3s16(1,0,-0))
|
||||
vertices[j].Pos.rotateXZBy(-90);
|
||||
|
||||
// Do this to not cause glitches when two liquids are
|
||||
// side-by-side
|
||||
/*if(neighbor_is_same_liquid == false){
|
||||
vertices[j].Pos.X *= 0.98;
|
||||
vertices[j].Pos.Z *= 0.98;
|
||||
}*/
|
||||
|
||||
vertices[j].Pos += intToFloat(p, BS);
|
||||
}
|
||||
|
||||
u16 indices[] = {0,1,2,2,3,0};
|
||||
// Add to mesh collector
|
||||
collector.append(*current_tile, vertices, 4, indices, 6);
|
||||
}
|
||||
|
||||
/*
|
||||
Generate top
|
||||
*/
|
||||
if(top_is_same_liquid)
|
||||
continue;
|
||||
|
||||
video::S3DVertex vertices[4] =
|
||||
{
|
||||
@@ -185,7 +369,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
pa_liquid.x0(), pa_liquid.y0()),
|
||||
};
|
||||
|
||||
v3f offset(p.X, p.Y + (-0.5+node_liquid_level)*BS, p.Z);
|
||||
v3f offset(p.X*BS, p.Y*BS + (-0.5+node_liquid_level)*BS, p.Z*BS);
|
||||
for(s32 i=0; i<4; i++)
|
||||
{
|
||||
vertices[i].Pos += offset;
|
||||
@@ -230,9 +414,9 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
|
||||
// Neighbor liquid levels (key = relative position)
|
||||
// Includes current node
|
||||
core::map<v3s16, f32> neighbor_levels;
|
||||
core::map<v3s16, content_t> neighbor_contents;
|
||||
core::map<v3s16, u8> neighbor_flags;
|
||||
std::map<v3s16, f32> neighbor_levels;
|
||||
std::map<v3s16, content_t> neighbor_contents;
|
||||
std::map<v3s16, u8> neighbor_flags;
|
||||
const u8 neighborflag_top_is_same_liquid = 0x01;
|
||||
v3s16 neighbor_dirs[9] = {
|
||||
v3s16(0,0,0),
|
||||
@@ -273,9 +457,9 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
flags |= neighborflag_top_is_same_liquid;
|
||||
}
|
||||
|
||||
neighbor_levels.insert(neighbor_dirs[i], level);
|
||||
neighbor_contents.insert(neighbor_dirs[i], content);
|
||||
neighbor_flags.insert(neighbor_dirs[i], flags);
|
||||
neighbor_levels[neighbor_dirs[i]] = level;
|
||||
neighbor_contents[neighbor_dirs[i]] = content;
|
||||
neighbor_flags[neighbor_dirs[i]] = flags;
|
||||
}
|
||||
|
||||
// Corner heights (average between four liquids)
|
||||
@@ -324,7 +508,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
}
|
||||
}
|
||||
if(air_count >= 2)
|
||||
cornerlevel = -0.5*BS+0.1;
|
||||
cornerlevel = -0.5*BS+0.2;
|
||||
else if(valid_count > 0)
|
||||
cornerlevel /= valid_count;
|
||||
corner_levels[i] = cornerlevel;
|
||||
@@ -556,8 +740,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
continue;
|
||||
|
||||
// The face at Z+
|
||||
video::S3DVertex vertices[4] =
|
||||
{
|
||||
video::S3DVertex vertices[4] = {
|
||||
video::S3DVertex(-BS/2,-BS/2,BS/2, 0,0,0, c,
|
||||
ap.x0(), ap.y1()),
|
||||
video::S3DVertex(BS/2,-BS/2,BS/2, 0,0,0, c,
|
||||
@@ -597,6 +780,132 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
collector.append(tile, vertices, 4, indices, 6);
|
||||
}
|
||||
break;}
|
||||
case NDT_GLASSLIKE_FRAMED:
|
||||
{
|
||||
static const v3s16 dirs[6] = {
|
||||
v3s16( 0, 1, 0),
|
||||
v3s16( 0,-1, 0),
|
||||
v3s16( 1, 0, 0),
|
||||
v3s16(-1, 0, 0),
|
||||
v3s16( 0, 0, 1),
|
||||
v3s16( 0, 0,-1)
|
||||
};
|
||||
TileSpec tiles[2];
|
||||
tiles[0] = getNodeTile(n, p, dirs[0], data);
|
||||
tiles[1] = getNodeTile(n, p, dirs[1], data);
|
||||
u16 l = getInteriorLight(n, 1, data);
|
||||
video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source));
|
||||
v3f pos = intToFloat(p, BS);
|
||||
static const float a=BS/2;
|
||||
static const float b=.876*(BS/2);
|
||||
static const aabb3f frame_edges[12] = {
|
||||
aabb3f( b, b,-a, a, a, a), // y+
|
||||
aabb3f(-a, b,-a,-b, a, a), // y+
|
||||
aabb3f( b,-a,-a, a,-b, a), // y-
|
||||
aabb3f(-a,-a,-a,-b,-b, a), // y-
|
||||
aabb3f( b,-a, b, a, a, a), // x+
|
||||
aabb3f( b,-a,-a, a, a,-b), // x+
|
||||
aabb3f(-a,-a, b,-b, a, a), // x-
|
||||
aabb3f(-a,-a,-a,-b, a,-b), // x-
|
||||
aabb3f(-a, b, b, a, a, a), // z+
|
||||
aabb3f(-a,-a, b, a,-b, a), // z+
|
||||
aabb3f(-a,-a,-a, a,-b,-b), // z-
|
||||
aabb3f(-a, b,-a, a, a,-b) // z-
|
||||
};
|
||||
aabb3f glass_faces[6] = {
|
||||
aabb3f(-a, a,-a, a, a, a), // y+
|
||||
aabb3f(-a,-a,-a, a,-a, a), // y-
|
||||
aabb3f( a,-a,-a, a, a, a), // x+
|
||||
aabb3f(-a,-a,-a,-a, a, a), // x-
|
||||
aabb3f(-a,-a, a, a, a, a), // z+
|
||||
aabb3f(-a,-a,-a, a, a,-a) // z-
|
||||
};
|
||||
|
||||
int visible_faces[6] = {0,0,0,0,0,0};
|
||||
int nb[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
u8 i;
|
||||
content_t current = n.getContent();
|
||||
content_t content;
|
||||
MapNode n2;
|
||||
v3s16 n2p;
|
||||
for(i=0; i<18; i++)
|
||||
{
|
||||
n2p = blockpos_nodes + p + g_26dirs[i];
|
||||
n2 = data->m_vmanip.getNodeNoEx(n2p);
|
||||
content_t n2c = n2.getContent();
|
||||
//TODO: remove CONTENT_IGNORE check when getNodeNoEx is fixed
|
||||
if (n2c == current || n2c == CONTENT_IGNORE)
|
||||
nb[i]=1;
|
||||
}
|
||||
for(i=0; i<6; i++)
|
||||
{
|
||||
n2p = blockpos_nodes + p + dirs[i];
|
||||
n2 = data->m_vmanip.getNodeNoEx(n2p);
|
||||
content = n2.getContent();
|
||||
const ContentFeatures &f2 = nodedef->get(content);
|
||||
if (content == CONTENT_AIR || f2.isLiquid())
|
||||
visible_faces[i]=1;
|
||||
}
|
||||
static const u8 nb_triplet[12*3] = {
|
||||
1,2, 7, 1,5, 6, 4,2,15, 4,5,14,
|
||||
2,0,11, 2,3,13, 5,0,10, 5,3,12,
|
||||
0,1, 8, 0,4,16, 3,4,17, 3,1, 9
|
||||
};
|
||||
|
||||
f32 tx1,ty1,tz1,tx2,ty2,tz2;
|
||||
aabb3f box;
|
||||
for(i=0; i<12; i++)
|
||||
{
|
||||
int edge_invisible;
|
||||
if (nb[nb_triplet[i*3+2]]==1)
|
||||
edge_invisible=nb[nb_triplet[i*3]] & nb[nb_triplet[i*3+1]];
|
||||
else
|
||||
edge_invisible=nb[nb_triplet[i*3]] ^ nb[nb_triplet[i*3+1]];
|
||||
if (edge_invisible)
|
||||
continue;
|
||||
box=frame_edges[i];
|
||||
box.MinEdge += pos;
|
||||
box.MaxEdge += pos;
|
||||
tx1 = (box.MinEdge.X/BS)+0.5;
|
||||
ty1 = (box.MinEdge.Y/BS)+0.5;
|
||||
tz1 = (box.MinEdge.Z/BS)+0.5;
|
||||
tx2 = (box.MaxEdge.X/BS)+0.5;
|
||||
ty2 = (box.MaxEdge.Y/BS)+0.5;
|
||||
tz2 = (box.MaxEdge.Z/BS)+0.5;
|
||||
f32 txc1[24] = {
|
||||
tx1, 1-tz2, tx2, 1-tz1,
|
||||
tx1, tz1, tx2, tz2,
|
||||
tz1, 1-ty2, tz2, 1-ty1,
|
||||
1-tz2, 1-ty2, 1-tz1, 1-ty1,
|
||||
1-tx2, 1-ty2, 1-tx1, 1-ty1,
|
||||
tx1, 1-ty2, tx2, 1-ty1,
|
||||
};
|
||||
makeCuboid(&collector, box, &tiles[0], 1, c, txc1);
|
||||
}
|
||||
for(i=0; i<6; i++)
|
||||
{
|
||||
if (visible_faces[i]==0)
|
||||
continue;
|
||||
box=glass_faces[i];
|
||||
box.MinEdge += pos;
|
||||
box.MaxEdge += pos;
|
||||
tx1 = (box.MinEdge.X/BS)+0.5;
|
||||
ty1 = (box.MinEdge.Y/BS)+0.5;
|
||||
tz1 = (box.MinEdge.Z/BS)+0.5;
|
||||
tx2 = (box.MaxEdge.X/BS)+0.5;
|
||||
ty2 = (box.MaxEdge.Y/BS)+0.5;
|
||||
tz2 = (box.MaxEdge.Z/BS)+0.5;
|
||||
f32 txc2[24] = {
|
||||
tx1, 1-tz2, tx2, 1-tz1,
|
||||
tx1, tz1, tx2, tz2,
|
||||
tz1, 1-ty2, tz2, 1-ty1,
|
||||
1-tz2, 1-ty2, 1-tz1, 1-ty1,
|
||||
1-tx2, 1-ty2, 1-tx1, 1-ty1,
|
||||
tx1, 1-ty2, tx2, 1-ty1,
|
||||
};
|
||||
makeCuboid(&collector, box, &tiles[1], 1, c, txc2);
|
||||
}
|
||||
break;}
|
||||
case NDT_ALLFACES:
|
||||
{
|
||||
TileSpec tile_leaves = getNodeTile(n, p,
|
||||
@@ -879,34 +1188,81 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
MapNode n_minus_z_plus_y = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(x, y+1, z-1));
|
||||
MapNode n_plus_z_minus_y = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(x, y-1, z+1));
|
||||
MapNode n_minus_z_minus_y = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(x, y-1, z-1));
|
||||
|
||||
|
||||
content_t thiscontent = n.getContent();
|
||||
if(n_minus_x.getContent() == thiscontent)
|
||||
std::string groupname = "connect_to_raillike"; // name of the group that enables connecting to raillike nodes of different kind
|
||||
bool self_connect_to_raillike = ((ItemGroupList) nodedef->get(n).groups)[groupname] != 0;
|
||||
|
||||
if ((nodedef->get(n_minus_x).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_x).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_x.getContent() == thiscontent)
|
||||
is_rail_x[0] = true;
|
||||
if (n_minus_x_minus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_minus_x_minus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_x_minus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_x_minus_y.getContent() == thiscontent)
|
||||
is_rail_x_minus_y[0] = true;
|
||||
if(n_minus_x_plus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_minus_x_plus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_x_plus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_x_plus_y.getContent() == thiscontent)
|
||||
is_rail_x_plus_y[0] = true;
|
||||
|
||||
if(n_plus_x.getContent() == thiscontent)
|
||||
if ((nodedef->get(n_plus_x).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_x).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_x.getContent() == thiscontent)
|
||||
is_rail_x[1] = true;
|
||||
if (n_plus_x_minus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_plus_x_minus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_x_minus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_x_minus_y.getContent() == thiscontent)
|
||||
is_rail_x_minus_y[1] = true;
|
||||
if(n_plus_x_plus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_plus_x_plus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_x_plus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_x_plus_y.getContent() == thiscontent)
|
||||
is_rail_x_plus_y[1] = true;
|
||||
|
||||
if(n_minus_z.getContent() == thiscontent)
|
||||
if ((nodedef->get(n_minus_z).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_z).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_z.getContent() == thiscontent)
|
||||
is_rail_z[0] = true;
|
||||
if (n_minus_z_minus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_minus_z_minus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_z_minus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_z_minus_y.getContent() == thiscontent)
|
||||
is_rail_z_minus_y[0] = true;
|
||||
if(n_minus_z_plus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_minus_z_plus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_minus_z_plus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_minus_z_plus_y.getContent() == thiscontent)
|
||||
is_rail_z_plus_y[0] = true;
|
||||
|
||||
if(n_plus_z.getContent() == thiscontent)
|
||||
if ((nodedef->get(n_plus_z).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_z).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_z.getContent() == thiscontent)
|
||||
is_rail_z[1] = true;
|
||||
if (n_plus_z_minus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_plus_z_minus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_z_minus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_z_minus_y.getContent() == thiscontent)
|
||||
is_rail_z_minus_y[1] = true;
|
||||
if(n_plus_z_plus_y.getContent() == thiscontent)
|
||||
|
||||
if ((nodedef->get(n_plus_z_plus_y).drawtype == NDT_RAILLIKE
|
||||
&& ((ItemGroupList) nodedef->get(n_plus_z_plus_y).groups)[groupname] != 0
|
||||
&& self_connect_to_raillike)
|
||||
|| n_plus_z_plus_y.getContent() == thiscontent)
|
||||
is_rail_z_plus_y[1] = true;
|
||||
|
||||
bool is_rail_x_all[] = {false, false};
|
||||
@@ -946,7 +1302,8 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
if(is_rail_x_all[0] && is_rail_x_all[1])
|
||||
angle = 90;
|
||||
if(is_rail_z_all[0] && is_rail_z_all[1]){
|
||||
if (n_minus_z_plus_y.getContent() == thiscontent) angle = 180;
|
||||
if (is_rail_z_plus_y[0])
|
||||
angle = 180;
|
||||
}
|
||||
else if(is_rail_x_all[0] && is_rail_z_all[0])
|
||||
angle = 270;
|
||||
@@ -1027,14 +1384,8 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
v3s16(0, 0, 1),
|
||||
v3s16(0, 0, -1)
|
||||
};
|
||||
|
||||
TileSpec tiles[6];
|
||||
for(int i = 0; i < 6; i++)
|
||||
{
|
||||
// Handles facedir rotation for textures
|
||||
tiles[i] = getNodeTile(n, p, tile_dirs[i], data);
|
||||
}
|
||||
|
||||
|
||||
u16 l = getInteriorLight(n, 0, data);
|
||||
video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source));
|
||||
|
||||
@@ -1045,17 +1396,43 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
i = boxes.begin();
|
||||
i != boxes.end(); i++)
|
||||
{
|
||||
for(int j = 0; j < 6; j++)
|
||||
{
|
||||
// Handles facedir rotation for textures
|
||||
tiles[j] = getNodeTile(n, p, tile_dirs[j], data);
|
||||
}
|
||||
aabb3f box = *i;
|
||||
box.MinEdge += pos;
|
||||
box.MaxEdge += pos;
|
||||
|
||||
f32 temp;
|
||||
if (box.MinEdge.X > box.MaxEdge.X)
|
||||
{
|
||||
temp=box.MinEdge.X;
|
||||
box.MinEdge.X=box.MaxEdge.X;
|
||||
box.MaxEdge.X=temp;
|
||||
}
|
||||
if (box.MinEdge.Y > box.MaxEdge.Y)
|
||||
{
|
||||
temp=box.MinEdge.Y;
|
||||
box.MinEdge.Y=box.MaxEdge.Y;
|
||||
box.MaxEdge.Y=temp;
|
||||
}
|
||||
if (box.MinEdge.Z > box.MaxEdge.Z)
|
||||
{
|
||||
temp=box.MinEdge.Z;
|
||||
box.MinEdge.Z=box.MaxEdge.Z;
|
||||
box.MaxEdge.Z=temp;
|
||||
}
|
||||
|
||||
//
|
||||
// Compute texture coords
|
||||
f32 tx1 = (i->MinEdge.X/BS)+0.5;
|
||||
f32 ty1 = (i->MinEdge.Y/BS)+0.5;
|
||||
f32 tz1 = (i->MinEdge.Z/BS)+0.5;
|
||||
f32 tx2 = (i->MaxEdge.X/BS)+0.5;
|
||||
f32 ty2 = (i->MaxEdge.Y/BS)+0.5;
|
||||
f32 tz2 = (i->MaxEdge.Z/BS)+0.5;
|
||||
f32 tx1 = (box.MinEdge.X/BS)+0.5;
|
||||
f32 ty1 = (box.MinEdge.Y/BS)+0.5;
|
||||
f32 tz1 = (box.MinEdge.Z/BS)+0.5;
|
||||
f32 tx2 = (box.MaxEdge.X/BS)+0.5;
|
||||
f32 ty2 = (box.MaxEdge.Y/BS)+0.5;
|
||||
f32 tz2 = (box.MaxEdge.Z/BS)+0.5;
|
||||
f32 txc[24] = {
|
||||
// up
|
||||
tx1, 1-tz2, tx2, 1-tz1,
|
||||
@@ -1070,7 +1447,6 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
||||
// front
|
||||
tx1, 1-ty2, tx2, 1-ty1,
|
||||
};
|
||||
|
||||
makeCuboid(&collector, box, tiles, 6, c, txc);
|
||||
}
|
||||
break;}
|
||||
|
||||
@@ -27,11 +27,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "tool.h" // For ToolCapabilities
|
||||
#include "gamedef.h"
|
||||
#include "player.h"
|
||||
#include "scriptapi.h"
|
||||
#include "cpp_api/scriptapi.h"
|
||||
#include "genericobject.h"
|
||||
#include "util/serialize.h"
|
||||
|
||||
core::map<u16, ServerActiveObject::Factory> ServerActiveObject::m_types;
|
||||
std::map<u16, ServerActiveObject::Factory> ServerActiveObject::m_types;
|
||||
|
||||
/*
|
||||
DummyLoadSAO
|
||||
@@ -64,6 +64,10 @@ class DummyLoadSAO : public ServerActiveObject
|
||||
infostream<<"DummyLoadSAO step"<<std::endl;
|
||||
}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
@@ -132,6 +136,10 @@ class TestSAO : public ServerActiveObject
|
||||
}
|
||||
}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
float m_timer1;
|
||||
float m_age;
|
||||
@@ -208,8 +216,7 @@ class ItemSAO : public ServerActiveObject
|
||||
v3f pos_f_old = pos_f;
|
||||
v3f accel_f = v3f(0,0,0);
|
||||
f32 stepheight = 0;
|
||||
IGameDef *gamedef = m_env->getGameDef();
|
||||
moveresult = collisionMoveSimple(&m_env->getMap(), gamedef,
|
||||
moveresult = collisionMoveSimple(m_env,m_env->getGameDef(),
|
||||
pos_max_d, box, stepheight, dtime,
|
||||
pos_f, m_speed_f, accel_f);
|
||||
|
||||
@@ -314,6 +321,10 @@ class ItemSAO : public ServerActiveObject
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
std::string m_itemstring;
|
||||
@@ -370,15 +381,13 @@ LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos,
|
||||
}
|
||||
|
||||
// Initialize something to armor groups
|
||||
m_armor_groups["fleshy"] = 3;
|
||||
m_armor_groups["snappy"] = 2;
|
||||
m_armor_groups["fleshy"] = 100;
|
||||
}
|
||||
|
||||
LuaEntitySAO::~LuaEntitySAO()
|
||||
{
|
||||
if(m_registered){
|
||||
lua_State *L = m_env->getLua();
|
||||
scriptapi_luaentity_rm(L, m_id);
|
||||
ENV_TO_SA(m_env)->luaentity_Remove(m_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,16 +396,15 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s)
|
||||
ServerActiveObject::addedToEnvironment(dtime_s);
|
||||
|
||||
// Create entity from name
|
||||
lua_State *L = m_env->getLua();
|
||||
m_registered = scriptapi_luaentity_add(L, m_id, m_init_name.c_str());
|
||||
m_registered = ENV_TO_SA(m_env)->luaentity_Add(m_id, m_init_name.c_str());
|
||||
|
||||
if(m_registered){
|
||||
// Get properties
|
||||
scriptapi_luaentity_get_properties(L, m_id, &m_prop);
|
||||
ENV_TO_SA(m_env)->luaentity_GetProperties(m_id, &m_prop);
|
||||
// Initialize HP from properties
|
||||
m_hp = m_prop.hp_max;
|
||||
// Activate entity, supplying serialized state
|
||||
scriptapi_luaentity_activate(L, m_id, m_init_state.c_str(), dtime_s);
|
||||
ENV_TO_SA(m_env)->luaentity_Activate(m_id, m_init_state.c_str(), dtime_s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,10 +498,9 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
|
||||
v3f p_pos = m_base_position;
|
||||
v3f p_velocity = m_velocity;
|
||||
v3f p_acceleration = m_acceleration;
|
||||
IGameDef *gamedef = m_env->getGameDef();
|
||||
moveresult = collisionMoveSimple(&m_env->getMap(), gamedef,
|
||||
moveresult = collisionMoveSimple(m_env,m_env->getGameDef(),
|
||||
pos_max_d, box, stepheight, dtime,
|
||||
p_pos, p_velocity, p_acceleration);
|
||||
p_pos, p_velocity, p_acceleration,this);
|
||||
// Apply results
|
||||
m_base_position = p_pos;
|
||||
m_velocity = p_velocity;
|
||||
@@ -506,8 +513,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
|
||||
}
|
||||
|
||||
if(m_registered){
|
||||
lua_State *L = m_env->getLua();
|
||||
scriptapi_luaentity_step(L, m_id, dtime);
|
||||
ENV_TO_SA(m_env)->luaentity_Step(m_id, dtime);
|
||||
}
|
||||
|
||||
if(send_recommended == false)
|
||||
@@ -617,8 +623,7 @@ std::string LuaEntitySAO::getStaticData()
|
||||
os<<serializeString(m_init_name);
|
||||
// state
|
||||
if(m_registered){
|
||||
lua_State *L = m_env->getLua();
|
||||
std::string state = scriptapi_luaentity_get_staticdata(L, m_id);
|
||||
std::string state = ENV_TO_SA(m_env)->luaentity_GetStaticdata(m_id);
|
||||
os<<serializeLongString(state);
|
||||
} else {
|
||||
os<<serializeLongString(m_init_state);
|
||||
@@ -664,8 +669,14 @@ int LuaEntitySAO::punch(v3f dir,
|
||||
{
|
||||
setHP(getHP() - result.damage);
|
||||
|
||||
|
||||
std::string punchername = "nil";
|
||||
|
||||
if ( puncher != 0 )
|
||||
punchername = puncher->getDescription();
|
||||
|
||||
actionstream<<getDescription()<<" punched by "
|
||||
<<puncher->getDescription()<<", damage "<<result.damage
|
||||
<<punchername<<", damage "<<result.damage
|
||||
<<" hp, health now "<<getHP()<<" hp"<<std::endl;
|
||||
|
||||
{
|
||||
@@ -679,8 +690,7 @@ int LuaEntitySAO::punch(v3f dir,
|
||||
m_removed = true;
|
||||
}
|
||||
|
||||
lua_State *L = m_env->getLua();
|
||||
scriptapi_luaentity_punch(L, m_id, puncher,
|
||||
ENV_TO_SA(m_env)->luaentity_Punch(m_id, puncher,
|
||||
time_from_last_punch, toolcap, dir);
|
||||
|
||||
return result.wear;
|
||||
@@ -693,8 +703,7 @@ void LuaEntitySAO::rightClick(ServerActiveObject *clicker)
|
||||
// It's best that attachments cannot be clicked
|
||||
if(isAttached())
|
||||
return;
|
||||
lua_State *L = m_env->getLua();
|
||||
scriptapi_luaentity_rightclick(L, m_id, clicker);
|
||||
ENV_TO_SA(m_env)->luaentity_Rightclick(m_id, clicker);
|
||||
}
|
||||
|
||||
void LuaEntitySAO::setPos(v3f pos)
|
||||
@@ -880,6 +889,22 @@ void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end)
|
||||
m_messages_out.push_back(aom);
|
||||
}
|
||||
|
||||
bool LuaEntitySAO::getCollisionBox(aabb3f *toset) {
|
||||
if (m_prop.physical)
|
||||
{
|
||||
//update collision box
|
||||
toset->MinEdge = m_prop.collisionbox.MinEdge * BS;
|
||||
toset->MaxEdge = m_prop.collisionbox.MaxEdge * BS;
|
||||
|
||||
toset->MinEdge += m_base_position;
|
||||
toset->MaxEdge += m_base_position;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
PlayerSAO
|
||||
*/
|
||||
@@ -910,14 +935,17 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_,
|
||||
m_moved(false),
|
||||
m_inventory_not_sent(false),
|
||||
m_hp_not_sent(false),
|
||||
m_wielded_item_not_sent(false)
|
||||
m_wielded_item_not_sent(false),
|
||||
m_physics_override_speed(1),
|
||||
m_physics_override_jump(1),
|
||||
m_physics_override_gravity(1),
|
||||
m_physics_override_sent(false)
|
||||
{
|
||||
assert(m_player);
|
||||
assert(m_peer_id != 0);
|
||||
setBasePosition(m_player->getPosition());
|
||||
m_inventory = &m_player->inventory;
|
||||
m_armor_groups["choppy"] = 2;
|
||||
m_armor_groups["fleshy"] = 3;
|
||||
m_armor_groups["fleshy"] = 100;
|
||||
|
||||
m_prop.hp_max = PLAYER_MAX_HP;
|
||||
m_prop.physical = false;
|
||||
@@ -995,7 +1023,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
|
||||
writeF1000(os, m_player->getYaw());
|
||||
writeS16(os, getHP());
|
||||
|
||||
writeU8(os, 4 + m_bone_position.size()); // number of messages stuffed in here
|
||||
writeU8(os, 5 + m_bone_position.size()); // number of messages stuffed in here
|
||||
os<<serializeLongString(getPropertyPacket()); // message 1
|
||||
os<<serializeLongString(gob_cmd_update_armor_groups(m_armor_groups)); // 2
|
||||
os<<serializeLongString(gob_cmd_update_animation(m_animation_range, m_animation_speed, m_animation_blend)); // 3
|
||||
@@ -1003,6 +1031,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
|
||||
os<<serializeLongString(gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size
|
||||
}
|
||||
os<<serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
|
||||
os<<serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed, m_physics_override_jump, m_physics_override_gravity)); // 5
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1172,6 +1201,14 @@ void PlayerSAO::step(float dtime, bool send_recommended)
|
||||
m_messages_out.push_back(aom);
|
||||
}
|
||||
|
||||
if(m_physics_override_sent == false){
|
||||
m_physics_override_sent = true;
|
||||
std::string str = gob_cmd_update_physics_override(m_physics_override_speed, m_physics_override_jump, m_physics_override_gravity);
|
||||
// create message and add to list
|
||||
ActiveObjectMessage aom(getId(), true, str);
|
||||
m_messages_out.push_back(aom);
|
||||
}
|
||||
|
||||
if(m_animation_sent == false){
|
||||
m_animation_sent = true;
|
||||
std::string str = gob_cmd_update_animation(m_animation_range, m_animation_speed, m_animation_blend);
|
||||
@@ -1230,6 +1267,20 @@ void PlayerSAO::moveTo(v3f pos, bool continuous)
|
||||
m_moved = true;
|
||||
}
|
||||
|
||||
void PlayerSAO::setYaw(float yaw)
|
||||
{
|
||||
m_player->setYaw(yaw);
|
||||
// Force change on client
|
||||
m_moved = true;
|
||||
}
|
||||
|
||||
void PlayerSAO::setPitch(float pitch)
|
||||
{
|
||||
m_player->setPitch(pitch);
|
||||
// Force change on client
|
||||
m_moved = true;
|
||||
}
|
||||
|
||||
int PlayerSAO::punch(v3f dir,
|
||||
const ToolCapabilities *toolcap,
|
||||
ServerActiveObject *puncher,
|
||||
@@ -1256,8 +1307,13 @@ int PlayerSAO::punch(v3f dir,
|
||||
HitParams hitparams = getHitParams(m_armor_groups, toolcap,
|
||||
time_from_last_punch);
|
||||
|
||||
std::string punchername = "nil";
|
||||
|
||||
if ( puncher != 0 )
|
||||
punchername = puncher->getDescription();
|
||||
|
||||
actionstream<<"Player "<<m_player->getName()<<" punched by "
|
||||
<<puncher->getDescription()<<", damage "<<hitparams.hp
|
||||
<<punchername<<", damage "<<hitparams.hp
|
||||
<<" HP"<<std::endl;
|
||||
|
||||
setHP(getHP() - hitparams.hp);
|
||||
@@ -1420,3 +1476,12 @@ std::string PlayerSAO::getPropertyPacket()
|
||||
return gob_cmd_set_properties(m_prop);
|
||||
}
|
||||
|
||||
bool PlayerSAO::getCollisionBox(aabb3f *toset) {
|
||||
//update collision box
|
||||
*toset = m_player->getCollisionbox();
|
||||
|
||||
toset->MinEdge += m_base_position;
|
||||
toset->MaxEdge += m_base_position;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ class LuaEntitySAO : public ServerActiveObject
|
||||
void setSprite(v2s16 p, int num_frames, float framelength,
|
||||
bool select_horiz_by_yawpitch);
|
||||
std::string getName();
|
||||
bool getCollisionBox(aabb3f *toset);
|
||||
private:
|
||||
std::string getPropertyPacket();
|
||||
void sendPosition(bool do_interpolate, bool is_movement_end);
|
||||
@@ -100,7 +101,7 @@ class LuaEntitySAO : public ServerActiveObject
|
||||
float m_last_sent_position_timer;
|
||||
float m_last_sent_move_precision;
|
||||
bool m_armor_groups_sent;
|
||||
|
||||
|
||||
v2f m_animation_range;
|
||||
float m_animation_speed;
|
||||
float m_animation_blend;
|
||||
@@ -147,6 +148,8 @@ class PlayerSAO : public ServerActiveObject
|
||||
void setBasePosition(const v3f &position);
|
||||
void setPos(v3f pos);
|
||||
void moveTo(v3f pos, bool continuous);
|
||||
void setYaw(float);
|
||||
void setPitch(float);
|
||||
|
||||
/*
|
||||
Interaction interface
|
||||
@@ -233,6 +236,8 @@ class PlayerSAO : public ServerActiveObject
|
||||
m_is_singleplayer = is_singleplayer;
|
||||
}
|
||||
|
||||
bool getCollisionBox(aabb3f *toset);
|
||||
|
||||
private:
|
||||
std::string getPropertyPacket();
|
||||
|
||||
@@ -252,8 +257,6 @@ class PlayerSAO : public ServerActiveObject
|
||||
ItemGroupList m_armor_groups;
|
||||
bool m_armor_groups_sent;
|
||||
|
||||
|
||||
|
||||
bool m_properties_sent;
|
||||
struct ObjectProperties m_prop;
|
||||
// Cached privileges for enforcement
|
||||
@@ -280,6 +283,11 @@ class PlayerSAO : public ServerActiveObject
|
||||
bool m_inventory_not_sent;
|
||||
bool m_hp_not_sent;
|
||||
bool m_wielded_item_not_sent;
|
||||
|
||||
float m_physics_override_speed;
|
||||
float m_physics_override_jump;
|
||||
float m_physics_override_gravity;
|
||||
bool m_physics_override_sent;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -987,6 +987,43 @@ class CCraftDefManager: public IWritableCraftDefManager
|
||||
}
|
||||
return false;
|
||||
}
|
||||
virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output,
|
||||
IGameDef *gamedef) const
|
||||
{
|
||||
std::vector<CraftDefinition*> recipes_list;
|
||||
CraftInput input;
|
||||
CraftOutput tmpout;
|
||||
tmpout.item = "";
|
||||
tmpout.time = 0;
|
||||
|
||||
for(std::vector<CraftDefinition*>::const_reverse_iterator
|
||||
i = m_craft_definitions.rbegin();
|
||||
i != m_craft_definitions.rend(); i++)
|
||||
{
|
||||
CraftDefinition *def = *i;
|
||||
|
||||
/*infostream<<"Checking "<<input.dump()<<std::endl
|
||||
<<" against "<<def->dump()<<std::endl;*/
|
||||
|
||||
try {
|
||||
tmpout = def->getOutput(input, gamedef);
|
||||
if(tmpout.item.substr(0,output.item.length()) == output.item)
|
||||
{
|
||||
// Get output, then decrement input (if requested)
|
||||
input = def->getInput(output, gamedef);
|
||||
recipes_list.push_back(*i);
|
||||
}
|
||||
}
|
||||
catch(SerializationError &e)
|
||||
{
|
||||
errorstream<<"getCraftResult: ERROR: "
|
||||
<<"Serialization error in recipe "
|
||||
<<def->dump()<<std::endl;
|
||||
// then go on with the next craft definition
|
||||
}
|
||||
}
|
||||
return recipes_list;
|
||||
}
|
||||
virtual std::string dump() const
|
||||
{
|
||||
std::ostringstream os(std::ios::binary);
|
||||
|
||||
@@ -358,6 +358,8 @@ class ICraftDefManager
|
||||
bool decrementInput, IGameDef *gamedef) const=0;
|
||||
virtual bool getCraftRecipe(CraftInput &input, CraftOutput &output,
|
||||
IGameDef *gamedef) const=0;
|
||||
virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output,
|
||||
IGameDef *gamedef) const=0;
|
||||
|
||||
// Print crafting recipes for debugging
|
||||
virtual std::string dump() const=0;
|
||||
@@ -376,6 +378,8 @@ class IWritableCraftDefManager : public ICraftDefManager
|
||||
bool decrementInput, IGameDef *gamedef) const=0;
|
||||
virtual bool getCraftRecipe(CraftInput &input, CraftOutput &output,
|
||||
IGameDef *gamedef) const=0;
|
||||
virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output,
|
||||
IGameDef *gamedef) const=0;
|
||||
|
||||
// Print crafting recipes for debugging
|
||||
virtual std::string dump() const=0;
|
||||
|
||||
@@ -130,7 +130,7 @@ void DebugStack::print(std::ostream &os, bool everything)
|
||||
os<<"Probably overflown."<<std::endl;
|
||||
}
|
||||
|
||||
core::map<threadid_t, DebugStack*> g_debug_stacks;
|
||||
std::map<threadid_t, DebugStack*> g_debug_stacks;
|
||||
JMutex g_debug_stacks_mutex;
|
||||
|
||||
void debug_stacks_init()
|
||||
@@ -144,12 +144,11 @@ void debug_stacks_print_to(std::ostream &os)
|
||||
|
||||
os<<"Debug stacks:"<<std::endl;
|
||||
|
||||
for(core::map<threadid_t, DebugStack*>::Iterator
|
||||
i = g_debug_stacks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<threadid_t, DebugStack*>::iterator
|
||||
i = g_debug_stacks.begin();
|
||||
i != g_debug_stacks.end(); ++i)
|
||||
{
|
||||
DebugStack *stack = i.getNode()->getValue();
|
||||
stack->print(os, false);
|
||||
i->second->print(os, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,11 +158,11 @@ void debug_stacks_print()
|
||||
|
||||
DEBUGPRINT("Debug stacks:\n");
|
||||
|
||||
for(core::map<threadid_t, DebugStack*>::Iterator
|
||||
i = g_debug_stacks.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<threadid_t, DebugStack*>::iterator
|
||||
i = g_debug_stacks.begin();
|
||||
i != g_debug_stacks.end(); ++i)
|
||||
{
|
||||
DebugStack *stack = i.getNode()->getValue();
|
||||
DebugStack *stack = i->second;
|
||||
|
||||
for(int i=0; i<DEBUGSTREAM_COUNT; i++)
|
||||
{
|
||||
@@ -179,18 +178,18 @@ DebugStacker::DebugStacker(const char *text)
|
||||
|
||||
JMutexAutoLock lock(g_debug_stacks_mutex);
|
||||
|
||||
core::map<threadid_t, DebugStack*>::Node *n;
|
||||
std::map<threadid_t, DebugStack*>::iterator n;
|
||||
n = g_debug_stacks.find(threadid);
|
||||
if(n != NULL)
|
||||
if(n != g_debug_stacks.end())
|
||||
{
|
||||
m_stack = n->getValue();
|
||||
m_stack = n->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*DEBUGPRINT("Creating new debug stack for thread %x\n",
|
||||
(unsigned int)threadid);*/
|
||||
m_stack = new DebugStack(threadid);
|
||||
g_debug_stacks.insert(threadid, m_stack);
|
||||
g_debug_stacks[threadid] = m_stack;
|
||||
}
|
||||
|
||||
if(m_stack->stack_i >= DEBUG_STACK_SIZE)
|
||||
@@ -224,7 +223,7 @@ DebugStacker::~DebugStacker()
|
||||
/*DEBUGPRINT("Deleting debug stack for thread %x\n",
|
||||
(unsigned int)threadid);*/
|
||||
delete m_stack;
|
||||
g_debug_stacks.remove(threadid);
|
||||
g_debug_stacks.erase(threadid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
29
src/debug.h
29
src/debug.h
@@ -29,6 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "threads.h"
|
||||
#include "gettime.h"
|
||||
#include "exceptions.h"
|
||||
#include <map>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
@@ -165,7 +166,7 @@ struct DebugStack
|
||||
int stack_max_i; // Highest i that was seen
|
||||
};
|
||||
|
||||
extern core::map<threadid_t, DebugStack*> g_debug_stacks;
|
||||
extern std::map<threadid_t, DebugStack*> g_debug_stacks;
|
||||
extern JMutex g_debug_stacks_mutex;
|
||||
|
||||
extern void debug_stacks_init();
|
||||
@@ -205,42 +206,42 @@ class PacketCounter
|
||||
|
||||
void add(u16 command)
|
||||
{
|
||||
core::map<u16, u16>::Node *n = m_packets.find(command);
|
||||
if(n == NULL)
|
||||
std::map<u16, u16>::iterator n = m_packets.find(command);
|
||||
if(n == m_packets.end())
|
||||
{
|
||||
m_packets[command] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
n->setValue(n->getValue()+1);
|
||||
n->second++;
|
||||
}
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
for(core::map<u16, u16>::Iterator
|
||||
i = m_packets.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<u16, u16>::iterator
|
||||
i = m_packets.begin();
|
||||
i != m_packets.end(); ++i)
|
||||
{
|
||||
i.getNode()->setValue(0);
|
||||
i->second = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void print(std::ostream &o)
|
||||
{
|
||||
for(core::map<u16, u16>::Iterator
|
||||
i = m_packets.getIterator();
|
||||
i.atEnd() == false; i++)
|
||||
for(std::map<u16, u16>::iterator
|
||||
i = m_packets.begin();
|
||||
i != m_packets.end(); ++i)
|
||||
{
|
||||
o<<"cmd "<<i.getNode()->getKey()
|
||||
<<" count "<<i.getNode()->getValue()
|
||||
o<<"cmd "<<i->first
|
||||
<<" count "<<i->second
|
||||
<<std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
// command, count
|
||||
core::map<u16, u16> m_packets;
|
||||
std::map<u16, u16> m_packets;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -107,14 +107,17 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("enable_clouds", "true");
|
||||
settings->setDefault("screenshot_path", ".");
|
||||
settings->setDefault("view_bobbing_amount", "1.0");
|
||||
settings->setDefault("fall_bobbing_amount", "0.0");
|
||||
settings->setDefault("enable_3d_clouds", "true");
|
||||
settings->setDefault("cloud_height", "120");
|
||||
settings->setDefault("menu_clouds", "true");
|
||||
settings->setDefault("opaque_water", "false");
|
||||
settings->setDefault("console_color", "(0,0,0)");
|
||||
settings->setDefault("console_alpha", "200");
|
||||
settings->setDefault("selectionbox_color", "(0,0,0)");
|
||||
settings->setDefault("crosshair_color", "(255,255,255)");
|
||||
settings->setDefault("crosshair_alpha", "255");
|
||||
settings->setDefault("mouse_sensitivity", "0.2");
|
||||
settings->setDefault("enable_sound", "true");
|
||||
settings->setDefault("sound_volume", "0.8");
|
||||
settings->setDefault("desynchronize_mapblock_texture_animation", "true");
|
||||
@@ -172,6 +175,7 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("max_simultaneous_block_sends_server_total", "20");
|
||||
settings->setDefault("max_block_send_distance", "9");
|
||||
settings->setDefault("max_block_generate_distance", "7");
|
||||
settings->setDefault("max_clearobjects_extra_loaded_blocks", "4096");
|
||||
settings->setDefault("time_send_interval", "5");
|
||||
settings->setDefault("time_speed", "72");
|
||||
settings->setDefault("server_unload_unused_data_timeout", "29");
|
||||
@@ -202,34 +206,58 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("movement_liquid_fluidity_smooth", "0.5");
|
||||
settings->setDefault("movement_liquid_sink", "10");
|
||||
settings->setDefault("movement_gravity", "9.81");
|
||||
|
||||
|
||||
//liquid stuff
|
||||
settings->setDefault("liquid_finite", "false");
|
||||
settings->setDefault("liquid_update", "1.0");
|
||||
settings->setDefault("liquid_relax", "1");
|
||||
settings->setDefault("liquid_relax", "2");
|
||||
settings->setDefault("liquid_fast_flood", "1");
|
||||
settings->setDefault("underground_springs", "1");
|
||||
|
||||
//mapgen stuff
|
||||
settings->setDefault("mg_name", "v6");
|
||||
settings->setDefault("water_level", "1");
|
||||
settings->setDefault("water_level", "1");
|
||||
settings->setDefault("chunksize", "5");
|
||||
settings->setDefault("mg_flags", "trees, caves, v6_biome_blend");
|
||||
settings->setDefault("mgv6_freq_desert", "0.45");
|
||||
settings->setDefault("mgv6_freq_beach", "0.15");
|
||||
|
||||
settings->setDefault("mgv6_np_terrain_base", "-4, 20, (250.0, 250, 250), 82341, 5, 0.6");
|
||||
settings->setDefault("mgv6_np_terrain_base", "-4, 20, (250, 250, 250), 82341, 5, 0.6");
|
||||
settings->setDefault("mgv6_np_terrain_higher", "20, 16, (500, 500, 500), 85039, 5, 0.6");
|
||||
settings->setDefault("mgv6_np_steepness", "0.85, 0.5, (125, 125, 125), -932, 5, 0.7");
|
||||
settings->setDefault("mgv6_np_height_select", "0.5, 1, (250, 250, 250), 4213, 5, 0.69");
|
||||
settings->setDefault("mgv6_np_trees", "0, 1, (125, 125, 125), 2, 4, 0.66");
|
||||
settings->setDefault("mgv6_np_mud", "4, 2, (200, 200, 200), 91013, 3, 0.55");
|
||||
settings->setDefault("mgv6_np_beach", "0, 1, (250, 250, 250), 59420, 3, 0.50");
|
||||
settings->setDefault("mgv6_np_biome", "0, 1, (250, 250, 250), 9130, 3, 0.50");
|
||||
settings->setDefault("mgv6_np_cave", "6, 6, (250, 250, 250), 34329, 3, 0.50");
|
||||
settings->setDefault("mgv6_np_humidity", "0.5, 0.5, (500, 500, 500), 72384, 4, 0.66");
|
||||
settings->setDefault("mgv6_np_trees", "0, 1, (125, 125, 125), 2, 4, 0.66");
|
||||
settings->setDefault("mgv6_np_apple_trees", "0, 1, (100, 100, 100), 342902, 3, 0.45");
|
||||
|
||||
settings->setDefault("mgv7_np_terrain", "10, 12, (350, 350, 350), 82341, 5, 0.6");
|
||||
settings->setDefault("mgv7_np_bgroup", "0.5, 0.3125, (350, 350, 350), 5923, 2, 0.6");
|
||||
settings->setDefault("mgv7_np_heat", "25, 50, (500, 500, 500), 35293, 1, 0");
|
||||
settings->setDefault("mgv7_np_humidity", "50, 31.25, (750, 750, 750), 12094, 2, 0.6");
|
||||
settings->setDefault("mgv7_np_terrain_base", "0, 80, (250, 250, 250), 82341, 5, 0.6");
|
||||
settings->setDefault("mgv7_np_terrain_alt", "0, 20, (250, 250, 250), 5934, 5, 0.6");
|
||||
settings->setDefault("mgv7_np_terrain_mod", "0, 1, (350, 350, 350), 85039, 5, 0.6");
|
||||
settings->setDefault("mgv7_np_terrain_persist", "0, 1, (500, 500, 500), 539, 3, 0.6");
|
||||
settings->setDefault("mgv7_np_height_select", "0.5, 0.5, (250, 250, 250), 4213, 5, 0.69");
|
||||
settings->setDefault("mgv7_np_ridge", "0.5, 1, (100, 100, 100), 6467, 4, 0.75");
|
||||
|
||||
settings->setDefault("mgindev_np_terrain_base", "-4, 20, (250, 250, 250), 82341, 5, 0.6, 10, 10");
|
||||
settings->setDefault("mgindev_np_terrain_higher", "20, 16, (500, 500, 500), 85039, 5, 0.6, 10, 10");
|
||||
settings->setDefault("mgindev_np_steepness", "0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2, 10");
|
||||
settings->setDefault("mgindev_np_mud", "4, 2, (200, 200, 200), 91013, 3, 0.55, 1, 1");
|
||||
settings->setDefault("mgindev_np_float_islands1", "0, 1, (64, 64, 64 ), 3683, 5, 0.5, 1, 1.5");
|
||||
settings->setDefault("mgindev_np_float_islands2", "0, 1, (8, 8, 8 ), 9292, 2, 0.5, 1, 1.5");
|
||||
settings->setDefault("mgindev_np_float_islands3", "0, 1, (256, 256, 256), 6412, 2, 0.5, 1, 0.5");
|
||||
settings->setDefault("mgindev_np_biome", "0, 1, (250, 250, 250), 9130, 3, 0.50, 1, 10");
|
||||
settings->setDefault("mgindev_float_islands", "500");
|
||||
}
|
||||
|
||||
void override_default_settings(Settings *settings, Settings *from)
|
||||
{
|
||||
std::vector<std::string> names = from->getNames();
|
||||
for(size_t i=0; i<names.size(); i++){
|
||||
const std::string &name = names[i];
|
||||
settings->setDefault(name, from->get(name));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
class Settings;
|
||||
|
||||
void set_default_settings(Settings *settings);
|
||||
void override_default_settings(Settings *settings, Settings *from);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
634
src/dungeongen.cpp
Normal file
634
src/dungeongen.cpp
Normal file
@@ -0,0 +1,634 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include "dungeongen.h"
|
||||
#include "mapgen.h"
|
||||
#include "voxel.h"
|
||||
#include "noise.h"
|
||||
#include "mapblock.h"
|
||||
#include "mapnode.h"
|
||||
#include "map.h"
|
||||
#include "nodedef.h"
|
||||
#include "profiler.h"
|
||||
#include "settings.h" // For g_settings
|
||||
#include "main.h" // For g_profiler
|
||||
|
||||
NoiseParams nparams_dungeon_rarity =
|
||||
{0.0, 1.0, v3f(500.0, 500.0, 500.0), 0, 2, 0.8};
|
||||
NoiseParams nparams_dungeon_wetness =
|
||||
{0.0, 1.0, v3f(40.0, 40.0, 40.0), 32474, 4, 1.1};
|
||||
NoiseParams nparams_dungeon_density =
|
||||
{0.0, 1.0, v3f(2.5, 2.5, 2.5), 0, 2, 1.4};
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
DungeonGen::DungeonGen(INodeDefManager *ndef, u64 seed, s16 waterlevel) {
|
||||
this->ndef = ndef;
|
||||
this->mapseed = seed;
|
||||
this->water_level = waterlevel;
|
||||
|
||||
np_rarity = &nparams_dungeon_rarity;
|
||||
np_wetness = &nparams_dungeon_wetness;
|
||||
np_density = &nparams_dungeon_density;
|
||||
/*
|
||||
cid_water_source = ndef->getId("mapgen_water_source");
|
||||
cid_cobble = ndef->getId("mapgen_cobble");
|
||||
cid_mossycobble = ndef->getId("mapgen_mossycobble");
|
||||
cid_torch = ndef->getId("default:torch");
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::generate(ManualMapVoxelManipulator *vm, u32 bseed,
|
||||
v3s16 nmin, v3s16 nmax) {
|
||||
//TimeTaker t("gen dungeons");
|
||||
int approx_groundlevel = 10 + water_level;
|
||||
|
||||
if ((nmin.Y + nmax.Y) / 2 >= approx_groundlevel ||
|
||||
NoisePerlin3D(np_rarity, nmin.X, nmin.Y, nmin.Z, mapseed) < 0.2)
|
||||
return;
|
||||
|
||||
this->vmanip = vm;
|
||||
this->blockseed = bseed;
|
||||
random.seed(bseed + 2);
|
||||
|
||||
cid_water_source = ndef->getId("mapgen_water_source");
|
||||
cid_cobble = ndef->getId("mapgen_cobble");
|
||||
cid_mossycobble = ndef->getId("mapgen_mossycobble");
|
||||
//cid_torch = ndef->getId("default:torch");
|
||||
cid_cobblestair = ndef->getId("stairs:stair_cobble");
|
||||
|
||||
// Dungeon generator doesn't modify places which have this set
|
||||
vmanip->clearFlag(VMANIP_FLAG_DUNGEON_INSIDE | VMANIP_FLAG_DUNGEON_PRESERVE);
|
||||
|
||||
// Set all air and water to be untouchable to make dungeons open
|
||||
// to caves and open air
|
||||
for (s16 z = nmin.Z; z <= nmax.Z; z++) {
|
||||
for (s16 y = nmin.Y; y <= nmax.Y; y++) {
|
||||
u32 i = vmanip->m_area.index(nmin.X, y, z);
|
||||
for (s16 x = nmin.X; x <= nmax.X; x++) {
|
||||
content_t c = vmanip->m_data[i].getContent();
|
||||
if (c == CONTENT_AIR || c == cid_water_source)
|
||||
vmanip->m_flags[i] |= VMANIP_FLAG_DUNGEON_PRESERVE;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add it
|
||||
makeDungeon(v3s16(1,1,1) * MAP_BLOCKSIZE);
|
||||
|
||||
// Convert some cobble to mossy cobble
|
||||
for (s16 z = nmin.Z; z <= nmax.Z; z++) {
|
||||
for (s16 y = nmin.Y; y <= nmax.Y; y++) {
|
||||
u32 i = vmanip->m_area.index(nmin.X, y, z);
|
||||
for (s16 x = nmin.X; x <= nmax.X; x++) {
|
||||
if (vmanip->m_data[i].getContent() == cid_cobble) {
|
||||
float wetness = NoisePerlin3D(np_wetness, x, y, z, mapseed);
|
||||
float density = NoisePerlin3D(np_density, x, y, z, blockseed);
|
||||
if (density < wetness / 3.0)
|
||||
vmanip->m_data[i].setContent(cid_mossycobble);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//printf("== gen dungeons: %dms\n", t.stop());
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeDungeon(v3s16 start_padding)
|
||||
{
|
||||
v3s16 areasize = vmanip->m_area.getExtent();
|
||||
v3s16 roomsize;
|
||||
v3s16 roomplace;
|
||||
|
||||
/*
|
||||
Find place for first room
|
||||
*/
|
||||
bool fits = false;
|
||||
for (u32 i = 0; i < 100; i++)
|
||||
{
|
||||
bool is_large_room = ((random.next() & 3) == 1);
|
||||
roomsize = is_large_room ?
|
||||
v3s16(random.range(8, 16),random.range(8, 16),random.range(8, 16)) :
|
||||
v3s16(random.range(4, 8),random.range(4, 6),random.range(4, 8));
|
||||
|
||||
// start_padding is used to disallow starting the generation of
|
||||
// a dungeon in a neighboring generation chunk
|
||||
roomplace = vmanip->m_area.MinEdge + start_padding + v3s16(
|
||||
random.range(0,areasize.X-roomsize.X-1-start_padding.X),
|
||||
random.range(0,areasize.Y-roomsize.Y-1-start_padding.Y),
|
||||
random.range(0,areasize.Z-roomsize.Z-1-start_padding.Z));
|
||||
|
||||
/*
|
||||
Check that we're not putting the room to an unknown place,
|
||||
otherwise it might end up floating in the air
|
||||
*/
|
||||
fits = true;
|
||||
for (s16 z = 1; z < roomsize.Z - 1; z++)
|
||||
for (s16 y = 1; y < roomsize.Y - 1; y++)
|
||||
for (s16 x = 1; x < roomsize.X - 1; x++)
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, y, z);
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_INSIDE)
|
||||
{
|
||||
fits = false;
|
||||
break;
|
||||
}
|
||||
if (vmanip->m_data[vi].getContent() == CONTENT_IGNORE)
|
||||
{
|
||||
fits = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (fits)
|
||||
break;
|
||||
}
|
||||
// No place found
|
||||
if (fits == false)
|
||||
return;
|
||||
|
||||
/*
|
||||
Stores the center position of the last room made, so that
|
||||
a new corridor can be started from the last room instead of
|
||||
the new room, if chosen so.
|
||||
*/
|
||||
v3s16 last_room_center = roomplace + v3s16(roomsize.X / 2, 1, roomsize.Z / 2);
|
||||
|
||||
u32 room_count = random.range(2, 16);
|
||||
for (u32 i = 0; i < room_count; i++)
|
||||
{
|
||||
// Make a room to the determined place
|
||||
makeRoom(roomsize, roomplace);
|
||||
|
||||
v3s16 room_center = roomplace + v3s16(roomsize.X / 2, 1, roomsize.Z / 2);
|
||||
|
||||
// Place torch at room center (for testing)
|
||||
//vmanip->m_data[vmanip->m_area.index(room_center)] = MapNode(cid_torch);
|
||||
|
||||
// Quit if last room
|
||||
if (i == room_count - 1)
|
||||
break;
|
||||
|
||||
// Determine walker start position
|
||||
|
||||
bool start_in_last_room = (random.range(0, 2) != 0);
|
||||
|
||||
v3s16 walker_start_place;
|
||||
|
||||
if(start_in_last_room)
|
||||
{
|
||||
walker_start_place = last_room_center;
|
||||
}
|
||||
else
|
||||
{
|
||||
walker_start_place = room_center;
|
||||
// Store center of current room as the last one
|
||||
last_room_center = room_center;
|
||||
}
|
||||
|
||||
// Create walker and find a place for a door
|
||||
v3s16 doorplace;
|
||||
v3s16 doordir;
|
||||
|
||||
m_pos = walker_start_place;
|
||||
bool r = findPlaceForDoor(doorplace, doordir);
|
||||
if (r == false)
|
||||
return;
|
||||
|
||||
if (random.range(0,1) == 0)
|
||||
// Make the door
|
||||
makeDoor(doorplace, doordir);
|
||||
else
|
||||
// Don't actually make a door
|
||||
doorplace -= doordir;
|
||||
|
||||
// Make a random corridor starting from the door
|
||||
v3s16 corridor_end;
|
||||
v3s16 corridor_end_dir;
|
||||
makeCorridor(doorplace, doordir, corridor_end, corridor_end_dir);
|
||||
|
||||
// Find a place for a random sized room
|
||||
roomsize = v3s16(random.range(4,8),random.range(4,6),random.range(4,8));
|
||||
m_pos = corridor_end;
|
||||
m_dir = corridor_end_dir;
|
||||
r = findPlaceForRoomDoor(roomsize, doorplace, doordir, roomplace);
|
||||
if (r == false)
|
||||
return;
|
||||
|
||||
if (random.range(0,1) == 0)
|
||||
// Make the door
|
||||
makeDoor(doorplace, doordir);
|
||||
else
|
||||
// Don't actually make a door
|
||||
roomplace -= doordir;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeRoom(v3s16 roomsize, v3s16 roomplace)
|
||||
{
|
||||
MapNode n_cobble(cid_cobble);
|
||||
MapNode n_air(CONTENT_AIR);
|
||||
|
||||
// Make +-X walls
|
||||
for (s16 z = 0; z < roomsize.Z; z++)
|
||||
for (s16 y = 0; y < roomsize.Y; y++)
|
||||
{
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(0, y, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(roomsize.X - 1, y, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
}
|
||||
|
||||
// Make +-Z walls
|
||||
for (s16 x = 0; x < roomsize.X; x++)
|
||||
for (s16 y = 0; y < roomsize.Y; y++)
|
||||
{
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, y, 0);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, y, roomsize.Z - 1);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
}
|
||||
|
||||
// Make +-Y walls (floor and ceiling)
|
||||
for (s16 z = 0; z < roomsize.Z; z++)
|
||||
for (s16 x = 0; x < roomsize.X; x++)
|
||||
{
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, 0, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x,roomsize. Y - 1, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & VMANIP_FLAG_DUNGEON_UNTOUCHABLE)
|
||||
continue;
|
||||
vmanip->m_data[vi] = n_cobble;
|
||||
}
|
||||
}
|
||||
|
||||
// Fill with air
|
||||
for (s16 z = 1; z < roomsize.Z - 1; z++)
|
||||
for (s16 y = 1; y < roomsize.Y - 1; y++)
|
||||
for (s16 x = 1; x < roomsize.X - 1; x++)
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, y, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
vmanip->m_flags[vi] |= VMANIP_FLAG_DUNGEON_UNTOUCHABLE;
|
||||
vmanip->m_data[vi] = n_air;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeFill(v3s16 place, v3s16 size,
|
||||
u8 avoid_flags, MapNode n, u8 or_flags)
|
||||
{
|
||||
for (s16 z = 0; z < size.Z; z++)
|
||||
for (s16 y = 0; y < size.Y; y++)
|
||||
for (s16 x = 0; x < size.X; x++)
|
||||
{
|
||||
v3s16 p = place + v3s16(x, y, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
continue;
|
||||
u32 vi = vmanip->m_area.index(p);
|
||||
if (vmanip->m_flags[vi] & avoid_flags)
|
||||
continue;
|
||||
vmanip->m_flags[vi] |= or_flags;
|
||||
vmanip->m_data[vi] = n;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeHole(v3s16 place)
|
||||
{
|
||||
makeFill(place, v3s16(1, 2, 1), 0, MapNode(CONTENT_AIR),
|
||||
VMANIP_FLAG_DUNGEON_INSIDE);
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeDoor(v3s16 doorplace, v3s16 doordir)
|
||||
{
|
||||
makeHole(doorplace);
|
||||
// Place torch (for testing)
|
||||
//vmanip->m_data[vmanip->m_area.index(doorplace)] = MapNode(cid_torch);
|
||||
}
|
||||
|
||||
|
||||
void DungeonGen::makeCorridor(v3s16 doorplace,
|
||||
v3s16 doordir, v3s16 &result_place, v3s16 &result_dir)
|
||||
{
|
||||
makeHole(doorplace);
|
||||
v3s16 p0 = doorplace;
|
||||
v3s16 dir = doordir;
|
||||
u32 length;
|
||||
/*if (random.next() % 2)
|
||||
length = random.range(1, 13);
|
||||
else
|
||||
length = random.range(1, 6);*/
|
||||
length = random.range(1, 13);
|
||||
u32 partlength = random.range(1, 13);
|
||||
u32 partcount = 0;
|
||||
s16 make_stairs = 0;
|
||||
|
||||
if (random.next() % 2 == 0 && partlength >= 3)
|
||||
make_stairs = random.next() % 2 ? 1 : -1;
|
||||
|
||||
for (u32 i = 0; i < length; i++) {
|
||||
v3s16 p = p0 + dir;
|
||||
if (partcount != 0)
|
||||
p.Y += make_stairs;
|
||||
|
||||
if (vmanip->m_area.contains(p) == true &&
|
||||
vmanip->m_area.contains(p + v3s16(0, 1, 0)) == true) {
|
||||
if (make_stairs) {
|
||||
makeFill(p + v3s16(-1, -1, -1), v3s16(3, 5, 3),
|
||||
VMANIP_FLAG_DUNGEON_UNTOUCHABLE, MapNode(cid_cobble), 0);
|
||||
makeHole(p);
|
||||
makeHole(p - dir);
|
||||
|
||||
// TODO: fix stairs code so it works 100% (quite difficult)
|
||||
|
||||
// exclude stairs from the bottom step
|
||||
if (((make_stairs == 1) && i != 0) ||
|
||||
((make_stairs == -1) && i != length - 1)) {
|
||||
// rotate face 180 deg if making stairs backwards
|
||||
int facedir = dir_to_facedir(dir * make_stairs);
|
||||
|
||||
u32 vi = vmanip->m_area.index(p.X - dir.X, p.Y - 1, p.Z - dir.Z);
|
||||
if (vmanip->m_data[vi].getContent() == cid_cobble)
|
||||
vmanip->m_data[vi] = MapNode(cid_cobblestair, 0, facedir);
|
||||
|
||||
vi = vmanip->m_area.index(p.X, p.Y, p.Z);
|
||||
if (vmanip->m_data[vi].getContent() == cid_cobble)
|
||||
vmanip->m_data[vi] = MapNode(cid_cobblestair, 0, facedir);
|
||||
}
|
||||
} else {
|
||||
makeFill(p + v3s16(-1, -1, -1), v3s16(3, 4, 3),
|
||||
VMANIP_FLAG_DUNGEON_UNTOUCHABLE, MapNode(cid_cobble), 0);
|
||||
makeHole(p);
|
||||
}
|
||||
|
||||
p0 = p;
|
||||
} else {
|
||||
// Can't go here, turn away
|
||||
dir = turn_xz(dir, random.range(0, 1));
|
||||
make_stairs = -make_stairs;
|
||||
partcount = 0;
|
||||
partlength = random.range(1, length);
|
||||
continue;
|
||||
}
|
||||
|
||||
partcount++;
|
||||
if (partcount >= partlength) {
|
||||
partcount = 0;
|
||||
|
||||
dir = random_turn(random, dir);
|
||||
|
||||
partlength = random.range(1,length);
|
||||
|
||||
make_stairs = 0;
|
||||
if (random.next() % 2 == 0 && partlength >= 3)
|
||||
make_stairs = random.next() % 2 ? 1 : -1;
|
||||
}
|
||||
}
|
||||
result_place = p0;
|
||||
result_dir = dir;
|
||||
}
|
||||
|
||||
|
||||
bool DungeonGen::findPlaceForDoor(v3s16 &result_place, v3s16 &result_dir)
|
||||
{
|
||||
for (u32 i = 0; i < 100; i++)
|
||||
{
|
||||
v3s16 p = m_pos + m_dir;
|
||||
v3s16 p1 = p + v3s16(0, 1, 0);
|
||||
if (vmanip->m_area.contains(p) == false
|
||||
|| vmanip->m_area.contains(p1) == false
|
||||
|| i % 4 == 0)
|
||||
{
|
||||
randomizeDir();
|
||||
continue;
|
||||
}
|
||||
if (vmanip->getNodeNoExNoEmerge(p).getContent() == cid_cobble
|
||||
&& vmanip->getNodeNoExNoEmerge(p1).getContent() == cid_cobble)
|
||||
{
|
||||
// Found wall, this is a good place!
|
||||
result_place = p;
|
||||
result_dir = m_dir;
|
||||
// Randomize next direction
|
||||
randomizeDir();
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
Determine where to move next
|
||||
*/
|
||||
// Jump one up if the actual space is there
|
||||
if (vmanip->getNodeNoExNoEmerge(p+v3s16(0,0,0)).getContent() == cid_cobble
|
||||
&& vmanip->getNodeNoExNoEmerge(p+v3s16(0,1,0)).getContent() == CONTENT_AIR
|
||||
&& vmanip->getNodeNoExNoEmerge(p+v3s16(0,2,0)).getContent() == CONTENT_AIR)
|
||||
p += v3s16(0,1,0);
|
||||
// Jump one down if the actual space is there
|
||||
if (vmanip->getNodeNoExNoEmerge(p+v3s16(0,1,0)).getContent() == cid_cobble
|
||||
&& vmanip->getNodeNoExNoEmerge(p+v3s16(0,0,0)).getContent() == CONTENT_AIR
|
||||
&& vmanip->getNodeNoExNoEmerge(p+v3s16(0,-1,0)).getContent() == CONTENT_AIR)
|
||||
p += v3s16(0,-1,0);
|
||||
// Check if walking is now possible
|
||||
if (vmanip->getNodeNoExNoEmerge(p).getContent() != CONTENT_AIR
|
||||
|| vmanip->getNodeNoExNoEmerge(p+v3s16(0,1,0)).getContent() != CONTENT_AIR)
|
||||
{
|
||||
// Cannot continue walking here
|
||||
randomizeDir();
|
||||
continue;
|
||||
}
|
||||
// Move there
|
||||
m_pos = p;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool DungeonGen::findPlaceForRoomDoor(v3s16 roomsize, v3s16 &result_doorplace,
|
||||
v3s16 &result_doordir, v3s16 &result_roomplace)
|
||||
{
|
||||
for (s16 trycount = 0; trycount < 30; trycount++)
|
||||
{
|
||||
v3s16 doorplace;
|
||||
v3s16 doordir;
|
||||
bool r = findPlaceForDoor(doorplace, doordir);
|
||||
if (r == false)
|
||||
continue;
|
||||
v3s16 roomplace;
|
||||
// X east, Z north, Y up
|
||||
#if 1
|
||||
if (doordir == v3s16(1, 0, 0)) // X+
|
||||
roomplace = doorplace +
|
||||
v3s16(0, -1, random.range(-roomsize.Z + 2, -2));
|
||||
if (doordir == v3s16(-1, 0, 0)) // X-
|
||||
roomplace = doorplace +
|
||||
v3s16(-roomsize.X + 1, -1, random.range(-roomsize.Z + 2, -2));
|
||||
if (doordir == v3s16(0, 0, 1)) // Z+
|
||||
roomplace = doorplace +
|
||||
v3s16(random.range(-roomsize.X + 2, -2), -1, 0);
|
||||
if (doordir == v3s16(0, 0, -1)) // Z-
|
||||
roomplace = doorplace +
|
||||
v3s16(random.range(-roomsize.X + 2, -2), -1, -roomsize.Z + 1);
|
||||
#endif
|
||||
#if 0
|
||||
if (doordir == v3s16(1, 0, 0)) // X+
|
||||
roomplace = doorplace + v3s16(0, -1, -roomsize.Z / 2);
|
||||
if (doordir == v3s16(-1, 0, 0)) // X-
|
||||
roomplace = doorplace + v3s16(-roomsize.X+1,-1,-roomsize.Z / 2);
|
||||
if (doordir == v3s16(0, 0, 1)) // Z+
|
||||
roomplace = doorplace + v3s16(-roomsize.X / 2, -1, 0);
|
||||
if (doordir == v3s16(0, 0, -1)) // Z-
|
||||
roomplace = doorplace + v3s16(-roomsize.X / 2, -1, -roomsize.Z + 1);
|
||||
#endif
|
||||
|
||||
// Check fit
|
||||
bool fits = true;
|
||||
for (s16 z = 1; z < roomsize.Z - 1; z++)
|
||||
for (s16 y = 1; y < roomsize.Y - 1; y++)
|
||||
for (s16 x = 1; x < roomsize.X - 1; x++)
|
||||
{
|
||||
v3s16 p = roomplace + v3s16(x, y, z);
|
||||
if (vmanip->m_area.contains(p) == false)
|
||||
{
|
||||
fits = false;
|
||||
break;
|
||||
}
|
||||
if (vmanip->m_flags[vmanip->m_area.index(p)]
|
||||
& VMANIP_FLAG_DUNGEON_INSIDE)
|
||||
{
|
||||
fits = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(fits == false)
|
||||
{
|
||||
// Find new place
|
||||
continue;
|
||||
}
|
||||
result_doorplace = doorplace;
|
||||
result_doordir = doordir;
|
||||
result_roomplace = roomplace;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
v3s16 rand_ortho_dir(PseudoRandom &random)
|
||||
{
|
||||
if (random.next() % 2 == 0)
|
||||
return random.next() % 2 ? v3s16(-1, 0, 0) : v3s16(1, 0, 0);
|
||||
else
|
||||
return random.next() % 2 ? v3s16(0, 0, -1) : v3s16(0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
v3s16 turn_xz(v3s16 olddir, int t)
|
||||
{
|
||||
v3s16 dir;
|
||||
if (t == 0)
|
||||
{
|
||||
// Turn right
|
||||
dir.X = olddir.Z;
|
||||
dir.Z = -olddir.X;
|
||||
dir.Y = olddir.Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Turn left
|
||||
dir.X = -olddir.Z;
|
||||
dir.Z = olddir.X;
|
||||
dir.Y = olddir.Y;
|
||||
}
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
v3s16 random_turn(PseudoRandom &random, v3s16 olddir)
|
||||
{
|
||||
int turn = random.range(0, 2);
|
||||
v3s16 dir;
|
||||
if (turn == 0)
|
||||
{
|
||||
// Go straight
|
||||
dir = olddir;
|
||||
}
|
||||
else if (turn == 1)
|
||||
// Turn right
|
||||
dir = turn_xz(olddir, 0);
|
||||
else
|
||||
// Turn left
|
||||
dir = turn_xz(olddir, 1);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
int dir_to_facedir(v3s16 d) {
|
||||
if (abs(d.X) > abs(d.Z))
|
||||
return d.X < 0 ? 3 : 1;
|
||||
else
|
||||
return d.Z < 0 ? 2 : 0;
|
||||
}
|
||||
128
src/dungeongen.h
Normal file
128
src/dungeongen.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef DUNGEONGEN_HEADER
|
||||
#define DUNGEONGEN_HEADER
|
||||
|
||||
#include "voxel.h"
|
||||
#include "noise.h"
|
||||
|
||||
#define VMANIP_FLAG_DUNGEON_INSIDE VOXELFLAG_CHECKED1
|
||||
#define VMANIP_FLAG_DUNGEON_PRESERVE VOXELFLAG_CHECKED2
|
||||
#define VMANIP_FLAG_DUNGEON_UNTOUCHABLE (\
|
||||
VMANIP_FLAG_DUNGEON_INSIDE|VMANIP_FLAG_DUNGEON_PRESERVE)
|
||||
|
||||
class ManualMapVoxelManipulator;
|
||||
class INodeDefManager;
|
||||
|
||||
v3s16 rand_ortho_dir(PseudoRandom &random);
|
||||
v3s16 turn_xz(v3s16 olddir, int t);
|
||||
v3s16 random_turn(PseudoRandom &random, v3s16 olddir);
|
||||
int dir_to_facedir(v3s16 d);
|
||||
|
||||
class DungeonGen {
|
||||
public:
|
||||
u32 blockseed;
|
||||
u64 mapseed;
|
||||
ManualMapVoxelManipulator *vmanip;
|
||||
INodeDefManager *ndef;
|
||||
PseudoRandom random;
|
||||
v3s16 csize;
|
||||
s16 water_level;
|
||||
|
||||
NoiseParams *np_rarity;
|
||||
NoiseParams *np_wetness;
|
||||
NoiseParams *np_density;
|
||||
|
||||
content_t cid_water_source;
|
||||
content_t cid_cobble;
|
||||
content_t cid_mossycobble;
|
||||
content_t cid_torch;
|
||||
content_t cid_cobblestair;
|
||||
|
||||
//RoomWalker
|
||||
v3s16 m_pos;
|
||||
v3s16 m_dir;
|
||||
|
||||
DungeonGen(INodeDefManager *ndef, u64 seed, s16 waterlevel);
|
||||
void generate(ManualMapVoxelManipulator *vm, u32 bseed,
|
||||
v3s16 full_node_min, v3s16 full_node_max);
|
||||
//void generate(v3s16 full_node_min, v3s16 full_node_max, u32 bseed);
|
||||
|
||||
void makeDungeon(v3s16 start_padding);
|
||||
void makeRoom(v3s16 roomsize, v3s16 roomplace);
|
||||
void makeCorridor(v3s16 doorplace, v3s16 doordir,
|
||||
v3s16 &result_place, v3s16 &result_dir);
|
||||
void makeDoor(v3s16 doorplace, v3s16 doordir);
|
||||
void makeFill(v3s16 place, v3s16 size, u8 avoid_flags, MapNode n, u8 or_flags);
|
||||
void makeHole(v3s16 place);
|
||||
|
||||
bool findPlaceForDoor(v3s16 &result_place, v3s16 &result_dir);
|
||||
bool findPlaceForRoomDoor(v3s16 roomsize, v3s16 &result_doorplace,
|
||||
v3s16 &result_doordir, v3s16 &result_roomplace);
|
||||
|
||||
void randomizeDir()
|
||||
{
|
||||
m_dir = rand_ortho_dir(random);
|
||||
}
|
||||
};
|
||||
|
||||
class RoomWalker
|
||||
{
|
||||
public:
|
||||
|
||||
RoomWalker(VoxelManipulator &vmanip_, v3s16 pos, PseudoRandom &random,
|
||||
INodeDefManager *ndef):
|
||||
vmanip(vmanip_),
|
||||
m_pos(pos),
|
||||
m_random(random),
|
||||
m_ndef(ndef)
|
||||
{
|
||||
randomizeDir();
|
||||
}
|
||||
|
||||
void randomizeDir()
|
||||
{
|
||||
m_dir = rand_ortho_dir(m_random);
|
||||
}
|
||||
|
||||
void setPos(v3s16 pos)
|
||||
{
|
||||
m_pos = pos;
|
||||
}
|
||||
|
||||
void setDir(v3s16 dir)
|
||||
{
|
||||
m_dir = dir;
|
||||
}
|
||||
|
||||
//bool findPlaceForDoor(v3s16 &result_place, v3s16 &result_dir);
|
||||
//bool findPlaceForRoomDoor(v3s16 roomsize, v3s16 &result_doorplace,
|
||||
// v3s16 &result_doordir, v3s16 &result_roomplace);
|
||||
|
||||
private:
|
||||
VoxelManipulator &vmanip;
|
||||
v3s16 m_pos;
|
||||
v3s16 m_dir;
|
||||
PseudoRandom &m_random;
|
||||
INodeDefManager *m_ndef;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
Minetest-c55
|
||||
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -31,23 +32,29 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "mapblock.h"
|
||||
#include "serverobject.h"
|
||||
#include "settings.h"
|
||||
#include "script.h"
|
||||
#include "scriptapi.h"
|
||||
#include "cpp_api/scriptapi.h"
|
||||
#include "profiler.h"
|
||||
#include "log.h"
|
||||
#include "nodedef.h"
|
||||
#include "biome.h"
|
||||
#include "emerge.h"
|
||||
#include "mapgen_v6.h"
|
||||
#include "mapgen_v7.h"
|
||||
#include "mapgen_indev.h"
|
||||
#include "mapgen_singlenode.h"
|
||||
|
||||
|
||||
/////////////////////////////// Emerge Manager ////////////////////////////////
|
||||
|
||||
EmergeManager::EmergeManager(IGameDef *gamedef, BiomeDefManager *bdef) {
|
||||
EmergeManager::EmergeManager(IGameDef *gamedef) {
|
||||
//register built-in mapgens
|
||||
registerMapgen("v6", new MapgenFactoryV6());
|
||||
registerMapgen("v7", new MapgenFactoryV7());
|
||||
registerMapgen("indev", new MapgenFactoryIndev());
|
||||
registerMapgen("singlenode", new MapgenFactorySinglenode());
|
||||
|
||||
this->biomedef = bdef ? bdef : new BiomeDefManager(gamedef);
|
||||
this->ndef = gamedef->getNodeDefManager();
|
||||
this->biomedef = new BiomeDefManager();
|
||||
this->params = NULL;
|
||||
|
||||
mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
||||
@@ -88,9 +95,20 @@ EmergeManager::~EmergeManager() {
|
||||
delete emergethread[i];
|
||||
delete mapgen[i];
|
||||
}
|
||||
emergethread.clear();
|
||||
mapgen.clear();
|
||||
|
||||
for (unsigned int i = 0; i < ores.size(); i++)
|
||||
delete ores[i];
|
||||
ores.clear();
|
||||
|
||||
for (std::map<std::string, MapgenFactory *>::iterator iter = mglist.begin();
|
||||
iter != mglist.end(); iter ++) {
|
||||
delete iter->second;
|
||||
}
|
||||
mglist.clear();
|
||||
|
||||
delete biomedef;
|
||||
delete params;
|
||||
}
|
||||
|
||||
|
||||
@@ -100,6 +118,8 @@ void EmergeManager::initMapgens(MapgenParams *mgparams) {
|
||||
if (mapgen.size())
|
||||
return;
|
||||
|
||||
biomedef->resolveNodeNames(ndef);
|
||||
|
||||
this->params = mgparams;
|
||||
for (unsigned int i = 0; i != emergethread.size(); i++) {
|
||||
mg = createMapgen(params->mg_name, 0, params);
|
||||
@@ -233,6 +253,8 @@ MapgenParams *EmergeManager::createMapgenParams(std::string mgname) {
|
||||
MapgenParams *EmergeManager::getParamsFromSettings(Settings *settings) {
|
||||
std::string mg_name = settings->get("mg_name");
|
||||
MapgenParams *mgparams = createMapgenParams(mg_name);
|
||||
if (!mgparams)
|
||||
return NULL;
|
||||
|
||||
mgparams->mg_name = mg_name;
|
||||
mgparams->seed = settings->getU64(settings == g_settings ? "fixed_map_seed" : "seed");
|
||||
@@ -326,7 +348,7 @@ bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b,
|
||||
|
||||
void *EmergeThread::Thread() {
|
||||
ThreadStarted();
|
||||
log_register_thread("EmergeThread" + id);
|
||||
log_register_thread("EmergeThread" + itos(id));
|
||||
DSTACK(__FUNCTION_NAME);
|
||||
BEGIN_DEBUG_EXCEPTION_HANDLER
|
||||
|
||||
@@ -359,7 +381,7 @@ void *EmergeThread::Thread() {
|
||||
*/
|
||||
BlockMakeData data;
|
||||
MapBlock *block = NULL;
|
||||
core::map<v3s16, MapBlock *> modified_blocks;
|
||||
std::map<v3s16, MapBlock *> modified_blocks;
|
||||
|
||||
if (getBlockOrStartGen(p, &block, &data, allow_generate)) {
|
||||
{
|
||||
@@ -395,7 +417,7 @@ void *EmergeThread::Thread() {
|
||||
ign(&m_server->m_ignore_map_edit_events_area,
|
||||
VoxelArea(minp, maxp));
|
||||
{ // takes about 90ms with -O1 on an e3-1230v2
|
||||
scriptapi_environment_on_generated(m_server->m_lua,
|
||||
SERVER_TO_SA(m_server)->environment_OnGenerated(
|
||||
minp, maxp, emerge->getBlockSeed(minp));
|
||||
}
|
||||
|
||||
@@ -415,13 +437,13 @@ void *EmergeThread::Thread() {
|
||||
JMutexAutoLock lock(m_server->m_con_mutex);
|
||||
// Add the originally fetched block to the modified list
|
||||
if (block)
|
||||
modified_blocks.insert(p, block);
|
||||
modified_blocks[p] = block;
|
||||
|
||||
// Set the modified blocks unsent for all the clients
|
||||
for (core::map<u16, RemoteClient*>::Iterator
|
||||
i = m_server->m_clients.getIterator();
|
||||
i.atEnd() == false; i++) {
|
||||
RemoteClient *client = i.getNode()->getValue();
|
||||
for (std::map<u16, RemoteClient*>::iterator
|
||||
i = m_server->m_clients.begin();
|
||||
i != m_server->m_clients.end(); ++i) {
|
||||
RemoteClient *client = i->second;
|
||||
if (modified_blocks.size() > 0) {
|
||||
// Remove block from sent history
|
||||
client->SetBlocksNotSent(modified_blocks);
|
||||
|
||||
30
src/emerge.h
30
src/emerge.h
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
Minetest
|
||||
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef EMERGE_HEADER
|
||||
#define EMERGE_HEADER
|
||||
|
||||
@@ -12,8 +31,8 @@
|
||||
infostream << "EmergeThread: " x << std::endl; }
|
||||
|
||||
class Mapgen;
|
||||
class MapgenParams;
|
||||
class MapgenFactory;
|
||||
struct MapgenParams;
|
||||
struct MapgenFactory;
|
||||
class Biome;
|
||||
class BiomeDefManager;
|
||||
class EmergeThread;
|
||||
@@ -46,6 +65,8 @@ struct BlockEmergeData {
|
||||
|
||||
class EmergeManager {
|
||||
public:
|
||||
INodeDefManager *ndef;
|
||||
|
||||
std::map<std::string, MapgenFactory *> mglist;
|
||||
|
||||
std::vector<Mapgen *> mapgen;
|
||||
@@ -63,10 +84,11 @@ class EmergeManager {
|
||||
std::map<v3s16, BlockEmergeData *> blocks_enqueued;
|
||||
std::map<u16, u16> peer_queue_count;
|
||||
|
||||
//biome manager
|
||||
//Mapgen-related structures
|
||||
BiomeDefManager *biomedef;
|
||||
std::vector<Ore *> ores;
|
||||
|
||||
EmergeManager(IGameDef *gamedef, BiomeDefManager *bdef);
|
||||
EmergeManager(IGameDef *gamedef);
|
||||
~EmergeManager();
|
||||
|
||||
void initMapgens(MapgenParams *mgparams);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
*/
|
||||
|
||||
#include <set>
|
||||
#include <list>
|
||||
#include "irrlichttypes_extrabloated.h"
|
||||
#include "player.h"
|
||||
#include <ostream>
|
||||
@@ -49,6 +50,7 @@ class IGameDef;
|
||||
class Map;
|
||||
class ServerMap;
|
||||
class ClientMap;
|
||||
class ScriptApi;
|
||||
|
||||
class Environment
|
||||
{
|
||||
@@ -73,8 +75,8 @@ class Environment
|
||||
Player * getPlayer(const char *name);
|
||||
Player * getRandomConnectedPlayer();
|
||||
Player * getNearestConnectedPlayer(v3f pos);
|
||||
core::list<Player*> getPlayers();
|
||||
core::list<Player*> getPlayers(bool ignore_disconnected);
|
||||
std::list<Player*> getPlayers();
|
||||
std::list<Player*> getPlayers(bool ignore_disconnected);
|
||||
void printPlayers(std::ostream &o);
|
||||
|
||||
u32 getDayNightRatio();
|
||||
@@ -102,7 +104,7 @@ class Environment
|
||||
|
||||
protected:
|
||||
// peer_ids in here should be unique, except that there may be many 0s
|
||||
core::list<Player*> m_players;
|
||||
std::list<Player*> m_players;
|
||||
// Time of day in milli-hours (0-23999); determines day and night
|
||||
u32 m_time_of_day;
|
||||
// Time of day in 0...1
|
||||
@@ -156,20 +158,20 @@ struct ABMWithState
|
||||
class ActiveBlockList
|
||||
{
|
||||
public:
|
||||
void update(core::list<v3s16> &active_positions,
|
||||
void update(std::list<v3s16> &active_positions,
|
||||
s16 radius,
|
||||
core::map<v3s16, bool> &blocks_removed,
|
||||
core::map<v3s16, bool> &blocks_added);
|
||||
std::set<v3s16> &blocks_removed,
|
||||
std::set<v3s16> &blocks_added);
|
||||
|
||||
bool contains(v3s16 p){
|
||||
return (m_list.find(p) != NULL);
|
||||
return (m_list.find(p) != m_list.end());
|
||||
}
|
||||
|
||||
void clear(){
|
||||
m_list.clear();
|
||||
}
|
||||
|
||||
core::map<v3s16, bool> m_list;
|
||||
std::set<v3s16> m_list;
|
||||
|
||||
private:
|
||||
};
|
||||
@@ -189,7 +191,7 @@ class IBackgroundBlockEmerger
|
||||
class ServerEnvironment : public Environment
|
||||
{
|
||||
public:
|
||||
ServerEnvironment(ServerMap *map, lua_State *L, IGameDef *gamedef,
|
||||
ServerEnvironment(ServerMap *map, ScriptApi *iface, IGameDef *gamedef,
|
||||
IBackgroundBlockEmerger *emerger);
|
||||
~ServerEnvironment();
|
||||
|
||||
@@ -197,8 +199,9 @@ class ServerEnvironment : public Environment
|
||||
|
||||
ServerMap & getServerMap();
|
||||
|
||||
lua_State* getLua()
|
||||
{ return m_lua; }
|
||||
//TODO find way to remove this fct!
|
||||
ScriptApi* getScriptIface()
|
||||
{ return m_script; }
|
||||
|
||||
IGameDef *getGameDef()
|
||||
{ return m_gamedef; }
|
||||
@@ -249,16 +252,16 @@ class ServerEnvironment : public Environment
|
||||
inside a radius around a position
|
||||
*/
|
||||
void getAddedActiveObjects(v3s16 pos, s16 radius,
|
||||
core::map<u16, bool> ¤t_objects,
|
||||
core::map<u16, bool> &added_objects);
|
||||
std::set<u16> ¤t_objects,
|
||||
std::set<u16> &added_objects);
|
||||
|
||||
/*
|
||||
Find out what new objects have been removed from
|
||||
inside a radius around a position
|
||||
*/
|
||||
void getRemovedActiveObjects(v3s16 pos, s16 radius,
|
||||
core::map<u16, bool> ¤t_objects,
|
||||
core::map<u16, bool> &removed_objects);
|
||||
std::set<u16> ¤t_objects,
|
||||
std::set<u16> &removed_objects);
|
||||
|
||||
/*
|
||||
Get the next message emitted by some active object.
|
||||
@@ -297,6 +300,9 @@ class ServerEnvironment : public Environment
|
||||
// This makes stuff happen
|
||||
void step(f32 dtime);
|
||||
|
||||
//check if there's a line of sight between two positions
|
||||
bool line_of_sight(v3f pos1, v3f pos2, float stepsize=1.0);
|
||||
|
||||
private:
|
||||
|
||||
/*
|
||||
@@ -344,13 +350,13 @@ class ServerEnvironment : public Environment
|
||||
// The map
|
||||
ServerMap *m_map;
|
||||
// Lua state
|
||||
lua_State *m_lua;
|
||||
ScriptApi* m_script;
|
||||
// Game definition
|
||||
IGameDef *m_gamedef;
|
||||
// Background block emerger (the server, in practice)
|
||||
IBackgroundBlockEmerger *m_emerger;
|
||||
// Active object list
|
||||
core::map<u16, ServerActiveObject*> m_active_objects;
|
||||
std::map<u16, ServerActiveObject*> m_active_objects;
|
||||
// Outgoing network message buffer for active objects
|
||||
Queue<ActiveObjectMessage> m_active_object_messages;
|
||||
// Some timers
|
||||
@@ -368,7 +374,7 @@ class ServerEnvironment : public Environment
|
||||
u32 m_game_time;
|
||||
// A helper variable for incrementing the latter
|
||||
float m_game_time_fraction_counter;
|
||||
core::list<ABMWithState> m_abms;
|
||||
std::list<ABMWithState> m_abms;
|
||||
// An interval for generally sending object positions and stuff
|
||||
float m_recommended_send_interval;
|
||||
};
|
||||
@@ -463,12 +469,19 @@ class ClientEnvironment : public Environment
|
||||
|
||||
// Get all nearby objects
|
||||
void getActiveObjects(v3f origin, f32 max_d,
|
||||
core::array<DistanceSortedActiveObject> &dest);
|
||||
std::vector<DistanceSortedActiveObject> &dest);
|
||||
|
||||
// Get event from queue. CEE_NONE is returned if queue is empty.
|
||||
ClientEnvEvent getClientEvent();
|
||||
|
||||
std::vector<core::vector2d<int> > attachment_list; // X is child ID, Y is parent ID
|
||||
|
||||
std::list<std::string> getPlayerNames()
|
||||
{ return m_player_names; }
|
||||
void addPlayerName(std::string name)
|
||||
{ m_player_names.push_back(name); }
|
||||
void removePlayerName(std::string name)
|
||||
{ m_player_names.remove(name); }
|
||||
|
||||
private:
|
||||
ClientMap *m_map;
|
||||
@@ -476,11 +489,12 @@ class ClientEnvironment : public Environment
|
||||
ITextureSource *m_texturesource;
|
||||
IGameDef *m_gamedef;
|
||||
IrrlichtDevice *m_irr;
|
||||
core::map<u16, ClientActiveObject*> m_active_objects;
|
||||
core::list<ClientSimpleObject*> m_simple_objects;
|
||||
std::map<u16, ClientActiveObject*> m_active_objects;
|
||||
std::list<ClientSimpleObject*> m_simple_objects;
|
||||
Queue<ClientEnvEvent> m_client_event_queue;
|
||||
IntervalLimiter m_active_object_light_update_interval;
|
||||
IntervalLimiter m_lava_hurt_interval;
|
||||
std::list<std::string> m_player_names;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -112,13 +112,13 @@ struct HeightPoint
|
||||
float have_sand;
|
||||
float tree_amount;
|
||||
};
|
||||
core::map<v2s16, HeightPoint> g_heights;
|
||||
std::map<v2s16, HeightPoint> g_heights;
|
||||
|
||||
HeightPoint ground_height(u64 seed, v2s16 p2d)
|
||||
{
|
||||
core::map<v2s16, HeightPoint>::Node *n = g_heights.find(p2d);
|
||||
if(n)
|
||||
return n->getValue();
|
||||
std::map<v2s16, HeightPoint>::iterator n = g_heights.find(p2d);
|
||||
if(n != g_heights.end())
|
||||
return n->second;
|
||||
HeightPoint hp;
|
||||
s16 level = Mapgen::find_ground_level_from_noise(seed, p2d, 3);
|
||||
hp.gh = (level-4)*BS;
|
||||
|
||||
810
src/game.cpp
810
src/game.cpp
File diff suppressed because it is too large
Load Diff
25
src/game.h
25
src/game.h
@@ -23,17 +23,18 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "irrlichttypes_extrabloated.h"
|
||||
#include <string>
|
||||
#include "keycode.h"
|
||||
#include <list>
|
||||
|
||||
class KeyList : protected core::list<KeyPress>
|
||||
class KeyList : protected std::list<KeyPress>
|
||||
{
|
||||
typedef core::list<KeyPress> super;
|
||||
typedef super::Iterator Iterator;
|
||||
typedef super::ConstIterator ConstIterator;
|
||||
typedef std::list<KeyPress> super;
|
||||
typedef super::iterator iterator;
|
||||
typedef super::const_iterator const_iterator;
|
||||
|
||||
virtual ConstIterator find(const KeyPress &key) const
|
||||
virtual const_iterator find(const KeyPress &key) const
|
||||
{
|
||||
ConstIterator f(begin());
|
||||
ConstIterator e(end());
|
||||
const_iterator f(begin());
|
||||
const_iterator e(end());
|
||||
while (f!=e) {
|
||||
if (*f == key)
|
||||
return f;
|
||||
@@ -42,10 +43,10 @@ class KeyList : protected core::list<KeyPress>
|
||||
return e;
|
||||
}
|
||||
|
||||
virtual Iterator find(const KeyPress &key)
|
||||
virtual iterator find(const KeyPress &key)
|
||||
{
|
||||
Iterator f(begin());
|
||||
Iterator e(end());
|
||||
iterator f(begin());
|
||||
iterator e(end());
|
||||
while (f!=e) {
|
||||
if (*f == key)
|
||||
return f;
|
||||
@@ -65,14 +66,14 @@ class KeyList : protected core::list<KeyPress>
|
||||
|
||||
void unset(const KeyPress &key)
|
||||
{
|
||||
Iterator p(find(key));
|
||||
iterator p(find(key));
|
||||
if (p != end())
|
||||
erase(p);
|
||||
}
|
||||
|
||||
void toggle(const KeyPress &key)
|
||||
{
|
||||
Iterator p(this->find(key));
|
||||
iterator p(this->find(key));
|
||||
if (p != end())
|
||||
erase(p);
|
||||
else
|
||||
|
||||
@@ -117,6 +117,18 @@ std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups)
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string gob_cmd_update_physics_override(float physics_override_speed, float physics_override_jump, float physics_override_gravity)
|
||||
{
|
||||
std::ostringstream os(std::ios::binary);
|
||||
// command
|
||||
writeU8(os, GENERIC_CMD_SET_PHYSICS_OVERRIDE);
|
||||
// parameters
|
||||
writeF1000(os, physics_override_speed);
|
||||
writeF1000(os, physics_override_jump);
|
||||
writeF1000(os, physics_override_gravity);
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string gob_cmd_update_animation(v2f frames, float frame_speed, float frame_blend)
|
||||
{
|
||||
std::ostringstream os(std::ios::binary);
|
||||
|
||||
@@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#define GENERIC_CMD_SET_ANIMATION 6
|
||||
#define GENERIC_CMD_SET_BONE_POSITION 7
|
||||
#define GENERIC_CMD_SET_ATTACHMENT 8
|
||||
#define GENERIC_CMD_SET_PHYSICS_OVERRIDE 9
|
||||
|
||||
#include "object_properties.h"
|
||||
std::string gob_cmd_set_properties(const ObjectProperties &prop);
|
||||
@@ -62,6 +63,8 @@ std::string gob_cmd_punched(s16 damage, s16 result_hp);
|
||||
#include "itemgroup.h"
|
||||
std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups);
|
||||
|
||||
std::string gob_cmd_update_physics_override(float physics_override_speed, float physics_override_jump, float physics_override_gravity);
|
||||
|
||||
std::string gob_cmd_update_animation(v2f frames, float frame_speed, float frame_blend);
|
||||
|
||||
std::string gob_cmd_update_bone_position(std::string bone, v3f position, v3f rotation);
|
||||
|
||||
@@ -31,7 +31,15 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
Normal build: main.cpp
|
||||
Server build: servermain.cpp
|
||||
*/
|
||||
enum TimePrecision {
|
||||
PRECISION_SECONDS,
|
||||
PRECISION_MILLI,
|
||||
PRECISION_MICRO,
|
||||
PRECISION_NANO
|
||||
};
|
||||
|
||||
extern u32 getTimeMs();
|
||||
extern u32 getTime(TimePrecision prec);
|
||||
|
||||
/*
|
||||
Timestamp stuff
|
||||
|
||||
@@ -121,6 +121,9 @@ GUIChatConsole::GUIChatConsole(
|
||||
|
||||
GUIChatConsole::~GUIChatConsole()
|
||||
{
|
||||
#if USE_FREETYPE
|
||||
m_font->drop();
|
||||
#endif
|
||||
}
|
||||
|
||||
void GUIChatConsole::openConsole(f32 height)
|
||||
@@ -131,6 +134,11 @@ void GUIChatConsole::openConsole(f32 height)
|
||||
reformatConsole();
|
||||
}
|
||||
|
||||
bool GUIChatConsole::isOpen() const
|
||||
{
|
||||
return m_open;
|
||||
}
|
||||
|
||||
bool GUIChatConsole::isOpenInhibited() const
|
||||
{
|
||||
return m_open_inhibited > 0;
|
||||
@@ -535,7 +543,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
|
||||
{
|
||||
// Tab or Shift-Tab pressed
|
||||
// Nick completion
|
||||
core::list<std::wstring> names = m_client->getConnectedPlayerNames();
|
||||
std::list<std::string> names = m_client->getConnectedPlayerNames();
|
||||
bool backwards = event.KeyInput.Shift;
|
||||
m_chat_backend->getPrompt().nickCompletion(names, backwards);
|
||||
return true;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user