Compare commits

..

219 Commits
0.4.6 ... 0.4.7

Author SHA1 Message Date
PilzAdam
6b3e553dd5 Bump version to 0.4.7 2013-06-06 17:14:26 +00:00
PilzAdam
bfa608b85e Revert "Fix multiple texture support for animated meshnodes." (broke existing models)
This reverts commit 649dca4d16.
2013-06-06 17:13:41 +00:00
Esteban I. Ruiz Moreno
7cb5217255 Close console when it loses focus but it is still on screen 2013-06-05 21:14:14 +02:00
Kahrl
4f6bec19bc Only add ^[forcesingle to get raw texture if atlas is used 2013-06-04 07:44:19 +02:00
stujones11
649dca4d16 Fix multiple texture support for animated meshnodes. 2013-06-03 23:31:08 +02:00
sweetbomber
601ab85226 Corrected segfault when registering new biomes. 2013-06-03 20:35:51 +02:00
Kahrl
e988df0fbd Add and implement setting max_clearobjects_extra_loaded_blocks.
Now Environment::clearAllObjects() unloads unused blocks in an interval
defined by max_clearobjects_extra_loaded_blocks (default 4096).
2013-06-03 20:09:32 +02:00
Kahrl
b89c79e905 Delay deleting replaced textures (m_texture_trash) 2013-06-03 15:50:14 +02:00
Kahrl
9fe74a34ea Call m_menumgr->deletingMenu from quitMenu in addition to destructor
This fixes the bug where noMenuActive() keeps returning false after
closing a menu until the mouse is moved, rendering the keyboard
unusable (the_game calls input->clear() every frame when
noMenuActive() is false).
2013-06-03 15:25:48 +02:00
bcnjr5
64befefcfc Add Code::Blocks project and build files to .gitignore 2013-06-03 04:30:59 +02:00
Kahrl
6f9d384311 Replace c55.me links 2013-06-03 01:57:42 +02:00
sapier
c25102a4f7 Fix missing find_path and line_of_sight 2013-06-01 15:07:43 +02:00
MetaDucky
c893958bb1 Fix some nullptr exceptions when handling invalid node inventories 2013-06-01 14:45:43 +02:00
Ilya Zhuravlev
db9c86d6c1 Translated using Weblate (French) 2013-06-01 13:23:00 +02:00
Weblate
1dfc2e02b3 Merge remote-tracking branch 'origin/master' 2013-06-01 13:18:52 +02:00
Frederico Guimarães
ec039a3d12 Translated using Weblate (Portuguese (Brazil)) 2013-06-01 13:18:42 +02:00
v c
77acdfed43 Translated using Weblate (Portuguese) 2013-06-01 13:18:42 +02:00
Chynggyz Jumaliev
926a47f35b Translated using Weblate (Kirghiz) 2013-06-01 13:18:42 +02:00
Pilz Adam
df2f4168e5 Translated using Weblate (German) 2013-06-01 13:18:41 +02:00
Shen Zheyu
fe560d81e7 Translated using Weblate (Chinese (China)) 2013-06-01 13:18:41 +02:00
MetaDucky
64627817fc Fix minetest.get_inventory(loc) always returning nil for "node" type loc 2013-06-01 12:15:11 +02:00
MetaDucky
a61aa6690b Fix editbox default text being pre-selected in some cases 2013-06-01 01:59:48 +02:00
Kahrl
7721948a2f Generate debug HUD text with ostringstream instead of snprintf.
This should fix #730.
2013-06-01 01:50:08 +02:00
proller
6b2c46c431 Liquid adjusting: continue to drop 2013-05-31 22:59:09 +04:00
manuel joaquim
83f1d7cd9e Translated using Weblate (Portuguese) 2013-05-30 00:03:27 +02:00
manuel duarte
13f7049d84 Translated using Weblate (Portuguese) 2013-05-29 01:32:19 +02:00
manuel duarte
503e61cf2b Translated using Weblate (Portuguese) 2013-05-29 01:31:47 +02:00
sapier
efc75db764 Bugfix: Update formname on showing new formspec while already one shown 2013-05-26 01:45:46 +02:00
MetaDucky
f62ddf9022 Fixed wrongly named invref:get_location() table members for nodes.
Makes the result compatible with the minetest.get_inventory(location) param.
2013-05-26 00:35:11 +02:00
Kahrl
96fe1de832 Add ObjectRef.hud_set_hotbar_itemcount and add TOCLIENT_HUD_SET_PARAM 2013-05-26 00:23:33 +02:00
PilzAdam
730d316efe Higher resolution menuheader 2013-05-25 20:12:51 +02:00
sapier
e464f19356 Fix itemstack:add item not working correct 2013-05-25 19:23:10 +02:00
sapier
ab43377577 Move scriptapi to separate folder (by sapier)
On the lua side, notably minetest.env:<function>(<args>) should now
be replaced by minetest.<function>(<args>).
The old way is and will stay supported for a long time.

Also:
Update and clean up lua_api.txt (by celeron55)
Move EnvRef to lua and remove add_rat and add_firefly (by kahrl)
Add separate src/util/CMakeLists.txt, other minor fixes (by kahrl)
2013-05-25 00:51:02 +02:00
PilzAdam
865f380c91 Predict param2 of facedir nodes and attachment of attached_node nodes 2013-05-24 02:10:03 +02:00
Jeija
3abbe7efd1 Make raillike nodes connect to any other raillike nodes if both are in the group connect_to_raillike 2013-05-22 15:08:24 +02:00
PilzAdam
7f6e9e9540 Fix disappearing of wielditem 2013-05-21 20:16:22 +02:00
Kahrl
4a9fe1a1d5 Log non-fatal mod name conflict to actionstream instead of errorstream 2013-05-21 14:56:43 +02:00
PilzAdam
e57dc4ef18 Dont animate changing wielditem from hand to hand 2013-05-20 20:31:38 +02:00
PilzAdam
c67f72890c Add menu_header.png and remove old, unused textures 2013-05-20 17:04:00 +02:00
MetaDucky
5e80df46b8 Fix typo in particle spawning 2013-05-20 16:24:07 +02:00
elagin
c135e9c7d4 Save settings after dropping main menu 2013-05-20 16:03:48 +02:00
Russ
1ba1fb42a4 Fix link in minetest.conf.example 2013-05-20 15:51:21 +02:00
ShadowNinja
127c488355 Use the group "soil" for nodes that saplings grow on 2013-05-20 13:43:13 +02:00
kwolekr
981c6c9bf2 Fix lava damage on player's upper body 2013-05-19 21:29:49 -04:00
kwolekr
d00e8bd31a Fix nearly all warnings 2013-05-19 21:26:56 -04:00
sapier
55a97f4605 Allow nil as puncher e.g. to do damage by tnt 2013-05-20 01:18:45 +02:00
PilzAdam
3e2efdf18a Add a little animation when changing the wielded item 2013-05-20 01:09:41 +02:00
PilzAdam
bc66f46323 Dont teleport back if holding sneak when detaching/turn freemove off 2013-05-19 20:56:58 +02:00
Kahrl
cc92e45b78 Fix EmergeThread names in log
Concatenate the thread id as string instead of adding it to the pointer
2013-05-19 19:58:01 +02:00
PilzAdam
b2253e5b42 Write mods that are not in world.mt into it at world startup 2013-05-19 19:52:29 +02:00
PilzAdam
dcd0b63f64 Dont load mods that have no entry in world.mt 2013-05-19 19:46:50 +02:00
PilzAdam
b2577b1f27 Install mods/mods_here.txt instead of mods/minetest/mods_here.txt 2013-05-19 18:47:58 +02:00
kwolekr
93474c4218 Remove no virtual dtor warnings, make MapgenParams contain actual NoiseParams 2013-05-19 12:22:20 -04:00
kwolekr
f577facf79 Fix regression of world loading caused by 81c863ac 2013-05-19 12:07:00 -04:00
PilzAdam
45fcc9de29 New modsystem
Mods are placed in $path_<user/share>/mods
They can be enabled per world in world.mt or the configure world window
2013-05-19 02:15:36 +02:00
Shen Zheyu
b24f7a4d13 Translated using Weblate (Chinese (China)) 2013-05-18 16:22:44 +02:00
PilzAdam
6074163bf3 Remove survival and build from CMakeLists.txt 2013-05-18 16:14:06 +02:00
PilzAdam
b76ec317c9 Remove common from CMakeLists.txt, README.txt, lua-api.txt and buildwin.sh 2013-05-18 16:13:32 +02:00
PilzAdam
714ecc5e27 Only create SoundManager in main menu if USE_SOUND is true 2013-05-18 13:01:47 +02:00
PilzAdam
9397b5de08 Fix memory leak in MeshUpdateThread 2013-05-18 01:52:18 +02:00
Aaron Suen
1369503aba Fix math for isBlockInSight. Fixes #718 (client-side). 2013-05-18 00:13:01 +02:00
PilzAdam
fedf644635 Move kahrl to core devs in credits tab 2013-05-17 23:15:10 +02:00
sfan5
f9b5771274 Fix Problem with uk Translation 2013-05-17 23:38:23 +03:00
we prefer instagib metl3
8512cd967d Translated using Weblate (French) 2013-05-17 19:20:30 +02:00
Diego Martínez
94eb370710 Translated using Weblate (Spanish) 2013-05-16 14:51:51 +02:00
PilzAdam
587e7b299b Dont drop fonts with ENABLE_FREETYPE=0 2013-05-16 02:20:10 +02:00
PilzAdam
d5ca3b721e Fix memory leak in run_tests() 2013-05-14 12:29:30 +02:00
Frederico Guimarães
27f5ff950e Translated using Weblate (Portuguese (Brazil)) 2013-05-13 20:26:52 +02:00
sfan5
4a95c37e14 Translated using Weblate (German) 2013-05-13 18:39:08 +02:00
PilzAdam
5d9ab86adf Update po files 2013-05-13 18:27:00 +02:00
Weblate
e0564d5de0 Merge remote-tracking branch 'origin/master' 2013-05-13 18:19:51 +02:00
Anton Tsyganenko
be96fa2fb8 Translated using Weblate (Russian) 2013-05-13 18:19:41 +02:00
Sindre Tellevik
726dcaacb6 Translated using Weblate (Norwegian Bokmål) 2013-05-13 18:19:40 +02:00
we prefer instagib metl3
70190624c6 Translated using Weblate (French) 2013-05-13 18:19:40 +02:00
sfan5
71e5a466a6 Translated using Weblate (Dutch) 2013-05-13 18:19:39 +02:00
Esteban I. Ruiz Moreno
822723c246 Add mouse_sensitivity option 2013-05-13 17:39:16 +02:00
Zeg9
bda62bd3bf Add progress bar to item visuals preloading 2013-05-13 17:08:51 +02:00
PilzAdam
efc9329033 Only use game filter in singleplayer tab; use menu_{background, overlay, header, footer}.png for other tabs 2013-05-13 17:06:08 +02:00
Kahrl
2c09e8a84c Fix double free in createExtrudedMesh, reported by ptitSeb 2013-05-12 06:28:33 +02:00
RealBadAngel
9575b0a2a8 Add code to play main_menu.ogg in main menu 2013-05-11 15:39:38 +02:00
Aaron Suen
6911a7d279 Clear custom player HUDs when emerging players. Fixes #711. 2013-05-10 19:25:50 -04:00
PilzAdam
5068cb40ce Fix memory leak: remove InventoryAction after sending and applying 2013-05-11 00:12:14 +02:00
PilzAdam
e5781b5e34 Fix memory leaks: delete font in main and GUIChatConsole 2013-05-10 22:35:17 +02:00
PilzAdam
782d06be46 Fix memory leak by dropping sky 2013-05-10 19:12:24 +02:00
Zeg9
81c863ac4d Add clouds to all loading screens and better progress handling 2013-05-10 15:04:21 +02:00
sapier
d859ad7ed7 Fix gettext memory leaks 2013-05-10 11:31:00 +02:00
sapier
ee1155fe6d Really fix itemdef memory leak 2013-05-09 17:08:23 +02:00
Kahrl
3b1c3ac678 Add --videomodes option to show available video modes 2013-05-09 16:30:04 +02:00
Kahrl
3332f606ed Drop IrrlichtDevice when running --speedtests 2013-05-09 16:18:26 +02:00
Kahrl
f00cee75c1 Fix world selection a bit (also fixes a main menu segfault) 2013-05-08 20:54:03 +02:00
Zeg9
0913287578 Add progress bar and clouds to loading screen 2013-05-08 20:26:43 +02:00
PilzAdam
7b41f54411 Update default controls in README and pause menu 2013-05-07 14:48:20 +02:00
Brent Hull
03ab6aa24c Fix shader license headers to be LGPL 2013-05-06 19:09:08 +02:00
Kahrl
9a559eb8cf Remove 'Meshbuffer ran out of indices' limitation 2013-05-06 19:06:18 +02:00
sapier
58f036ad1d fix static data not beeing stored correctly on deactivation 2013-05-06 19:05:44 +02:00
PilzAdam
098692ef26 Install menu textures of minetest_game 2013-05-04 12:37:02 +02:00
Perttu Ahola
a888b232fe Add header.png and footer.png support for games, and support texture packs via <gameid>_menu_<background/overlay/header/footer>.png 2013-05-04 10:05:12 +03:00
Sfan5
b88aa81da7 Fix favorite Server List on Windows 2013-05-04 07:31:22 +02:00
PilzAdam
8d5b400d09 Fix documentation for HUD commands in protocol 2013-05-04 01:04:09 +02:00
Kahrl
969d2b3eb1 Optional dependencies and properly handle mod name conflicts again 2013-05-03 23:58:22 +02:00
ShadowNinja
a031a15487 Don't predict placement of nodes if they would replace a non buildable_to node 2013-05-03 17:03:25 +02:00
Kahrl
777ac58f85 Predict wallmounted param2 during node placement prediction.
Also clean up the_game a bit: move node placement prediction to a
separate function.
2013-05-03 17:03:25 +02:00
Kahrl
be4cc306a5 Server: force block send of pointed_pos_under after predicted node place 2013-05-03 17:03:25 +02:00
PilzAdam
0deb68d81c Use DIR_DELIM instead of / in file paths 2013-05-02 23:08:59 +02:00
PilzAdam
b75505e6b2 Show game name instead of game ID of selected game 2013-05-02 20:05:07 +02:00
Perttu Ahola
ee8067f7cf Switch menu to game selected in world creation dialog 2013-05-02 20:59:52 +03:00
Perttu Ahola
2cf76f6f1b Pre-select current game in world creation dialog 2013-05-02 19:43:47 +03:00
Perttu Ahola
80874391b8 games/minimal: Add menu/background.png and menu/icon.png 2013-05-02 19:43:47 +03:00
Perttu Ahola
2708482f1b Filter worlds by selected game 2013-05-02 19:43:47 +03:00
Perttu Ahola
084be3599a Get menu background image from selected game 2013-05-02 19:43:47 +03:00
PilzAdam
b28734c82c Fix minetest.features 2013-05-01 16:00:58 +02:00
PilzAdam
d07000ed1d Move sfan5 to core devs 2013-05-01 15:47:14 +02:00
Weblate
647f1cbfe5 Merge remote-tracking branch 'origin/master' 2013-05-01 15:40:20 +02:00
Ilya Zhuravlev
2b0d1710a5 Rename "no" (Norwegian) to "nb" (Norwegian Bokmål) 2013-05-01 17:39:21 +04:00
Weblate
97cddd1b96 Merge remote-tracking branch 'origin/master' 2013-05-01 15:33:15 +02:00
?????? ????????
f1f2004cb9 Translated using Weblate (Ukrainian) 2013-05-01 15:33:01 +02:00
Frederico Guimarães
289c4a7776 Translated using Weblate (Portuguese (Brazil)) 2013-05-01 15:33:01 +02:00
Chynggyz Jumaliev
97790c7711 Translated using Weblate (Kirghiz) 2013-05-01 15:33:01 +02:00
Pilz Adam
149b51967d Translated using Weblate (German) 2013-05-01 15:33:00 +02:00
Ilya Zhuravlev
898a4e441f Add Norwegian language. 2013-05-01 17:32:29 +04:00
Sfan5
a4183994a4 Add a Way of checking for specific Feature with Lua Adds minetest.get_feature() and minetest.has_feature() 2013-05-01 15:06:01 +02:00
kwolekr
c824abd7b2 Fix itemdef drop on NULL texture 2013-04-28 21:07:09 -04:00
kwolekr
d7395cd2ab Actually fix shader3 alpha this time 2013-04-27 23:04:52 -04:00
kwolekr
8767c78169 Enhance caves for mgv7, add ravines 2013-04-27 22:40:52 -04:00
kwolekr
0fb9567f13 Minor hud.cpp cleanup 2013-04-25 20:56:12 -04:00
Esteban I. Ruiz Moreno
43a388ec53 Ability to change the crosshair using textures 2013-04-25 20:07:46 -04:00
kwolekr
d3f0ce6224 Generalize hud_builtin_enable into hud_set_flags 2013-04-25 19:37:36 -04:00
proller
d83602d98e Tune finite liquids, indev huge caves 2013-04-25 22:59:32 +04:00
Zeg9
c33b993397 Fix serverlist on -DRUN_IN_PLACE=0 (use path_user instead of path_share) 2013-04-25 19:49:28 +02:00
sapier
88ffb3f73b Move player collisionbox to player class 2013-04-25 18:53:50 +02:00
PilzAdam
386108f982 kahrl is back 2013-04-25 18:32:49 +02:00
kwolekr
ddd2b18321 Transform alpha channel as well in shader 2013-04-25 12:30:01 -04:00
Perttu Ahola
bc3072b35e Fix compatibility of RBA's NDT_GLASSLIKE_FRAMED 2013-04-25 11:51:28 +03:00
sapier
e9a4e98cb9 Improve getFree*ActiveObjectId to reduce common case cpu usage drasticaly 2013-04-24 21:59:09 -04:00
Chynggyz Jumaliev
53da8bd1c8 Translated using Weblate (Kirghiz) 2013-04-25 03:52:15 +02:00
RealBadAngel
625a4c2e66 Add new drawtype GLASSLIKE_FRAMED 2013-04-24 21:45:18 -04:00
Diego Martínez
e703c5b81f Added support to disable built-in HUD elements 2013-04-24 17:28:00 +03:00
Diego Martínez
33dd267fd9 Fixes possible crash when using hud_change with "align" or "offset" 2013-04-23 23:18:05 -04:00
RealBadAngel
a699bdb7a1 Fix to: addUpdateMeshTaskWithEdge
Check in all 6 directions instead of just 3.
2013-04-23 22:30:09 -04:00
kwolekr
770305e28d Add option to use texture alpha channel 2013-04-23 22:15:51 -04:00
Perttu Ahola
36747794ab Disable fall bobbing by default; enable using fall_bobbing_amount = 1.0 2013-04-23 23:19:36 +03:00
PilzAdam
c03c296dc7 Grow dirt_with_snow instead of dirt_with_grass if snow is above it 2013-04-23 19:02:41 +02:00
ShadowNinja
4a9b8aae5e Add minetest.get_player_ip() 2013-04-23 09:57:45 +03:00
ShadowNinja
3d4d0cb574 Add option to not prepend "Server -!- " to messages sent with minetest.chat_send_player() 2013-04-23 09:47:08 +03:00
Diego Martínez
9894167bbf Added offset support for HUD items 2013-04-23 09:34:11 +03:00
Diego Martínez
7c37b1891a Added support for alignment in HUD items 2013-04-23 09:34:10 +03:00
Weblate
418c2e7a44 Merge remote branch 'origin/master' 2013-04-22 22:37:16 +02:00
Anton Tsyganenko
4117ab473b Translated using Weblate (Russian) 2013-04-22 22:37:08 +02:00
Chynggyz Jumaliev
93d36e88f9 Translated using Weblate (Kirghiz) 2013-04-22 22:37:08 +02:00
Shen Zheyu
b11834605b Translated using Weblate (Chinese (China)) 2013-04-22 22:37:08 +02:00
eduardojsm
58ded5cd27 Translation to Portuguese of Brazil for Minetest 2013-04-22 17:12:57 -03:00
Daniel Ziolkowski
bc6f3e4e00 Translated using Weblate (Polish) 2013-04-22 17:42:53 +02:00
kwolekr
37e6d1356b mgv7: Implement getGroundLevelAtPoint(), fix layer of topnodes at chunk Y boundaries, remove growGrass() 2013-04-21 15:47:13 -04:00
kwolekr
daddd37706 Fix findSpawnPos() 2013-04-21 15:39:34 -04:00
kwolekr
14ba94ad6a Fix hud_change stat argument retrieval 2013-04-21 12:55:46 -04:00
kwolekr
03868ff8e1 Class-ify caves & move to cavegen.cpp, fix cave regression, add caves to Mapgen V7 2013-04-21 01:06:19 -04:00
kwolekr
527deb947c Add direction parameter to statbars in HUD API
Fix health bar overlap when a larger texture is used
2013-04-20 00:22:12 -04:00
kwolekr
c45c530f74 Fix Lua HUD documentation 2013-04-18 15:26:29 -04:00
Weblate
47f60aebcd Merge remote branch 'origin/master' 2013-04-18 20:04:15 +02:00
LS-Steeef
852f768a75 Add dutch translation 2013-04-18 20:02:54 +02:00
Weblate
9e6376bd95 Merge remote branch 'origin/master' 2013-04-18 20:00:16 +02:00
Ilya Pavlov
e385af7cc0 Translated using Weblate (Russian) 2013-04-18 19:59:58 +02:00
Francizca Rodriguez
220c4f1142 Translated using Weblate (Portuguese) 2013-04-18 19:59:58 +02:00
Chynggyz Jumaliev
0a376c1d50 Translated using Weblate (Kirghiz) 2013-04-18 19:59:57 +02:00
Pilz Adam
b83e9225b7 Translated using Weblate (German) 2013-04-18 19:59:57 +02:00
Me Moala
ca8c1b6134 Translated using Weblate (French) 2013-04-18 19:59:57 +02:00
Shen Zheyu
a71bfb4b60 Translated using Weblate (Chinese (China)) 2013-04-18 19:59:55 +02:00
LS-Steeef
e60eb32050 Add dutch translation 2013-04-18 19:57:12 +02:00
kwolekr
666aae3593 Split HUD code off to hud.cpp, make into a class, extensive Lua HUD modification 2013-04-18 02:19:31 -04:00
Jonathon Anderson
49f6e347f0 Lua HUD 2013-04-18 02:14:33 -04:00
darkrose
1f42479e0c Merge pull request #654 from ShadowNinja/remove_old_makefile
Remove old Makefile
2013-04-14 00:18:11 -07:00
ShadowNinja
9e0bb94460 Remove old Makefile(that is what git is for) 2013-04-14 03:06:24 -04:00
kwolekr
ce901f4c4c Fix double free, null texture drop 2013-04-12 17:20:05 -04:00
MirceaKitsune
7cd5eb4c77 Swing the camera down when the player lands on the ground, based on the velocity the surface is hit with. 2013-04-11 19:42:47 -04:00
proller
17cfb1850d Fix masterserver javascript: adjustable output id 2013-04-11 20:20:11 +04:00
RealBadAngel
e7f5cdf9d4 Bugfixes to get_craft_recipe and get_all_craft_recipes.
Improvements to get_all_craft_recipes (see api doc)
2013-04-10 22:33:59 -04:00
sapier
dda2071cc0 fix bug in scriptapi line_of_sight
fix warnings for pathfinder debug traces
2013-04-10 16:50:24 -04:00
sapier
6e4fdf37ba fix objects colliding with its own collision boxes 2013-04-09 23:16:13 +02:00
sapier
7d002b60ff fix emergemanager memory leaks 2013-04-09 02:34:11 -04:00
sapier
04c3b17c78 fix various memory leaks 2013-04-09 02:23:07 -04:00
sapier
58fd39de35 fix extruded items texture leak 2013-04-09 02:14:52 -04:00
RealBadAngel
9449026839 Use system wide LuaJIT if aviable. 2013-04-08 22:10:00 +02:00
sapier
e7247c1a66 fix memory leak on sound shutdown 2013-04-07 23:43:34 -04:00
sapier
0d26bb36af fix memory leak in loadMedia 2013-04-07 23:40:33 -04:00
sapier
10502b59bc addon extended resource accounting 2013-04-07 23:38:22 -04:00
sapier
abe74ea5ea fix inventory image texture leak 2013-04-07 22:54:00 -04:00
sapier
98182f6097 fix memory leaks introduced by invalid gettext usage 2013-04-07 22:50:53 -04:00
sapier
cd27c8ef5d replace Server smart pointer with conventional one to gain control over dtor call order 2013-04-07 22:42:36 -04:00
sapier
2bdff11d54 fix memory leak on shader shutdown 2013-04-07 22:30:29 -04:00
sapier
7a32698312 fix memory leak in itemdef
cleanup useless code
2013-04-07 22:20:01 -04:00
sapier
5743ef4e64 fix huge texture leak in tiledef
fix minor glitches too
2013-04-07 22:17:58 -04:00
sapier
3b684d306c fix 3d model mesh leak 2013-04-07 21:51:35 -04:00
sapier
e1146396bc fix mesh leak in camera class 2013-04-07 21:49:55 -04:00
kwolekr
7c0e707cf1 Add param2 field for ores, some minor fixes and misc. code cleanup 2013-04-07 21:21:54 -04:00
Weblate
feb7de91ec Merge remote branch 'origin/master' 2013-04-07 13:39:28 +02:00
Ilya Zhuravlev
4468ea84e6 Add Ukrainian language. 2013-04-07 15:36:46 +04:00
kwolekr
96e2931c5c Fix black tree leaves, reduce above-ground cave shadows 2013-04-07 02:26:46 -04:00
kwolekr
5961106f9f Fix crash on creating map with invalid mg_name 2013-04-07 01:50:20 -04:00
kwolekr
fbf76184f0 Revert "Fix to be able to build from dir different than source dir"
This commit broke RUN_IN_PLACE
2013-04-07 01:30:06 -04:00
kwolekr
8ec3fc35c6 Add Mapgen V7, reorganize biomes 2013-04-07 00:50:21 -04:00
proller
d50b2ede92 Adjusting water removing above unloaded blocks 2013-04-07 00:05:39 +04:00
kwolekr
453d79e3a2 Don't re-write entire map_meta.txt if a setting is missing 2013-04-06 13:36:51 -04:00
Diego Martínez
046534e14b Fix to be able to build from dir different than source dir 2013-04-06 12:31:12 -04:00
proller
120f02e20b Don't flow finite liquid into an unloaded chunk 2013-04-06 12:09:59 -04:00
sapier
becd8c03fd fix memory leak 2013-04-06 12:00:36 -04:00
sapier
69367aa799 Add Dijkstra A* and A* without prefetching pathfind algorithms 2013-04-06 11:24:03 -04:00
PilzAdam
97f0bb0342 Only enqueue falling nodes if they really want to fall 2013-04-05 22:33:11 +02:00
khonkhortisan
1586cdac53 unkn own block -> unkn own node 2013-04-05 15:57:39 +02:00
ShadowNinja
1bae82e6c4 Add private messaging with /msg 2013-04-05 15:25:59 +02:00
Diego Martínez
2fb0e547a0 Use the nodebox as selection box if it's not set manually 2013-04-05 15:14:37 +02:00
Diego Martínez
1a5dcfd0c8 Install "build" and "survival" games with "make install" 2013-04-05 15:03:05 +02:00
MirceaKitsune
e38d65f8d1 Dont allow fast move in water or ladder when aux1_descend is true 2013-04-05 14:58:35 +02:00
Shen Zheyu
33052abf42 Translated using Weblate (Chinese (China)) 2013-04-05 04:43:06 +02:00
PilzAdam
b0e6806077 Fix nick completion 2013-04-05 02:31:58 +02:00
PilzAdam
76b86c0368 Add a delay to nodeupdate() 2013-04-05 02:24:39 +02:00
MirceaKitsune
c5a8448c41 Allow modifying movement speed, jump height and gravity per-player via the Lua API. 2013-04-05 02:00:59 +02:00
ShadowNinja
2a0badf2d5 Check if the address field is empty when hitting enter on the multiplayer tab 2013-04-03 23:33:17 +02:00
Esteban I. Ruiz Moreno
6b8435cf8c Limit speed in collisionMoveResult for avoiding hangs 2013-04-03 23:29:51 +02:00
Zeg9
c1bf6f9f7a Fix camera "jumping" when attached and the parent goes too fast 2013-04-03 23:22:40 +02:00
218 changed files with 20699 additions and 9890 deletions

9
.gitignore vendored
View File

@@ -32,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/
@@ -53,4 +59,7 @@ CPackSourceConfig.cmake
Makefile
cmake_install.cmake
locale/
*.cbp
*.layout
*.o

View File

@@ -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 6)
set(VERSION_PATCH 7)
if(VERSION_EXTRA)
set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA})
endif()
@@ -133,23 +133,19 @@ endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/builtin" DESTINATION "${SHAREDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client" DESTINATION "${SHAREDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minimal" DESTINATION "${SHAREDIR}/games")
set(COMMON_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/games/common")
if(EXISTS ${COMMON_SOURCE} AND IS_DIRECTORY ${COMMON_SOURCE})
install(FILES ${COMMON_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/common/")
install(DIRECTORY ${COMMON_SOURCE}/mods DESTINATION "${SHAREDIR}/games/common")
endif()
set(MINETEST_GAME_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game")
if(EXISTS ${MINETEST_GAME_SOURCE} AND IS_DIRECTORY ${MINETEST_GAME_SOURCE})
install(FILES ${MINETEST_GAME_SOURCE}/game.conf DESTINATION "${SHAREDIR}/games/minetest_game/")
install(FILES ${MINETEST_GAME_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/minetest_game/")
install(DIRECTORY ${MINETEST_GAME_SOURCE}/mods DESTINATION "${SHAREDIR}/games/minetest_game")
install(DIRECTORY ${MINETEST_GAME_SOURCE}/menu DESTINATION "${SHAREDIR}/games/minetest_game")
endif()
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()

View File

@@ -9,10 +9,9 @@ and contributors (see source file comments and the version control log)
In case you downloaded the source code:
---------------------------------------
If you downloaded the Minetest Engine source code in which this file is
contained, you probably want to download these projects too:
https://github.com/minetest/common/
contained, you probably want to download the minetest_game project too:
https://github.com/minetest/minetest_game/
See the README.txt in them.
See the README.txt in it.
Further documentation
----------------------
@@ -30,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
@@ -88,13 +91,6 @@ $ wget https://github.com/minetest/minetest/tarball/master -O master.tar.gz
$ tar xf master.tar.gz
$ cd minetest-minetest-286edd4 (or similar)
Download common (needed for minetest_game and some others)
$ cd games/
$ wget https://github.com/minetest/common/tarball/master -O common.tar.gz
$ tar xf common.tar.gz
$ mv minetest-common-* common
$ cd ..
Download minetest_game (otherwise only the "Minimal development test" game is available)
$ cd games/
$ wget https://github.com/minetest/minetest_game/tarball/master -O minetest_game.tar.gz
@@ -120,7 +116,7 @@ $ ./minetest
Compiling on Windows:
---------------------
- This section is outdated. In addition to what is described here:
- In addition to minetest, you need to download common and minetest_game.
- In addition to minetest, you need to download minetest_game.
- If you wish to have sound support, you need libogg, libvorbis and libopenal
- You need:
@@ -263,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
-------------------------------
@@ -277,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.,

View File

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

View File

@@ -261,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
@@ -272,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)
@@ -283,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
@@ -303,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..")")
@@ -317,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
@@ -402,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
@@ -466,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,
@@ -483,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
@@ -533,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..")")
@@ -598,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
@@ -625,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
@@ -660,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,
})

View File

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

View File

@@ -53,27 +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.env:remove_node(bcp)
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
@@ -82,7 +82,7 @@ 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
@@ -92,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
@@ -130,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
@@ -142,18 +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 or
minetest.registered_nodes[n_bottom.name].buildable_to) then
minetest.env:remove_node(p)
spawn_falling_node(p, n.name)
nodeupdate(p)
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
@@ -174,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
View 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

View File

@@ -129,9 +129,9 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
end
local under = pointed_thing.under
local oldnode_under = minetest.env:get_node_or_nil(under)
local oldnode_under = minetest.get_node_or_nil(under)
local above = pointed_thing.above
local oldnode_above = minetest.env:get_node_or_nil(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"
@@ -163,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
@@ -197,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
@@ -232,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
@@ -241,7 +241,7 @@ 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) or itemstack
@@ -258,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
@@ -266,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
@@ -304,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
@@ -340,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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1 @@
trans_alphach

View 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);
}

View 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;
}

View File

@@ -1,6 +1,7 @@
Minetest Lua Modding API Reference 0.4.6
Minetest Lua Modding API Reference 0.4.7
========================================
More information at http://c55.me/minetest/
More information at http://www.minetest.net/
Developer Wiki: http://dev.minetest.net/
Introduction
-------------
@@ -50,12 +51,8 @@ where gameid is unique to each game.
The game directory contains the file game.conf, which contains these fields:
name = <Human-readable full name of the game>
common_mods = <Comma-separated list of common mods>
eg.
name = Minetest
common_mods = bucket, default, doors, fire, stairs
Common mods are loaded from the pseudo-game "common".
The game directory can contain the file minetest.conf, which will be used
to set default settings when running the particular game.
@@ -64,9 +61,9 @@ Mod load path
-------------
Generic:
$path_share/games/gameid/mods/
$path_share/mods/gameid/
$path_share/mods/
$path_user/games/gameid/mods/
$path_user/mods/gameid/ <-- User-installed mods
$path_user/mods/ <-- User-installed mods
$worldpath/worldmods/
In a run-in-place version (eg. the distributed windows version):
@@ -120,6 +117,17 @@ depends.txt:
List of mods that have to be loaded before loading this mod.
A single line contains a single modname.
Optional dependencies can be defined by appending a question mark
to a single modname. Their meaning is that if the specified mod
is missing, that does not prevent this mod from being loaded.
optdepends.txt:
An alternative way of specifying optional dependencies.
Like depends.txt, a single line contains a single modname.
NOTE: This file exists for compatibility purposes only and
support for it will be removed from the engine by the end of 2013.
init.lua:
The main Lua script. Running this script should register everything it
wants to register. Subsequent execution depends on minetest calling the
@@ -329,6 +337,7 @@ Look for examples in games/minimal or games/minetest_game.
- liquid
- flowingliquid
- glasslike
- glasslike_framed
- allfaces
- allfaces_optional
- torchlike
@@ -401,6 +410,53 @@ Currently supported flags: absheight
Also produce this same ore between the height range of -height_max and -height_min.
Useful for having ore in sky realms without having to duplicate ore entries.
HUD element types
-------------------
The position field is used for all element types.
To account for differing resolutions, the position coordinates are the percentage of the screen,
ranging in value from 0 to 1.
The name field is not yet used, but should contain a description of what the HUD element represents.
The direction field is the direction in which something is drawn.
0 draws from left to right, 1 draws from right to left, 2 draws from top to bottom, and 3 draws from bottom to top.
The alignment field specifies how the item will be aligned. It ranges from -1 to 1,
with 0 being the center, -1 is moved to the left/up, and 1 is to the right/down. Fractional
values can be used.
The offset field specifies a pixel offset from the position. Contrary to position,
the offset is not scaled to screen size. This allows for some precisely-positioned
items in the HUD.
Below are the specific uses for fields in each type; fields not listed for that type are ignored.
Note: Future revisions to the HUD API may be incompatible; the HUD API is still in the experimental stages.
- image
Displays an image on the HUD.
- scale: The scale of the image, with 1 being the original texture size.
Only the X coordinate scale is used.
- text: The name of the texture that is displayed.
- alignment: The alignment of the image.
- offset: offset in pixels from position.
- text
Displays text on the HUD.
- scale: Defines the bounding rectangle of the text.
A value such as {x=100, y=100} should work.
- text: The text to be displayed in the HUD element.
- number: An integer containing the RGB value of the color used to draw the text.
Specify 0xFFFFFF for white text, 0xFF0000 for red, and so on.
- alignment: The alignment of the text.
- offset: offset in pixels from position.
- statbar
Displays a horizontal bar made up of half-images.
- text: The name of the texture that is used.
- number: The number of half-textures that are displayed.
If odd, will end with a vertically center-split texture.
- direction
- offset: offset in pixels from position.
- inventory
- text: The name of the inventory list to be displayed.
- number: Number of items in the inventory to be displayed.
- item: Position of item that is selected.
- direction
Representations of simple things
--------------------------------
Position/vector:
@@ -455,7 +511,7 @@ Usage:
- Groups are stored in a table, having the group names with keys and the
group ratings as values. For example:
groups = {crumbly=3, soil=1}
^ Default dirt (soil group actually currently not defined; TODO)
^ Default dirt
groups = {crumbly=2, soil=1, level=2, outerspace=1}
^ A more special dirt-kind of thing
- Groups always have a rating associated with them. If there is no
@@ -528,6 +584,9 @@ Special groups
- attached_node: if the node under it is not a walkable block the node will be
dropped as an item. If the node is wallmounted the
wallmounted direction is checked.
- soil: saplings will grow on nodes in this group
- connect_to_raillike: makes nodes of raillike drawtype connect to
other group members with same drawtype
Known damage and digging time defining groups
----------------------------------------------
@@ -710,7 +769,7 @@ Some of the values in the key-value store are handled specially:
Example stuff:
local meta = minetest.env:get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"invsize[8,9;]"..
"list[context;main;0,0;8,4;]"..
@@ -856,6 +915,7 @@ minetest.formspec_escape(string) -> string
minetest namespace reference
-----------------------------
Utilities:
minetest.get_current_modname() -> string
minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname"
^ Useful for loading additional .lua modules or static data from mod
@@ -864,7 +924,13 @@ minetest.get_modnames() -> list of installed mods
minetest.get_worldpath() -> eg. "/home/user/.minetest/world"
^ Useful for storing custom data
minetest.is_singleplayer()
minetest.features
^ table containing API feature flags: {foo=true, bar=true}
minetest.has_feature(arg) -> bool, missing_features
^ arg: string or table in format {foo=true, bar=true}
^ missing_features: {foo=true, bar=true}
Logging:
minetest.debug(line)
^ Always printed to stderr and logfile (print() is redirected here)
minetest.log(line)
@@ -892,10 +958,12 @@ minetest.register_on_shutdown(func())
minetest.register_on_placenode(func(pos, newnode, placer, oldnode, itemstack))
^ Called when a node has been placed
^ If return true no item is taken from itemstack
^ Deprecated: Use on_construct or after_place_node in node definition instead
^ Not recommended; use on_construct or after_place_node in node definition
^ whenever possible
minetest.register_on_dignode(func(pos, oldnode, digger))
^ Called when a node has been dug.
^ Deprecated: Use on_destruct or after_dig_node in node definition instead
^ Not recommended: Use on_destruct or after_dig_node in node definition
^ whenever possible
minetest.register_on_punchnode(func(pos, node, puncher))
^ Called when a node is punched
minetest.register_on_generated(func(minp, maxp, blockseed))
@@ -955,10 +1023,70 @@ minetest.auth_reload()
^ These call the authentication handler
minetest.check_player_privs(name, {priv1=true,...}) -> bool, missing_privs
^ A quickhand for checking privileges
minetest.get_player_ip(name) -> IP address string
Chat:
minetest.chat_send_all(text)
minetest.chat_send_player(name, text)
minetest.chat_send_player(name, text, prepend)
^ prepend: optional, if it is set to false "Server -!- " will not be prepended to the message
Environment access:
minetest.set_node(pos, node)
minetest.add_node(pos, node): alias set_node(pos, node)
^ Set node at position (node = {name="foo", param1=0, param2=0})
minetest.remove_node(pos)
^ Equivalent to set_node(pos, "air")
minetest.get_node(pos)
^ Returns {name="ignore", ...} for unloaded area
minetest.get_node_or_nil(pos)
^ Returns nil for unloaded area
minetest.get_node_light(pos, timeofday) -> 0...15 or nil
^ timeofday: nil = current time, 0 = night, 0.5 = day
minetest.place_node(pos, node)
^ Place node with the same effects that a player would cause
minetest.dig_node(pos)
^ Dig node with the same effects that a player would cause
minetest.punch_node(pos)
^ Punch node with the same effects that a player would cause
minetest.get_meta(pos) -- Get a NodeMetaRef at that position
minetest.get_node_timer(pos) -- Get NodeTimerRef
minetest.add_entity(pos, name): Spawn Lua-defined entity at position
^ Returns ObjectRef, or nil if failed
minetest.add_item(pos, item): Spawn item
^ Returns ObjectRef, or nil if failed
minetest.get_player_by_name(name) -- Get an ObjectRef to a player
minetest.get_objects_inside_radius(pos, radius)
minetest.set_timeofday(val): val: 0...1; 0 = midnight, 0.5 = midday
minetest.get_timeofday()
minetest.find_node_near(pos, radius, nodenames) -> pos or nil
^ nodenames: eg. {"ignore", "group:tree"} or "default:dirt"
minetest.find_nodes_in_area(minp, maxp, nodenames) -> list of positions
^ nodenames: eg. {"ignore", "group:tree"} or "default:dirt"
minetest.get_perlin(seeddiff, octaves, persistence, scale)
^ Return world-specific perlin noise (int(worldseed)+seeddiff)
minetest.clear_objects()
^ clear all objects in the environments
minetest.line_of_sight(pos1,pos2,stepsize) ->true/false
^ checkif there is a direct line of sight between pos1 and pos2
^ pos1 First position
^ pos2 Second position
^ stepsize smaller gives more accurate results but requires more computing
time. Default is 1.
minetest.find_path(pos1,pos2,searchdistance,max_jump,max_drop,algorithm)
^ -> table containing path
^ returns a table of 3d points representing a path from pos1 to pos2 or nil
^ pos1: start position
^ pos2: end position
^ searchdistance: number of blocks to search in each direction
^ max_jump: maximum height difference to consider walkable
^ max_drop: maximum height difference to consider droppable
^ algorithm: A*_noprefetch(default), A*, Dijkstra
minetest.spawn_tree (pos, {treedef})
^ spawns L-System tree at given pos with definition in treedef table
Inventory:
minetest.get_inventory(location) -> InvRef
@@ -1002,10 +1130,23 @@ minetest.get_craft_recipe(output) -> input
^ input.items = for example { stack 1, stack 2, stack 3, stack 4,
stack 5, stack 6, stack 7, stack 8, stack 9 }
^ input.items = nil if no recipe found
minetest.get_all_craft_recipes(output) -> table or nil
^ returns table with all registered recipes for output item (node)
^ returns nil if no recipe was found
^ table entries have same format as minetest.get_craft_recipe
minetest.get_all_craft_recipes(query item) -> table or nil
^ returns indexed table with all registered recipes for query item (node)
or nil if no recipe was found
recipe entry table:
{
method = 'normal' or 'cooking' or 'fuel'
width = 0-3, 0 means shapeless recipe
items = indexed [1-9] table with recipe items
output = string with item name and quantity
}
Example query for default:gold_ingot will return table:
{
1={type = "cooking", width = 3, output = "default:gold_ingot",
items = {1 = "default:gold_lump"}},
2={type = "normal", width = 1, output = "default:gold_ingot 9",
items = {1 = "default:goldblock"}}
}
minetest.handle_node_drops(pos, drops, digger)
^ drops: list of itemstrings
^ Handles drops from nodes after digging: Default action is to put them into
@@ -1117,7 +1258,11 @@ minetest.deserialize(string) -> table
Global objects:
minetest.env - EnvRef of the server environment and world.
^ Using this you can access nodes and entities
^ Any function in the minetest namespace can be called using the syntax
minetest.env:somefunction(somearguments)
instead of
minetest.somefunction(somearguments)
^ Deprecated, but support is not to be dropped soon
Global tables:
minetest.registered_items
@@ -1146,115 +1291,9 @@ minetest.digprop_glasslike(toughness)
Class reference
----------------
EnvRef: basically ServerEnvironment and ServerMap combined.
methods:
- set_node(pos, node)
- add_node(pos, node): alias set_node(pos, node)
^ Set node at position (node = {name="foo", param1=0, param2=0})
- remove_node(pos)
^ Equivalent to set_node(pos, "air")
- get_node(pos)
^ Returns {name="ignore", ...} for unloaded area
- get_node_or_nil(pos)
^ Returns nil for unloaded area
- get_node_light(pos, timeofday) -> 0...15 or nil
^ timeofday: nil = current time, 0 = night, 0.5 = day
- place_node(pos, node)
^ Place node with the same effects that a player would cause
- dig_node(pos)
^ Dig node with the same effects that a player would cause
- punch_node(pos)
^ Punch node with the same effects that a player would cause
- get_meta(pos) -- Get a NodeMetaRef at that position
- get_node_timer(pos) -- Get NodeTimerRef
- add_entity(pos, name): Spawn Lua-defined entity at position
^ Returns ObjectRef, or nil if failed
- add_item(pos, item): Spawn item
^ Returns ObjectRef, or nil if failed
- get_player_by_name(name) -- Get an ObjectRef to a player
- get_objects_inside_radius(pos, radius)
- set_timeofday(val): val: 0...1; 0 = midnight, 0.5 = midday
- get_timeofday()
- find_node_near(pos, radius, nodenames) -> pos or nil
^ nodenames: eg. {"ignore", "group:tree"} or "default:dirt"
- find_nodes_in_area(minp, maxp, nodenames) -> list of positions
^ nodenames: eg. {"ignore", "group:tree"} or "default:dirt"
- get_perlin(seeddiff, octaves, persistence, scale)
^ Return world-specific perlin noise (int(worldseed)+seeddiff)
- clear_objects()
^ clear all objects in the environments
- spawn_tree (pos, {treedef})
^ spawns L-System tree at given pos with definition in treedef table
treedef={
axiom, - string initial tree axiom
rules_a, - string rules set A
rules_b, - string rules set B
rules_c, - string rules set C
rules_d, - string rules set D
trunk, - string trunk node name
leaves, - string leaves node name
leaves2, - string secondary leaves node name
leaves2_chance,- num chance (0-100) to replace leaves with leaves2
angle, - num angle in deg
iterations, - num max # of iterations, usually 2 -5
random_level, - num factor to lower nr of iterations, usually 0 - 3
trunk_type, - string single/double/crossed) type of trunk: 1 node, 2x2 nodes or 3x3 in cross shape
thin_branches, - boolean true -> use thin (1 node) branches
fruit, - string fruit node name
fruit_chance, - num chance (0-100) to replace leaves with fruit node
seed, - num random seed
}
Key for Special L-System Symbols used in Axioms
G - move forward one unit with the pen up
F - move forward one unit with the pen down drawing trunks and branches
f - move forward one unit with the pen down drawing leaves (100% chance)
T - move forward one unit with the pen down drawing trunks only
R - move forward one unit with the pen down placing fruit
A - replace with rules set A
B - replace with rules set B
C - replace with rules set C
D - replace with rules set D
a - replace with rules set A, chance 90%
b - replace with rules set B, chance 80%
c - replace with rules set C, chance 70%
d - replace with rules set D, chance 60%
+ - yaw the turtle right by angle parameter
- - yaw the turtle left by angle parameter
& - pitch the turtle down by angle parameter
^ - pitch the turtle up by angle parameter
/ - roll the turtle to the right by angle parameter
* - roll the turtle to the left by angle parameter
[ - save in stack current state info
] - recover from stack state info
Example usage: spawn small apple tree
apple_tree={
axiom="FFFFFAFFBF",
rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
trunk="default:tree",
leaves="default:leaves",
angle=30,
iterations=2,
random_level=0,
trunk_type="single",
thin_branches=true,
fruit_chance=10,
fruit="default:apple"
}
minetest.env:spawn_tree(pos,apple_tree)
Deprecated:
- add_rat(pos): Add C++ rat object (no-op)
- add_firefly(pos): Add C++ firefly object (no-op)
NodeMetaRef: Node metadata - reference extra data and functionality stored
in a node
- Can be gotten via minetest.env:get_nodemeta(pos)
- Can be gotten via minetest.get_nodemeta(pos)
methods:
- set_string(name, value)
- get_string(name)
@@ -1268,7 +1307,7 @@ methods:
^ See "Node Metadata"
NodeTimerRef: Node Timers - a high resolution persistent per-node timer
- Can be gotten via minetest.env:get_node_timer(pos)
- Can be gotten via minetest.get_node_timer(pos)
methods:
- set(timeout,elapsed)
^ set a timer's state
@@ -1348,7 +1387,22 @@ Player-only: (no-op for other objects)
{jump=bool,right=bool,left=bool,LMB=bool,RMB=bool,sneak=bool,aux1=bool,down=bool,up=bool}
- get_player_control_bits(): returns integer with bit packed player pressed keys
bit nr/meaning: 0/up ,1/down ,2/left ,3/right ,4/jump ,5/aux1 ,6/sneak ,7/LMB ,8/RMB
- set_physics_override(speed, jump, gravity)
modifies per-player walking speed, jump height, and gravity.
Values default to 1 and act as offsets to the physics settings
in minetest.conf. nil will keep the current setting.
- hud_add(hud definition): add a HUD element described by HUD def, returns ID number on success
- hud_remove(id): remove the HUD element of the specified id
- hud_change(id, stat, value): change a value of a previously added HUD element
^ element stat values: position, name, scale, text, number, item, dir
- hud_get(id): gets the HUD element definition structure of the specified ID
- hud_set_flags(flags): sets specified HUD flags to true/false
^ flags: (is visible) hotbar, healthbar, crosshair, wielditem
^ pass a table containing a true/false value of each flag to be set or unset
^ if a flag is nil, the flag is not modified
- hud_set_hotbar_itemcount(count): sets number of items in builtin hotbar
^ count: number of items, must be between 1 and 23
InvRef: Reference to an inventory
methods:
- is_empty(listname): return true if list is empty
@@ -1410,7 +1464,7 @@ methods:
PerlinNoise: A perlin noise generator
- Can be created via PerlinNoise(seed, octaves, persistence, scale)
- Also minetest.env:get_perlin(seeddiff, octaves, persistence, scale)
- Also minetest.get_perlin(seeddiff, octaves, persistence, scale)
methods:
- get2d(pos) -> 2d noise value at pos={x=,y=}
- get3d(pos) -> 3d noise value at pos={x=,y=,z=}
@@ -1440,6 +1494,68 @@ Registered entities
^ Should return a string that will be passed to on_activate when
the object is instantiated the next time.
L-system trees
---------------
treedef={
axiom, - string initial tree axiom
rules_a, - string rules set A
rules_b, - string rules set B
rules_c, - string rules set C
rules_d, - string rules set D
trunk, - string trunk node name
leaves, - string leaves node name
leaves2, - string secondary leaves node name
leaves2_chance,- num chance (0-100) to replace leaves with leaves2
angle, - num angle in deg
iterations, - num max # of iterations, usually 2 -5
random_level, - num factor to lower nr of iterations, usually 0 - 3
trunk_type, - string single/double/crossed) type of trunk: 1 node, 2x2 nodes or 3x3 in cross shape
thin_branches, - boolean true -> use thin (1 node) branches
fruit, - string fruit node name
fruit_chance, - num chance (0-100) to replace leaves with fruit node
seed, - num random seed
}
Key for Special L-System Symbols used in Axioms
G - move forward one unit with the pen up
F - move forward one unit with the pen down drawing trunks and branches
f - move forward one unit with the pen down drawing leaves (100% chance)
T - move forward one unit with the pen down drawing trunks only
R - move forward one unit with the pen down placing fruit
A - replace with rules set A
B - replace with rules set B
C - replace with rules set C
D - replace with rules set D
a - replace with rules set A, chance 90%
b - replace with rules set B, chance 80%
c - replace with rules set C, chance 70%
d - replace with rules set D, chance 60%
+ - yaw the turtle right by angle parameter
- - yaw the turtle left by angle parameter
& - pitch the turtle down by angle parameter
^ - pitch the turtle up by angle parameter
/ - roll the turtle to the right by angle parameter
* - roll the turtle to the left by angle parameter
[ - save in stack current state info
] - recover from stack state info
Example usage: spawn small apple tree
apple_tree={
axiom="FFFFFAFFBF",
rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
trunk="default:tree",
leaves="default:leaves",
angle=30,
iterations=2,
random_level=0,
trunk_type="single",
thin_branches=true,
fruit_chance=10,
fruit="default:apple"
}
minetest.spawn_tree(pos,apple_tree)
Definition tables
------------------
@@ -1564,6 +1680,7 @@ Node definition (register_node)
^ Special textures of node; used rarely (old field name: special_materials)
^ List can be shortened to needed length
alpha = 255,
use_texture_alpha = false, -- Use texture's alpha channel
post_effect_color = {a=0, r=0, g=0, b=0}, -- If player is inside node
paramtype = "none", -- See "Nodes"
paramtype2 = "none", -- See "Nodes"
@@ -1585,6 +1702,7 @@ Node definition (register_node)
damage_per_second = 0, -- If player is inside node, this damage is caused
node_box = {type="regular"}, -- See "Node boxes"
selection_box = {type="regular"}, -- See "Node boxes"
^ If drawtype "nodebox" is used and selection_box is nil, then node_box is used
legacy_facedir_simple = false, -- Support maps made in and before January 2012
legacy_wallmounted = false, -- Support maps made in and before January 2012
sounds = {
@@ -1607,13 +1725,13 @@ Node definition (register_node)
after_place_node = func(pos, placer, itemstack),
^ Called after constructing node when node was placed using
minetest.item_place_node / minetest.env:place_node
minetest.item_place_node / minetest.place_node
^ If return true no item is taken from itemstack
^ default: nil
after_dig_node = func(pos, oldnode, oldmetadata, digger),
^ oldmetadata is in table format
^ Called after destructing node when node was dug using
minetest.node_dig / minetest.env:dig_node
minetest.node_dig / minetest.dig_node
^ default: nil
can_dig = function(pos,player)
^ returns true if node can be dug, or false if not
@@ -1632,7 +1750,7 @@ Node definition (register_node)
on_timer = function(pos,elapsed),
^ default: nil
^ called by NodeTimers, see EnvRef and NodeTimerRef
^ called by NodeTimers, see minetest.get_node_timer and NodeTimerRef
^ elapsed is the total time passed since the timer was started
^ return true to run the timer for another cycle with the same timeout value
@@ -1770,3 +1888,22 @@ Detached inventory callbacks
^ No return value
}
HUD Definition (hud_add, hud_get)
{
hud_elem_type = "image", -- see HUD element types
^ type of HUD element, can be either of "image", "text", "statbar", or "inventory"
position = {x=0.5, y=0.5},
^ Left corner position of element
name = "<name>",
scale = {x=2, y=2},
text = "<text>",
number = 2,
item = 3,
^ Selected item in inventory. 0 for no item selected.
direction = 0,
^ Direction: 0: left-right, 1: right-left, 2: top-bottom, 3: bottom-top
alignment = {x=0, y=0},
^ See "HUD Element Types"
offset = {x=0, y=0},
^ See "HUD Element Types"
}

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
games/minimal/menu/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

View File

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

View File

@@ -741,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},
@@ -752,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},
@@ -763,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(),
})
@@ -1133,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))
@@ -1158,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;]"..
@@ -1168,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,
@@ -1190,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;]"..
@@ -1207,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 "..
@@ -1223,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 "..
@@ -1234,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 "..
@@ -1275,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()
@@ -1284,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
@@ -1308,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()
@@ -1317,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
@@ -1331,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
@@ -1349,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",
@@ -1588,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)

View File

@@ -104,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
@@ -122,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

View File

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

View File

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

View File

@@ -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
@@ -136,6 +136,8 @@
#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
@@ -149,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
@@ -250,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

View File

@@ -1 +0,0 @@
You can install Minetest mods by copying (and extracting) them into this folder.

4
mods/mods_here.txt Normal file
View 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.

View File

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

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+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"
@@ -103,100 +139,100 @@ msgstr "Genopstå"
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:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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)"
#: 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"
@@ -204,181 +240,181 @@ msgstr "Udskriv stakke"
msgid "Cannot create world: Name contains invalid characters"
msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver"
#: src/guiMainMenu.cpp:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Enligspiller"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Flerspiller"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avanceret"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Indstillinger"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Skabt af"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Vælg verden:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Slet"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Ny"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Konfigurér"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Afspil"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Kreativ tilstand"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Aktivér skade"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Navn/kodeord"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
#, fuzzy
msgid "Favorites:"
msgstr "Vis favoritter"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Adresse/port"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Vis offentlig"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Vis favoritter"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Forbind"
#: src/guiMainMenu.cpp:591
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Start spil / Forbind"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
#, fuzzy
msgid "Public"
msgstr "Vis offentlig"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Slet verden"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Skab verden"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "\"Smarte\" træer"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Glat belysning"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D skyer"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Opakt (uigennemsigtigt) vand"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-mapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Anisotropisk filtréring"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Bi-lineær filtréring"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Tri-lineær filtréring"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shadere"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "For-indlæs elementernes grafik"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Aktivér partikler"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Skift bindinger"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Adresse påkrævet."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Kan ikke slette verden: ingenting valgt"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Filer som slettes"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Kan ikke skabe verden: ingen spil fundet"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Kan ikke konfigurere verden: ingenting valgt"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Mislykkedes i at slette alle verdenens filer"
@@ -386,73 +422,62 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Fortsæt"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Skift kodeord"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Afslut til menu"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Afslut til operativsystemet"
#: src/guiPauseMenu.cpp:161
#: 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 ""
"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/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr ""
#: src/guiVolumeChange.cpp:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -751,37 +776,54 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Hovedmenu"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Mislykkedes i at initialisere verden"
#: src/main.cpp:1842
#: 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:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Kunne ikke finde eller indlæse spil \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Ugyldig spilspecifikationer."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
#: src/main.cpp:1915
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"

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-04-01 18:56+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"
@@ -103,277 +139,277 @@ msgstr "Wiederbeleben"
msgid "Left click: Move all items, Right click: Move single item"
msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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: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:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Einzelspieler"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Mehrspieler"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Erweitert"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Einstellungen"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Credits"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Welt wählen:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Entfernen"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Neu"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Konfigurieren"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Spielen"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Kreativitätsmodus"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Schaden einschalten"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Name/Passwort"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Zeige Favoriten:"
msgstr "Favoriten:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Öffentliche Server Liste:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Adresse / Port"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Zeige öffentliche"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Zeige Favoriten"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Verbinden"
#: src/guiMainMenu.cpp:591
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Spiel starten / Verbinden"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Öffentlich"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Welt löschen"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Welt erstellen"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Schöne Bäume"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Besseres Licht"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D Wolken"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Undurchs. Wasser"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Anisotroper Filter"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Bi-Linearer Filter"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Tri-Linearer Filter"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shader"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Lade Inventarbilder vor"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Aktiviere Partikel"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Realistiches Wasser"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Tasten ändern"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Adresse benötigt."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Kann Welt nicht löchen: Nichts ausgewählt"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Zu löschende Dateien"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
@@ -381,72 +417,73 @@ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Weiter"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Passwort ändern"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Sound Lautstärke"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Hauptmenü"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Programm beenden"
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Zurück"
@@ -742,40 +779,56 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Hauptmenü"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Kann Welt nicht initialisieren"
#: src/main.cpp:1842
#: 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:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Kann Spiel nicht finden/laden \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Invalide Spielspezif."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Verbindungsfehler (Zeitüberschreitung?)"
#: src/main.cpp:1915
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 "KEYBINDINGS"
#~ msgstr "TASTEN EINST."
#~ 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
View 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"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-04-03 17:22+0200\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"
@@ -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,56 +74,56 @@ 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 "Dependencias:"
#: src/guiConfigureWorld.cpp:240
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
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"
@@ -104,98 +140,98 @@ 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:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 "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 "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 "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 distancia"
#: src/guiKeyChangeMenu.cpp:388
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Imprimir Pilas"
@@ -203,179 +239,179 @@ msgstr "Imprimir Pilas"
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:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Un jugador"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Multijugador"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avanzado"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Configuración"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Créditos"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Selecciona un mundo:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Borrar"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nuevo"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Configurar"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Jugar"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Modo creativo"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Permitir daños"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nombre/Clave"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Favoritos:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Lista de Servidores Públicos:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Dirección/Puerto"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Servidores Públicos"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Mostrar Favoritos"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Conectar"
#: src/guiMainMenu.cpp:591
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Iniciar juego/Conectar"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Público"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Eliminar Mundo"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Crear Mundo"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Árboles detallados"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Iluminación Suave"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Nubes 3D"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Agua Opaca"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtrado Anisotrópico"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtrado Bi-Lineal"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtrado Tri-Lineal"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Sombreadores"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Precarga elementos visuales"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Habilitar partículas"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Líquidos Finitos"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Configurar Teclas"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Requiere una dirección."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "No se puede eliminar el mundo: ninguno ha sido seleccionado"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Archivos que se eliminarán"
#: src/guiMainMenu.cpp:1133
#: 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:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "No se puede configurar el mundo: Ninguno seleccionado"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "No se pudo eliminar todos los archivos del mundo"
@@ -383,73 +419,73 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continuar"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Modificar contraseña"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Volúmen del Sonido"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Salir al menú"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Salir al S.O."
#: src/guiPauseMenu.cpp:161
#: 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 pedazos cargados\n"
"- I: Inventario \n"
"- ESC: Este Menu\n"
"- T: Conversar\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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Salir"
@@ -745,35 +781,52 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menú Principal"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Fallo al iniciar el mundo"
#: src/main.cpp:1842
#: 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."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "No se puede encontrar o cargar el juego \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Juego especificado no válido."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Error de conexión (¿tiempo agotado?)"
#: src/main.cpp:1915
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"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
"PO-Revision-Date: 2013-04-03 17:02+0200\n"
"Last-Translator: Pilz Adam <PilzAdam@gmx.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"
"Vaata debug.txt info jaoks."
#: 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 ""
"Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n"
"Need lülitatakse sisse kohe pärast sätete salvestamist."
#: 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 "Sisse lülitatud"
#: src/guiConfigureWorld.cpp:215
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Lülita kõik sisse"
#: src/guiConfigureWorld.cpp:222
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Lülita kõik välja"
#: src/guiConfigureWorld.cpp:228
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "Vajab:"
#: src/guiConfigureWorld.cpp:240
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "Seda vajavad:"
#: 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 "Tühista"
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Salvesta"
#: src/guiConfigureWorld.cpp:394
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Konfiguratsioon salvestatud. "
#: src/guiConfigureWorld.cpp:402
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Hoiatus: Konfiguratsioon pole kindel."
#: src/guiConfirmMenu.cpp:120
#: src/guiConfirmMenu.cpp:119
msgid "Yes"
msgstr "Jah"
#: src/guiConfirmMenu.cpp:126
#: src/guiConfirmMenu.cpp:127
msgid "No"
msgstr "Ei"
#: src/guiCreateWorld.cpp:116
#: src/guiCreateWorld.cpp:125
msgid "World name"
msgstr "Maailma nimi"
#: src/guiCreateWorld.cpp:135
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Mäng"
#: src/guiCreateWorld.cpp:159
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Loo"
@@ -104,98 +140,98 @@ msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
"Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut asja"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:130
msgid "Proceed"
msgstr "Jätka"
#: src/guiKeyChangeMenu.cpp:114
#: src/guiKeyChangeMenu.cpp:121
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
"Nupusätted. (Kui see menüü sassi läheb, siis kustuta asju failist minetest."
"conf)"
#: src/guiKeyChangeMenu.cpp:151
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "\"Tegevus\" = Roni alla"
#: src/guiKeyChangeMenu.cpp:164
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
#: src/guiKeyChangeMenu.cpp:269
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "Nupp juba kasutuses"
#: src/guiKeyChangeMenu.cpp:347
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "Vajuta nuppu"
#: src/guiKeyChangeMenu.cpp:372
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Edasi"
#: src/guiKeyChangeMenu.cpp:373
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Tagasi"
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Vasakule"
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Paremale"
#: src/guiKeyChangeMenu.cpp:376
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Tegevus"
#: src/guiKeyChangeMenu.cpp:377
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Hüppamine"
#: src/guiKeyChangeMenu.cpp:378
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Hiilimine"
#: src/guiKeyChangeMenu.cpp:379
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Viska maha"
#: src/guiKeyChangeMenu.cpp:380
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Seljakott"
#: src/guiKeyChangeMenu.cpp:381
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Jututuba"
#: src/guiKeyChangeMenu.cpp:382
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Käsklus"
#: src/guiKeyChangeMenu.cpp:383
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Konsool"
#: src/guiKeyChangeMenu.cpp:384
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Lülita lendamine sisse"
#: src/guiKeyChangeMenu.cpp:385
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Lülita kiirus sisse"
#: src/guiKeyChangeMenu.cpp:386
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "Lülita läbi seinte minek sisse"
#: src/guiKeyChangeMenu.cpp:387
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Kauguse valik"
#: src/guiKeyChangeMenu.cpp:388
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Prindi kogused"
@@ -203,179 +239,179 @@ msgstr "Prindi kogused"
msgid "Cannot create world: Name contains invalid characters"
msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti"
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "Maailma loomine ebaõnnestus: Samanimeline maailm on juba olemas"
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Üksikmäng"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Mitmikmäng"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Arenenud sätted"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Sätted"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Tänuavaldused"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Vali maailm:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Kustuta"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Uus"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Konfigureeri"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Mängi"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Kujunduslik mängumood"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Lülita valu sisse"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nimi/Parool"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Lemmikud:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Avatud serverite nimekiri:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "IP/Port"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Näita avalikke"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Näita lemmikuid"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Liitu"
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Jäta IP lahter tühjaks et alustada LAN serverit."
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Alusta mängu / Liitu"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Avalik"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Kustuta maailm"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Loo maailm"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Uhked puud"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Ilus valgustus"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D pilved"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Läbipaistmatu vesi"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Väga hea kvaliteet"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Anisotroopne Filtreerimine"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Bi-lineaarsed Filtreerimine"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Tri-Linear Filtreerimine"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Varjutajad"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Lae asjade visuaale"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Lülita osakesed sisse"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Löppev vedelik"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Vaheta nuppe"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "IP on vajalkik."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Failid mida kustutada"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
@@ -383,73 +419,62 @@ msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
msgid "Old Password"
msgstr "Vana parool"
#: src/guiPasswordChange.cpp:125
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Uus parool"
#: src/guiPasswordChange.cpp:141
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Kinnita parooli"
#: src/guiPasswordChange.cpp:158
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Muuda"
#: src/guiPasswordChange.cpp:167
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Paroolid ei ole samad!"
#: src/guiPauseMenu.cpp:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Jätka"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Vaheta parooli"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Hääle volüüm"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Välju menüüsse"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Välju mängust"
#: src/guiPauseMenu.cpp:161
#: 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 ""
"Algsed nupusätted:\n"
"- WASD: Kõnni\n"
"- Vasak hiireklõps: Kaeva/löö\n"
"- Parem hiireklõps: Aseta/kasuta\n"
"- Hiireratas: Vali asi\n"
"- 0...9: Vali asi\n"
"- Shift: Hiili\n"
"- R: Vaheta nägemiskaugust\n"
"- I: Seljakott\n"
"- ESC: Menüü\n"
"- T: Jututupa\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr "Hääle Volüüm: "
#: src/guiVolumeChange.cpp:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Välju"
@@ -745,34 +770,51 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Suumi"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menüü"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Maailma initsialiseerimine ebaõnnestus"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Pole valitud ei maailma ega IP aadressi. Pole midagi teha."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Ei leia ega suuda jätkata mängu."
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Vale mängu ID."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Ühenduse viga (Aeg otsas?)"
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
"Vaata debug.txt info jaoks."
#~ 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 ""
#~ "Algsed nupusätted:\n"
#~ "- WASD: Kõnni\n"
#~ "- Vasak hiireklõps: Kaeva/löö\n"
#~ "- Parem hiireklõps: Aseta/kasuta\n"
#~ "- Hiireratas: Vali asi\n"
#~ "- 0...9: Vali asi\n"
#~ "- Shift: Hiili\n"
#~ "- R: Vaheta nägemiskaugust\n"
#~ "- I: Seljakott\n"
#~ "- ESC: Menüü\n"
#~ "- T: Jututupa\n"

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-04-01 14:13+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"
@@ -101,278 +137,280 @@ msgstr "Réapparaître"
#: 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:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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: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:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Solo"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Multijoueur"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avancé"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Réglages"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Crédits"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Sélectionner un monde :"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Supprimer"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nouveau"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Configurer"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Jouer"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Mode créatif"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Activer blessures"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nom / MdP"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Favoris :"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Liste de serveurs publics :"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Adresse / Port"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Voir les serveurs publics"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Voir les serveurs favoris"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Rejoindre"
#: src/guiMainMenu.cpp:591
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Démarrer / Connecter"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Public"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Supprimer ce monde"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Créer un monde"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Feuilles transparentes"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Lumière douce"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Nuages 3D"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Eau opaque"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-mapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtrage anisotropique"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtrage bilinéaire"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtrage trilinéaire"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shaders"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Précharger les visuels d'objets"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Particules"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Liquides limités"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Changer touches"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Adresse requise."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Impossible de supprimer le monde : rien n'est sélectionné"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Fichiers à effacer"
#: src/guiMainMenu.cpp:1133
#: 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:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Impossible de configurer ce monde : aucune sélection active"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Tous les fichiers du monde n'ont pu être effacés"
@@ -380,72 +418,73 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continuer"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Changer mot de passe"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Volume sonore"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Quitter vers le menu"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Quitter le jeu"
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "OK"
@@ -555,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"
@@ -567,7 +606,7 @@ msgstr "Bas"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Éxécuter"
msgstr "Exécuter"
#: src/keycode.cpp:228
msgid "Print"
@@ -741,37 +780,54 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Zoomer"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menu principal"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Le monde n'a pas pu être initialisé"
#: src/main.cpp:1842
#: 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 fournie. Rien à faire."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "N'a pas pu trouver ou charger le jeu \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "gamespec invalide."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Erreur de connexion (perte de connexion ?)"
#: src/main.cpp:1915
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"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
"PO-Revision-Date: 2013-03-30 20:50+0200\n"
"Last-Translator: Fabio Luongo <e249260@rmqkr.net>\n"
"Language-Team: Italian\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"
"Controlla debug.txt per i dettagli."
#: 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 ""
"Attenzione: alcune mod non sono ancora configurate.\n"
"Saranno abilitate di default quando salverai la configurazione. "
#: 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 "attivato"
#: src/guiConfigureWorld.cpp:215
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Attiva tutto"
#: src/guiConfigureWorld.cpp:222
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Disabilita tutto"
#: src/guiConfigureWorld.cpp:228
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "dipende da:"
#: src/guiConfigureWorld.cpp:240
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "è richiesto da:"
#: 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 "Annulla"
#: src/guiConfigureWorld.cpp:268 src/guiKeyChangeMenu.cpp:173
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Salva"
#: src/guiConfigureWorld.cpp:394
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Configurazione salvata. "
#: src/guiConfigureWorld.cpp:402
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Attenzione: configurazione non corretta. "
#: 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 "Nome mondo"
#: src/guiCreateWorld.cpp:135
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Gioco"
#: src/guiCreateWorld.cpp:159
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Crea"
@@ -104,98 +140,98 @@ msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
"Click sinistro: muovi tutti gli oggetti; click destro: muovi un solo oggetto"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:130
msgid "Proceed"
msgstr "Procedi"
#: src/guiKeyChangeMenu.cpp:114
#: src/guiKeyChangeMenu.cpp:121
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
"Associazione tasti. (Se questo menu si incasina, rimuovi la roba da minetest."
"conf)"
#: src/guiKeyChangeMenu.cpp:151
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "\"Usa\" = scendi sotto"
#: src/guiKeyChangeMenu.cpp:164
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Premi due volte \"salto\" per volare"
#: src/guiKeyChangeMenu.cpp:269
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "Tasto già usato"
#: src/guiKeyChangeMenu.cpp:347
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "premi il tasto"
#: src/guiKeyChangeMenu.cpp:372
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Avanti"
#: src/guiKeyChangeMenu.cpp:373
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Indietro"
#: src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:228
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Sinistra"
#: src/guiKeyChangeMenu.cpp:375 src/keycode.cpp:228
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Destra"
#: src/guiKeyChangeMenu.cpp:376
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Usa"
#: src/guiKeyChangeMenu.cpp:377
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Salta"
#: src/guiKeyChangeMenu.cpp:378
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Abbassati"
#: src/guiKeyChangeMenu.cpp:379
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Lancia"
#: src/guiKeyChangeMenu.cpp:380
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Inventario"
#: src/guiKeyChangeMenu.cpp:381
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Parla"
#: src/guiKeyChangeMenu.cpp:382
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Comando"
#: src/guiKeyChangeMenu.cpp:383
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Console"
#: src/guiKeyChangeMenu.cpp:384
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Attiva volo"
#: src/guiKeyChangeMenu.cpp:385
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Aumenta velocità"
#: src/guiKeyChangeMenu.cpp:386
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "(Non) attraversi blocchi"
#: src/guiKeyChangeMenu.cpp:387
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Distanza di rendering"
#: src/guiKeyChangeMenu.cpp:388
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Stampa stack"
@@ -203,181 +239,181 @@ msgstr "Stampa stack"
msgid "Cannot create world: Name contains invalid characters"
msgstr "Impossibile creare il mondo: il nome contiene caratteri non validi"
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "Impossibile creare il mondo: un mondo con questo nome già esiste"
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Giocatore singolo"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Multigiocatore"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avanzato"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Opzioni"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Crediti"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Seleziona mondo:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Cancella"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nuovo"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Configura"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Gioca"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Modalità creativa"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Attiva danno"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nome/Password"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
#, fuzzy
msgid "Favorites:"
msgstr "Mostra preferiti"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Indirizzo/Porta"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Lista server pubblici"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Mostra preferiti"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Connetti"
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Lascia vuoto l'indirizzo per avviare un server locale."
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Avvia gioco/Connetti"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
#, fuzzy
msgid "Public"
msgstr "Lista server pubblici"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Cancella il mondo"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Crea mondo"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Alberi migliori"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Luce uniforme"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Nuvole 3D"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Acqua opaca"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mipmapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtro anisotropico"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtro bilineare"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtro trilineare"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shader"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Pre-carica le immagini degli oggetti"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Attiva particelle"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Modifica tasti"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Indirizzo necessario."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Impossibile eliminare il mondo: nessun mondo selezionato"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "File da eliminarsi"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Impossibile creare il mondo: nessun gioco trovato"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Impossibile configurare il mondo: nessun mondo selezionato"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Eliminazione di tutti i file del mondo fallita"
@@ -385,73 +421,62 @@ msgstr "Eliminazione di tutti i file del mondo fallita"
msgid "Old Password"
msgstr "Vecchia password"
#: src/guiPasswordChange.cpp:125
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Nuova password"
#: src/guiPasswordChange.cpp:141
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Conferma password"
#: src/guiPasswordChange.cpp:158
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Modifica"
#: src/guiPasswordChange.cpp:167
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Le password non corrispondono!"
#: src/guiPauseMenu.cpp:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continua"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Cambia password"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Torna al menu"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Torna al S.O."
#: src/guiPauseMenu.cpp:161
#: 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"
msgstr ""
"Tasti:\n"
"- WASD: cammina\n"
"- Click sinistro: scava blocchi/colpisci\n"
"- Click destro: piazza blocchi/usa\n"
"- Rotellina: seleziona oggetto\n"
"- 0-9: seleziona oggetto\n"
"- Shift: abbassati\n"
"- R: (Dis)attiva mostra tutti i blocchi caricati\n"
"- I: inventario\n"
"- ESC: questo menu\n"
"- T: chat\n"
msgstr ""
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr ""
#: src/guiVolumeChange.cpp:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -747,37 +772,54 @@ msgstr ""
msgid "Zoom"
msgstr ""
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menu principale"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Fallimento nell'inizializzare il mondo"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Nessun mondo selezionato e nessun indirizzo fornito. Niente da fare."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Impossibile trovare o caricare il gioco \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Specifiche di gioco non valide."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Errore connessione (tempo scaduto?)"
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
"Controlla debug.txt per i dettagli."
#~ msgid "Delete map"
#~ msgstr "Cancella mappa"
#~ 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 ""
#~ "Tasti:\n"
#~ "- WASD: cammina\n"
#~ "- Click sinistro: scava blocchi/colpisci\n"
#~ "- Click destro: piazza blocchi/usa\n"
#~ "- Rotellina: seleziona oggetto\n"
#~ "- 0-9: seleziona oggetto\n"
#~ "- Shift: abbassati\n"
#~ "- R: (Dis)attiva mostra tutti i blocchi caricati\n"
#~ "- I: inventario\n"
#~ "- ESC: questo menu\n"
#~ "- T: chat\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\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"
@@ -18,7 +18,41 @@ 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. "
@@ -26,7 +60,7 @@ msgstr ""
"警告: マインテストの改造がいくつか設定されていません。\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 +72,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 "作成"
@@ -103,96 +137,96 @@ msgstr "リスポーン"
msgid "Left click: Move all items, Right click: Move single item"
msgstr "左クリックは全部のアイテムを動かす,右クリックは一つのアイテムを動かす"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 "スタックの表示"
@@ -200,182 +234,182 @@ msgstr "スタックの表示"
msgid "Cannot create world: Name contains invalid characters"
msgstr "ワールドを作成できません: 名前に無効な文字が含まれています"
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "ワールドを作成できません: 同名のワールドが既に存在しています"
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "シングルプレイヤー"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "マルチプレイヤー"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "高度"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "設定"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "クレジット"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "ワールド選択:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "削除"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "新規作成"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "設定"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "選択した世界に入る"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "クリエイティブモード"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "ダメージ有効"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "名前/パスワード"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
#, fuzzy
msgid "Favorites:"
msgstr "お気に入りを見せる"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "アドレス/ポート"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "公共を見せる"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "お気に入りを見せる"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "接続"
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "アドレスを入力しないかぎりロカルサーバーを開始。"
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "ゲーム開始 / 接続"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
#, fuzzy
msgid "Public"
msgstr "公共を見せる"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "ワールド削除"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "ワールド作成"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "きれいな木"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
#, fuzzy
msgid "Smooth Lighting"
msgstr "自然な光表現"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3Dの雲"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "不透明な水面"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "ミップマップ"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "異方性フィルタリング"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "バイリニアフィルタリング"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "トリリニアフィルタリング"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "シェーダー"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "アイテム外観のプリロード"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "破片表現の有効化"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "キー割当て変更"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "アドレスが必要です."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "ワールドを削除できません: 何も選択されていません"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "削除されるファイル"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "ワールドを作成できません: ゲームが見つかりませんでした"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "ワールドの設定ができません: 何も選択されていません"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "ワールドファイルの全ての削除に失敗"
@@ -383,62 +417,62 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "続ける"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "パスワードの変更"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "メニューへ戻る"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "終了"
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -770,32 +804,26 @@ msgstr "PA1"
msgid "Zoom"
msgstr "ズーム"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "メインメニュー"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "ワールドの初期化に失敗"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "ゲームをロードか見つかるのに失敗"
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "接続エラー (タイムアウトか?)"
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+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 ""
@@ -98,96 +132,96 @@ msgstr ""
msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 ""
@@ -195,179 +229,179 @@ msgstr ""
msgid "Cannot create world: Name contains invalid characters"
msgstr ""
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr ""
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr ""
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr ""
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr ""
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr ""
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr ""
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr ""
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr ""
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr ""
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr ""
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr ""
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr ""
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr ""
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr ""
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr ""
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr ""
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr ""
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr ""
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr ""
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr ""
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr ""
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr ""
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr ""
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr ""
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr ""
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr ""
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr ""
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr ""
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr ""
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr ""
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr ""
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr ""
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr ""
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr ""
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr ""
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr ""
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr ""
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr ""
@@ -375,62 +409,62 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr ""
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr ""
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr ""
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr ""
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -726,32 +760,26 @@ msgstr ""
msgid "Zoom"
msgstr ""
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr ""
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr ""
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr ""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr ""
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+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 ""
@@ -98,96 +132,96 @@ msgstr ""
msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 ""
@@ -195,179 +229,179 @@ msgstr ""
msgid "Cannot create world: Name contains invalid characters"
msgstr ""
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr ""
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr ""
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr ""
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr ""
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr ""
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr ""
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr ""
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr ""
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr ""
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr ""
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr ""
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr ""
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr ""
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr ""
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr ""
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr ""
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr ""
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr ""
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr ""
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr ""
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr ""
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr ""
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr ""
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr ""
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr ""
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr ""
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr ""
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr ""
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr ""
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr ""
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr ""
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr ""
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr ""
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr ""
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr ""
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr ""
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr ""
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr ""
@@ -375,62 +409,62 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr ""
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr ""
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr ""
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr ""
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -726,32 +760,26 @@ msgstr ""
msgid "Zoom"
msgstr ""
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr ""
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr ""
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr ""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr ""
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""

790
po/nb/minetest.po Normal file
View 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
View 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"

View File

@@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-04-03 16:42+0200\n"
"Last-Translator: Dêivan Ortiz Munhoz <deivan@novoseusadosinformatica.com.br>\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"
@@ -103,369 +139,358 @@ msgstr "Wróć do gry"
#: 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:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 tu"
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 "stosy Drukuj"
msgstr "Drukuj stosy"
#: 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:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Pojedynczy gracz"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Gra wieloosobowa"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Zaawansowane"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Ustawienia"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Autorzy"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Wybierz świat:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 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:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nowy"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Ustaw"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Graj"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Tryb kreatywny"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Włącz obrażenia"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nazwa gracza/Hasło"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Ulubione:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Lista publicznych serwerów:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Adres/Port"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Pokaż publiczne"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Pokaż ulubione"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Połącz"
#: src/guiMainMenu.cpp:591
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Rozpocznij grę/Połącz"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Publiczne"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Skasuj świat"
msgstr "Usuń świat"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Stwórz świat"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Ozdobne drzewa"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Płynne oświetlenie"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Chmury 3D"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Nieprzeźroczysta woda"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mappowanie"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtrowanie anizotropowe"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Dwuliniowe filtrowanie"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Trójliniowe filtrowanie"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shadery"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Ładuj obrazy przedmiotów"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Włącz cząstki"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Realistyczne ciecze"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Zmień klawisze"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Wymagany adres."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Nie można skasować świata: nic nie zaznaczono"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Pliki do skasowania"
#: src/guiMainMenu.cpp:1133
#: 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:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Nie można skonfigurować świata: Nic nie zaznaczono"
#: src/guiMainMenu.cpp:1256
#: 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Dalej"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Zmień hasło"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Głośność"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Wyj do menu"
msgstr "Wyjście do menu"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Wyjście z gry"
#: src/guiPauseMenu.cpp:161
#: 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:121
#: 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"
@@ -589,7 +614,7 @@ msgstr "Góra"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Help"
msgstr "Pomoc"
#: src/keycode.cpp:229
msgid "Insert"
@@ -747,34 +772,51 @@ msgstr "PA1"
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menu główne"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Inicjalizacja świata nie powiodła się"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Nie wybrano świata ani adresu."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Nie można znaleźć lub wczytać trybu gry \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Nieprawidłowa specyfikacja trybu gry."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Błąd połączenia (brak odpowiedzi?)"
#: src/main.cpp:1915
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"

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-04-03 16:35+0200\n"
"Last-Translator: Dêivan Ortiz Munhoz <deivan@novoseusadosinformatica.com.br>\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,437 +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: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:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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: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:101
#: 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:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Um Jogador"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Multijogador"
msgstr "Vários jogadores"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avançado"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Definições"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Créditos"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Seleccionar Mundo:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Eliminar"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Novo"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Configurar"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Jogar"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Modo Criativo"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Ativar Dano"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nome/Senha"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Favoritos:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Lista de servidor públicos:"
msgstr "Lista de servidores públicos:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Endereço/Porta"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Mostrar Públicos"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Mostrar Favoritos"
#: src/guiMainMenu.cpp:521
msgid "Connect"
msgstr "Conectar"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Ligar"
#: 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:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Iniciar Jogo / Conectar"
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Público"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Eliminar mundo"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Criar mundo"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Árvores Melhoradas"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Iluminação Suave"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Nuvens 3D"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Água Opaca"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mapping"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtro Anisotropico"
msgstr "Filtro Anisotrópico"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtro Bi-Linear"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtro Tri-Linear"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Sombras"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Precarregamento dos items"
msgstr "Pré-carregamento dos itens"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Ativar Particulas"
msgstr "Ativar Partículas"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Líquido finito"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Mudar teclas"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Endereço necessário."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Não foi possível eliminar mundo: Nada seleccionado"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Ficheiros para eliminar"
#: src/guiMainMenu.cpp:1133
#: 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:1149
#: 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:1256
#: 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continuar"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Mudar Senha"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Volume do som"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Sair para Menu"
#: src/guiPauseMenu.cpp:154
msgid "Exit to OS"
msgstr "Sair para SO"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Sair para o sistema"
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Saida"
msgstr "Sair"
#: src/keycode.cpp:223
msgid "Left Button"
@@ -508,7 +544,7 @@ msgstr "Pausa"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "SHIFT"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
@@ -540,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"
@@ -572,7 +608,7 @@ msgstr "Executar"
#: src/keycode.cpp:228
msgid "Print"
msgstr "PRINT"
msgstr "Print"
#: src/keycode.cpp:228
msgid "Select"
@@ -588,7 +624,7 @@ msgstr "Ajuda"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "INSERT"
msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
@@ -742,35 +778,52 @@ msgstr "PAL"
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menu Principal"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Falha ao iniciar mundo"
#: src/main.cpp:1842
#: 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:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Não foi possível encontrar ou carregar jogo \""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "gamespec inválido."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Erro de conexão (excedeu tempo?)"
#: src/main.cpp:1915
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
View 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"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+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 ""
@@ -98,96 +132,96 @@ msgstr ""
msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 ""
@@ -195,179 +229,179 @@ msgstr ""
msgid "Cannot create world: Name contains invalid characters"
msgstr ""
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr ""
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr ""
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr ""
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr ""
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr ""
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr ""
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr ""
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr ""
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr ""
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr ""
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr ""
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr ""
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr ""
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr ""
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr ""
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr ""
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr ""
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr ""
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr ""
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr ""
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr ""
#: src/guiMainMenu.cpp:632
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr ""
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr ""
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr ""
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr ""
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr ""
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr ""
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr ""
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr ""
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr ""
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr ""
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr ""
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr ""
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr ""
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr ""
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr ""
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr ""
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr ""
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr ""
@@ -375,62 +409,62 @@ 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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr ""
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr ""
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr ""
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr ""
#: src/guiPauseMenu.cpp:161
#: 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:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
@@ -726,32 +760,26 @@ msgstr ""
msgid "Zoom"
msgstr ""
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr ""
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr ""
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr ""
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr ""
#: src/main.cpp:1915
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-03-28 15:29+0200\n"
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
"PO-Revision-Date: 2013-05-08 11:06+0200\n"
"Last-Translator: Anton Tsyganenko <anton-tsyganenko@yandex.ru>\n"
"Language-Team: Russian\n"
"Language: ru\n"
@@ -19,15 +19,52 @@ msgstr ""
"%10<=4 && (n%100<10 || 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"
"Подробная информация в 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 ""
"Предупреждение: Некоторые моды еще не настроены.\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. "
@@ -39,56 +76,56 @@ msgstr ""
msgid "enabled"
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 "зависит от:"
#: 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 "Создать"
@@ -98,376 +135,362 @@ msgstr "Вы умерли."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Воскреснуть"
msgstr "Возродиться"
#: src/guiFormSpecMenu.cpp:582
msgid "Left click: Move all items, Right click: Move single item"
msgstr "ЛКМ: Переместить все предметы, ПКМ: Переместить один предмет"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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 "\"Использовать\" = спускаться"
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 "Использовать"
#: 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 "Выбросить"
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 "Проходить сквозь стены"
msgstr "Включить noclip"
#: src/guiKeyChangeMenu.cpp:387
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Выбор зоны видимости"
msgstr "Зона видимости"
#: src/guiKeyChangeMenu.cpp:388
#, fuzzy
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "напечатать стеки"
msgstr "Печать стеков"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr "Невозможно создать мир: Имя содержит недопустимые символы"
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "Невозможно создать мир: Мир под таким названием уже существует"
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Одиночная игра"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Многопользовательская игра"
msgstr "Сетевая игра"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Дополнительно"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Настройки"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Благодарности"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Выберите мир:"
msgstr "Выберите Мир:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Удалить"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Новый"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Настроить"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Играть"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Режим создания"
msgstr "Режим Создания"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Включить повреждения"
msgstr "Включить урон"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Имя/Пароль"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#, fuzzy
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Сохраненные"
msgstr "Избранное:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
msgstr "Список Публичных Серверов:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Адрес/Порт"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Публичные"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Сохраненные"
msgstr "Избранные"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Подключиться"
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Оставьте адрес пустым для запуска локального сервера."
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Начать игру"
msgstr "Начать игру/Подключиться"
#: src/guiMainMenu.cpp:632
#, fuzzy
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Публичные"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Удалить мир"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Создать мир"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Красивые деревья"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Мягкое освещение"
msgstr "Мягкое Освещение"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D облака"
msgstr "3D Облака"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Непрозрачная вода"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-текстурирование"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Анизотропный фильтр"
msgstr "Анизотропная Фильтрация"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Билинейный фильтр"
msgstr "Билинейная Фильтрация"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Трилинейный фильтр"
msgstr "Трилинейная Фильтрация"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Шейдеры"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
#, fuzzy
msgid "Preload item visuals"
msgstr "Кэшировать предметы"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Включить частицы"
msgstr "Включить Частицы"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
msgstr "Конечные жидкости"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Сменить управление"
msgstr "Смена управления"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Нужно ввести адрес."
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Не могу удалить мир: Ничего не выбрано"
msgstr "Невозможно удалить мир: Ничего не выбрано"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Следующие файлы будут удалены"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Не могу создать мир: Ни одной игры не найдено"
msgstr "Невозможно создать мир: Ни одной игры не найдено"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Не могу настроить мир: ничего не выбрано"
msgstr "Невозможно настроить мир: ничего не выбрано"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Ошибка при удалении файлов мира"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Старый пароль"
msgstr "Старый Пароль"
#: src/guiPasswordChange.cpp:125
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Новый пароль"
msgstr "Новый Пароль"
#: src/guiPasswordChange.cpp:141
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Подтверждение пароля"
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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Продолжить"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Изменить пароль"
msgstr "Изменить Пароль"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
msgstr "Громкость Звука"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Выход в меню"
msgstr "Выход в Меню"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Выход в ОС"
#: src/guiPauseMenu.cpp:161
#: 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"
"- WASD: перемещение\n"
"- ЛКМ: копать/ударить\n"
"- ПКМ: поставить/использовать\n"
"- Колесо мыши: выбор предмета\n"
"- 0...9: выбор предмета\n"
"- Shift: красться\n"
"- R: переключить видимость всех загруженных чанков\n"
"- I: инвентарь\n"
"- ESC: это меню\n"
"- T: чат\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr ""
msgstr "Громкость Звука: "
#: src/guiVolumeChange.cpp:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
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"
@@ -475,7 +498,7 @@ msgstr "Доп. кнопка 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "назад"
msgstr "Назад"
#: src/keycode.cpp:224
msgid "Clear"
@@ -486,7 +509,6 @@ msgid "Return"
msgstr "Вернуться"
#: src/keycode.cpp:224
#, fuzzy
msgid "Tab"
msgstr "Tab"
@@ -508,7 +530,7 @@ msgstr "Кана"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "меню"
msgstr "Меню"
#: src/keycode.cpp:225
msgid "Pause"
@@ -519,7 +541,6 @@ msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
#, fuzzy
msgid "Convert"
msgstr "Преобразовать"
@@ -528,9 +549,8 @@ msgid "Escape"
msgstr "Escape"
#: src/keycode.cpp:226
#, fuzzy
msgid "Final"
msgstr "Final"
msgstr "Конец"
#: src/keycode.cpp:226
#, fuzzy
@@ -543,7 +563,7 @@ msgstr "Кандзи"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr ""
msgstr "Не преобразовано"
#: src/keycode.cpp:227
msgid "Accept"
@@ -558,12 +578,10 @@ msgid "Home"
msgstr "Home"
#: src/keycode.cpp:227
#, fuzzy
msgid "Mode Change"
msgstr "Смена режима"
msgstr "Смена Режима"
#: src/keycode.cpp:227
#, fuzzy
msgid "Next"
msgstr "След."
@@ -590,7 +608,6 @@ msgid "Print"
msgstr "Печать"
#: src/keycode.cpp:228
#, fuzzy
msgid "Select"
msgstr "Выбор"
@@ -608,14 +625,13 @@ msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "снимок"
msgstr "Cнимок"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Левая кл. Win"
#: src/keycode.cpp:233
#, fuzzy
msgid "Apps"
msgstr "Приложения"
@@ -632,7 +648,6 @@ msgid "Right Windows"
msgstr "Прав. кл. Win"
#: src/keycode.cpp:233
#, fuzzy
msgid "Sleep"
msgstr "Сон"
@@ -725,72 +740,91 @@ msgid "Minus"
msgstr "Минус"
#: src/keycode.cpp:243
#, fuzzy
msgid "Period"
msgstr "период"
msgstr "Период"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Плюс"
#: src/keycode.cpp:247
#, fuzzy
msgid "Attn"
msgstr "внимание"
msgstr "Внимание"
#: src/keycode.cpp:247
#, fuzzy
msgid "CrSel"
msgstr ""
msgstr "CrSel"
#: src/keycode.cpp:248
#, fuzzy
msgid "Erase OEF"
msgstr ""
msgstr "Стереть ОНС"
#: src/keycode.cpp:248
#, fuzzy
msgid "ExSel"
msgstr ""
msgstr "Exsel"
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr ""
#: src/keycode.cpp:248
msgid "PA1"
msgstr ""
msgstr "Очистить OEM"
#: src/keycode.cpp:248
#, fuzzy
msgid "PA1"
msgstr "PA1"
#: src/keycode.cpp:248
msgid "Zoom"
msgstr "Масштаб"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Главное меню"
msgstr "Главное Меню"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Ошибка при инициализации мира"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Не выбран мир и не введен адрес."
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Невозможно найти или загрузить игру \""
#: src/main.cpp:1864
#: src/main.cpp:2070
#, fuzzy
msgid "Invalid gamespec."
msgstr ""
msgstr "Неправильная конфигурация игры."
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Ошибка соединения (таймаут пинга?)"
#: src/main.cpp:1915
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"
#~ "- WASD: перемещение\n"
#~ "- ЛКМ: копать/ударить\n"
#~ "- ПКМ: поставить/использовать\n"
#~ "- Колесо мыши: выбор предмета\n"
#~ "- 0...9: выбор предмета\n"
#~ "- Shift: красться\n"
#~ "- R: смотреть далеко\n"
#~ "- I: инвентарь\n"
#~ "- ESC: это меню\n"
#~ "- T: чат\n"

787
po/uk/minetest.po Normal file
View 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 ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 19:56+0100\n"
"PO-Revision-Date: 2013-03-09 09:41+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 "创建"
@@ -103,96 +139,96 @@ msgstr "重生"
msgid "Left click: Move all items, Right click: Move single item"
msgstr "左键:移动所有物品,右键:移动单个物品"
#: src/guiFormSpecMenu.cpp:607 src/guiMessageMenu.cpp:109
#: src/guiTextInputMenu.cpp:131
#: 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
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "打印栈"
@@ -200,181 +236,179 @@ msgstr "打印栈"
msgid "Cannot create world: Name contains invalid characters"
msgstr "无法创建世界:名字包含非法字符"
#: src/guiMainMenu.cpp:101
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "无法创建世界:同名世界已经存在"
#: src/guiMainMenu.cpp:283
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "单人游戏"
#: src/guiMainMenu.cpp:284
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "多人游戏"
#: src/guiMainMenu.cpp:285
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "高级联机设置"
#: src/guiMainMenu.cpp:286
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "设置"
#: src/guiMainMenu.cpp:287
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "关于"
#: src/guiMainMenu.cpp:317
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "选择世界:"
#: src/guiMainMenu.cpp:339 src/guiMainMenu.cpp:511 src/keycode.cpp:229
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "删除"
#: src/guiMainMenu.cpp:346
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "新建"
#: src/guiMainMenu.cpp:354
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "配置"
#: src/guiMainMenu.cpp:369 src/keycode.cpp:248
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "开始游戏"
#: src/guiMainMenu.cpp:380 src/guiMainMenu.cpp:619
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "创造模式"
#: src/guiMainMenu.cpp:386 src/guiMainMenu.cpp:625
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "开启伤害"
#: src/guiMainMenu.cpp:406 src/guiMainMenu.cpp:541
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "名字/密码"
#: src/guiMainMenu.cpp:442 src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:1184
#, fuzzy
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "显示最爱"
msgstr "最爱的服务器:"
#: src/guiMainMenu.cpp:450 src/guiMainMenu.cpp:1194
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
msgstr "公共服务器列表:"
#: src/guiMainMenu.cpp:470 src/guiMainMenu.cpp:568
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "地址/端口"
#: src/guiMainMenu.cpp:497 src/guiMainMenu.cpp:1183
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "显示公共"
#: src/guiMainMenu.cpp:501 src/guiMainMenu.cpp:1193
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "显示最爱"
#: src/guiMainMenu.cpp:521
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "连接"
#: src/guiMainMenu.cpp:591
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "地址栏留空可启动本地服务器。"
#: src/guiMainMenu.cpp:600
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "启动游戏/连接"
#: src/guiMainMenu.cpp:632
#, fuzzy
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "显示公共"
msgstr "公共服务器"
#: src/guiMainMenu.cpp:640 src/guiMainMenu.cpp:1113
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "删除世界"
#: src/guiMainMenu.cpp:647
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "创造世界"
#: src/guiMainMenu.cpp:681
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "更漂亮的树"
#: src/guiMainMenu.cpp:687
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "平滑光照"
#: src/guiMainMenu.cpp:693
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D云彩"
#: src/guiMainMenu.cpp:699
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "不反光的水"
msgstr "不透明的水"
#: src/guiMainMenu.cpp:709
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "贴图处理"
#: src/guiMainMenu.cpp:716
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "各向异性过滤"
#: src/guiMainMenu.cpp:723
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "双线性过滤"
#: src/guiMainMenu.cpp:730
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "三线性过滤"
#: src/guiMainMenu.cpp:738
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "着色器"
#: src/guiMainMenu.cpp:745
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "预先加载物品图像"
#: src/guiMainMenu.cpp:752
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "启用粒子效果"
#: src/guiMainMenu.cpp:759
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr ""
msgstr "液体有限延伸"
#: src/guiMainMenu.cpp:769
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "改变键位设置"
#: src/guiMainMenu.cpp:1084
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "需要地址。"
#: src/guiMainMenu.cpp:1102
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "无法删除世界:没有选择世界"
#: src/guiMainMenu.cpp:1117
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "将被删除的文件"
#: src/guiMainMenu.cpp:1133
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "无法创造世界:未找到游戏模式"
#: src/guiMainMenu.cpp:1149
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "无法配置世界:没有选择世界"
#: src/guiMainMenu.cpp:1256
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "无法删除所有该世界的文件"
@@ -382,76 +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:123
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "继续"
#: src/guiPauseMenu.cpp:132
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "更改密码"
#: src/guiPauseMenu.cpp:140
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
msgstr "音量"
#: src/guiPauseMenu.cpp:147
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "退出至菜单"
#: src/guiPauseMenu.cpp:154
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "退出至操作系统"
#: src/guiPauseMenu.cpp:161
#: 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 ""
msgstr "音量: "
#: src/guiVolumeChange.cpp:121
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr ""
msgstr "退出"
#: src/keycode.cpp:223
msgid "Left Button"
@@ -745,34 +778,52 @@ msgstr "PA1键"
msgid "Zoom"
msgstr "缩放"
#: src/main.cpp:1506
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "主菜单"
#: src/main.cpp:1830
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "无法初始化世界"
#: src/main.cpp:1842
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "没有选择世界或提供地址。未执行操作。"
#: src/main.cpp:1850
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "无法找到或载入游戏模式“"
#: src/main.cpp:1864
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "非法游戏模式规格。"
#: src/main.cpp:1904
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "连接出错(超时?)"
#: src/main.cpp:1915
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"

View File

@@ -180,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
@@ -206,31 +225,17 @@ set(common_SRCS
itemdef.cpp
nodedef.cpp
object_properties.cpp
scriptapi_types.cpp
scriptapi_common.cpp
scriptapi_content.cpp
scriptapi_craft.cpp
scriptapi_node.cpp
scriptapi_item.cpp
scriptapi_env.cpp
scriptapi_nodetimer.cpp
scriptapi_noise.cpp
scriptapi_entity.cpp
scriptapi_object.cpp
scriptapi_nodemeta.cpp
scriptapi_inventory.cpp
scriptapi_particles.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
@@ -264,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
@@ -309,6 +311,7 @@ set(minetest_SRCS
particles.cpp
clientobject.cpp
chat.cpp
hud.cpp
guiMainMenu.cpp
guiKeyChangeMenu.cpp
guiMessageMenu.cpp
@@ -345,6 +348,7 @@ set(minetestserver_SRCS
include_directories(
${PROJECT_BINARY_DIR}
${PROJECT_SOURCE_DIR}
${IRRLICHT_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR}
${CMAKE_BUILD_TYPE}
@@ -355,6 +359,7 @@ include_directories(
${SQLITE3_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
${JSON_INCLUDE_DIR}
${PROJECT_SOURCE_DIR}/script
)
if(USE_FREETYPE)
@@ -599,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)

View File

@@ -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];
}

View File

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

View File

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

View File

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

View File

@@ -464,7 +464,7 @@ void ChatPrompt::historyNext()
}
}
void ChatPrompt::nickCompletion(const std::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
@@ -493,13 +493,13 @@ void ChatPrompt::nickCompletion(const std::list<std::wstring>& names, bool backw
// find all names that start with the selected prefix
std::vector<std::wstring> completions;
for (std::list<std::wstring>::const_iterator
for (std::list<std::string>::const_iterator
i = names.begin();
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);

View File

@@ -160,7 +160,7 @@ class ChatPrompt
void historyNext();
// Nick completion
void nickCompletion(const std::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);

View File

@@ -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>
@@ -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;
@@ -363,6 +370,15 @@ Client::~Client()
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)
@@ -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)
{
@@ -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;
}
@@ -1957,7 +1987,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
event.spawn_particle.expirationtime = expirationtime;
event.spawn_particle.size = size;
event.add_particlespawner.collisiondetection =
event.spawn_particle.collisiondetection =
collisiondetection;
event.spawn_particle.texture = new std::string(texture);
@@ -2019,6 +2049,110 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_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 "
@@ -2446,6 +2580,9 @@ void Client::inventoryAction(InventoryAction *a)
Predict some local inventory changes
*/
a->clientApply(this, this);
// Remove it
delete a;
}
ClientActiveObject * Client::getSelectedActiveObject(
@@ -2501,18 +2638,9 @@ void Client::printDebugInfo(std::ostream &os)
<<std::endl;*/
}
std::list<std::wstring> Client::getConnectedPlayerNames()
std::list<std::string> Client::getConnectedPlayerNames()
{
std::list<Player*> players = m_env.getPlayers(true);
std::list<std::wstring> playerNames;
for(std::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()
@@ -2639,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)
@@ -2708,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);
@@ -2743,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

View File

@@ -160,7 +160,10 @@ enum ClientEventType
CE_SHOW_FORMSPEC,
CE_SPAWN_PARTICLE,
CE_ADD_PARTICLESPAWNER,
CE_DELETE_PARTICLESPAWNER
CE_DELETE_PARTICLESPAWNER,
CE_HUDADD,
CE_HUDRM,
CE_HUDCHANGE
};
struct ClientEvent
@@ -183,8 +186,8 @@ 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;
@@ -217,6 +220,29 @@ struct ClientEvent
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;
};
};
@@ -315,7 +341,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
// Prints a line or two of info
void printDebugInfo(std::ostream &os);
std::list<std::wstring> getConnectedPlayerNames();
std::list<std::string> getConnectedPlayerNames();
float getAnimationTime();
@@ -359,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);

View File

@@ -88,9 +88,16 @@ SharedBuffer<u8> makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed);
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 18
#define LATEST_PROTOCOL_VERSION 20
// Server's supported network protocol range
#define SERVER_PROTOCOL_VERSION_MIN 13
@@ -431,6 +438,56 @@ enum ToClientCommand
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

View File

@@ -192,7 +192,7 @@ bool wouldCollideWithCeiling(
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");
@@ -209,10 +209,15 @@ collisionMoveResult collisionMoveSimple(Environment *env, 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
*/
@@ -293,9 +298,11 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
f32 distance = speed_f.getLength();
std::vector<DistanceSortedActiveObject> clientobjects;
c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects);
for (int i=0; i < clientobjects.size(); i++)
for (size_t i=0; i < clientobjects.size(); i++)
{
objects.push_back((ActiveObject*)clientobjects[i].obj);
if ((self == 0) || (self != clientobjects[i].obj)) {
objects.push_back((ActiveObject*)clientobjects[i].obj);
}
}
}
else
@@ -309,7 +316,9 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
for (std::set<u16>::iterator iter = s_objects.begin(); iter != s_objects.end(); iter++)
{
ServerActiveObject *current = s_env->getActiveObject(*iter);
objects.push_back((ActiveObject*)current);
if ((self == 0) || (self != current)) {
objects.push_back((ActiveObject*)current);
}
}
}
}
@@ -453,8 +462,9 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
if (is_object[nearest_boxindex]) {
info.type = COLLISION_OBJECT;
}
else
else {
info.type = COLLISION_NODE;
}
info.node_p = node_positions[nearest_boxindex];
info.bouncy = bouncy;
info.old_speed = speed_f;

View File

@@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class Map;
class IGameDef;
class Environment;
class ActiveObject;
enum CollisionType
{
@@ -70,7 +71,7 @@ struct collisionMoveResult
collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef,
f32 pos_max_d, const aabb3f &box_0,
f32 stepheight, f32 dtime,
v3f &pos_f, v3f &speed_f, v3f &accel_f);
v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self=0);
#if 0
// This doesn't seem to work and isn't used

View File

@@ -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);
}
}
@@ -95,14 +99,10 @@ class MakeTreesFromSaplingsABM : public ActiveBlockModifier
{
private:
content_t c_junglesapling;
content_t c_dirt;
content_t c_dirt_with_grass;
public:
MakeTreesFromSaplingsABM(ServerEnvironment *env, INodeDefManager *nodemgr) {
c_junglesapling = nodemgr->getId("junglesapling");
c_dirt = nodemgr->getId("mapgen_dirt");
c_dirt_with_grass = nodemgr->getId("mapgen_dirt_with_grass");
c_junglesapling = nodemgr->getId("junglesapling");
}
virtual std::set<std::string> getTriggerContents()
@@ -123,8 +123,7 @@ class MakeTreesFromSaplingsABM : public ActiveBlockModifier
ServerMap *map = &env->getServerMap();
MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0));
if (n_below.getContent() != c_dirt &&
n_below.getContent() != c_dirt_with_grass)
if (!((ItemGroupList) ndef->get(n_below).groups)["soil"])
return;
bool is_jungle_tree = n.getContent() == c_junglesapling;
@@ -192,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(env, nodedef));
if (g_settings->getBool("liquid_finite"))
if (g_settings->getBool("liquid_finite")) {
env->addActiveBlockModifier(new LiquidFlowABM(env, nodedef));
env->addActiveBlockModifier(new LiquidDropABM(env, nodedef));
}
}

View File

@@ -708,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)
@@ -860,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);
@@ -1129,6 +1133,7 @@ class GenericCAO : public ClientActiveObject
{
LocalPlayer *player = m_env->getLocalPlayer();
player->overridePosition = getParent()->getPosition();
m_env->getLocalPlayer()->parent = getParent();
}
}
else
@@ -1147,7 +1152,7 @@ class GenericCAO : public ClientActiveObject
v3f p_acceleration = m_acceleration;
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;
@@ -1263,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;
@@ -1329,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;
@@ -1678,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);

View File

@@ -740,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,
@@ -781,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,
@@ -1063,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};
@@ -1130,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;

View File

@@ -27,7 +27,7 @@ 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"
@@ -387,8 +387,7 @@ LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos,
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);
}
}
@@ -397,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);
}
}
@@ -502,7 +500,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
v3f p_acceleration = m_acceleration;
moveresult = collisionMoveSimple(m_env,m_env->getGameDef(),
pos_max_d, box, 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;
@@ -515,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)
@@ -626,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);
@@ -673,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;
{
@@ -688,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;
@@ -702,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)
@@ -935,7 +935,11 @@ 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);
@@ -1019,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
@@ -1027,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
{
@@ -1196,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);
@@ -1294,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);
@@ -1459,6 +1477,11 @@ std::string PlayerSAO::getPropertyPacket()
}
bool PlayerSAO::getCollisionBox(aabb3f *toset) {
//player collision handling is already done clientside no need to do it twice
return false;
//update collision box
*toset = m_player->getCollisionbox();
toset->MinEdge += m_base_position;
toset->MaxEdge += m_base_position;
return true;
}

View File

@@ -101,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;
@@ -257,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
@@ -285,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

View File

@@ -107,6 +107,7 @@ 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");
@@ -116,6 +117,7 @@ void set_default_settings(Settings *settings)
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");
@@ -173,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");
@@ -231,10 +234,12 @@ void set_default_settings(Settings *settings)
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");
@@ -245,7 +250,6 @@ void set_default_settings(Settings *settings)
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)

View File

@@ -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,27 +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");
@@ -92,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;
}
@@ -104,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);
@@ -237,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");
@@ -330,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
@@ -399,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));
}

View File

@@ -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;
@@ -67,7 +88,7 @@ class EmergeManager {
BiomeDefManager *biomedef;
std::vector<Ore *> ores;
EmergeManager(IGameDef *gamedef, BiomeDefManager *bdef);
EmergeManager(IGameDef *gamedef);
~EmergeManager();
void initMapgens(MapgenParams *mgparams);

View File

@@ -32,7 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "settings.h"
#include "log.h"
#include "profiler.h"
#include "scriptapi.h"
#include "cpp_api/scriptapi.h"
#include "nodedef.h"
#include "nodemetadata.h"
#include "main.h" // For g_settings, g_profiler
@@ -320,10 +320,10 @@ void ActiveBlockList::update(std::list<v3s16> &active_positions,
ServerEnvironment
*/
ServerEnvironment::ServerEnvironment(ServerMap *map, lua_State *L,
ServerEnvironment::ServerEnvironment(ServerMap *map, ScriptApi *scriptIface,
IGameDef *gamedef, IBackgroundBlockEmerger *emerger):
m_map(map),
m_lua(L),
m_script(scriptIface),
m_gamedef(gamedef),
m_emerger(emerger),
m_random_spawn_timer(3),
@@ -364,6 +364,29 @@ ServerMap & ServerEnvironment::getServerMap()
return *m_map;
}
bool ServerEnvironment::line_of_sight(v3f pos1, v3f pos2, float stepsize)
{
float distance = pos1.getDistanceFrom(pos2);
//calculate normalized direction vector
v3f normalized_vector = v3f((pos2.X - pos1.X)/distance,
(pos2.Y - pos1.Y)/distance,
(pos2.Z - pos1.Z)/distance);
//find out if there's a node on path between pos1 and pos2
for (float i = 1; i < distance; i += stepsize) {
v3s16 pos = floatToInt(v3f(normalized_vector.X * i,
normalized_vector.Y * i,
normalized_vector.Z * i) +pos1,BS);
MapNode n = getMap().getNodeNoEx(pos);
if(n.param0 != CONTENT_AIR) {
return false;
}
}
return true;
}
void ServerEnvironment::serializePlayers(const std::string &savedir)
{
@@ -803,7 +826,7 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime)
i != elapsed_timers.end(); i++){
n = block->getNodeNoEx(i->first);
v3s16 p = i->first + block->getPosRelative();
if(scriptapi_node_on_timer(m_lua,p,n,i->second.elapsed))
if(m_script->node_on_timer(p,n,i->second.elapsed))
block->setNodeTimer(i->first,NodeTimer(i->second.timeout,0));
}
}
@@ -824,17 +847,17 @@ bool ServerEnvironment::setNode(v3s16 p, const MapNode &n)
MapNode n_old = m_map->getNodeNoEx(p);
// Call destructor
if(ndef->get(n_old).has_on_destruct)
scriptapi_node_on_destruct(m_lua, p, n_old);
m_script->node_on_destruct(p, n_old);
// Replace node
bool succeeded = m_map->addNodeWithEvent(p, n);
if(!succeeded)
return false;
// Call post-destructor
if(ndef->get(n_old).has_after_destruct)
scriptapi_node_after_destruct(m_lua, p, n_old);
m_script->node_after_destruct(p, n_old);
// Call constructor
if(ndef->get(n).has_on_construct)
scriptapi_node_on_construct(m_lua, p, n);
m_script->node_on_construct(p, n);
return true;
}
@@ -844,7 +867,7 @@ bool ServerEnvironment::removeNode(v3s16 p)
MapNode n_old = m_map->getNodeNoEx(p);
// Call destructor
if(ndef->get(n_old).has_on_destruct)
scriptapi_node_on_destruct(m_lua, p, n_old);
m_script->node_on_destruct(p, n_old);
// Replace with air
// This is slightly optimized compared to addNodeWithEvent(air)
bool succeeded = m_map->removeNodeWithEvent(p);
@@ -852,7 +875,7 @@ bool ServerEnvironment::removeNode(v3s16 p)
return false;
// Call post-destructor
if(ndef->get(n_old).has_after_destruct)
scriptapi_node_after_destruct(m_lua, p, n_old);
m_script->node_after_destruct(p, n_old);
// Air doesn't require constructor
return true;
}
@@ -887,7 +910,6 @@ void ServerEnvironment::clearAllObjects()
if(obj->getType() == ACTIVEOBJECT_TYPE_PLAYER)
continue;
u16 id = i->first;
v3f objectpos = obj->getBasePosition();
// Delete static object if block is loaded
if(obj->m_static_exists){
MapBlock *block = m_map->getBlockNoCreateNoEx(obj->m_static_block);
@@ -908,7 +930,7 @@ void ServerEnvironment::clearAllObjects()
// Tell the object about removal
obj->removingFromEnvironment();
// Deregister in scripting api
scriptapi_rm_object_reference(m_lua, obj);
m_script->removeObjectReference(obj);
// Delete active object
if(obj->environmentDeletes())
@@ -923,6 +945,16 @@ void ServerEnvironment::clearAllObjects()
m_active_objects.erase(*i);
}
// Get list of loaded blocks
std::list<v3s16> loaded_blocks;
infostream<<"ServerEnvironment::clearAllObjects(): "
<<"Listing all loaded blocks"<<std::endl;
m_map->listAllLoadedBlocks(loaded_blocks);
infostream<<"ServerEnvironment::clearAllObjects(): "
<<"Done listing all loaded blocks: "
<<loaded_blocks.size()<<std::endl;
// Get list of loadable blocks
std::list<v3s16> loadable_blocks;
infostream<<"ServerEnvironment::clearAllObjects(): "
<<"Listing all loadable blocks"<<std::endl;
@@ -931,6 +963,20 @@ void ServerEnvironment::clearAllObjects()
<<"Done listing all loadable blocks: "
<<loadable_blocks.size()
<<", now clearing"<<std::endl;
// Grab a reference on each loaded block to avoid unloading it
for(std::list<v3s16>::iterator i = loaded_blocks.begin();
i != loaded_blocks.end(); ++i)
{
v3s16 p = *i;
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
assert(block);
block->refGrab();
}
// Remove objects in all loadable blocks
u32 unload_interval = g_settings->getS32("max_clearobjects_extra_loaded_blocks");
unload_interval = MYMAX(unload_interval, 1);
u32 report_interval = loadable_blocks.size() / 10;
u32 num_blocks_checked = 0;
u32 num_blocks_cleared = 0;
@@ -965,7 +1011,22 @@ void ServerEnvironment::clearAllObjects()
<<" in "<<num_blocks_cleared<<" blocks ("
<<percent<<"%)"<<std::endl;
}
if(num_blocks_checked % unload_interval == 0){
m_map->unloadUnreferencedBlocks();
}
}
m_map->unloadUnreferencedBlocks();
// Drop references that were added above
for(std::list<v3s16>::iterator i = loaded_blocks.begin();
i != loaded_blocks.end(); ++i)
{
v3s16 p = *i;
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
assert(block);
block->refDrop();
}
infostream<<"ServerEnvironment::clearAllObjects(): "
<<"Finished: Cleared "<<num_objs_cleared<<" objects"
<<" in "<<num_blocks_cleared<<" blocks"<<std::endl;
@@ -1008,8 +1069,6 @@ void ServerEnvironment::step(float dtime)
// Ignore disconnected players
if(player->peer_id == 0)
continue;
v3f playerpos = player->getPosition();
// Move
player->move(dtime, *m_map, 100*BS);
@@ -1061,8 +1120,8 @@ void ServerEnvironment::step(float dtime)
{
v3s16 p = *i;
/*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
<<") became inactive"<<std::endl;*/
/* infostream<<"Server: Block " << PP(p)
<< " became inactive"<<std::endl; */
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL)
@@ -1081,9 +1140,6 @@ void ServerEnvironment::step(float dtime)
i != blocks_added.end(); ++i)
{
v3s16 p = *i;
/*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
<<") became active"<<std::endl;*/
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL){
@@ -1094,6 +1150,8 @@ void ServerEnvironment::step(float dtime)
}
activateBlock(block);
/* infostream<<"Server: Block " << PP(p)
<< " became active"<<std::endl; */
}
}
@@ -1140,7 +1198,7 @@ void ServerEnvironment::step(float dtime)
i != elapsed_timers.end(); i++){
n = block->getNodeNoEx(i->first);
p = i->first + block->getPosRelative();
if(scriptapi_node_on_timer(m_lua,p,n,i->second.elapsed))
if(m_script->node_on_timer(p,n,i->second.elapsed))
block->setNodeTimer(i->first,NodeTimer(i->second.timeout,0));
}
}
@@ -1194,7 +1252,7 @@ void ServerEnvironment::step(float dtime)
/*
Step script environment (run global on_step())
*/
scriptapi_environment_step(m_lua, dtime);
m_script->environment_Step(dtime);
/*
Step active objects
@@ -1272,16 +1330,17 @@ bool isFreeServerActiveObjectId(u16 id,
u16 getFreeServerActiveObjectId(
std::map<u16, ServerActiveObject*> &objects)
{
u16 new_id = 1;
//try to reuse id's as late as possible
static u16 last_used_id = 0;
u16 startid = last_used_id;
for(;;)
{
if(isFreeServerActiveObjectId(new_id, objects))
return new_id;
last_used_id ++;
if(isFreeServerActiveObjectId(last_used_id, objects))
return last_used_id;
if(new_id == 65535)
if(last_used_id == startid)
return 0;
new_id++;
}
}
@@ -1487,7 +1546,7 @@ u16 ServerEnvironment::addActiveObjectRaw(ServerActiveObject *object,
<<std::endl;
// Register reference in scripting api (must be done before post-init)
scriptapi_add_object_reference(m_lua, object);
m_script->addObjectReference(object);
// Post-initialize object
object->addedToEnvironment(dtime_s);
@@ -1575,7 +1634,7 @@ void ServerEnvironment::removeRemovedObjects()
// Tell the object about removal
obj->removingFromEnvironment();
// Deregister in scripting api
scriptapi_rm_object_reference(m_lua, obj);
m_script->removeObjectReference(obj);
// Delete
if(obj->environmentDeletes())
@@ -1826,17 +1885,17 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
<<" Forcing delete."<<std::endl;
force_delete = true;
} else {
u16 new_id = pending_delete ? id : 0;
// If static counterpart already exists, remove it first.
// This shouldn't happen, but happens rarely for some
// unknown reason. Unsuccessful attempts have been made to
// find said reason.
if(new_id && block->m_static_objects.m_active.find(new_id) != block->m_static_objects.m_active.end()){
if(id && block->m_static_objects.m_active.find(id) != block->m_static_objects.m_active.end()){
infostream<<"ServerEnv: WARNING: Performing hack #83274"
<<std::endl;
block->m_static_objects.remove(new_id);
block->m_static_objects.remove(id);
}
block->m_static_objects.insert(new_id, s_obj);
//store static data
block->m_static_objects.insert(0, s_obj);
// Only mark block as modified if data changed considerably
if(shall_be_written)
@@ -1881,7 +1940,7 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
// Tell the object about removal
obj->removingFromEnvironment();
// Deregister in scripting api
scriptapi_rm_object_reference(m_lua, obj);
m_script->removeObjectReference(obj);
// Delete active object
if(obj->environmentDeletes())
@@ -2049,15 +2108,13 @@ void ClientEnvironment::step(float dtime)
*/
{
v3f lplayerpos = lplayer->getPosition();
// Apply physics
if(free_move == false && is_climbing == false)
{
// Gravity
v3f speed = lplayer->getSpeed();
if(lplayer->in_liquid == false)
speed.Y -= lplayer->movement_gravity * dtime_part * 2;
speed.Y -= lplayer->movement_gravity * lplayer->physics_override_gravity * dtime_part * 2;
// Liquid floating / sinking
if(lplayer->in_liquid && !lplayer->swimming_vertical)
@@ -2151,7 +2208,7 @@ void ClientEnvironment::step(float dtime)
v3s16 p2 = floatToInt(pf + v3f(0, BS*0.8, 0), BS);
MapNode n2 = m_map->getNodeNoEx(p2);
v3s16 p3 = floatToInt(pf + v3f(0, BS*1.6, 0), BS);
MapNode n3 = m_map->getNodeNoEx(p2);
MapNode n3 = m_map->getNodeNoEx(p3);
u32 damage_per_second = 0;
damage_per_second = MYMAX(damage_per_second,
@@ -2174,7 +2231,6 @@ void ClientEnvironment::step(float dtime)
i != m_players.end(); ++i)
{
Player *player = *i;
v3f playerpos = player->getPosition();
/*
Handle non-local players
@@ -2273,16 +2329,17 @@ bool isFreeClientActiveObjectId(u16 id,
u16 getFreeClientActiveObjectId(
std::map<u16, ClientActiveObject*> &objects)
{
u16 new_id = 1;
//try to reuse id's as late as possible
static u16 last_used_id = 0;
u16 startid = last_used_id;
for(;;)
{
if(isFreeClientActiveObjectId(new_id, objects))
return new_id;
last_used_id ++;
if(isFreeClientActiveObjectId(last_used_id, objects))
return last_used_id;
if(new_id == 65535)
if(last_used_id == startid)
return 0;
new_id++;
}
}

View File

@@ -50,6 +50,7 @@ class IGameDef;
class Map;
class ServerMap;
class ClientMap;
class ScriptApi;
class Environment
{
@@ -190,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();
@@ -198,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; }
@@ -298,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:
/*
@@ -345,7 +350,7 @@ 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)
@@ -470,6 +475,13 @@ class ClientEnvironment : public Environment
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;
@@ -482,6 +494,7 @@ class ClientEnvironment : public Environment
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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -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
std::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;

View File

@@ -39,6 +39,9 @@ class GUIChatConsole : public gui::IGUIElement
// This doesn't open immediately but initiates an animation.
// You should call isOpenInhibited() before this.
void openConsole(f32 height);
bool isOpen() const;
// Check if the console should not be opened at the moment
// This is to avoid reopening the console immediately after closing
bool isOpenInhibited() const;

View File

@@ -116,38 +116,18 @@ GUIConfigureWorld::GUIConfigureWorld(gui::IGUIEnvironment* env,
// mod_names
if(!mod.is_modpack &&
mod_names.count(modname) == 0)
m_new_mod_names.insert(modname);
m_settings.setBool("load_mod_"+modname, false);
}
if(!m_new_mod_names.empty())
{
GUIMessageMenu *menu =
new GUIMessageMenu(Environment, Parent, -1, m_menumgr,
wgettext("Warning: Some mods are not configured yet.\n"
"They will be enabled by default when you save the configuration. "));
menu->drop();
}
// find missing mods (mentioned in world.mt, but not installed)
std::set<std::string> missing_mods;
for(std::set<std::string>::iterator it = mod_names.begin();
it != mod_names.end(); ++it)
{
std::string modname = *it;
if(m_addonmods.count(modname) == 0)
missing_mods.insert(modname);
m_settings.remove("load_mod_"+modname);
}
if(!missing_mods.empty())
{
GUIMessageMenu *menu =
new GUIMessageMenu(Environment, Parent, -1, m_menumgr,
wgettext("Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "));
for(std::set<std::string>::iterator it = missing_mods.begin();
it != missing_mods.end(); ++it)
m_settings.remove("load_mod_"+(*it));
menu->drop();
}
std::string worldmtfile = m_wspec.path+DIR_DELIM+"world.mt";
m_settings.updateConfigFile(worldmtfile.c_str());
}
void GUIConfigureWorld::drawMenu()
@@ -185,8 +165,6 @@ void GUIConfigureWorld::regenerateGui(v2u32 screensize)
DesiredRect = rect;
recalculateAbsolutePosition(false);
v2s32 size = rect.getSize();
v2s32 topleft = v2s32(10, 10);
/*
@@ -203,30 +181,36 @@ void GUIConfigureWorld::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 200, 20);
rect += v2s32(0, 25) + topleft;
wchar_t* text = wgettext("enabled");
m_enabled_checkbox =
Environment->addCheckBox(false, rect, this, GUI_ID_ENABLED_CHECKBOX,
wgettext("enabled"));
text);
delete[] text;
m_enabled_checkbox->setVisible(false);
}
{
core::rect<s32> rect(0, 0, 85, 30);
rect = rect + v2s32(0, 25) + topleft;
wchar_t* text = wgettext("Enable All");
m_enableall = Environment->addButton(rect, this, GUI_ID_ENABLEALL,
wgettext("Enable All"));
text);
delete[] text;
m_enableall->setVisible(false);
}
{
core::rect<s32> rect(0, 0, 85, 30);
rect = rect + v2s32(115, 25) + topleft;
m_disableall = Environment->addButton(rect, this, GUI_ID_DISABLEALL,
wgettext("Disable All"));
wchar_t* text = wgettext("Disable All");
m_disableall = Environment->addButton(rect, this, GUI_ID_DISABLEALL, text );
delete[] text;
m_disableall->setVisible(false);
}
{
core::rect<s32> rect(0, 0, 200, 20);
rect += v2s32(0, 60) + topleft;
Environment->addStaticText(wgettext("depends on:"),
rect, false, false, this, -1);
wchar_t* text = wgettext("depends on:");
Environment->addStaticText(text, rect, false, false, this, -1);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 200, 85);
@@ -237,8 +221,9 @@ void GUIConfigureWorld::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 200, 20);
rect += v2s32(0, 175) + topleft;
Environment->addStaticText(wgettext("is required by:"),
rect, false, false, this, -1);
wchar_t* text = wgettext("is required by:");
Environment->addStaticText( text, rect, false, false, this, -1);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 200, 85);
@@ -258,14 +243,16 @@ void GUIConfigureWorld::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(330, 270) - topleft;
Environment->addButton(rect, this, GUI_ID_CANCEL,
wgettext("Cancel"));
wchar_t* text = wgettext("Cancel");
Environment->addButton(rect, this, GUI_ID_CANCEL, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(460, 270) - topleft;
Environment->addButton(rect, this, GUI_ID_SAVE,
wgettext("Save"));
wchar_t* text = wgettext("Save");
Environment->addButton(rect, this, GUI_ID_SAVE, text);
delete[] text;
}
changeCtype("C");
@@ -377,11 +364,6 @@ bool GUIConfigureWorld::OnEvent(const SEvent& event)
return true;
}
case GUI_ID_SAVE: {
for(std::set<std::string>::iterator it = m_new_mod_names.begin();
it!= m_new_mod_names.end(); ++it)
{
m_settings.setBool("load_mod_"+(*it),true);
}
std::string worldmtfile = m_wspec.path+DIR_DELIM+"world.mt";
m_settings.updateConfigFile(worldmtfile.c_str());
@@ -389,17 +371,33 @@ bool GUIConfigureWorld::OnEvent(const SEvent& event)
// bug in the text-size calculation. if the trailing
// spaces are removed from the message text, the
// message gets wrapped and parts of it are cut off:
wchar_t* text = wgettext("Configuration saved. ");
GUIMessageMenu *menu =
new GUIMessageMenu(Environment, Parent, -1, m_menumgr,
wgettext("Configuration saved. "));
text );
delete[] text;
menu->drop();
ModConfiguration modconf(m_wspec.path);
if(!modconf.isConsistent())
try
{
GUIMessageMenu *menu =
ModConfiguration modconf(m_wspec.path);
if(!modconf.isConsistent())
{
wchar_t* text = wgettext("Warning: Configuration not consistent. ");
GUIMessageMenu *menu =
new GUIMessageMenu(Environment, Parent, -1, m_menumgr,
text );
delete[] text;
menu->drop();
}
}
catch(ModError &err)
{
errorstream<<err.what()<<std::endl;
std::wstring text = narrow_to_wide(err.what()) + wgettext("\nCheck debug.txt for details.");
GUIMessageMenu *menu =
new GUIMessageMenu(Environment, Parent, -1, m_menumgr,
wgettext("Warning: Configuration not consistent. "));
text );
menu->drop();
}
@@ -531,22 +529,14 @@ void GUIConfigureWorld::buildTreeView(std::map<std::string, ModSpec> mods,
buildTreeView(mod.modpack_content, new_node);
else
{
// set icon for node: ? for new mods, x for disabled mods,
// checkmark for enabled mods
if(m_new_mod_names.count(modname) > 0)
{
new_node->setIcon(QUESTIONMARK_STR);
}
// set icon for node: x for disabled mods, checkmark for enabled mods
bool mod_enabled = false;
if(m_settings.exists("load_mod_"+modname))
mod_enabled = m_settings.getBool("load_mod_"+modname);
if(mod_enabled)
new_node->setIcon(CHECKMARK_STR);
else
{
bool mod_enabled = true;
if(m_settings.exists("load_mod_"+modname))
mod_enabled = m_settings.getBool("load_mod_"+modname);
if(mod_enabled)
new_node->setIcon(CHECKMARK_STR);
else
new_node->setIcon(CROSS_STR);
}
new_node->setIcon(CROSS_STR);
}
}
}
@@ -663,7 +653,6 @@ void GUIConfigureWorld::enableMod(std::string modname)
m_nodes.find(modname);
if(it != m_nodes.end())
(*it).second->setIcon(CHECKMARK_STR);
m_new_mod_names.erase(modname);
//also enable all dependencies
for(std::set<std::string>::iterator it=mspec.depends.begin();
it != mspec.depends.end(); ++it)
@@ -688,7 +677,6 @@ void GUIConfigureWorld::disableMod(std::string modname)
m_nodes.find(modname);
if(it != m_nodes.end())
(*it).second->setIcon(CROSS_STR);
m_new_mod_names.erase(modname);
//also disable all mods that depend on this one
std::pair<std::multimap<std::string, std::string>::iterator,
std::multimap<std::string, std::string>::iterator > rdep =

View File

@@ -69,9 +69,6 @@ class GUIConfigureWorld : public GUIModalMenu
// the settings in the world.mt file
Settings m_settings;
// mods that are installed but not mentioned in world.mt file
std::set<std::string> m_new_mod_names;
// maps modnames to nodes in m_treeview
std::map<std::string,gui::IGUITreeViewNode*> m_nodes;

View File

@@ -116,14 +116,18 @@ void GUIConfirmMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, bw, 30);
rect = rect + v2s32(size.X/2-bw/2-(bw/2+5), size.Y/2-30/2+5 + msg_h/2);
wchar_t* text = wgettext("Yes");
Environment->addButton(rect, this, GUI_ID_YES,
wgettext("Yes"));
text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, bw, 30);
rect = rect + v2s32(size.X/2-bw/2+(bw/2+5), size.Y/2-30/2+5 + msg_h/2);
wchar_t* text = wgettext("No");
Environment->addButton(rect, this, GUI_ID_NO,
wgettext("No"));
text);
delete[] text;
}
changeCtype("C");
}

View File

@@ -42,13 +42,22 @@ GUICreateWorld::GUICreateWorld(gui::IGUIEnvironment* env,
gui::IGUIElement* parent, s32 id,
IMenuManager *menumgr,
CreateWorldDest *dest,
const std::vector<SubgameSpec> &games
const std::vector<SubgameSpec> &games,
const std::string &initial_game
):
GUIModalMenu(env, parent, id, menumgr),
m_dest(dest),
m_games(games)
m_games(games),
m_initial_game_i(0)
{
assert(games.size() > 0);
for(size_t i=0; i<games.size(); i++){
if(games[i].id == initial_game){
m_initial_game_i = i;
break;
}
}
}
GUICreateWorld::~GUICreateWorld()
@@ -103,8 +112,6 @@ void GUICreateWorld::regenerateGui(v2u32 screensize)
DesiredRect = rect;
recalculateAbsolutePosition(false);
v2s32 size = rect.getSize();
v2s32 topleft = v2s32(10+80, 10+70);
/*
@@ -113,8 +120,9 @@ void GUICreateWorld::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 100, 20);
rect += v2s32(0, 5) + topleft;
Environment->addStaticText(wgettext("World name"),
rect, false, true, this, -1);
wchar_t* text = wgettext("World name");
Environment->addStaticText(text, rect, false, true, this, -1);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 300, 30);
@@ -127,13 +135,17 @@ void GUICreateWorld::regenerateGui(v2u32 screensize)
evt.EventType = EET_KEY_INPUT_EVENT;
evt.KeyInput.Key = KEY_END;
evt.KeyInput.PressedDown = true;
evt.KeyInput.Char = 0;
evt.KeyInput.Control = 0;
evt.KeyInput.Shift = 0;
e->OnEvent(evt);
}
{
core::rect<s32> rect(0, 0, 100, 20);
rect += v2s32(0, 40+5) + topleft;
Environment->addStaticText(wgettext("Game"),
rect, false, true, this, -1);
wchar_t* text = wgettext("Game");
Environment->addStaticText(text, rect, false, true, this, -1);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 300, 80);
@@ -149,20 +161,24 @@ void GUICreateWorld::regenerateGui(v2u32 screensize)
os<<L"]";
e->addItem(os.str().c_str());
}
e->setSelected(0);
e->setSelected(m_initial_game_i);
}
changeCtype("");
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(170, 140) + topleft;
wchar_t* text = wgettext("Create");
Environment->addButton(rect, this, GUI_ID_CREATE,
wgettext("Create"));
text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(300, 140) + topleft;
wchar_t* text = wgettext("Cancel");
Environment->addButton(rect, this, GUI_ID_CANCEL,
wgettext("Cancel"));
text);
delete [] text;
}
changeCtype("C");
}

View File

@@ -38,7 +38,8 @@ class GUICreateWorld : public GUIModalMenu
gui::IGUIElement* parent, s32 id,
IMenuManager *menumgr,
CreateWorldDest *dest,
const std::vector<SubgameSpec> &games);
const std::vector<SubgameSpec> &games,
const std::string &initial_game);
~GUICreateWorld();
void removeChildren();
@@ -56,6 +57,7 @@ class GUICreateWorld : public GUIModalMenu
private:
CreateWorldDest *m_dest;
std::vector<SubgameSpec> m_games;
int m_initial_game_i;
};
#endif

View File

@@ -93,15 +93,19 @@ void GUIDeathScreen::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 400, 50);
rect = rect + v2s32(size.X/2-400/2, size.Y/2-50/2-25);
Environment->addStaticText(wgettext("You died."), rect, false,
wchar_t* text = wgettext("You died.");
Environment->addStaticText(text, rect, false,
true, this, 256);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 140, 30);
rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25);
wchar_t* text = wgettext("Respawn");
gui::IGUIElement *e =
Environment->addButton(rect, this, 257,
wgettext("Respawn"));
text);
delete[] text;
Environment->setFocus(e);
}
changeCtype("C");

View File

@@ -418,9 +418,12 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
e->setTextAlignment(gui::EGUIA_UPPERLEFT, gui::EGUIA_UPPERLEFT);
} else {
irr::SEvent evt;
evt.KeyInput.Key = KEY_END;
evt.EventType = EET_KEY_INPUT_EVENT;
evt.KeyInput.Key = KEY_END;
evt.KeyInput.PressedDown = true;
evt.KeyInput.Char = 0;
evt.KeyInput.Control = 0;
evt.KeyInput.Shift = 0;
e->OnEvent(evt);
}
@@ -581,6 +584,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
size.Y-rect.getHeight()-5);
const wchar_t *text = wgettext("Left click: Move all items, Right click: Move single item");
Environment->addStaticText(text, rect, false, true, this, 256);
delete[] text;
changeCtype("C");
}
// If there's fields, add a Proceed button
@@ -604,7 +608,9 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
v2s32 size = DesiredRect.getSize();
rect = core::rect<s32>(size.X/2-70, pos.Y, (size.X/2-70)+140, pos.Y+30);
Environment->addButton(rect, this, 257, wgettext("Proceed"));
wchar_t* text = wgettext("Proceed");
Environment->addButton(rect, this, 257, text);
delete[] text;
}
changeCtype("C");
}

View File

@@ -75,6 +75,13 @@ GUIModalMenu(env, parent, id, menumgr)
GUIKeyChangeMenu::~GUIKeyChangeMenu()
{
removeChildren();
for (std::vector<key_setting*>::iterator iter = key_settings.begin();
iter != key_settings.end(); iter ++) {
delete[] (*iter)->button_name;
delete (*iter);
}
key_settings.clear();
}
void GUIKeyChangeMenu::removeChildren()
@@ -111,8 +118,10 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
core::rect < s32 > rect(0, 0, 600, 40);
rect += topleft + v2s32(25, 3);
//gui::IGUIStaticText *t =
Environment->addStaticText(wgettext("Keybindings. (If this menu screws up, remove stuff from minetest.conf)"),
wchar_t* text = wgettext("Keybindings. (If this menu screws up, remove stuff from minetest.conf)");
Environment->addStaticText(text,
rect, false, true, this, -1);
delete[] text;
//t->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_UPPERLEFT);
}
@@ -132,7 +141,9 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
{
core::rect < s32 > rect(0, 0, 100, 30);
rect += topleft + v2s32(offset.X + 105, offset.Y - 5);
k->button = Environment->addButton(rect, this, k->id, wgettext(k->key.name()));
wchar_t* text = wgettext(k->key.name());
k->button = Environment->addButton(rect, this, k->id, text );
delete[] text;
}
if(i + 1 == KMaxButtonPerColumns)
offset = v2s32(250, 60);
@@ -147,8 +158,10 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += topleft + v2s32(option_x, option_y);
wchar_t* text = wgettext("\"Use\" = climb down");
Environment->addCheckBox(g_settings->getBool("aux1_descends"), rect, this,
GUI_ID_CB_AUX1_DESCENDS, wgettext("\"Use\" = climb down"));
GUI_ID_CB_AUX1_DESCENDS, text);
delete[] text;
}
offset += v2s32(0, 25);
}
@@ -160,8 +173,10 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += topleft + v2s32(option_x, option_y);
wchar_t* text = wgettext("Double tap \"jump\" to toggle fly");
Environment->addCheckBox(g_settings->getBool("doubletap_jump"), rect, this,
GUI_ID_CB_DOUBLETAP_JUMP, wgettext("Double tap \"jump\" to toggle fly"));
GUI_ID_CB_DOUBLETAP_JUMP, text);
delete[] text;
}
offset += v2s32(0, 25);
}
@@ -169,14 +184,18 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
{
core::rect < s32 > rect(0, 0, 100, 30);
rect += topleft + v2s32(size.X - 100 - 20, size.Y - 40);
wchar_t* text = wgettext("Save");
Environment->addButton(rect, this, GUI_ID_BACK_BUTTON,
wgettext("Save"));
text);
delete[] text;
}
{
core::rect < s32 > rect(0, 0, 100, 30);
rect += topleft + v2s32(size.X - 100 - 20 - 100 - 20, size.Y - 40);
wchar_t* text = wgettext("Cancel");
Environment->addButton(rect, this, GUI_ID_ABORT_BUTTON,
wgettext("Cancel"));
text );
delete[] text;
}
changeCtype("C");
@@ -230,7 +249,9 @@ bool GUIKeyChangeMenu::resetMenu()
key_setting *k = key_settings.at(i);
if(k->id == activeKey)
{
k->button->setText(wgettext(k->key.name()));
wchar_t* text = wgettext(k->key.name());
k->button->setText(text);
delete[] text;
break;
}
}
@@ -266,8 +287,10 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
{
core::rect < s32 > rect(0, 0, 600, 40);
rect += v2s32(0, 0) + v2s32(25, 30);
this->key_used_text = Environment->addStaticText(wgettext("Key already in use"),
wchar_t* text = wgettext("Key already in use");
this->key_used_text = Environment->addStaticText(text,
rect, false, true, this, -1);
delete[] text;
//infostream << "Key already in use" << std::endl;
}
@@ -284,7 +307,9 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
}
assert(k);
k->key = kp;
k->button->setText(wgettext(k->key.name()));
wchar_t* text = wgettext(k->key.name());
k->button->setText(text);
delete[] text;
this->key_used.push_back(kp);
@@ -344,7 +369,9 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
resetMenu();
shift_down = false;
activeKey = event.GUIEvent.Caller->getID();
k->button->setText(wgettext("press key"));
wchar_t* text = wgettext("press key");
k->button->setText(text);
delete[] text;
this->key_used.erase(std::remove(this->key_used.begin(),
this->key_used.end(), k->key), this->key_used.end());
break;
@@ -357,11 +384,12 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
return Parent ? Parent->OnEvent(event) : false;
}
void GUIKeyChangeMenu::add_key(int id, std::string button_name, std::string setting_name)
void GUIKeyChangeMenu::add_key(int id, wchar_t* button_name, std::string setting_name)
{
key_setting *k = new key_setting;
k->id = id;
k->button_name = wgettext(button_name.c_str());
k->button_name = button_name;
k->setting_name = setting_name;
k->key = getKeySetting(k->setting_name.c_str());
key_settings.push_back(k);
@@ -369,21 +397,21 @@ void GUIKeyChangeMenu::add_key(int id, std::string button_name, std::string sett
void GUIKeyChangeMenu::init_keys()
{
this->add_key(GUI_ID_KEY_FORWARD_BUTTON, gettext("Forward"), "keymap_forward");
this->add_key(GUI_ID_KEY_BACKWARD_BUTTON, gettext("Backward"), "keymap_backward");
this->add_key(GUI_ID_KEY_LEFT_BUTTON, gettext("Left"), "keymap_left");
this->add_key(GUI_ID_KEY_RIGHT_BUTTON, gettext("Right"), "keymap_right");
this->add_key(GUI_ID_KEY_USE_BUTTON, gettext("Use"), "keymap_special1");
this->add_key(GUI_ID_KEY_JUMP_BUTTON, gettext("Jump"), "keymap_jump");
this->add_key(GUI_ID_KEY_SNEAK_BUTTON, gettext("Sneak"), "keymap_sneak");
this->add_key(GUI_ID_KEY_DROP_BUTTON, gettext("Drop"), "keymap_drop");
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, gettext("Inventory"), "keymap_inventory");
this->add_key(GUI_ID_KEY_CHAT_BUTTON, gettext("Chat"), "keymap_chat");
this->add_key(GUI_ID_KEY_CMD_BUTTON, gettext("Command"), "keymap_cmd");
this->add_key(GUI_ID_KEY_CONSOLE_BUTTON, gettext("Console"), "keymap_console");
this->add_key(GUI_ID_KEY_FLY_BUTTON, gettext("Toggle fly"), "keymap_freemove");
this->add_key(GUI_ID_KEY_FAST_BUTTON, gettext("Toggle fast"), "keymap_fastmove");
this->add_key(GUI_ID_KEY_NOCLIP_BUTTON, gettext("Toggle noclip"), "keymap_noclip");
this->add_key(GUI_ID_KEY_RANGE_BUTTON, gettext("Range select"), "keymap_rangeselect");
this->add_key(GUI_ID_KEY_DUMP_BUTTON, gettext("Print stacks"), "keymap_print_debug_stacks");
this->add_key(GUI_ID_KEY_FORWARD_BUTTON, wgettext("Forward"), "keymap_forward");
this->add_key(GUI_ID_KEY_BACKWARD_BUTTON, wgettext("Backward"), "keymap_backward");
this->add_key(GUI_ID_KEY_LEFT_BUTTON, wgettext("Left"), "keymap_left");
this->add_key(GUI_ID_KEY_RIGHT_BUTTON, wgettext("Right"), "keymap_right");
this->add_key(GUI_ID_KEY_USE_BUTTON, wgettext("Use"), "keymap_special1");
this->add_key(GUI_ID_KEY_JUMP_BUTTON, wgettext("Jump"), "keymap_jump");
this->add_key(GUI_ID_KEY_SNEAK_BUTTON, wgettext("Sneak"), "keymap_sneak");
this->add_key(GUI_ID_KEY_DROP_BUTTON, wgettext("Drop"), "keymap_drop");
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, wgettext("Inventory"), "keymap_inventory");
this->add_key(GUI_ID_KEY_CHAT_BUTTON, wgettext("Chat"), "keymap_chat");
this->add_key(GUI_ID_KEY_CMD_BUTTON, wgettext("Command"), "keymap_cmd");
this->add_key(GUI_ID_KEY_CONSOLE_BUTTON, wgettext("Console"), "keymap_console");
this->add_key(GUI_ID_KEY_FLY_BUTTON, wgettext("Toggle fly"), "keymap_freemove");
this->add_key(GUI_ID_KEY_FAST_BUTTON, wgettext("Toggle fast"), "keymap_fastmove");
this->add_key(GUI_ID_KEY_NOCLIP_BUTTON, wgettext("Toggle noclip"), "keymap_noclip");
this->add_key(GUI_ID_KEY_RANGE_BUTTON, wgettext("Range select"), "keymap_rangeselect");
this->add_key(GUI_ID_KEY_DUMP_BUTTON, wgettext("Print stacks"), "keymap_print_debug_stacks");
}

View File

@@ -64,7 +64,7 @@ class GUIKeyChangeMenu: public GUIModalMenu
bool resetMenu();
void add_key(int id, std::string setting_name, std::string button_name);
void add_key(int id, wchar_t* button_name, std::string setting_name);
bool shift_down;

View File

@@ -53,11 +53,12 @@ const wchar_t *contrib_core_strs[] = {
L"Ilya Zhuravlev (thexyz) <xyz@minetest.net>",
L"Lisa Milne (darkrose) <lisa@ltmnet.com>",
L"Maciej Kasatkin (RealBadAngel) <mk@realbadangel.pl>",
L"proller <proler@gmail.com>"
L"proller <proler@gmail.com>",
L"sfan5 <sfan5@live.de>",
L"kahrl <kahrl@gmx.net>"
};
const wchar_t *contrib_active_strs[] = {
L"sfan5 <sfan5@live.de>",
L"sapier <sapier@gmx.net>",
L"Vanessa Ezekowitz (VanessaE) <vanessaezekowitz@gmail.com>",
L"Jurgen Doser (doserj) <jurgen.doser@gmail.com>",
@@ -69,7 +70,6 @@ const wchar_t *contrib_active_strs[] = {
};
const wchar_t *contrib_previous_strs[] = {
L"kahrl <kahrl@gmx.net>",
L"Giuseppe Bilotta (Oblomov) <giuseppe.bilotta@gmail.com>",
L"Jonathan Neuschafer <j.neuschaefer@gmx.net>",
L"Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net>",
@@ -89,7 +89,9 @@ struct CreateWorldDestMainMenu : public CreateWorldDest
std::string name_narrow = wide_to_narrow(name);
if(!string_allowed_blacklist(name_narrow, WORLDNAME_BLACKLISTED_CHARS))
{
m_menu->displayMessageMenu(wgettext("Cannot create world: Name contains invalid characters"));
wchar_t* text = wgettext("Cannot create world: Name contains invalid characters");
m_menu->displayMessageMenu(text);
delete[] text;
return;
}
std::vector<WorldSpec> worlds = getAvailableWorlds();
@@ -98,7 +100,9 @@ struct CreateWorldDestMainMenu : public CreateWorldDest
{
if((*i).name == name_narrow)
{
m_menu->displayMessageMenu(wgettext("Cannot create world: A world by this name already exists"));
wchar_t* text = wgettext("Cannot create world: A world by this name already exists");
m_menu->displayMessageMenu(text);
delete[] text;
return;
}
}
@@ -158,15 +162,8 @@ enum
GUI_ID_SERVERLIST_TOGGLE,
GUI_ID_SERVERLIST_DELETE,
GUI_ID_SERVERLIST_TITLE,
};
enum
{
TAB_SINGLEPLAYER=0,
TAB_MULTIPLAYER,
TAB_ADVANCED,
TAB_SETTINGS,
TAB_CREDITS
GUI_ID_GAME_BUTTON_FIRST = 130,
GUI_ID_GAME_BUTTON_MAX = 150,
};
GUIMainMenu::GUIMainMenu(gui::IGUIEnvironment* env,
@@ -251,8 +248,13 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, size.X, 40);
rect += v2s32(4, 0);
Environment->addStaticText(narrow_to_wide(
"Minetest " VERSION_STRING).c_str(),
std::string t = "Minetest " VERSION_STRING;
if(m_data->selected_game_name != "" &&
m_data->selected_tab == TAB_SINGLEPLAYER){
t += "/";
t += m_data->selected_game_name;
}
Environment->addStaticText(narrow_to_wide(t).c_str(),
rect, false, true, this, -1);
}
@@ -280,12 +282,24 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
rect += m_topleft_client + v2s32(0, -30);
gui::IGUITabControl *e = Environment->addTabControl(
rect, this, true, true, GUI_ID_TAB_CONTROL);
e->addTab(wgettext("Singleplayer"));
e->addTab(wgettext("Multiplayer"));
e->addTab(wgettext("Advanced"));
e->addTab(wgettext("Settings"));
e->addTab(wgettext("Credits"));
wchar_t* text = wgettext("Singleplayer");
e->addTab(text);
delete[] text;
text = wgettext("Multiplayer");
e->addTab(text);
delete[] text;
text = wgettext("Advanced");
e->addTab(text);
delete[] text;
text = wgettext("Settings");
e->addTab(text);
delete[] text;
text = wgettext("Credits");
e->addTab(text);
delete[] text;
e->setActiveTab(m_data->selected_tab);
}
if(m_data->selected_tab == TAB_SINGLEPLAYER)
@@ -313,9 +327,11 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, world_sel_w-4, 20);
rect += m_topleft_client + v2s32(world_sel_x+4, world_sel_y-20);
wchar_t* text = wgettext("Select World:");
/*gui::IGUIStaticText *e =*/ Environment->addStaticText(
wgettext("Select World:"),
text,
rect, false, true, this, -1);
delete[] text;
/*e->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_CENTER);*/
}
{
@@ -324,34 +340,46 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
gui::IGUIListBox *e = Environment->addListBox(rect, this,
GUI_ID_WORLD_LISTBOX);
e->setDrawBackground(true);
for(std::vector<WorldSpec>::const_iterator i = m_data->worlds.begin();
i != m_data->worlds.end(); i++){
e->addItem(narrow_to_wide(i->name+" ["+i->gameid+"]").c_str());
m_world_indices.clear();
for(size_t wi = 0; wi < m_data->worlds.size(); wi++){
const WorldSpec &spec = m_data->worlds[wi];
if(spec.gameid == m_data->selected_game){
//e->addItem(narrow_to_wide(spec.name+" ["+spec.gameid+"]").c_str());
e->addItem(narrow_to_wide(spec.name).c_str());
m_world_indices.push_back(wi);
if(m_data->selected_world == (int)wi)
e->setSelected(m_world_indices.size()-1);
}
}
e->setSelected(m_data->selected_world);
Environment->setFocus(e);
}
// Delete world button
{
core::rect<s32> rect(0, 0, world_button_w, 30);
rect += m_topleft_client + v2s32(world_sel_x, world_sel_y+world_sel_h+0);
wchar_t* text = wgettext("Delete");
Environment->addButton(rect, this, GUI_ID_DELETE_WORLD_BUTTON,
wgettext("Delete"));
text);
delete[] text;
}
// Create world button
{
core::rect<s32> rect(0, 0, world_button_w, 30);
rect += m_topleft_client + v2s32(world_sel_x+world_button_w+bs, world_sel_y+world_sel_h+0);
wchar_t* text = wgettext("New");
Environment->addButton(rect, this, GUI_ID_CREATE_WORLD_BUTTON,
wgettext("New"));
text);
delete[] text;
}
// Configure world button
{
core::rect<s32> rect(0, 0, world_button_w, 30);
rect += m_topleft_client + v2s32(world_sel_x+(world_button_w+bs)*2,
world_sel_y+world_sel_h+0);
wchar_t* text = wgettext("Configure");
Environment->addButton(rect, this, GUI_ID_CONFIGURE_WORLD_BUTTON,
wgettext("Configure"));
text);
delete[] text;
}
// Start game button
{
@@ -365,8 +393,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
core::rect<s32> rect(0, 0, bw, 30);
rect += m_topleft_client + v2s32(world_sel_x+world_sel_w-bw,
world_sel_y+world_sel_h+30+bs);
wchar_t* text = wgettext("Play");
Environment->addButton(rect, this,
GUI_ID_JOIN_GAME_BUTTON, wgettext("Play"));
GUI_ID_JOIN_GAME_BUTTON, text);
delete[] text;
}
// Options
s32 option_x = 50;
@@ -376,16 +406,40 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y+20*0);
wchar_t* text = wgettext("Creative Mode");
Environment->addCheckBox(m_data->creative_mode, rect, this,
GUI_ID_CREATIVE_CB, wgettext("Creative Mode"));
GUI_ID_CREATIVE_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y+20*1);
wchar_t* text = wgettext("Enable Damage");
Environment->addCheckBox(m_data->enable_damage, rect, this,
GUI_ID_DAMAGE_CB, wgettext("Enable Damage"));
GUI_ID_DAMAGE_CB, text);
delete[] text;
}
changeCtype("C");
/* Add game selection buttons */
video::IVideoDriver* driver = Environment->getVideoDriver();
for(size_t i=0; i<m_data->games.size(); i++){
const SubgameSpec *spec = &m_data->games[i];
v2s32 p(8 + i*(48+8), screensize.Y - (48+8));
core::rect<s32> rect(0, 0, 48, 48);
rect += p;
video::ITexture *bgtexture = NULL;
if(spec->menuicon_path != "")
bgtexture = driver->getTexture(spec->menuicon_path.c_str());
gui::IGUIButton *b = Environment->addButton(rect, this,
GUI_ID_GAME_BUTTON_FIRST+i, narrow_to_wide(wrap_rows(spec->id, 4)).c_str());
if(bgtexture){
b->setImage(bgtexture);
b->setText(L"");
b->setDrawBorder(false);
b->setUseAlphaChannel(true);
}
}
}
else if(m_data->selected_tab == TAB_MULTIPLAYER)
{
@@ -402,9 +456,11 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
// Nickname + password
{
core::rect<s32> rect(0, 0, 110, 20);
wchar_t* text = wgettext("Name/Password");
rect += m_topleft_client + v2s32(m_size_client.X-60-100, 10+6);
Environment->addStaticText(wgettext("Name/Password"),
Environment->addStaticText(text,
rect, false, true, this, -1);
delete [] text;
}
changeCtype("C");
{
@@ -439,16 +495,20 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 390, 20);
rect += m_topleft_client + v2s32(50, 10);
Environment->addStaticText(wgettext("Favorites:"),
wchar_t* text = wgettext("Favorites:");
Environment->addStaticText(text,
rect, false, true, this, GUI_ID_SERVERLIST_TITLE);
delete[] text;
}
} else {
m_data->servers = ServerList::getOnline();
{
core::rect<s32> rect(0, 0, 390, 20);
rect += m_topleft_client + v2s32(50, 10);
Environment->addStaticText(wgettext("Public Server List:"),
wchar_t* text = wgettext("Public Server List:");
Environment->addStaticText(text,
rect, false, true, this, GUI_ID_SERVERLIST_TITLE);
delete[] text;
}
}
#else
@@ -456,8 +516,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 390, 20);
rect += m_topleft_client + v2s32(50, 10);
Environment->addStaticText(wgettext("Favorites:"),
wchar_t* text = wgettext("Favorites:");
Environment->addStaticText(text,
rect, false, true, this, GUI_ID_SERVERLIST_TITLE);
delete[] text;
}
#endif
updateGuiServerList();
@@ -467,8 +529,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += m_topleft_client + v2s32(50, m_size_client.Y-50-15+6);
Environment->addStaticText(wgettext("Address/Port"),
wchar_t* text = wgettext("Address/Port");
Environment->addStaticText(text,
rect, false, true, this, -1);
delete [] text;
}
changeCtype("C");
{
@@ -493,13 +557,17 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
core::rect<s32> rect(0, 0, 260, 30);
rect += m_topleft_client + v2s32(50,
180);
wchar_t* text = wgettext("Show Public");
gui::IGUIButton *e = Environment->addButton(rect, this, GUI_ID_SERVERLIST_TOGGLE,
wgettext("Show Public"));
text);
delete[] text;
e->setIsPushButton(true);
if (m_data->selected_serverlist == SERVERLIST_PUBLIC)
{
e->setText(wgettext("Show Favorites"));
wchar_t* text = wgettext("Show Favorites");
e->setText(text);
e->setPressed();
delete[] text;
}
}
#endif
@@ -507,18 +575,23 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 120, 30);
rect += m_topleft_client + v2s32(50+260+10, 180);
wchar_t* text = wgettext("Delete");
gui::IGUIButton *e = Environment->addButton(rect, this, GUI_ID_SERVERLIST_DELETE,
wgettext("Delete"));
text);
if (m_data->selected_serverlist == SERVERLIST_PUBLIC) // Hidden when on public list
e->setVisible(false);
delete [] text;
}
// Start game button
{
core::rect<s32> rect(0, 0, 120, 30);
rect += m_topleft_client + v2s32(m_size_client.X-130-30,
m_size_client.Y-25-15);
wchar_t* text = wgettext("Connect");
Environment->addButton(rect, this, GUI_ID_JOIN_GAME_BUTTON,
wgettext("Connect"));
text);
delete[] text;
}
changeCtype("C");
}
@@ -538,8 +611,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += m_topleft_client + v2s32(35+30, 35+6);
Environment->addStaticText(wgettext("Name/Password"),
wchar_t* text = wgettext("Name/Password");
Environment->addStaticText(text,
rect, false, true, this, -1);
delete [] text;
}
changeCtype("C");
{
@@ -565,8 +640,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += m_topleft_client + v2s32(35+30, 75+6);
Environment->addStaticText(wgettext("Address/Port"),
wchar_t* text = wgettext("Address/Port");
Environment->addStaticText(text,
rect, false, true, this, -1);
delete[] text;
}
changeCtype("C");
{
@@ -588,16 +665,20 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 400, 20);
rect += m_topleft_client + v2s32(160+30, 75+35);
Environment->addStaticText(wgettext("Leave address blank to start a local server."),
wchar_t* text = wgettext("Leave address blank to start a local server.");
Environment->addStaticText(text,
rect, false, true, this, -1);
delete[] text;
}
// Start game button
{
core::rect<s32> rect(0, 0, 180, 30);
rect += m_topleft_client + v2s32(m_size_client.X-180-30,
m_size_client.Y-30-20);
wchar_t* text = wgettext("Start Game / Connect");
Environment->addButton(rect, this, GUI_ID_JOIN_GAME_BUTTON,
wgettext("Start Game / Connect"));
text);
delete[] text;
}
/*
Server section
@@ -615,36 +696,46 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 250, 30);
rect += m_topleft_server + v2s32(30+20+250+20, 20);
wchar_t* text = wgettext("Creative Mode");
Environment->addCheckBox(m_data->creative_mode, rect, this, GUI_ID_CREATIVE_CB,
wgettext("Creative Mode"));
text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 250, 30);
rect += m_topleft_server + v2s32(30+20+250+20, 40);
wchar_t* text = wgettext("Enable Damage");
Environment->addCheckBox(m_data->enable_damage, rect, this, GUI_ID_DAMAGE_CB,
wgettext("Enable Damage"));
text);
delete[] text;
}
#if USE_CURL
{
core::rect<s32> rect(0, 0, 250, 30);
rect += m_topleft_server + v2s32(30+20+250+20, 60);
wchar_t* text = wgettext("Public");
Environment->addCheckBox(m_data->enable_public, rect, this, GUI_ID_PUBLIC_CB,
wgettext("Public"));
text);
delete[] text;
}
#endif
// Delete world button
{
core::rect<s32> rect(0, 0, 130, 30);
rect += m_topleft_server + v2s32(30+20+250+20, 90);
wchar_t* text = wgettext("Delete world");
Environment->addButton(rect, this, GUI_ID_DELETE_WORLD_BUTTON,
wgettext("Delete world"));
text );
delete[] text;
}
// Create world button
{
core::rect<s32> rect(0, 0, 130, 30);
rect += m_topleft_server + v2s32(30+20+250+20+140, 90);
wchar_t* text = wgettext("Create world");
Environment->addButton(rect, this, GUI_ID_CREATE_WORLD_BUTTON,
wgettext("Create world"));
text );
delete[] text;
}
// World selection listbox
{
@@ -653,9 +744,11 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
gui::IGUIListBox *e = Environment->addListBox(rect, this,
GUI_ID_WORLD_LISTBOX);
e->setDrawBackground(true);
for(std::vector<WorldSpec>::const_iterator i = m_data->worlds.begin();
i != m_data->worlds.end(); i++){
e->addItem(narrow_to_wide(i->name+" ["+i->gameid+"]").c_str());
m_world_indices.clear();
for(size_t wi = 0; wi < m_data->worlds.size(); wi++){
const WorldSpec &spec = m_data->worlds[wi];
e->addItem(narrow_to_wide(spec.name+" ["+spec.gameid+"]").c_str());
m_world_indices.push_back(wi);
}
e->setSelected(m_data->selected_world);
}
@@ -677,26 +770,34 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y);
wchar_t* text = wgettext("Fancy trees");
Environment->addCheckBox(m_data->fancy_trees, rect, this,
GUI_ID_FANCYTREE_CB, wgettext("Fancy trees"));
GUI_ID_FANCYTREE_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y+20);
wchar_t* text = wgettext("Smooth Lighting");
Environment->addCheckBox(m_data->smooth_lighting, rect, this,
GUI_ID_SMOOTH_LIGHTING_CB, wgettext("Smooth Lighting"));
GUI_ID_SMOOTH_LIGHTING_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y+20*2);
wchar_t* text = wgettext("3D Clouds");
Environment->addCheckBox(m_data->clouds_3d, rect, this,
GUI_ID_3D_CLOUDS_CB, wgettext("3D Clouds"));
GUI_ID_3D_CLOUDS_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w, 30);
rect += m_topleft_client + v2s32(option_x, option_y+20*3);
wchar_t* text = wgettext("Opaque water");
Environment->addCheckBox(m_data->opaque_water, rect, this,
GUI_ID_OPAQUE_WATER_CB, wgettext("Opaque water"));
GUI_ID_OPAQUE_WATER_CB, text);
delete[] text;
}
@@ -705,58 +806,74 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, option_w+20, 30);
rect += m_topleft_client + v2s32(option_x+175, option_y);
wchar_t* text = wgettext("Mip-Mapping");
Environment->addCheckBox(m_data->mip_map, rect, this,
GUI_ID_MIPMAP_CB, wgettext("Mip-Mapping"));
GUI_ID_MIPMAP_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20, 30);
rect += m_topleft_client + v2s32(option_x+175, option_y+20);
wchar_t* text = wgettext("Anisotropic Filtering");
Environment->addCheckBox(m_data->anisotropic_filter, rect, this,
GUI_ID_ANISOTROPIC_CB, wgettext("Anisotropic Filtering"));
GUI_ID_ANISOTROPIC_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20, 30);
rect += m_topleft_client + v2s32(option_x+175, option_y+20*2);
wchar_t* text = wgettext("Bi-Linear Filtering");
Environment->addCheckBox(m_data->bilinear_filter, rect, this,
GUI_ID_BILINEAR_CB, wgettext("Bi-Linear Filtering"));
GUI_ID_BILINEAR_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20, 30);
rect += m_topleft_client + v2s32(option_x+175, option_y+20*3);
wchar_t* text = wgettext("Tri-Linear Filtering");
Environment->addCheckBox(m_data->trilinear_filter, rect, this,
GUI_ID_TRILINEAR_CB, wgettext("Tri-Linear Filtering"));
GUI_ID_TRILINEAR_CB, text);
delete[] text;
}
// shader/on demand image loading/particles settings
{
core::rect<s32> rect(0, 0, option_w+20, 30);
rect += m_topleft_client + v2s32(option_x+175*2, option_y);
wchar_t* text = wgettext("Shaders");
Environment->addCheckBox(m_data->enable_shaders, rect, this,
GUI_ID_SHADERS_CB, wgettext("Shaders"));
GUI_ID_SHADERS_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20+20, 30);
rect += m_topleft_client + v2s32(option_x+175*2, option_y+20);
wchar_t* text = wgettext("Preload item visuals");
Environment->addCheckBox(m_data->preload_item_visuals, rect, this,
GUI_ID_PRELOAD_ITEM_VISUALS_CB, wgettext("Preload item visuals"));
GUI_ID_PRELOAD_ITEM_VISUALS_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20+20, 30);
rect += m_topleft_client + v2s32(option_x+175*2, option_y+20*2);
wchar_t* text = wgettext("Enable Particles");
Environment->addCheckBox(m_data->enable_particles, rect, this,
GUI_ID_ENABLE_PARTICLES_CB, wgettext("Enable Particles"));
GUI_ID_ENABLE_PARTICLES_CB, text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, option_w+20+20, 30);
rect += m_topleft_client + v2s32(option_x+175*2, option_y+20*3);
wchar_t* text = wgettext("Finite liquid");
Environment->addCheckBox(m_data->liquid_finite, rect, this,
GUI_ID_LIQUID_FINITE_CB, wgettext("Finite liquid"));
GUI_ID_LIQUID_FINITE_CB, text);
delete[] text;
}
// Key change button
@@ -765,8 +882,10 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
/*rect += m_topleft_client + v2s32(m_size_client.X-120-30,
m_size_client.Y-30-20);*/
rect += m_topleft_client + v2s32(option_x, option_y+120);
wchar_t* text = wgettext("Change keys");
Environment->addButton(rect, this,
GUI_ID_CHANGE_KEYS_BUTTON, wgettext("Change keys"));
GUI_ID_CHANGE_KEYS_BUTTON, text);
delete[] text;
}
changeCtype("C");
}
@@ -822,7 +941,9 @@ void GUIMainMenu::drawMenu()
if (!skin)
return;
video::IVideoDriver* driver = Environment->getVideoDriver();
/* Draw menu background */
/*video::SColor bgcolor(140,0,0,0);
driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect);*/
@@ -889,6 +1010,8 @@ void GUIMainMenu::drawMenu()
}
}
/* Draw UI elements */
gui::IGUIElement::draw();
}
@@ -1013,8 +1136,13 @@ void GUIMainMenu::readInput(MainMenuData *dst)
{
gui::IGUIElement *e = getElementFromId(GUI_ID_WORLD_LISTBOX);
if(e != NULL && e->getType() == gui::EGUIET_LIST_BOX)
dst->selected_world = ((gui::IGUIListBox*)e)->getSelected();
if(e != NULL && e->getType() == gui::EGUIET_LIST_BOX){
int list_i = ((gui::IGUIListBox*)e)->getSelected();
if(list_i == -1)
dst->selected_world = -1;
else
dst->selected_world = m_world_indices[list_i];
}
}
{
ServerListSpec server =
@@ -1080,9 +1208,11 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
readInput(&cur);
if (getTab() == TAB_MULTIPLAYER && cur.address == L"")
{
wchar_t* text = wgettext("Address required.");
(new GUIMessageMenu(env, parent, -1, menumgr,
wgettext("Address required."))
text)
)->drop();
delete[] text;
return true;
}
acceptInput();
@@ -1098,9 +1228,11 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
MainMenuData cur;
readInput(&cur);
if(cur.selected_world == -1){
wchar_t* text = wgettext("Cannot delete world: Nothing selected");
(new GUIMessageMenu(env, parent, -1, menumgr,
wgettext("Cannot delete world: Nothing selected"))
text)
)->drop();
delete[] text;
} else {
WorldSpec spec = m_data->worlds[cur.selected_world];
// Get files and directories involved
@@ -1110,12 +1242,16 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
// Launch confirmation dialog
ConfirmDestDeleteWorld *dest = new
ConfirmDestDeleteWorld(spec, this, paths);
std::wstring text = wgettext("Delete world");
wchar_t* text1 = wgettext("Delete world");
wchar_t* text2 = wgettext("Files to be deleted");
std::wstring text = text1;
text += L" \"";
text += narrow_to_wide(spec.name);
text += L"\"?\n\n";
text += wgettext("Files to be deleted");
text += text2;
text += L":\n";
delete[] text1;
delete[] text2;
for(u32 i=0; i<paths.size(); i++){
if(i == 3){ text += L"..."; break; }
text += narrow_to_wide(paths[i]) + L"\n";
@@ -1126,16 +1262,18 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
return true;
}
case GUI_ID_CREATE_WORLD_BUTTON: {
std::vector<SubgameSpec> games = getAvailableGames();
const std::vector<SubgameSpec> &games = m_data->games;
if(games.size() == 0){
wchar_t* text = wgettext("Cannot create world: No games found");
GUIMessageMenu *menu = new GUIMessageMenu(env, parent,
-1, menumgr,
wgettext("Cannot create world: No games found"));
text);
menu->drop();
delete[] text;
} else {
CreateWorldDest *dest = new CreateWorldDestMainMenu(this);
GUICreateWorld *menu = new GUICreateWorld(env, parent, -1,
menumgr, dest, games);
menumgr, dest, games, m_data->selected_game);
menu->drop();
}
return true;
@@ -1145,9 +1283,11 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
readInput(&cur);
if(cur.selected_world == -1)
{
wchar_t* text = wgettext("Cannot configure world: Nothing selected");
(new GUIMessageMenu(env, parent, -1, menumgr,
wgettext("Cannot configure world: Nothing selected"))
text)
)->drop();
delete[] text;
}
else
{
@@ -1180,8 +1320,12 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
if (m_data->selected_serverlist == SERVERLIST_PUBLIC) // switch to favorite list
{
m_data->servers = ServerList::getLocal();
togglebutton->setText(wgettext("Show Public"));
title->setText(wgettext("Favorites:"));
wchar_t* text1 = wgettext("Show Public");
wchar_t* text2 = wgettext("Favorites:");
togglebutton->setText(text1);
title->setText(text2);
delete[] text1;
delete[] text2;
deletebutton->setVisible(true);
updateGuiServerList();
serverlist->setSelected(0);
@@ -1190,8 +1334,12 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
else // switch to online list
{
m_data->servers = ServerList::getOnline();
togglebutton->setText(wgettext("Show Favorites"));
title->setText(wgettext("Public Server List:"));
wchar_t* text1 = wgettext("Show Favorites");
wchar_t* text2 = wgettext("Public Server List:");
togglebutton->setText(text1);
title->setText(text2);
delete[] text1;
delete[] text2;
deletebutton->setVisible(false);
updateGuiServerList();
serverlist->setSelected(0);
@@ -1201,17 +1349,42 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
}
#endif
}
/* Game buttons */
int eid = event.GUIEvent.Caller->getID();
if(eid >= GUI_ID_GAME_BUTTON_FIRST &&
eid <= GUI_ID_GAME_BUTTON_MAX){
m_data->selected_game =
m_data->games[eid - GUI_ID_GAME_BUTTON_FIRST].id;
m_data->selected_game_name =
m_data->games[eid - GUI_ID_GAME_BUTTON_FIRST].name;
regenerateGui(m_screensize_old);
}
}
if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER)
{
switch(event.GUIEvent.Caller->getID())
{
case GUI_ID_ADDRESS_INPUT: case GUI_ID_PORT_INPUT: case GUI_ID_NAME_INPUT: case 264:
MainMenuData cur;
readInput(&cur);
if (getTab() == TAB_MULTIPLAYER && cur.address == L"")
{
wchar_t* text = wgettext("Address required.");
(new GUIMessageMenu(env, parent, -1, menumgr,
text)
)->drop();
delete[] text;
return true;
}
acceptInput();
quitMenu();
return true;
}
}
if(event.GUIEvent.EventType==gui::EGET_LISTBOX_CHANGED)
{
readInput(m_data);
}
if(event.GUIEvent.EventType==gui::EGET_LISTBOX_SELECTED_AGAIN)
{
switch(event.GUIEvent.Caller->getID())
@@ -1252,8 +1425,10 @@ void GUIMainMenu::deleteWorld(const std::vector<std::string> &paths)
// Delete files
bool did = fs::DeletePaths(paths);
if(!did){
wchar_t* text = wgettext("Failed to delete all world files");
GUIMessageMenu *menu = new GUIMessageMenu(env, parent,
-1, menumgr, wgettext("Failed to delete all world files"));
-1, menumgr, text);
delete[] text;
menu->drop();
}
// Quit menu to refresh it

View File

@@ -34,11 +34,22 @@ enum {
SERVERLIST_PUBLIC,
};
enum
{
TAB_SINGLEPLAYER=0,
TAB_MULTIPLAYER,
TAB_ADVANCED,
TAB_SETTINGS,
TAB_CREDITS
};
struct MainMenuData
{
// These are in the native format of the gui elements
// Generic
int selected_tab;
std::string selected_game;
std::string selected_game_name;
// Client options
std::string servername;
std::string serverdescription;
@@ -78,6 +89,8 @@ struct MainMenuData
MainMenuData():
// Generic
selected_tab(0),
selected_game("minetest"),
selected_game_name("Minetest"),
// Client opts
fancy_trees(false),
smooth_lighting(false),
@@ -128,6 +141,8 @@ class GUIMainMenu : public GUIModalMenu
s32 id;
IMenuManager *menumgr;
std::vector<int> m_world_indices;
bool m_is_regenerating;
v2s32 m_topleft_client;
v2s32 m_size_client;

View File

@@ -104,10 +104,12 @@ void GUIMessageMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, bw, 30);
rect = rect + v2s32(size.X/2-bw/2, size.Y/2-30/2+5 + msg_h/2);
wchar_t* text = wgettext("Proceed");
gui::IGUIElement *e =
Environment->addButton(rect, this, 257,
wgettext("Proceed"));
text);
Environment->setFocus(e);
delete[] text;
}
changeCtype("C");
}

View File

@@ -95,7 +95,6 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
v2s32 size = rect.getSize();
v2s32 topleft_client(40, 0);
v2s32 size_client = size - v2s32(40, 0);
/*
Add stuff
@@ -105,8 +104,9 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
Environment->addStaticText(wgettext("Old Password"),
rect, false, true, this, -1);
wchar_t* text = wgettext("Old Password");
Environment->addStaticText(text, rect, false, true, this, -1);
delete[] text;
}
changeCtype("C");
{
@@ -122,8 +122,9 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
Environment->addStaticText(wgettext("New Password"),
rect, false, true, this, -1);
wchar_t* text = wgettext("New Password");
Environment->addStaticText(text, rect, false, true, this, -1);
delete[] text;
}
changeCtype("C");
{
@@ -138,8 +139,9 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
Environment->addStaticText(wgettext("Confirm Password"),
rect, false, true, this, -1);
wchar_t* text = wgettext("Confirm Password");
Environment->addStaticText(text, rect, false, true, this, -1);
delete[] text;
}
changeCtype("C");
{
@@ -155,18 +157,22 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 140, 30);
rect = rect + v2s32(size.X/2-140/2, ypos);
Environment->addButton(rect, this, ID_change, wgettext("Change"));
wchar_t* text = wgettext("Change");
Environment->addButton(rect, this, ID_change, text);
delete[] text;
}
ypos += 50;
{
core::rect<s32> rect(0, 0, 300, 20);
rect += topleft_client + v2s32(35, ypos);
wchar_t* text = wgettext("Passwords do not match!");
IGUIElement *e =
Environment->addStaticText(
wgettext("Passwords do not match!"),
text,
rect, false, true, this, ID_message);
e->setVisible(false);
delete[] text;
}
changeCtype("C");

View File

@@ -119,8 +119,10 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
wchar_t* text = wgettext("Continue");
Environment->addButton(rect, this, 256,
wgettext("Continue"));
text);
delete[] text;
}
btn_y += btn_height + btn_gap;
if(!m_simple_singleplayer_mode)
@@ -128,48 +130,58 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
wchar_t* text = wgettext("Change Password");
Environment->addButton(rect, this, 261,
wgettext("Change Password"));
text);
delete[] text;
}
btn_y += btn_height + btn_gap;
}
{
core::rect<s32> rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
wchar_t* text = wgettext("Sound Volume");
Environment->addButton(rect, this, 262,
wgettext("Sound Volume"));
text);
delete[] text;
}
btn_y += btn_height + btn_gap;
{
core::rect<s32> rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
wchar_t* text = wgettext("Exit to Menu");
Environment->addButton(rect, this, 260,
wgettext("Exit to Menu"));
text);
delete[] text;
}
btn_y += btn_height + btn_gap;
{
core::rect<s32> rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
wchar_t* text = wgettext("Exit to OS");
Environment->addButton(rect, this, 257,
wgettext("Exit to OS"));
text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 180, 240);
rect = rect + v2s32(size.X/2 + 90, size.Y/2-rect.getHeight()/2);
Environment->addStaticText(chartowchar_t(gettext(
"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"
)), rect, false, true, this, 258);
wchar_t* text = wgettext("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"
);
Environment->addStaticText(text, rect, false, true, this, 258);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 180, 220);

View File

@@ -121,14 +121,19 @@ void GUITextInputMenu::regenerateGui(v2u32 screensize)
evt.EventType = EET_KEY_INPUT_EVENT;
evt.KeyInput.Key = KEY_END;
evt.KeyInput.PressedDown = true;
evt.KeyInput.Char = 0;
evt.KeyInput.Control = 0;
evt.KeyInput.Shift = 0;
e->OnEvent(evt);
}
changeCtype("");
{
core::rect<s32> rect(0, 0, 140, 30);
rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25);
wchar_t* text = wgettext("Proceed");
Environment->addButton(rect, this, 257,
wgettext("Proceed"));
text);
delete[] text;
}
changeCtype("C");
}

View File

@@ -96,7 +96,6 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize)
v2s32 size = rect.getSize();
v2s32 topleft_client(40, 0);
v2s32 size_client = size - v2s32(40, 0);
int volume=(int)(g_settings->getFloat("sound_volume")*100);
/*
Add stuff
@@ -105,8 +104,10 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 120, 20);
rect = rect + v2s32(size.X/2-60, size.Y/2-35);
Environment->addStaticText(wgettext("Sound Volume: "), rect, false,
wchar_t* text = wgettext("Sound Volume: ");
Environment->addStaticText(text, rect, false,
true, this, ID_soundText1);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 30, 20);
@@ -117,8 +118,10 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize)
{
core::rect<s32> rect(0, 0, 80, 30);
rect = rect + v2s32(size.X/2-80/2, size.Y/2+55);
wchar_t* text = wgettext("Exit");
Environment->addButton(rect, this, ID_soundExitButton,
wgettext("Exit"));
text);
delete[] text;
}
{
core::rect<s32> rect(0, 0, 300, 20);

338
src/hud.cpp Normal file
View File

@@ -0,0 +1,338 @@
/*
Minetest
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2010-2013 blue42u, Jonathon Anderson <anderjon@umail.iu.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
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 <IGUIStaticText.h>
#include "guiFormSpecMenu.h"
#include "main.h"
#include "util/numeric.h"
#include "log.h"
#include "client.h"
#include "hud.h"
Hud::Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
gui::IGUIFont *font, u32 text_height, IGameDef *gamedef,
LocalPlayer *player, Inventory *inventory) {
this->driver = driver;
this->guienv = guienv;
this->font = font;
this->text_height = text_height;
this->gamedef = gamedef;
this->player = player;
this->inventory = inventory;
screensize = v2u32(0, 0);
displaycenter = v2s32(0, 0);
hotbar_imagesize = 48;
tsrc = gamedef->getTextureSource();
v3f crosshair_color = g_settings->getV3F("crosshair_color");
u32 cross_r = rangelim(myround(crosshair_color.X), 0, 255);
u32 cross_g = rangelim(myround(crosshair_color.Y), 0, 255);
u32 cross_b = rangelim(myround(crosshair_color.Z), 0, 255);
u32 cross_a = rangelim(g_settings->getS32("crosshair_alpha"), 0, 255);
crosshair_argb = video::SColor(cross_a, cross_r, cross_g, cross_b);
v3f selectionbox_color = g_settings->getV3F("selectionbox_color");
u32 sbox_r = rangelim(myround(selectionbox_color.X), 0, 255);
u32 sbox_g = rangelim(myround(selectionbox_color.Y), 0, 255);
u32 sbox_b = rangelim(myround(selectionbox_color.Z), 0, 255);
selectionbox_argb = video::SColor(255, sbox_r, sbox_g, sbox_b);
use_crosshair_image = tsrc->isKnownSourceImage("crosshair.png");
}
//NOTE: selectitem = 0 -> no selected; selectitem 1-based
void Hud::drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount,
InventoryList *mainlist, u16 selectitem, u16 direction)
{
s32 padding = imgsize / 12;
s32 height = imgsize + padding * 2;
s32 width = itemcount * (imgsize + padding * 2);
if (direction == HUD_DIR_TOP_BOTTOM || direction == HUD_DIR_BOTTOM_TOP) {
width = imgsize + padding * 2;
height = itemcount * (imgsize + padding * 2);
}
s32 fullimglen = imgsize + padding * 2;
// Position of upper left corner of bar
v2s32 pos = upperleftpos;
// Draw background color
/*core::rect<s32> barrect(0,0,width,height);
barrect += pos;
video::SColor bgcolor(255,128,128,128);
driver->draw2DRectangle(bgcolor, barrect, NULL);*/
core::rect<s32> imgrect(0, 0, imgsize, imgsize);
for (s32 i = 0; i < itemcount; i++)
{
const ItemStack &item = mainlist->getItem(i);
v2s32 steppos;
switch (direction) {
case HUD_DIR_RIGHT_LEFT:
steppos = v2s32(-(padding + i * fullimglen), padding);
break;
case HUD_DIR_TOP_BOTTOM:
steppos = v2s32(padding, padding + i * fullimglen);
break;
case HUD_DIR_BOTTOM_TOP:
steppos = v2s32(padding, -(padding + i * fullimglen));
break;
default:
steppos = v2s32(padding + i * fullimglen, padding);
}
core::rect<s32> rect = imgrect + pos + steppos;
if (selectitem == i + 1)
{
video::SColor c_outside(255,255,0,0);
//video::SColor c_outside(255,0,0,0);
//video::SColor c_inside(255,192,192,192);
s32 x1 = rect.UpperLeftCorner.X;
s32 y1 = rect.UpperLeftCorner.Y;
s32 x2 = rect.LowerRightCorner.X;
s32 y2 = rect.LowerRightCorner.Y;
// Black base borders
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y1 - padding),
v2s32(x2 + padding, y1)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y2),
v2s32(x2 + padding, y2 + padding)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y1),
v2s32(x1, y2)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x2, y1),
v2s32(x2 + padding, y2)
), NULL);
/*// Light inside borders
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y1 - padding/2),
v2s32(x2 + padding/2, y1)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y2),
v2s32(x2 + padding/2, y2 + padding/2)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y1),
v2s32(x1, y2)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x2, y1),
v2s32(x2 + padding/2, y2)
), NULL);
*/
}
video::SColor bgcolor2(128, 0, 0, 0);
driver->draw2DRectangle(bgcolor2, rect, NULL);
drawItemStack(driver, font, item, rect, NULL, gamedef);
}
}
void Hud::drawLuaElements() {
for (size_t i = 0; i != player->hud.size(); i++) {
HudElement *e = player->hud[i];
if (!e)
continue;
v2s32 pos(e->pos.X * screensize.X, e->pos.Y * screensize.Y);
switch (e->type) {
case HUD_ELEM_IMAGE: {
video::ITexture *texture = tsrc->getTextureRaw(e->text);
if (!texture)
continue;
const video::SColor color(255, 255, 255, 255);
const video::SColor colors[] = {color, color, color, color};
core::dimension2di imgsize(texture->getOriginalSize());
core::rect<s32> rect(0, 0, imgsize.Width * e->scale.X,
imgsize.Height * e->scale.X);
rect += pos;
v2s32 offset((e->align.X - 1.0) * ((imgsize.Width * e->scale.X) / 2),
(e->align.Y - 1.0) * ((imgsize.Height * e->scale.X) / 2));
rect += offset;
rect += v2s32(e->offset.X, e->offset.Y);
driver->draw2DImage(texture, rect,
core::rect<s32>(core::position2d<s32>(0,0), imgsize),
NULL, colors, true);
break; }
case HUD_ELEM_TEXT: {
video::SColor color(255, (e->number >> 16) & 0xFF,
(e->number >> 8) & 0xFF,
(e->number >> 0) & 0xFF);
core::rect<s32> size(0, 0, e->scale.X, text_height * e->scale.Y);
std::wstring text = narrow_to_wide(e->text);
core::dimension2d<u32> textsize = font->getDimension(text.c_str());
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
(e->align.Y - 1.0) * (textsize.Height / 2));
v2s32 offs(e->offset.X, e->offset.Y);
font->draw(text.c_str(), size + pos + offset + offs, color);
break; }
case HUD_ELEM_STATBAR: {
v2s32 offs(e->offset.X, e->offset.Y);
drawStatbar(pos, HUD_CORNER_UPPER, e->dir, e->text, e->number, offs);
break; }
case HUD_ELEM_INVENTORY: {
InventoryList *inv = inventory->getList(e->text);
drawItem(pos, hotbar_imagesize, e->number, inv, e->item, e->dir);
break; }
default:
infostream << "Hud::drawLuaElements: ignoring drawform " << e->type <<
"of hud element ID " << i << " due to unrecognized type" << std::endl;
}
}
}
void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture, s32 count, v2s32 offset) {
const video::SColor color(255, 255, 255, 255);
const video::SColor colors[] = {color, color, color, color};
video::ITexture *stat_texture = tsrc->getTextureRaw(texture);
if (!stat_texture)
return;
core::dimension2di srcd(stat_texture->getOriginalSize());
v2s32 p = pos;
if (corner & HUD_CORNER_LOWER)
p -= srcd.Height;
p += offset;
v2s32 steppos;
switch (drawdir) {
case HUD_DIR_RIGHT_LEFT:
steppos = v2s32(-1, 0);
break;
case HUD_DIR_TOP_BOTTOM:
steppos = v2s32(0, 1);
break;
case HUD_DIR_BOTTOM_TOP:
steppos = v2s32(0, -1);
break;
default:
steppos = v2s32(1, 0);
}
steppos.X *= srcd.Width;
steppos.Y *= srcd.Height;
for (s32 i = 0; i < count / 2; i++)
{
core::rect<s32> srcrect(0, 0, srcd.Width, srcd.Height);
core::rect<s32> dstrect(srcrect);
dstrect += p;
driver->draw2DImage(stat_texture, dstrect, srcrect, NULL, colors, true);
p += steppos;
}
if (count % 2 == 1)
{
core::rect<s32> srcrect(0, 0, srcd.Width / 2, srcd.Height);
core::rect<s32> dstrect(srcrect);
dstrect += p;
driver->draw2DImage(stat_texture, dstrect, srcrect, NULL, colors, true);
}
}
void Hud::drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem) {
InventoryList *mainlist = inventory->getList("main");
if (mainlist == NULL) {
errorstream << "draw_hotbar(): mainlist == NULL" << std::endl;
return;
}
s32 hotbar_itemcount = player->hud_hotbar_itemcount;
s32 padding = hotbar_imagesize / 12;
s32 width = hotbar_itemcount * (hotbar_imagesize + padding * 2);
v2s32 pos = centerlowerpos - v2s32(width / 2, hotbar_imagesize + padding * 2);
if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE)
drawItem(pos, hotbar_imagesize, hotbar_itemcount, mainlist, playeritem + 1, 0);
if (player->hud_flags & HUD_FLAG_HEALTHBAR_VISIBLE)
drawStatbar(pos - v2s32(0, 4), HUD_CORNER_LOWER, HUD_DIR_LEFT_RIGHT,
"heart.png", halfheartcount, v2s32(0, 0));
}
void Hud::drawCrosshair() {
if (!(player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE))
return;
if (use_crosshair_image) {
video::ITexture *crosshair = tsrc->getTextureRaw("crosshair.png");
v2u32 size = crosshair->getOriginalSize();
v2s32 lsize = v2s32(displaycenter.X - (size.X / 2),
displaycenter.Y - (size.Y / 2));
driver->draw2DImage(crosshair, lsize,
core::rect<s32>(0, 0, size.X, size.Y),
0, crosshair_argb, true);
} else {
driver->draw2DLine(displaycenter - v2s32(10, 0),
displaycenter + v2s32(10, 0), crosshair_argb);
driver->draw2DLine(displaycenter - v2s32(0, 10),
displaycenter + v2s32(0, 10), crosshair_argb);
}
}
void Hud::drawSelectionBoxes(std::vector<aabb3f> &hilightboxes) {
for (std::vector<aabb3f>::const_iterator
i = hilightboxes.begin();
i != hilightboxes.end(); i++) {
driver->draw3DBox(*i, selectionbox_argb);
}
}
void Hud::resizeHotbar() {
if (screensize.Y <= 800)
hotbar_imagesize = 32;
else if (screensize.Y <= 1280)
hotbar_imagesize = 48;
else
hotbar_imagesize = 64;
}

134
src/hud.h Normal file
View File

@@ -0,0 +1,134 @@
/*
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 HUD_HEADER
#define HUD_HEADER
#include "irrlichttypes_extrabloated.h"
#define HUD_DIR_LEFT_RIGHT 0
#define HUD_DIR_RIGHT_LEFT 1
#define HUD_DIR_TOP_BOTTOM 2
#define HUD_DIR_BOTTOM_TOP 3
#define HUD_CORNER_UPPER 0
#define HUD_CORNER_LOWER 1
#define HUD_CORNER_CENTER 2
#define HUD_FLAG_HOTBAR_VISIBLE (1 << 0)
#define HUD_FLAG_HEALTHBAR_VISIBLE (1 << 1)
#define HUD_FLAG_CROSSHAIR_VISIBLE (1 << 2)
#define HUD_FLAG_WIELDITEM_VISIBLE (1 << 3)
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
#define HUD_HOTBAR_ITEMCOUNT_DEFAULT 8
#define HUD_HOTBAR_ITEMCOUNT_MAX 23
class Player;
enum HudElementType {
HUD_ELEM_IMAGE = 0,
HUD_ELEM_TEXT = 1,
HUD_ELEM_STATBAR = 2,
HUD_ELEM_INVENTORY = 3
};
enum HudElementStat {
HUD_STAT_POS = 0,
HUD_STAT_NAME,
HUD_STAT_SCALE,
HUD_STAT_TEXT,
HUD_STAT_NUMBER,
HUD_STAT_ITEM,
HUD_STAT_DIR,
HUD_STAT_ALIGN,
HUD_STAT_OFFSET
};
struct HudElement {
HudElementType type;
v2f pos;
std::string name;
v2f scale;
std::string text;
u32 number;
u32 item;
u32 dir;
v2f align;
v2f offset;
};
inline u32 hud_get_free_id(Player *player) {
size_t size = player->hud.size();
for (size_t i = 0; i != size; i++) {
if (!player->hud[i])
return i;
}
return size;
}
#ifndef SERVER
#include <IGUIFont.h>
#include "gamedef.h"
#include "inventory.h"
#include "localplayer.h"
class Hud {
public:
video::IVideoDriver *driver;
gui::IGUIEnvironment *guienv;
gui::IGUIFont *font;
u32 text_height;
IGameDef *gamedef;
LocalPlayer *player;
Inventory *inventory;
ITextureSource *tsrc;
v2u32 screensize;
v2s32 displaycenter;
s32 hotbar_imagesize;
video::SColor crosshair_argb;
video::SColor selectionbox_argb;
bool use_crosshair_image;
Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
gui::IGUIFont *font, u32 text_height, IGameDef *gamedef,
LocalPlayer *player, Inventory *inventory);
void drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount,
InventoryList *mainlist, u16 selectitem, u16 direction);
void drawLuaElements();
void drawStatbar(v2s32 pos, u16 corner, u16 drawdir,
std::string texture, s32 count, v2s32 offset);
void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem);
void resizeHotbar();
void drawCrosshair();
void drawSelectionBoxes(std::vector<aabb3f> &hilightboxes);
};
#endif
#endif

View File

@@ -20,7 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "inventorymanager.h"
#include "log.h"
#include "environment.h"
#include "scriptapi.h"
#include "cpp_api/scriptapi.h"
#include "serverobject.h"
#include "main.h" // for g_settings
#include "settings.h"
@@ -226,9 +226,8 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
to_inv.type == InventoryLocation::DETACHED &&
from_inv.name == to_inv.name)
{
lua_State *L = player->getEnv()->getLua();
src_can_take_count = scriptapi_detached_inventory_allow_move(
L, from_inv.name, from_list, from_i,
src_can_take_count = PLAYER_TO_SA(player)->detached_inventory_AllowMove(
from_inv.name, from_list, from_i,
to_list, to_i, try_take_count, player);
dst_can_put_count = src_can_take_count;
}
@@ -237,20 +236,18 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Destination is detached
if(to_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = try_take_count;
dst_can_put_count = scriptapi_detached_inventory_allow_put(
L, to_inv.name, to_list, to_i, src_item, player);
dst_can_put_count = PLAYER_TO_SA(player)->detached_inventory_AllowPut(
to_inv.name, to_list, to_i, src_item, player);
}
// Source is detached
if(from_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = try_take_count;
src_can_take_count = scriptapi_detached_inventory_allow_take(
L, from_inv.name, from_list, from_i, src_item, player);
src_can_take_count = PLAYER_TO_SA(player)->detached_inventory_AllowTake(
from_inv.name, from_list, from_i, src_item, player);
}
}
@@ -262,9 +259,8 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
to_inv.type == InventoryLocation::NODEMETA &&
from_inv.p == to_inv.p)
{
lua_State *L = player->getEnv()->getLua();
src_can_take_count = scriptapi_nodemeta_inventory_allow_move(
L, from_inv.p, from_list, from_i,
src_can_take_count = PLAYER_TO_SA(player)->nodemeta_inventory_AllowMove(
from_inv.p, from_list, from_i,
to_list, to_i, try_take_count, player);
dst_can_put_count = src_can_take_count;
}
@@ -273,20 +269,18 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Destination is nodemeta
if(to_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = try_take_count;
dst_can_put_count = scriptapi_nodemeta_inventory_allow_put(
L, to_inv.p, to_list, to_i, src_item, player);
dst_can_put_count = PLAYER_TO_SA(player)->nodemeta_inventory_AllowPut(
to_inv.p, to_list, to_i, src_item, player);
}
// Source is nodemeta
if(from_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = try_take_count;
src_can_take_count = scriptapi_nodemeta_inventory_allow_take(
L, from_inv.p, from_list, from_i, src_item, player);
src_can_take_count = PLAYER_TO_SA(player)->nodemeta_inventory_AllowTake(
from_inv.p, from_list, from_i, src_item, player);
}
}
@@ -412,9 +406,8 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
to_inv.type == InventoryLocation::DETACHED &&
from_inv.name == to_inv.name)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_detached_inventory_on_move(
L, from_inv.name, from_list, from_i,
PLAYER_TO_SA(player)->detached_inventory_OnMove(
from_inv.name, from_list, from_i,
to_list, to_i, count, player);
}
else
@@ -422,16 +415,14 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Destination is detached
if(to_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_detached_inventory_on_put(
L, to_inv.name, to_list, to_i, src_item, player);
PLAYER_TO_SA(player)->detached_inventory_OnPut(
to_inv.name, to_list, to_i, src_item, player);
}
// Source is detached
if(from_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_detached_inventory_on_take(
L, from_inv.name, from_list, from_i, src_item, player);
PLAYER_TO_SA(player)->detached_inventory_OnTake(
from_inv.name, from_list, from_i, src_item, player);
}
}
@@ -442,25 +433,22 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
to_inv.type == InventoryLocation::NODEMETA &&
from_inv.p == to_inv.p)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_nodemeta_inventory_on_move(
L, from_inv.p, from_list, from_i,
PLAYER_TO_SA(player)->nodemeta_inventory_OnMove(
from_inv.p, from_list, from_i,
to_list, to_i, count, player);
}
else{
// Destination is nodemeta
if(to_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_nodemeta_inventory_on_put(
L, to_inv.p, to_list, to_i, src_item, player);
PLAYER_TO_SA(player)->nodemeta_inventory_OnPut(
to_inv.p, to_list, to_i, src_item, player);
}
// Source is nodemeta
else if(from_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_nodemeta_inventory_on_take(
L, from_inv.p, from_list, from_i, src_item, player);
PLAYER_TO_SA(player)->nodemeta_inventory_OnTake(
from_inv.p, from_list, from_i, src_item, player);
}
}
@@ -563,21 +551,19 @@ void IDropAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Source is detached
if(from_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = take_count;
src_can_take_count = scriptapi_detached_inventory_allow_take(
L, from_inv.name, from_list, from_i, src_item, player);
src_can_take_count = PLAYER_TO_SA(player)->detached_inventory_AllowTake(
from_inv.name, from_list, from_i, src_item, player);
}
// Source is nodemeta
if(from_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
ItemStack src_item = list_from->getItem(from_i);
src_item.count = take_count;
src_can_take_count = scriptapi_nodemeta_inventory_allow_take(
L, from_inv.p, from_list, from_i, src_item, player);
src_can_take_count = PLAYER_TO_SA(player)->nodemeta_inventory_AllowTake(
from_inv.p, from_list, from_i, src_item, player);
}
if(src_can_take_count != -1 && src_can_take_count < take_count)
@@ -590,7 +576,7 @@ void IDropAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Drop the item
ItemStack item1 = list_from->getItem(from_i);
item1.count = take_count;
if(scriptapi_item_on_drop(player->getEnv()->getLua(), item1, player,
if(PLAYER_TO_SA(player)->item_OnDrop(item1, player,
player->getBasePosition() + v3f(0,1,0)))
{
actually_dropped_count = take_count - item1.count;
@@ -627,17 +613,15 @@ void IDropAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
// Source is detached
if(from_inv.type == InventoryLocation::DETACHED)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_detached_inventory_on_take(
L, from_inv.name, from_list, from_i, src_item, player);
PLAYER_TO_SA(player)->detached_inventory_OnTake(
from_inv.name, from_list, from_i, src_item, player);
}
// Source is nodemeta
if(from_inv.type == InventoryLocation::NODEMETA)
{
lua_State *L = player->getEnv()->getLua();
scriptapi_nodemeta_inventory_on_take(
L, from_inv.p, from_list, from_i, src_item, player);
PLAYER_TO_SA(player)->nodemeta_inventory_OnTake(
from_inv.p, from_list, from_i, src_item, player);
}
/*

View File

@@ -226,10 +226,11 @@ class CItemDefManager: public IWritableItemDefManager
public:
CItemDefManager()
{
#ifndef SERVER
m_main_thread = get_current_thread_id();
m_driver = NULL;
#endif
clear();
}
virtual ~CItemDefManager()
@@ -240,9 +241,25 @@ class CItemDefManager: public IWritableItemDefManager
i = values.begin(); i != values.end(); ++i)
{
ClientCached *cc = *i;
cc->wield_mesh->drop();
if (cc->wield_mesh)
cc->wield_mesh->drop();
delete cc;
}
if (m_driver != NULL) {
for (unsigned int i = 0; i < m_extruded_textures.size(); i++) {
m_driver->removeTexture(m_extruded_textures[i]);
}
m_extruded_textures.clear();
}
m_driver = NULL;
#endif
for (std::map<std::string, ItemDefinition*>::iterator iter =
m_item_definitions.begin(); iter != m_item_definitions.end();
iter ++) {
delete iter->second;
}
m_item_definitions.clear();
}
virtual const ItemDefinition& get(const std::string &name_) const
{
@@ -290,6 +307,10 @@ class CItemDefManager: public IWritableItemDefManager
return m_item_definitions.find(name) != m_item_definitions.end();
}
#ifndef SERVER
private:
static video::IVideoDriver * m_driver;
static std::vector<video::ITexture*> m_extruded_textures;
public:
ClientCached* createClientCachedDirect(const std::string &name,
IGameDef *gamedef) const
{
@@ -328,11 +349,7 @@ class CItemDefManager: public IWritableItemDefManager
}
// Create a wield mesh
if(cc->wield_mesh != NULL)
{
cc->wield_mesh->drop();
cc->wield_mesh = NULL;
}
assert(cc->wield_mesh == NULL);
if(def->type == ITEM_NODE && def->wield_image == "")
{
need_node_mesh = true;
@@ -432,20 +449,27 @@ class CItemDefManager: public IWritableItemDefManager
tsrc->getTextureRaw(f.tiledef[0].name);
}
}
else
{
if (m_driver == 0)
m_driver = driver;
m_extruded_textures.push_back(cc->inventory_texture);
}
/*
Use the node mesh as the wield mesh
*/
if(cc->wield_mesh == NULL)
{
// Scale to proper wield mesh proportions
scaleMesh(node_mesh, v3f(30.0, 30.0, 30.0)
* def->wield_scale);
cc->wield_mesh = node_mesh;
cc->wield_mesh->grab();
}
// falling outside of here deletes node_mesh
// Scale to proper wield mesh proportions
scaleMesh(node_mesh, v3f(30.0, 30.0, 30.0)
* def->wield_scale);
cc->wield_mesh = node_mesh;
cc->wield_mesh->grab();
//no way reference count can be smaller than 2 in this place!
assert(cc->wield_mesh->getReferenceCount() >= 2);
}
// Put in cache
@@ -658,3 +682,8 @@ IWritableItemDefManager* createItemDefManager()
return new CItemDefManager();
}
#ifndef SERVER
//TODO very very very dirty hack!
video::IVideoDriver * CItemDefManager::m_driver = 0;
std::vector<video::ITexture*> CItemDefManager::m_extruded_textures;
#endif

View File

@@ -57,6 +57,7 @@ class JMutex
int Lock();
int Unlock();
bool IsInitialized() { return initialized; }
private:
#if (defined(WIN32) || defined(_WIN32_WCE))
#ifdef JMUTEX_CRITICALSECTION
@@ -66,6 +67,14 @@ class JMutex
#endif // JMUTEX_CRITICALSECTION
#else // pthread mutex
pthread_mutex_t mutex;
bool IsLocked() {
if (pthread_mutex_trylock(&mutex)) {
pthread_mutex_unlock(&mutex);
return true;
}
return false;
}
#endif // WIN32
bool initialized;
};

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