Compare commits

..

761 Commits
0.4.1 ... 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
PilzAdam
f85c1165c2 Update doc/lua-api.txt 2013-04-03 22:41:18 +02:00
kwolekr
37acadc2af Bump version to 0.4.6 2013-04-03 16:36:25 -04:00
Weblate
82709549ff Merge remote branch 'origin/master' 2013-04-03 20:32:13 +02:00
Diego Martínez
6e96bc98de Translated using Weblate (Spanish) 2013-04-03 20:32:01 +02:00
Dêivan Ortiz Munhoz
60aaf65b10 Translated using Weblate (Polish) 2013-04-03 20:32:01 +02:00
Chynggyz Jumaliev
7d83fefd7f Translated using Weblate (Kirghiz) 2013-04-03 20:32:01 +02:00
Sfan5
2bb559be82 Translated using Weblate (German) 2013-04-03 20:32:01 +02:00
we prefer instagib metl3
d27f57e48f Translated using Weblate (French) 2013-04-03 20:32:01 +02:00
Pilz Adam
e59d971e7b Translated using Weblate (Estonian) 2013-04-03 17:02:27 +02:00
Ragnar Laud
025f4d28c1 Translated using Weblate (Estonian) 2013-04-03 17:01:52 +02:00
Dêivan Ortiz Munhoz
0ed34e6780 Translated using Weblate (Portuguese) 2013-04-03 16:35:58 +02:00
PilzAdam
9ff8012655 Return an ItemStack in minetest.item_place() if nodes' on rightclick doesnt return it 2013-04-02 15:19:02 +02:00
Esteban I. RM
7d036e3ab2 Translated using Weblate (Spanish) 2013-04-02 01:59:59 +02:00
Markus Lehmann
8f57246620 Translated using Weblate (German) 2013-04-01 18:56:17 +02:00
Diego Martínez
2985dc4fc8 Translated using Weblate (Spanish) 2013-04-01 18:46:24 +02:00
Maciej Kasatkin
dd0b8c3de5 Translated using Weblate (Polish) 2013-04-01 18:41:40 +02:00
we prefer instagib metl3
7dd07cc7c5 Translated using Weblate (French) 2013-04-01 14:08:31 +02:00
kwolekr
8d4b768297 Add Ore generation flags, implement ore absolute height 2013-03-31 20:02:03 -04:00
kwolekr
35ed5198fe Increase value range of Ore::clust_scarcity 2013-03-31 12:26:25 -04:00
Diego Martínez
624461c6c6 Translated using Weblate (Spanish) 2013-03-31 16:25:50 +02:00
Weblate
319662c0ed Merge remote branch 'origin/master' 2013-03-31 12:27:05 +02:00
Fabio Luongo
5b597a6bfa Translated using Weblate (Italian) 2013-03-31 12:27:00 +02:00
Pilz Adam
68fb68a83b Translated using Weblate (German) 2013-03-31 12:27:00 +02:00
Ilya Zhuravlev
a2e5706661 Add Kyrgyz language 2013-03-31 14:24:52 +04:00
ShadowNinja
7d3b3890b5 Add a small optimization to the menu splash and remove a old comment 2013-03-30 22:02:46 -04:00
khonkhortisan
96387ee88a Don't load menu textures every frame 2013-03-30 21:52:13 -04:00
0gb.us
23590a8383 Don't grant priveleges to non-existent players.
When accidentally misspelling a name, privileges are sometimes granted to non-existent players, leaving them with the extra privileges, but without the default privileges, if they ever join the server. This corrects that by disallowing /grant from working with invalid players. For completeness, it does the same for /revoke.
2013-03-30 21:50:07 -04:00
Zeg9
923a97b108 Install locales in minetest directory, so they are correctly loaded 2013-03-30 21:48:12 -04:00
kwolekr
c517215bcf Fix MapgenV6::generateCaves possible division by 0 and misc. cosmetic fixes 2013-03-30 21:24:37 -04:00
kwolekr
414f0275cf Optimize CNodeDefManager::getIds 2013-03-30 19:14:42 -04:00
Pilz Adam
04414a963c Translated using Weblate (German) 2013-03-30 20:01:56 +01:00
PilzAdam
02d8df94a8 Update po files 2013-03-30 19:57:27 +01:00
Weblate
a0566270d9 Merge remote branch 'origin/master' 2013-03-30 19:49:52 +01:00
Lord James
0d83bdc3aa Translated using Weblate (Spanish) 2013-03-30 19:49:43 +01:00
Anton Tsyganenko
062a140b9c Translated using Weblate (Russian) 2013-03-30 19:49:43 +01:00
Mitori Itoshiki
3e9ed6c1c7 Translated using Weblate (Japanese) 2013-03-30 19:49:43 +01:00
Fabio Luongo
3983019fd8 Translated using Weblate (Italian) 2013-03-30 19:49:42 +01:00
Ragnar Laud
3ec3aca78d Translated using Weblate (Estonian) 2013-03-30 19:49:42 +01:00
PilzAdam
1aa50b1362 Make the textbox for serverlist title wider 2013-03-30 18:56:29 +01:00
PilzAdam
e17ae475cf GUI: Make singleplayer default tab, store selected serverlist, show title of serverlist 2013-03-30 18:34:36 +01:00
kwolekr
6cf581e360 Fix build on Linux with some glibcs 2013-03-29 21:12:14 -04:00
proller
177ca4f4d5 Fix backward compatibility for server uptime in master server web page 2013-03-30 02:36:06 +04:00
proller
16c11eb4a3 Masterserver: report gameid, uptime, cosmetic fixes on server web page 2013-03-30 02:03:24 +04:00
kwolekr
df49b93877 Add varying levels of precision to TimeTaker 2013-03-29 16:53:15 -04:00
PilzAdam
5e7e0347cd Add different place sound for nodes 2013-03-29 20:14:18 +01:00
PilzAdam
7d9329ecfe New damage system, add damageGroups to ToolCapabilities, bump protocol version 2013-03-29 20:14:09 +01:00
kwolekr
3640c8c051 Update Credits tab 2013-03-29 14:43:47 -04:00
0gb.us
02cbb58107 Fix node replacement in not-quite-loaded chunks
When first entering an area, sometimes placing nodes replaces other nodes that are not buildable_to. This seems to be caused by the fact that nodes in unloaded map blocks are treated as ignore, a node that is buildable_to. This fixes that, by using get_node_or_nil() instead of the previously-used get_node(), then checking to see if the nodes were actually loaded before replacing.
2013-03-29 14:18:51 -04:00
kwolekr
5b854f95d2 Fix last singlenode modification 2013-03-29 13:18:09 -04:00
kwolekr
b0f39da131 Don't replace existing nodes in singlenode mapgen 2013-03-29 11:15:49 -04:00
4aiman Konsorumaniakku
dc54af7a89 Translated using Weblate (Russian) 2013-03-28 13:15:36 +01:00
kwolekr
d01b74d00a Prevent infinite loop with invalid Inventory format 2013-03-27 23:27:31 -04:00
PilzAdam
a782a88913 Fix parameter list of obj:set_attach() and obj:set_bone_position() 2013-03-28 01:09:01 +01:00
sapier
8800896824 Closed add object <-> object collision handling 2013-03-28 00:09:24 +01:00
Perttu Ahola
880d9e53c3 README.txt: Add some build stuff 2013-03-26 18:40:32 +02:00
kwolekr
26cad481d0 Vary ore sheet y position by noise 2013-03-24 22:35:23 -04:00
kwolekr
8d13967aa3 Ensure ore can fit in OreSheet::generate() 2013-03-24 20:19:59 -04:00
PilzAdam
650d706d35 Use minetest.register_ore() in minimal 2013-03-24 21:20:41 +01:00
kwolekr
0e07a7157f Add more error checking to l_register_ore 2013-03-24 15:40:53 -04:00
Perttu Ahola
423d69bd40 Fix indentation of lua_api.txt 2013-03-24 21:39:15 +02:00
kwolekr
6767ed74f8 Update lua_api.txt 2013-03-24 15:20:37 -04:00
kwolekr
57cbb8bfd8 Add Ore infrastructure and l_register_ore() 2013-03-24 13:23:33 -04:00
proller
f70378f7f5 Mapgen indev: float islands, larger far biomes 2013-03-24 03:40:15 +04:00
Jeija
e1ff5b1361 Allow spawning particles from the server, from lua
Spawn single particles or make use of ParticleSpawner for many randomly spawned particles.
Accessible in Lua using minetest.spawn_particle and minetest.add_particlespawner.
Increase Protocol Version to 17.

Conflicts:
	src/clientserver.h
2013-03-23 23:16:29 +01:00
PilzAdam
ab57fdac44 Move rightclickable to the proper place 2013-03-23 23:15:30 +01:00
Jürgen Doser
dacc8cdb3a Include backface_culling flag in serialization format for TileDefs
This way flowing liquids actually show the backface when specified to
do so. Without this, TileDefs where by default initialized with
backface_culling = true and never set otherwise.

For backwards compatibility, an old client connected to a new server,
or a new client connected to an old server will behave like before
i.e., backface_culling is always true.
2013-03-23 23:10:47 +01:00
Mukul Sati
ca7043e52d Set of changes to build mineTest using Visual Studio 11.0. These affect
the following:
1. String concatenation in guiMainMenu.cpp - it is required for all
individual strings to be of the same type <unicode/non-unicode>; adding
explicit L qualifier before the other strings.
2. Correcting type of BlockMakeData to struct in place of class forward
declarations. This information is used for name decoration by Visual
Studio, leading to linker errors in case of mismatches.
3. Windows headers define max as a macro somewhere, leading to a compile
time error in profiler.h; using () around function to prevent macro match
from occurring.
2013-03-24 00:53:10 +04:00
RealBadAngel
6f8d40ef5d 6d facedir 2013-03-23 21:31:05 +01:00
proller
2318d19bb4 Merge pull request #563 from proller/guest
Random guest name and finite liquid checkbox
2013-03-23 08:21:30 -07:00
proller
f98d0433f9 Random guest name and finite liquid checkbox 2013-03-23 19:17:08 +04:00
Perttu Ahola
34b185e955 Add singlenode mapgen; generates solely the node 'mapgen_singlenode', defaults to air 2013-03-22 19:16:51 +02:00
Perttu Ahola
b6dcadeb79 CMakeLists.txt: Add games/common to be installed when available 2013-03-22 07:46:48 +02:00
Perttu Ahola
c2250d95c4 Support game-specific minetest.conf 2013-03-21 22:22:15 +02:00
Perttu Ahola
adc52f3f3c lua_api.txt: Document paths, games and common mod loading 2013-03-21 20:04:00 +02:00
Perttu Ahola
0a568a6037 Update buildwin32.sh to get minetest/common 2013-03-21 19:45:20 +02:00
Perttu Ahola
0747c285cd Update README.txt to instruct to get minetest/common too 2013-03-21 19:43:08 +02:00
Perttu Ahola
306d1ab866 Common mods support
Implement "common mods", includeable from
  {$user,$share}/games/common/$modname
by using the game.conf setting
  common_mods = $modname,$modname2,...
2013-03-21 18:56:42 +02:00
Splizard
9b5bb5c755 Allow falling nodes to pass through solid "buildable_to" nodes. 2013-03-19 16:38:56 +01:00
Juhani Numminen
450e7ef0c5 Git-ignore SQLite build files 2013-03-19 16:20:13 +01:00
kwolekr
8f0d29f931 Fix Map::initBlockMake to actually use chunksize setting 2013-03-18 22:19:02 -04:00
PilzAdam
d6026a5fee Prevent passing nil to unpack() in minetest.after 2013-03-19 00:15:41 +01:00
kwolekr
939397dd6e Add jungle grass to jungles 2013-03-17 23:08:11 -04:00
Ilya Zhuravlev
d207d359d1 Don't erase modified_blocks 2013-03-17 21:17:13 +04:00
ShadowNinja
5f88cd98ad Add FPS limit to menu clouds 2013-03-17 12:13:48 -04:00
RealBadAngel
7f51b2da28 lua methods set_look_pitch and set_look_yaw 2013-03-17 11:39:35 -04:00
PilzAdam
c00c8832c6 Fix new_style_water 2013-03-17 11:28:43 -04:00
PilzAdam
5a9fd8f433 Add missing settings to minetest.conf.example 2013-03-17 13:07:53 +01:00
Jeija
fc5d2074b9 Allow minetest.after to take a variable number of arguments 2013-03-17 00:23:30 -04:00
proller
10c03e1a9d build with ogles2 driver 2013-03-16 22:37:50 -04:00
kwolekr
67228160ae Some minor cleanups from the last commit 2013-03-16 22:34:12 -04:00
proller
165498cecf initial mapgen indev version with farscale feature and huge caves 2013-03-16 21:48:32 -04:00
kwolekr
e3badd7062 Make saplings only grow on dirt or grass, make jungle tree trunks only replace air 2013-03-16 19:55:29 -04:00
kwolekr
6823ce99a7 Re-add jungles, apple trees 2013-03-16 17:06:11 -04:00
kwolekr
1f1ad9fd23 Optimize Mapgen::updateLighting(), add setLighting() 2013-03-15 23:04:50 -04:00
proller
f5ab056b38 Liquid fine tuning 2013-03-14 17:06:25 -04:00
kwolekr
16c031be77 Remove 'tape and glue', update Credits tab 2013-03-14 16:46:42 -04:00
ShadowNinja
350596b94f Add cloud menu background by Krisi, configurable with the menu_clouds option.
Also add a menuheader, menusplash, menufooter_clouds, and allow HD menu footers.
And finally don't git-ignore textures/base/.
2013-03-13 21:18:40 -04:00
sapier
66750dc88e fix typo invalid for loop end 2013-03-13 19:42:05 -04:00
kwolekr
d10223254a Clean up Mapgen 2013-03-11 21:32:52 -04:00
sapier
eb90c3d92d Move l_get_all_craft_recipes to scriptapi_craft 2013-03-11 19:27:13 -04:00
Ilya Zhuravlev
6a1670dbc3 Migrate to STL containers/algorithms. 2013-03-11 19:08:39 -04:00
Ilya Zhuravlev
e204bedf1d Update menulogo.png 2013-03-10 23:57:30 +04:00
kwolekr
650e932ddf Re-add dungeons in new dungeongen.cpp 2013-03-10 00:42:51 -05:00
Mitori Itoshiki
b7def0fcf4 Translated using Weblate (Russian) 2013-03-09 14:18:29 +01:00
Shen Zheyu
e6bf6950eb Translated using Weblate (Chinese (China)) 2013-03-09 09:41:51 +01:00
4aiman Konsorumaniakku
17bbf4d3f6 Translated using Weblate (Russian) 2013-03-07 22:55:23 +01:00
c h
57f5dc5dcf Translated using Weblate (Japanese) 2013-03-07 22:36:47 +01:00
PilzAdam
aa77ee66c5 Change libjson to libjsoncpp in .gitignore 2013-03-06 17:09:28 -05:00
kwolekr
b9512cab1b Fix Irrlicht includes in scriptapi_* 2013-03-06 17:04:44 -05:00
proller
dd8593f2d6 fix link if system json lib exists 2013-03-05 23:54:07 -05:00
RealBadAngel
5af8acfa6e Added method to get all registered recipes for item(node) 2013-03-05 23:32:33 -05:00
kwolekr
ba78194636 Allow any character in formspec strings with escape char 2013-03-05 23:25:02 -05:00
sapier
bdbdeab005 split scriptapi.cpp
Remerge some files in order to reduce number of additional files

Make necessary changes for split, rename files, reorganize some bits
2013-03-05 00:59:49 -05:00
kwolekr
038529c763 Bump version to 0.4.5 2013-03-04 17:01:36 -05:00
PilzAdam
55097e1985 Fix pickup of dropped items when the player only takes a part of them 2013-03-03 16:35:29 +01:00
kwolekr
c61a2ef44f Merge pull request #513 from sfan5/patch-2
Add python script to doc/protocol.txt
2013-03-02 22:34:56 -08:00
Ilya Zhuravlev
5917e86297 Add one more curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); 2013-03-03 00:02:00 +04:00
Weblate
75a8312f4e Merge remote branch 'origin/master' 2013-03-01 17:13:22 +01:00
Mitori Itoshiki
48b999a8dd Translated using Weblate (Japanese) 2013-03-01 17:13:14 +01:00
Ilya Zhuravlev
3823878305 Add Estonian language template 2013-03-01 20:12:19 +04:00
Ilya Zhuravlev
fceb465fc9 Fix "longjmp causes uninitialized stack frame" (serverlist.cpp) 2013-03-01 17:02:54 +04:00
sfan5
72abd5a88e Add python script to doc/protocol.txt 2013-02-28 20:15:34 +01:00
Weblate
066b0314b1 Merge remote branch 'origin/master' 2013-02-28 18:04:07 +01:00
Weblate
22e186b4aa Merge remote branch 'origin/master' 2013-02-28 18:03:28 +01:00
Mitori Itoshiki
372acf7b8e Translated using Weblate (Russian) 2013-02-28 18:02:51 +01:00
Francizca Rodriguez
5b16271bd6 Translated using Weblate (Portuguese) 2013-02-28 18:02:51 +01:00
Tomona Nanase
8de315738b Translated using Weblate (Japanese) 2013-02-28 18:02:51 +01:00
Sfan5
13504b6adc Translated using Weblate (German) 2013-02-28 18:02:50 +01:00
we prefer instagib metl3
f43b90da38 Translated using Weblate (French) 2013-02-28 18:02:50 +01:00
Rune Biskopstö Christensen
1f11cd09d5 Translated using Weblate (Danish) 2013-02-28 18:02:50 +01:00
Shen Zheyu
82e9faf2a9 Translated using Weblate (Chinese (China)) 2013-02-28 18:02:50 +01:00
kwolekr
7caa28a6aa Change default settings for log level, texture atlas, document new settings 2013-02-27 19:59:05 -05:00
PilzAdam
0183bdad04 Fix nodeplacement prediction 2013-02-27 20:23:32 +01:00
kwolekr
d31f07bd4b Fix most warnings, re-fix MSVC compile error 2013-02-26 01:57:59 -05:00
kwolekr
979ca23f1e Merge pull request #482 from proller/liquid
finite liquid
2013-02-25 20:52:24 -08:00
kwolekr
9b5f182642 Remove dead code, relocate some code 2013-02-25 23:11:12 -05:00
kwolekr
f00d136ab1 Fix selection of # threads, set default to 1 thread 2013-02-25 23:11:00 -05:00
kwolekr
28c50c16cd Fix build on Windows 2013-02-25 23:10:54 -05:00
kwolekr
5bd50a2d90 Fix most walled-off caves 2013-02-25 23:08:55 -05:00
kwolekr
60e6284f30 Tune queue limits, some other adjustments 2013-02-25 23:08:41 -05:00
kwolekr
67c59645ec Misc. cleanup and minor fixes 2013-02-25 23:08:33 -05:00
kwolekr
5ec5b1cbd6 Add multi-Emerge thread support 2013-02-25 23:08:26 -05:00
kwolekr
76217939e0 Add emerge queue limit configuration 2013-02-25 22:59:17 -05:00
kwolekr
206ec36c8e Fix EmergeThread hang on exit 2013-02-25 22:58:24 -05:00
kwolekr
3b7a445cd7 Add global and per-peer queue limits 2013-02-25 22:58:11 -05:00
kwolekr
b9d8e59bbf Add emerge.cpp, initial EmergeThread changes
- Neatly placed all emerge related code into a new file, emerge.cpp
- Greatly cleaned up the code in EmergeThread::Thread()
- Reworked Emerge queue.  Now an actual std::queue of v3s16 block positions
- Removed the completely unnecessary map of peer ids requesting blocks
2013-02-25 22:56:18 -05:00
Sfan5
6d0ea26c2d Update Copyright Years 2013-02-24 20:15:24 +01:00
PilzAdam
92c7bd02fb Update buildbot 2013-02-24 18:52:44 +01:00
PilzAdam
497ff1ecd6 Change Minetest-c55 to Minetest 2013-02-24 18:49:03 +01:00
PilzAdam
22b0039ad4 Update README 2013-02-24 18:48:51 +01:00
proller
b90e431fc7 new adjustable finite liquid 2013-02-24 18:39:07 +04:00
kwolekr
9bd76f2972 Merge pull request #505 from RealBadAngel/master
Add seed parameter for default and L-system trees
2013-02-23 18:06:07 -08:00
RealBadAngel
f0d70d4e86 Add seed parameter for default and L-system trees 2013-02-24 02:26:25 +01:00
kwolekr
6b9906687b Merge pull request #503 from RealBadAngel/master
Add sound volume controls to ingame menu
2013-02-23 15:58:00 -08:00
PilzAdam
bc2e9dbaf2 Read server_announce from minetest.conf for GUI 2013-02-23 22:48:02 +01:00
RealBadAngel
4d73d99ebc Add sound volume controls to ingame menu 2013-02-23 16:01:35 +01:00
yuqian wang
a3ad84feef Translated using Weblate (Chinese (China)) 2013-02-23 03:33:10 +01:00
kwolekr
f9a8efb992 Merge pull request #431 from sapier/dtime_clamping
add limit for (collision handling) steps to avoid runaway memory consumption
2013-02-22 16:42:50 -08:00
Maciej Kasatkin
42eb8c8e3b Translated using Weblate (Polish) 2013-02-22 16:59:19 +01:00
kwolekr
7f240aea1e Added debug log level setting 2013-02-21 22:35:04 -05:00
Ilya Zhuravlev
c19fc00b04 Fix json include 2013-02-22 02:41:59 +04:00
proller
ee07c3f7cf new auto masterserver 2013-02-22 02:04:53 +04:00
Pilz Adam
724b0a0162 Translated using Weblate (German) 2013-02-21 17:34:52 +01:00
PilzAdam
ef6b8bee07 Drop nodes as items when dugged and no room in inventory and dont remove dropped items when no room in inventory 2013-02-21 16:58:50 +01:00
celeron55
b29834ab02 Merge pull request #500 from doserj/server_report_missing_deps
Print missing mod dependencies on server start
2013-02-20 11:34:57 -08:00
Jürgen Doser
89b88917a8 Print missing mod dependencies on server start
i.e., not only the mod with missing dependencies, but also the missing
dependencies itself. (This already used to be the case before the mod
selection gui was added)

Also, mods with unsatisfied dependencies are no longer reported as
mods that could not be found.
2013-02-20 20:06:39 +01:00
Mitori Itoshiki
93fc957036 Translated using Weblate (Japanese) 2013-02-20 05:57:45 +01:00
Tomona Nanase
164318bd97 Translated using Weblate (Japanese) 2013-02-19 21:31:41 +01:00
PilzAdam
fc61c8809b Dont drop tools on rightclick 2013-02-19 20:16:55 +01:00
Jeija
365c169b43 Disable placement prediction for nodes that use on_rightclick 2013-02-19 20:02:40 +01:00
Ilya Zhuravlev
214a8b4597 Set numeric locale for Lua 2013-02-18 13:58:55 +04:00
Artem Sinkevich
d2ff536a3b Translated using Weblate (Russian) 2013-02-17 11:28:35 +01:00
kwolekr
8d920dd09b Merge pull request #465 from doserj/mod_selection_empty_modname_fix
Remove use of operator[] on a std::map, so no spurious elements get inse...
2013-02-15 17:45:32 -08:00
Perttu Ahola
c88d89d26e Some kind of middleway values for player acceleration for now 2013-02-15 23:18:19 +02:00
Perttu Ahola
4035bf3259 Restore old acceleration behavior until something is actually agreed on (part 2) 2013-02-15 22:47:23 +02:00
Perttu Ahola
65cb318cd9 Restore old acceleration behavior until something is actually agreed on 2013-02-15 22:25:23 +02:00
Ilya Zhuravlev
30b9a4d6b4 Add Freetype support 2013-02-14 18:46:08 +01:00
MirceaKitsune
df3c925b3c Improved Player Physics 2013-02-14 06:21:30 +10:00
PilzAdam
86b906d015 Fix minetest.item_place_node() and minetest.item_drop() to always return an ItemStack 2013-02-13 18:06:25 +01:00
RealBadAngel
b1019a88ba Fix to on_rightclick not able to change wielded_item 2013-02-13 02:06:36 +04:00
Dmitry Marakasov
8e69b9cb26 Server requires gettext library as well 2013-02-12 20:27:50 +01:00
PilzAdam
9f1ae4084d Enable multiline signs 2013-02-12 19:37:25 +01:00
PilzAdam
2c362badd4 Dont remove grass under unloaded blocks 2013-02-10 12:52:59 +01:00
Jürgen Doser
6b1420a58a Disable backface culling for drawtype plantlike and only draw 2 faces instead of 4
This way, plants actually show the real backface on their back side,
i.e., the front face mirrored around the vertical axis, instead of
showing the front face on both sides. This looked weird when the
texture was not symmetrical around the vertical axis.
2013-02-10 12:45:25 +01:00
ShadowNinja
1cda39d5bb Don't fall off nodes if sneaking with free_move on but without fly privileges 2013-02-10 12:35:04 +01:00
ShadowNinja
32552fede5 Don't see through nodes without noclip privileges 2013-02-10 12:29:46 +01:00
Oleg Matveev
6c3829c2b5 Translated using Weblate (Russian) 2013-02-10 10:22:43 +01:00
Pilz Adam
ea044adf1a Translated using Weblate (Portuguese) 2013-02-10 10:22:43 +01:00
Pilz Adam
47f38d2316 Translated using Weblate (Italian) 2013-02-10 10:22:42 +01:00
pandoro almascarpone
f944ff233d Translated using Weblate (Italian) 2013-02-09 22:18:20 +01:00
Weblate
a27857e938 Merge remote branch 'origin/master' 2013-02-08 16:29:19 +01:00
Pilz Adam
0cda2d5193 Translated using Weblate (Russian) 2013-02-08 16:29:13 +01:00
Francizca Rodriguez
65fa26e93e Translated using Weblate (Portuguese) 2013-02-08 16:29:13 +01:00
Mitori Itoshiki
5d4f2f1528 Translated using Weblate (Japanese) 2013-02-08 16:29:13 +01:00
Pilz Adam
f8d0b7d651 Translated using Weblate (Danish) 2013-02-08 16:29:13 +01:00
Shen Zheyu
7895376821 Translated using Weblate (Chinese (China)) 2013-02-08 16:29:12 +01:00
Francizca Rodriguez
aca501df8c Translated using Weblate (Spanish) 2013-02-07 22:14:11 +01:00
Francizca Rodriguez
06ec9e2e1a Translated using Weblate (Portuguese) 2013-02-07 22:12:26 +01:00
Pilz Adam
f9e28285ac Translated using Weblate (Portuguese) 2013-02-07 21:34:19 +01:00
Francizca Rodriguez
90a8aa1444 Translated using Weblate (Portuguese) 2013-02-07 21:34:14 +01:00
Pilz Adam
9a39548367 Translated using Weblate (Portuguese) 2013-02-07 21:34:06 +01:00
Francizca Rodriguez
db5df028b3 Translated using Weblate (Portuguese) 2013-02-07 21:34:02 +01:00
Pilz Adam
7a8094a9c0 Translated using Weblate (Portuguese) 2013-02-07 21:33:56 +01:00
Francizca Rodriguez
10b12cc86e Translated using Weblate (Portuguese) 2013-02-07 21:33:48 +01:00
Ilya Zhuravlev
9b2044351f Document remote_media setting 2013-02-07 17:58:52 +04:00
Ilya Zhuravlev
86b33c4922 Fix compile error (MSVC2010). 2013-02-07 16:17:55 +04:00
kwolekr
97260d09a8 Add flag string settings, flat map option 2013-02-06 16:52:48 -05:00
L JJ
c4e1a01349 Translated using Weblate (Chinese (China)) 2013-02-06 14:49:00 +01:00
kwolekr
f148ae58c3 Fix assertion condition in initializePaths() 2013-02-06 01:13:19 -05:00
kwolekr
bd55b9cc0f Don't write control character to verbosestream 2013-02-06 01:12:56 -05:00
kwolekr
77dbad72f7 Fix and improve noise map functions 2013-02-06 01:12:36 -05:00
kwolekr
75fe948bf7 Add Perlin noise map Lua API 2013-02-06 01:11:56 -05:00
kwolekr
a73905401a Improve random map seed generation 2013-02-06 01:10:37 -05:00
Mitori Itoshiki
8e5b33d359 Translated using Weblate (Russian) 2013-02-05 20:37:51 +01:00
we prefer instagib metl3
4ba6387980 Translated using Weblate (French) 2013-02-05 18:25:54 +01:00
Weblate
b19726db6c Merge remote branch 'origin/master' 2013-02-05 17:52:07 +01:00
Marco gonzalez
c48c6d188c Translated using Weblate (Spanish) 2013-02-05 17:52:02 +01:00
Ilya Zhuravlev
f6e0e1f5d7 Translated using Weblate (Russian) 2013-02-05 17:52:02 +01:00
Pilz Adam
20031a1008 Translated using Weblate (German) 2013-02-05 17:52:02 +01:00
L JJ
a933cb31d4 Translated using Weblate (Chinese (China)) 2013-02-05 17:52:02 +01:00
Ilya Zhuravlev
2868676693 Add Japanese & Korean languages. 2013-02-05 20:50:26 +04:00
Shen Zheyu
366724f6bf Translated using Weblate (Chinese (China)) 2013-02-05 14:35:38 +01:00
Lord James
c59a9720fd Translated using Weblate (Spanish) 2013-02-04 12:34:44 +01:00
Pilz Adam
2dde1d70ec Translated using Weblate (German) 2013-02-02 18:39:22 +01:00
Weblate
1d248cce30 Merge remote branch 'origin/master' 2013-02-02 21:34:12 +04:00
Lord James
c33654c21a Translated using Weblate (Spanish) 2013-02-02 18:28:40 +01:00
Pavel Elagin
5721ff3837 Translated using Weblate (Russian) 2013-02-02 18:28:39 +01:00
Maciej Kasatkin
e215c9a84f Translated using Weblate (Polish) 2013-02-02 18:28:39 +01:00
Robert Arkenin
e5cdf486aa Translated using Weblate (Italian) 2013-02-02 18:28:39 +01:00
Pilz Adam
820d8a920b Translated using Weblate (German) 2013-02-02 18:28:39 +01:00
sub reptice
0f6af98d09 Translated using Weblate (French) 2013-02-02 18:28:38 +01:00
Ilya Zhuravlev
6424c5b698 Add Chinese Simplified & Portuguese. 2013-02-02 21:27:01 +04:00
Marco gonzalez
eed6e04ed1 Translated using Weblate (Spanish) 2013-02-01 21:52:34 +01:00
Jürgen Doser
9ebf1fd3b7 Remove use of operator[] on a std::map, so no spurious elements get inserted. (fixes #464)
All uses of operator[] in guiConfigureWorld.cpp have been replaced
with .find() operations.

In some places, operator[] had been called with mod names of "Add-Ons"
or "N/A", which would insert a default-constructed ModSpec into the
list of add-on mods. In other places, the use of operator[] was safe
now, but it probably is safer for future changes to use .find()
everywhere.
2013-02-01 15:50:33 +01:00
Diego Martínez
fb12a82d65 Translated using Weblate (Spanish) 2013-01-31 12:25:39 +01:00
Marco gonzalez
c8cdc80fd6 Translated using Weblate (Spanish) 2013-01-31 06:58:08 +01:00
PilzAdam
33cb3d713c Translate key functions in key change menu 2013-01-30 20:27:26 +01:00
Maciej Kasatkin
0addefad05 Translated using Weblate (Polish) 2013-01-30 01:12:14 +01:00
Robert Arkenin
3bb89bb155 Translated using Weblate (Russian) 2013-01-29 23:10:18 +01:00
Pavel Elagin
9d6caa4e5f Translated using Weblate (Russian) 2013-01-29 22:14:40 +01:00
kwolekr
12472a44d4 Merge pull request #442 from kwolekr/mingw_compile_fix
Fix compile under MingW
2013-01-29 13:07:47 -08:00
kwolekr
cbbb6447bf Merge pull request #441 from kwolekr/mapgen_factories
Make mapgen factory setup more elegant, add mapgen_v6.h
2013-01-29 13:05:56 -08:00
Marco gonzalez
154a8bb466 Translated using Weblate (Spanish) 2013-01-29 22:04:41 +01:00
Diego Martínez
d1be82d97c Translated using Weblate (Spanish) 2013-01-29 21:47:49 +01:00
Ilya Zhuravlev
8e2a3c7279 Translated using Weblate (Russian) 2013-01-29 21:41:02 +01:00
Marco gonzalez
ebe2f704d1 Translated using Weblate (Spanish) 2013-01-29 21:38:19 +01:00
Pavel Elagin
63c27766ef Translated using Weblate (Russian) 2013-01-29 21:10:00 +01:00
Ilya Zhuravlev
6912f65cd7 Add Spanish, Russian, Polish and Romanian languages. 2013-01-29 21:21:00 +04:00
PilzAdam
28f5b55643 Dont call on_rightclick() if sneak is pressed 2013-01-27 21:58:46 +01:00
Jeija
c1fee78e85 Place block when holding sneak while right-clicking nodes with formspec 2013-01-28 00:44:42 +04:00
Ilya Zhuravlev
d6f0bf9eef Workaround failing Travis clang build. 2013-01-28 00:37:20 +04:00
kwolekr
bcc0ca93d4 Merge pull request #447 from sapier/add_lua_log_parameter_check
BUGFIX: check parameters for minetest.log lua function
2013-01-26 10:58:53 -08:00
sapier
eb2a8fe8b8 check parameters for minetest.log lua function 2013-01-26 10:32:08 +00:00
Weblate
13358c29b8 Merge remote branch 'origin/master' 2013-01-24 15:56:49 +01:00
Pilz Adam
aaee2786a7 Translated using Weblate (German) 2013-01-24 18:55:12 +04:00
kwolekr
9d69b38583 Slightly improved version of mystrtok_r 2013-01-23 17:37:53 -05:00
kwolekr
69ba485415 Fix compile under MingW 2013-01-23 16:28:15 -05:00
kwolekr
91e88196c7 Make mapgen factory setup more elegant, add mapgen_v6.h 2013-01-23 16:16:49 -05:00
sfan5
035933f806 Tweak buildbot
* CURL support
* only download packages if they don't exist
* fixed download links (libvorbis and libogg)
* manual downloading if automatic downloading fails (only minetest and minetest_game)
* mingwm10.dll and openal_stripped.zip are downloaded automatically
2013-01-23 20:42:46 +02:00
RealBadAngel
1163fdfa11 Treegen update. Some new symbols. Speed up code a bit. 2013-01-23 20:40:09 +02:00
celeron55
0a27e81704 Merge pull request #436 from doserj/mod_selection
Fix some crashes and improved behaviour for mod selection gui
2013-01-23 10:10:25 -08:00
Perttu Ahola
c4af909ac8 Update translation files 2013-01-23 18:27:17 +02:00
Jürgen Doser
f099861245 Make sure that settings are written to config file when settings are removed.
Previously, settings where only written when a value has changed, and
removal of a setting value didn't count as a change.
2013-01-22 19:05:46 +01:00
Jürgen Doser
f214940c96 Fix crash when pressing delete button in server browser and no server is selected.
A check for that was there, but was comparing an unsigned variable to
-1, which doesn't work.
2013-01-22 19:05:46 +01:00
Jürgen Doser
26a0efae23 Improve behaviour for empty modpacks and when no mods at all are installed:
Only show enable all / disable all buttons for all add-ons when at
least one add-on is installed. When no add-on ist installed, don't
show any buttons or checkboxes.

Added is_modpack flag to ModSpec to distinguish empty modpacks from
normal mods and check this flag in mod selection gui so that empty
modpacks are not treated like mods that can be enabled or disabled.
2013-01-22 19:05:28 +01:00
Jürgen Doser
e237c1d07d Fix crash when no world is selected and configure button is pressed.
by moving return statement out of if-then-else clause...
2013-01-22 17:47:12 +01:00
Ilya Zhuravlev
33be32f278 Disable travis email notifications. 2013-01-22 01:43:56 +04:00
Ilya Zhuravlev
297186b834 Add .travis.yml 2013-01-22 01:37:58 +04:00
Ilya Zhuravlev
5696ee8421 Fix msvc build 2013-01-22 01:16:29 +04:00
sapier
d8a0efa6af add support for saving settings by lua command (server doesn't autosave on exit) 2013-01-21 22:44:41 +02:00
Perttu Ahola
b52dfbe510 Add mapgen parameters to minetest.conf.example 2013-01-21 21:41:37 +02:00
kwolekr
b87cd8c58b Use a string identifier for a mapgen instead of version 2013-01-21 21:41:37 +02:00
kwolekr
318669327e Fix compile on certain Linux configurations, reduce spawn point height 2013-01-21 21:41:37 +02:00
kwolekr
278d93a3ee Removed Mapgen V7 for now 2013-01-21 21:41:37 +02:00
kwolekr
b55fb4f2f6 Last set of minor cleanups 2013-01-21 21:41:37 +02:00
kwolekr
1cd8351054 Fix MapgenV6::getGroundLevelAtPoint() 2013-01-21 21:41:37 +02:00
kwolekr
631a835e07 Finish and clean up mapgen configuration 2013-01-21 21:41:37 +02:00
kwolekr
45cf32afc5 Add Settings::getStruct and Settings::setStruct 2013-01-21 21:41:37 +02:00
kwolekr
cde3d38766 Clean up EmergeManager, do initial work on Mapgen configuration 2013-01-21 21:41:37 +02:00
kwolekr
d5029958b9 Readded and optimized mapgen V6 2013-01-21 21:41:37 +02:00
kwolekr
bddd5f2b98 Cleaned & enhanced noise object management 2013-01-21 21:41:37 +02:00
kwolekr
96898c1794 Add initial Lua biomedef support, fixed biome selection 2013-01-21 21:41:37 +02:00
kwolekr
11afcbff69 The new mapgen, noise functions, et al. 2013-01-21 21:41:33 +02:00
kwolekr
736b386554 Make WATER_LEVEL configurable, fix slight comparison bug in findSpawnPos() 2013-01-21 21:41:09 +02:00
kwolekr
a785522194 Only clear block modified flag if writing to db was successful 2013-01-21 21:41:09 +02:00
kwolekr
8e50e256e6 Make cloud height user-configurable 2013-01-21 21:41:09 +02:00
kwolekr
9b3287b865 stop MSVC++ from generating dumb warnings 2013-01-21 21:41:09 +02:00
kwolekr
14657bd29a Proper RUN_IN_PLACE support for OSX and FreeBSD 2013-01-21 21:41:09 +02:00
Jürgen Doser
6af8a34d91 Basic support for configuring which mods to load for each world
settings.h: added function to return all keys used in settings, and a
function to remove a setting

mods.{h,cpp}: added class ModConfiguration that represents a subset of the installed mods.

server.{h,cpp}: server does not load add-on mods that are disabled in
the world.mt file. mods are disabled by a setting of the form
"load_mod_<modname> = false". if no load_mod_<modname> = ... setting
is found, the mod is loaded anyways for backwards compatibilty. server
also complains to errorstream about mods with unstatisfied
dependencies and about mods that are not installed.

guiConfigureWorld.{h,cpp}: shows a treeview of installed add-on mods
and modpacks with little icons in front of their name indicating their
status: a checkmark for enabled mods, a cross for disabled mods, a
question mark for "new" mods

Mods can be enabled/disabled by a checkbox. Mods also show a list of
dependencies and reverse dependencies. double-click on a mod in
dependency or reverse dependency listbox selects the corresponding
mod. Enabling a mod also enables all its dependencies. Disabling a mod
also disables all its reverse dependencies.

For modpacks, show buttons to enable/disable all mods (recursively,
including their dependencies) in it.

Button "Save" saves the current settings to the world.mt file and
returns to the main menu. Button "Cancel" returns to main menu without
saving.

basic keyboard controls (if the proper widget has keyboard focus):

up/down: scroll through tree of mods
left/right: collaps/expand a modpack
space: enable/disable the selected mod
2013-01-21 17:31:50 +02:00
Jeija
6f93c01af9 Add a list of servers to the "Multiplayer" tab
If USE_CURL is set, it also downloads a list from a remote server.
The url of this list is configurable in minetest.conf using the setting "serverlist_url"
The local list of favorite servers is saved in client/serverlist/filename
filename is also configureable using the setting "serverlist_file"
2013-01-21 16:42:56 +02:00
sapier
12e9f3d010 add limit for steps to avoid runaway memory consumption by collision handling 2013-01-16 23:27:11 +00:00
PilzAdam
c691d619c2 Bugfix: else repeat_rightclick_timer = 0; 2013-01-14 21:38:40 +01:00
Jeija
61f5ca6b16 Add particles 2013-01-14 15:27:00 +01:00
PilzAdam
443bbe6a78 Fix spread of items in falling code 2013-01-12 20:55:45 +01:00
Jürgen Doser
183c81b5ec fix integer overflow (fixes #414)
liquid_kind was declared as an u8, but used to hold a content_t value, which is delcared to be a u16.

changing this fixes (at least for me) the problem reported in bug #414.
2013-01-12 23:32:09 +04:00
Jürgen Doser
076f13cc01 fixes node timer bug (fixes #407).
Previously, when a block was activated, on_timer callbacks where
called with the relative position of the node inside the block,
instead of the absolute position of the node.
2013-01-11 18:59:27 +01:00
dannydark
8eb717d4d0 Fixed two typo's in commit 615fd498bc 2013-01-07 18:57:12 +01:00
PilzAdam
8aa190606e Disable all HP handling if enable_damage is false 2013-01-07 18:39:45 +01:00
PilzAdam
0437abbffb Add a setting to enable always flying fast 2013-01-07 18:26:34 +01:00
sapier
0b1d09ff4f Fix buttons not working for Lua-triggered formspecs 2013-01-07 19:00:33 +02:00
RealBadAngel
8b75736c6f L-Systems treegen update. 2013-01-07 18:13:14 +04:00
Ilya Zhuravlev
099d7ff2ad "or" should be "||". Don't use "or", "and", etc.. It breaks build. 2013-01-04 23:39:12 +04:00
Jeija
46d431e7c3 Implement textarea in formspec, a multiline input field 2013-01-04 20:09:09 +01:00
PilzAdam
615fd498bc Fix typo doubletab -> doubletap 2013-01-04 20:04:48 +01:00
dannydark
bc879a1453 Fixed content_abm aliases
Since commit 5a13c49492 when I'm in a new area of the world that hasn't
yet been generated the debug log gets flooded with the following error:

Map::setNode(): Not allowing to place CONTENT_IGNORE while trying to
replace "default:dirt_with_grass" at (729,1,-219) (block (45,0,-14))

This commit fixes that.
2013-01-04 19:05:57 +01:00
PilzAdam
82fd83fd12 Switch to fly mode if spacebar is doubleclicked
Can be turned off in the key change GUI or in minetest.conf via doubletab_space
2013-01-04 18:51:38 +01:00
Jeija
b50da63852 Repeated right clicking when holding the right mouse button
Configure using repeat_rightclick_time in minetest.conf
2013-01-04 18:33:53 +01:00
PilzAdam
5bc14e2fe4 Add on_rightclick(pos, node, clicker) callback for nodes 2013-01-04 17:15:16 +01:00
PilzAdam
d2b1210376 Adjust the maximum alpha of the red hurt screen 2013-01-03 16:15:46 +01:00
Jeija
a27cdf16f4 Tilt camera on player damage (tweaked by PilzAdam) 2013-01-03 15:16:46 +01:00
PilzAdam
5a13c49492 Change the nodenames for dirt -> grass and sapling -> tree abms to match the mapgen aliases 2013-01-02 23:06:31 +01:00
PilzAdam
8493979d86 Replace constant red hurt screen with fade out red 2013-01-02 23:06:17 +01:00
Perttu Ahola
2c472a66d1 Add ServerEnvironment::setNode()/removeNode() to allow setting nodes from the C++ side with proper script-defined initialization/destruction 2013-01-02 23:18:14 +02:00
Perttu Ahola
69bd803a32 Add InvRef:get_location() 2013-01-02 22:53:55 +02:00
Perttu Ahola
b7de864f2e Call this 0.4.4-d1 because it has a protocol addition since 0.4.4 2013-01-02 21:03:47 +02:00
sapier
da9707950e Add TOCLIENT_SHOW_FORMSPEC to display formspecs at client from lua 2013-01-02 20:59:37 +02:00
RealBadAngel
36f03a7f4a Bugfixes to item_image formspec method 2013-01-02 18:29:08 +04:00
dannydark
5d18dc358b Fixed compile issues on windows
With latest upstream L-Systems treegen.
2012-12-30 16:38:53 +04:00
RealBadAngel
b40e599866 L-System treegen 2012-12-30 13:42:19 +04:00
PilzAdam
45029117f5 Use aux1 to move fast when flying 2012-12-27 18:33:24 +01:00
Esteban I. Ruiz Moreno
578ece8dd0 Add selectionbox_color, crosshair_color, and crosshair_alpha options 2012-12-27 13:10:03 -03:00
PilzAdam
896e1a30b0 Fix 'longjmp causes uninitialized stack frame' in cURL 2012-12-26 21:41:00 +01:00
Perttu Ahola
0f1d2c127c Initialize all member variables of LuaEntitySAO 2012-12-23 17:16:46 +02:00
DannyDark
d880a5ec0c Fixed two typos in wireshark lua file. 2012-12-23 02:17:34 +04:00
Ilya Zhuravlev
145e301269 Fix keycodes (#325) 2012-12-23 02:11:32 +04:00
Ilya Zhuravlev
c4172934e5 Prefer shared cURL library instead of the static one. 2012-12-21 20:35:04 +04:00
DannyDark
40dac4cde4 Fixed u64 ambiguous symbol error
Fixed the compiler not being able to determine which symbol it should
use when compiling Minetest as 64bit with Irrlicht 1.8+
2012-12-20 17:53:25 +10:00
sfan5
05b58501f2 Tweak CMake files for cURL 2012-12-18 21:52:56 +04:00
PilzAdam
29c17c14f1 Add ability to change the itemstack in placenode callbacks 2012-12-17 19:49:18 +01:00
PilzAdam
f4ed37ec6f Fix falling damage when not flying 2012-12-17 18:04:41 +01:00
Ilya Zhuravlev
e9006f904c Make m_media_fetch_threads to contain MediaFetchThread* instead of MediaFetchThread 2012-12-17 20:56:59 +04:00
Ilya Zhuravlev
e301bc2d77 Fix hypen used as minus sign (manpages), fix spelling error (server.cpp) 2012-12-17 19:46:54 +04:00
Ilya Zhuravlev
3578e1d4a7 Added ability to fetch media from remote server (using cURL library) 2012-12-16 15:20:18 +04:00
jordan4ibanez
aa46e5c5e7 Fix item entity's collision with nodeboxes 2012-12-15 15:32:17 -05:00
PilzAdam
9786202b08 Dont sneak while flying 2012-12-11 19:04:55 +01:00
PilzAdam
52ba413185 Only fly through walls in noclip mode wich requires the noclip privilege 2012-12-11 16:44:13 +01:00
Ilya Zhuravlev
1d13d106dd Update README 2012-12-07 02:20:42 +04:00
Perttu Ahola
ab06fca4be Bump version to 0.4.4 2012-12-06 21:21:10 +02:00
Perttu Ahola
fd9e226b79 Update GUI texts 2012-12-06 21:02:02 +02:00
Jürgen Doser
7d2f0d7b1b draw gui later. this fixes the hotbar disappearing while rendering to texture. 2012-12-06 20:43:17 +02:00
Jürgen Doser
870f7bcc93 fix screen flickering black when rendering to texture 2012-12-06 19:56:49 +02:00
Perttu Ahola
543fc6702f Set proper field background colors in Irrlicht 1.8 2012-12-06 19:35:40 +02:00
Perttu Ahola
5080b63435 Raise default maximum render distance to 240 2012-12-06 15:49:20 +02:00
Perttu Ahola
8bb36f4650 Fix automagic render distance tuner 2012-12-06 15:49:20 +02:00
Matthew I
a47b829040 Add #include guards to base64.h 2012-12-03 19:44:54 +02:00
Perttu Ahola
07632b7d69 Try to add a bit of topside brightness when not using shaders 2012-12-02 23:48:11 +02:00
Perttu Ahola
ec54e35757 Tweak shader randomly a bit 2012-12-02 23:47:53 +02:00
Perttu Ahola
68e36226b3 Default to preload_item_visuals=true 2012-12-02 20:43:55 +02:00
MirceaKitsune
15b86a6b9b Don't send player position from client to server if the player hasn't moved 2012-12-02 20:22:02 +02:00
Ilya Zhuravlev
eeb0900291 Fix minetest.get_node_drops(). It should always return list of item names, not ItemStack(s). 2012-12-02 21:09:30 +04:00
Perttu Ahola
804a7875a2 Smooth day-night transitions 2012-12-02 18:02:45 +02:00
Perttu Ahola
041585a78e Const-correct util/serialize.h 2012-12-02 14:36:12 +02:00
Perttu Ahola
cd1f604ffe Handle day-night transition in shader and make light sources brighter when shaders are used 2012-12-02 14:24:58 +02:00
Perttu Ahola
566f7f638a Get rid of jordan4ibanez's insane digging animation speed 2012-12-02 03:10:23 +02:00
Perttu Ahola
3e07c5bf82 Fix tile MaterialType to make sense and make lava surface be shader'd lower like water 2012-12-02 02:59:15 +02:00
Perttu Ahola
ca16119adb Install shaders properly 2012-12-02 01:45:31 +02:00
Perttu Ahola
d0b9b10ee0 Remove accidental vim swap file 2012-12-02 01:42:03 +02:00
Perttu Ahola
98fd364672 Add enable_shaders to minetest.conf.example 2012-12-02 00:54:44 +02:00
obneq
151fad1f2b Add checkboxes for shaders and on-demand item visual generation 2012-12-02 00:52:35 +02:00
Perttu Ahola
27373919f4 Implement a global shader parameter passing system and useful shaders 2012-12-02 00:46:18 +02:00
Kahrl
22e6fb7056 ShaderSource and silly example shaders 2012-12-02 00:46:18 +02:00
Perttu Ahola
e3258b78e2 Add setting preload_item_visuals 2012-12-02 00:46:10 +02:00
Perttu Ahola
bee170570d On-demand item meshes and textures 2012-12-02 00:38:26 +02:00
Perttu Ahola
ba73e75ef9 Modify some client log message levels 2012-12-02 00:24:11 +02:00
RealBadAngel
f4b7e1a570 New elements in formspec, item_image and item_image_button.
Fixed also game bug drawing dragged item behind fields, buttons etc.
2012-12-01 20:39:41 +02:00
PilzAdam
fa50341a71 Only check attachment for nodes with group attached_node 2012-12-01 15:20:53 +01:00
PilzAdam
fa76057e7f Add the group attached_node
Nodes in this group will be dropped as items if the node under them or the node in the wallmounted direction is not walkable.
2012-12-01 13:32:32 +01:00
PilzAdam
bb454b1846 Merge support for anaglyph stereo 2012-12-01 12:41:05 +01:00
Perttu Ahola
778d9b0cd6 Add the ability for client to check if image exists 2012-11-30 22:19:54 +02:00
DannyDark
84ace27872 Log /grant and /revoke command usage 2012-11-30 22:12:21 +02:00
Jürgen Doser
c1d8eeb70a Make dragged itemstack following the mouse cursor much smoother
by using the cursor coordinates directly, instead of updating them only when a mouse event is seen.
2012-11-30 22:07:30 +02:00
Matthew I
6cf87e1d23 Ignore directories beginning with a "." when searching for mods
This is not a problem on POSIX systems (these directories are
ignored by the POSIX implementation of fs::GetDirListing() in
filesys.cpp), but these directories still are reported on Windows
systems.  This becomes a problem when mod authors use version
control systems that create directories like ".git" or ".svn"
and collectMods() picks up on them.  It has also been suggested
that ignoring such directories would allow for the easily disabling
mods by inserting a "." in front of their name.

This quick fix simply makes collectMods() ignore directories
beginning with a ".".
2012-11-30 21:41:50 +02:00
Perttu Ahola
8a93581c8a Run scriptapi_on_shutdown() thread-safely and remove some old crap 2012-11-30 19:41:13 +02:00
Matthew I
6c8fa83ecd Add shutdown hook interface to Lua API
Scripts can call minetest.register_on_shutdown() to register a
shutdown hook.

Document that minetest.register_on_shutdown() callbacks may not be run

If the server crashes, it is unlikely that callbacks registered using
minetest.register_on_shutdown() will be called.
2012-11-30 19:26:51 +02:00
Perttu Ahola
ab45133ab4 Add congestion control settings to minetest.conf 2012-11-29 22:13:22 +02:00
Perttu Ahola
7b6d642300 Full protocol 13 compatibility on server side 2012-11-29 22:08:25 +02:00
Perttu Ahola
96a286dcf5 Make strict and non-strict protocol version checking to work more like expected 2012-11-29 22:08:25 +02:00
Perttu Ahola
420de7ad5e Allow server to accept protocol 13 clients altough they don't work too well 2012-11-29 22:08:25 +02:00
Perttu Ahola
8ccdd3bdb4 Ranged support of protocol version on server side 2012-11-29 22:08:25 +02:00
Perttu Ahola
23913f26cd Support serialization of protocol 13 ContentFeatures 2012-11-29 22:08:25 +02:00
Perttu Ahola
9714612999 unit test: TestNodedefSerialization 2012-11-29 22:08:25 +02:00
Perttu Ahola
69cdcea9fc Modify new ObjectProperties format to such that 0.4.3 will eat it 2012-11-29 22:08:25 +02:00
Perttu Ahola
30ec69c7d3 Fix Taoki's messed up generic object command ids 2012-11-29 22:08:25 +02:00
Perttu Ahola
f720c67f3e Change version to 0.4.4-dev because... ehm... why it wasn't that already? 2012-11-29 22:08:25 +02:00
Calinou
655bb526f4 Fix head shifting downards in glass, nodeboxes... 2012-11-28 16:14:52 +04:00
Perttu Ahola
5c26972cdd Fix mesh glitches on MapBlock boundaries 2012-11-27 19:00:09 +02:00
Perttu Ahola
117f208826 Revert "Use wielditem drawtype for all nodes in item_entity"
This reverts commit ffad18e424.
2012-11-27 17:32:58 +02:00
MirceaKitsune
5f798d944e Fix forgotten material properties for meshes (also seems to have been forgotten for cubes previously). This allows transparent png images to work properly 2012-11-27 08:06:13 +02:00
Perttu Ahola
6b927229f5 Default server step to 0.1s and sync object/player update intervals to it 2012-11-26 22:34:59 +02:00
PilzAdam
ffad18e424 Use wielditem drawtype for all nodes in item_entity 2012-11-26 18:30:07 +01:00
Perttu Ahola
e0eaed5fdb Remove unnecessary util/serialize.h from content_mapblock.cpp 2012-11-26 11:56:18 +02:00
Perttu Ahola
5bd638d4a5 Const-correct SharedBuffer::SharedBuffer(const T *t, unsigned int size) 2012-11-26 11:39:52 +02:00
Perttu Ahola
eca1c96412 Move util/serialize.h out from staticobject.h for smaller header dependencies 2012-11-26 11:18:34 +02:00
Perttu Ahola
2f5686ca48 Move a function from clientserver.h to clientserver.cpp 2012-11-26 10:31:24 +02:00
Perttu Ahola
4fa4340b95 Proper versioning of new network-serialized stuff 2012-11-26 09:49:31 +02:00
Perttu Ahola
197542c7ec New PROTOCOL_VERSION scheme (allow client to support a range of versions) 2012-11-26 09:49:07 +02:00
Perttu Ahola
ab507f83e2 Fix LuaEntitySAO::getClientInitializationData() and bump the related version 2012-11-26 09:10:27 +02:00
Perttu Ahola
d67004a3be Bump version to 0.4.4 as this isn't compatible with 0.4.3 2012-11-26 00:56:47 +02:00
Perttu Ahola
c8acc373c1 Update ContentFeatures serialization format now as PROTOCOL_VERSION was changed 2012-11-25 21:11:45 +02:00
MirceaKitsune
3d1c481f0b RealBadAngel's patch which allows the lua api to read pressed player keys. This should make it possible to change the player's animation based on what he is doing
Correct lua api version number

Always update animations and attachments after the entity is added to scene client side. Fixes animations not being applied in client initialization for some reason. Attachments should be re-tested now just to be safe.

Fix a segmentation fault caused by reaching materials that didn't exist in a loop for setting texture
2012-11-25 19:14:24 +02:00
MirceaKitsune
756db8174a A bunch of fixes
No longer hide players who are dead. With models, a death animation should be used instead

Some changes requested by celeron55

Rename a lot of things in the code, and use better lua api function names

Minor code corrections

Bump protocol version up, since the models / animations / attachments code creates new client<->server messages
2012-11-25 19:14:24 +02:00
MirceaKitsune
fa67b46c04 Allow Vanessa's texture filtering / mipmap patch to work on models, as well as all other node types
Initialize m_bone_posrot too

Update pos_translator for attached players, which should fix a bug noticed with carts where a detached player would travel from the detachment spot to where it was detached

Don't make attachments possible to right-click either

Properly apply object and text visibility for local attachments, and fix them showing when they shouldn't
2012-11-25 19:14:24 +02:00
MirceaKitsune
4d656963e4 Fix more things I forgot for attached players. Such players will now properly see themselves moving when attached, and the server will read their position accordingly
Fix attached players being able to bob their view and generate foostep sounds by pressing a movement key (running in place)
2012-11-25 19:14:24 +02:00
MirceaKitsune
9259d028ac Update attachments at the ending of the addToScene function for parents. And with this... *drum roll* Client-side attachments are at last functional and stick visibly.
Fix the last segmentation fault (apparently). So far attachments seem to be fully functional, although removing the parent causes children to go to origin 0,0,0 and possibly still cause such a fault (though this should already be addressed)

Fix a bug in falling code where entities get stuck

Also check if the parent has been removed server-side, and detach the child if so. Fixes children going to origin 0,0,0 when their parent is removed.

Unset all attachment properties when permanently detaching (on both the client and server). Also store less data we don't need

Create a separate function for detaching, and also update lua api documentation

When a child is detached, update its position from the server to clients. This WILL cause it to get positioned slightly differently client side, as the server attachment system only copies parent origin and knows not about mesh / bone transformation. This prevents different clients seeing the object detached in different spots which is most correct

Update the position of attached players to clients. An attached player will see himself move, but this is currently VERY ugly and laggy as it is done by the server (it probably must stay this way too)

Use a different approach for locally attached players. This allows for smooth positio transitions to work, as well at the player turning around freely. Still buggy however
2012-11-25 19:14:24 +02:00
MirceaKitsune
52fcb0b4b9 Send animations, bone overrides and attachments in entity initialization. Clients no longer have to be near an object when an animation or attachment is set to see the changes, and newly connected clients (or a client that simply renders the object for the first time) will get all of those settings. Therefore, the lua script no longer needs to run every X seconds either, just once per entity.
Finish fixing the material color code. But it won't work until MineTest has dynamic lighting... another day another feature.

Extra checks for the bone positioning / rotation code

Many checks and consistency improvements to the client attachment code

Make a separate function for checking if a client object is attached. A more in-depth change will be needed here to fix reading of invalid pointers

Use a different method of fetching the parent. Fixes the mass segmentation faults when rendering an attachment (some still happen though)

Major change to how attachments are handled. Fix the last segmentaton fault, which was due to the parent becoming invalid while being refreshed / removed which would bause the child to remain attached to nothing. Parents remove their children when being deleted themselves and add them back when re-added. Attachments are stored inside a 2D a vector which easily allows both a child to find their parent and a parent to find its children.

Remove attachment list entry when an object is being permanently removed. Also avoid duplicate entries in this list when re-attaching the same object

The "big code comments" can now go away. Client attachments almost work properly, and I know what else needs to be done
2012-11-25 19:14:23 +02:00
MirceaKitsune
d7d759b43f Enable client-side attachments, add detachment code 2012-11-25 19:14:23 +02:00
MirceaKitsune
ba3fd63e29 Fix some remaining issues with attachments, now they work. Tested with object->player and player->player attachments 2012-11-25 19:14:22 +02:00
MirceaKitsune
948b5a8be7 Complete the attachment framework.
The child ID can now be checked against the parent ID in content_cao.cpp so the parent can be detected. Actual attachment code to come

Divide attachment system between server attachments and client attachments, neither coded right now. As explained in the code comment:

// Attachments need to be handled on both the server and client.
// If we attach only on the server, models (which are client-side)
// can't be read so we don't know the origin and orientation of bones.
// If we attach only on the client, the real position of attachments is
// not updated and you can't click them for example.
2012-11-25 18:14:15 +02:00
MirceaKitsune
e42eeec8f6 Framework for the attachment system, new object property which allows changing the color and alpha of mesh materials
New object property which allows changing the color and alpha of mesh materials. Due to the current lighting systems it doesn't work yet, but the full implementation is there

Framework for the attachment system, with no actual functionality yet

Send bone and player object to the setAttachment function in content_sao.cpp, but we need a way to translate it there and send it to the client

I will also want position and rotation offsets to be possible to apply to attachments

Network object ID from server to client. This will be used to identify the parent client-side and know what to attach to
2012-11-25 18:14:15 +02:00
MirceaKitsune
118285e6ba Get the new animation framework properly working
Store start and end frames as v2f

Also move bone animations to their own function instead of object properties
2012-11-25 18:14:15 +02:00
MirceaKitsune
ba4d93027f Joint positioning and rotation code, and fix a problem related to their lua API
Attempt to move the animation system to a more correct implementation, rather than using object properties. Incomplete and breaks functionality
2012-11-25 18:14:15 +02:00
MirceaKitsune
fb0c431864 Allow the LUA API to set animations to meshes as well as the animation speed. Also update animations only when needed.
Support for animation blending, though for some reason it doesn't work.

Don't enable animation transitions by default for many reaosons

Object property to store individual bone positions. LUA can specify a bone name followed by a bone position. No functionality yet. Bone rotation to be added in the following commit

Same system for bone rotation, plus a few other things I missed
2012-11-25 18:14:15 +02:00
MirceaKitsune
9c8ba42750 Get the mesh working through the memory cache properly. Most credit goes to celeron55 for the help on this code
Get the texture from memory as well

Add .x to the list of supported formats

Update LUA API documentation
2012-11-25 18:14:15 +02:00
MirceaKitsune
f9675bd2b4 Add a subfolder for models and transfer models from server to client
(obj, md2 and md3 are currently allowed)

Get rid of the texture string and use the existing textures array. Segmented meshes have multiple materials, and this will allow us to texture each. Do not switch to this commit yet!

If a texture string is left empty in LUA, don't modify that material. Useful so a script can change specific textures without affecting others
2012-11-25 18:14:15 +02:00
MirceaKitsune
cb40b3517a Fix material properties and allow lighting. Models should now be affected by light instead of being black 2012-11-25 18:14:15 +02:00
MirceaKitsune
0a020dbcc8 Properly read the mesh from LUA.
Players can now be set to meshes using the following test script:

function switch_player_visual()
		prop = {
			mesh="player.obj",
			texture="player.png",
			visual="mesh",
		}
	for _, obj in pairs(minetest.get_connected_players()) do
		obj:set_properties(prop)
	end
	minetest.after(1.0, switch_player_visual)
end
minetest.after(1.0, switch_player_visual)
2012-11-25 18:14:14 +02:00
MirceaKitsune
ac97a7f70e 3D model support for players using Irrlicht. Also ready the basis for mesh support on nodes / items via LUA (to be done). Supports any mesh format compatible with Irrlicht, but animations are not set up yet. 2012-11-25 18:14:14 +02:00
Perttu Ahola
e02b95741b Revert "Don't leak textures all over the place"
This causes textures to be deleted before they are no longer accessed,
resulting in a segmentation fault. This needs to be rewritten in such a way
that textures are deleted when the client disconnects from a server.

This reverts commit 41c00e87d4.
2012-11-25 16:39:07 +02:00
Ilya Zhuravlev
bbd990f2cc Fix trees growing into any type of node 2012-11-23 00:36:52 +04:00
xyzz
a0b5605db8 Merge pull request #268 from khonkhortisan/image_button
Allow transparent image_buttons
2012-11-22 09:13:18 -08:00
Anthony
3ba9b26310 Fix server crash on /clearpassword
According to #253, using `/clearpassword` without an argument causes the server to crash from an assertion failure. I've resubmitted matttpt's patch as a pull request to aid in merging.
2012-11-20 16:45:30 +01:00
MirceaKitsune
6c43ec2d2b Add anaglyph settings to minetest.conf.example 2012-11-13 19:21:18 +02:00
MirceaKitsune
9b9eb23b6d Default anaglyph to 0.1 2012-11-13 19:20:57 +02:00
MirceaKitsune
8b16e5f27d Anaglyph stereo support, created by xyz 2012-11-13 19:20:35 +02:00
xyzz
5292476841 Merge pull request #284 from RealBadAngel/master
Adding backgrounds to formspec
2012-11-12 11:50:58 -08:00
PilzAdam
1db0334787 Merge pull request #286 from PilzAdam/digging_animation
Add jordan4ibanez' better digging animation
2012-11-10 10:33:16 -08:00
PilzAdam
6e2ba111af Add jordan4ibanez' better digging animation 2012-11-10 17:36:56 +01:00
Perttu Ahola
5f1d3ad754 Swap out pixel-perfect nyan cat by request of Chris Torres 2012-11-09 20:14:04 +02:00
Vanessa Ezekowitz
46f471c89f added GUI checkboxes in Settings tab for the aforementioned video settings. 2012-11-09 19:12:49 +02:00
Vanessa Ezekowitz
0dd9c14ff8 Added video settings filter options via config file - second try :-)
Set one or more of these in the config to turn the related option on:

mip_map = 1
anisotropic_filter = 1
bilinear_filter = 1
trilinear_filter = 1
2012-11-09 19:12:44 +02:00
Perttu Ahola
0709918bd8 Fix unnecessary network protocol incompatibility in ContentFeatures 2012-11-08 20:43:32 +02:00
RealBadAngel
8e5167d726 Adding background to Formspec 2012-11-08 19:22:37 +01:00
PilzAdam
8c3ffa3907 Merge pull request #279 from RealBadAngel/patch-2
Formspec: Draw images before inventories. Allows to use image as backgro...
2012-11-05 08:12:12 -08:00
RealBadAngel
8540871ebc Formspec: Draw images before inventories. Allows to use image as background. 2012-11-04 21:18:28 +01:00
PilzAdam
23837e4352 Merge pull request #274 from PilzAdam/falling
Fix a bug in falling code where entities get stuck
2012-11-03 15:14:14 -07:00
PilzAdam
3cab24fbcf Merge pull request #243 from xyzz/liquid_renewable
Add liquid_renewable property, allow non-renewable liquids.
2012-11-03 12:34:44 -07:00
PilzAdam
755df5f659 Merge pull request #273 from PilzAdam/air
Make air and ignore drop nothing
2012-11-03 10:36:46 -07:00
PilzAdam
936411e4d1 Make air and ignore drop nothing 2012-11-03 18:29:01 +01:00
PilzAdam
21317be493 Fix a bug in falling code where entities get stuck 2012-11-03 18:07:49 +01:00
Kahrl
41c00e87d4 Don't leak textures all over the place 2012-11-02 18:45:39 +02:00
Perttu Ahola
2863a3291a Fix flowing liquid animation direction calculation 2012-11-02 18:05:42 +02:00
PilzAdam
8adad36a66 Merge pull request #272 from PilzAdam/pow
Replace pow() with multiplikation to improve speed
2012-11-02 08:35:30 -07:00
PilzAdam
b701f8a878 Replace pow() with multiplikation to improve speed 2012-11-02 16:24:57 +01:00
PilzAdam
63e73f29cc Merge pull request #270 from PilzAdam/master
Move falling to builtin
2012-11-01 11:00:57 -07:00
PilzAdam
7fcf153ada Add functions to the default mod of minimal game to support old code 2012-11-01 18:49:12 +01:00
PilzAdam
0443d36abf Add falling_node to special groups in lua-api.txt 2012-11-01 12:33:24 +01:00
PilzAdam
df2ad89518 Remove a useless comment 2012-10-31 19:08:00 +01:00
PilzAdam
10dc2b30fb Move falling to builtin 2012-10-31 19:06:11 +01:00
Kyle
f9087d14a3 Allow transparent image_buttons 2012-10-18 12:06:47 -07:00
Perttu Ahola
25cf3757b2 Add nodedef.on_blast() to lua_api.txt in order to support chained explosions of any explosives 2012-09-09 23:24:48 +03:00
Perttu Ahola
72ef6f637e Statically store always_collect field of __builtin:item 2012-09-09 23:14:41 +03:00
Perttu Ahola
9cadaf824b Add dtime_s to entity activation 2012-09-09 17:12:29 +03:00
Perttu Ahola
1cc1b93e65 Fix ServerActiveObject stuff 2012-09-09 16:11:05 +03:00
Perttu Ahola
c4f400acd0 Fix wielditem entity drawtype brightness control 2012-09-09 13:26:52 +03:00
Perttu Ahola
ac628c9b0a Fix ObjectRef:punch() 2012-09-09 12:05:38 +03:00
Ilya Zhuravlev
926830e0df Add liquid_renewable property. 2012-09-07 20:48:12 +04:00
Perttu Ahola
9696ed31a4 Version 0.4.3 2012-09-05 01:31:06 +03:00
Matthew I
c8895dd43b Prevent world creation if the world already exists 2012-09-05 01:17:44 +03:00
Matthew I
5dd1d354f8 Enforce stricter world names using a blacklist
Blacklisted characters are: / \
2012-09-05 01:17:28 +03:00
Perttu Ahola
a0da6bcf43 Add aux1_descends to key change menu 2012-09-05 00:55:19 +03:00
Perttu Ahola
1b63f8d6b9 Version 0.4.3-rc0; increase PROTOCOL_VERSION due to backwards-incompatible InventoryList width field 2012-09-05 00:39:43 +03:00
Perttu Ahola
60932d2bd7 Remove "Unknown inventory identifier" deserialization errors, because they can break forward compatibility 2012-09-04 23:02:56 +03:00
Perttu Ahola
ee2d9d973a Reorganize ClientMap rendering code for a bit more performance
- Don't select blocks for drawing in every frame
- Sort meshbuffers by material before drawing
2012-09-04 22:41:03 +03:00
Perttu Ahola
0e6f7a21c6 Fix shift-descend to ladders from a floor 2012-09-03 23:31:51 +03:00
Perttu Ahola
cc47ff7c4c Fix moving stuff into a mismatched stack in a "infinite" inventory 2012-09-02 23:01:42 +03:00
Perttu Ahola
e1a495ee30 Make inventory GUI do sane things when server-side inventory acts unusually 2012-09-02 22:51:38 +03:00
Perttu Ahola
6495007924 Fix bug in moving a larger sized stack in inventory on top of another
- You have 2 stacks: a with x items and b with y<x items
- Take a with your mouse and place it on b
- Whole stack a moves to b
- (y * 2 - x) items move from b to a
- (x - y) items are left to the mouse cursor
2012-09-02 20:24:45 +03:00
Perttu Ahola
d53a6cd851 Add overridable function for handling dropped items from nodes 2012-09-02 19:38:44 +03:00
Perttu Ahola
b6c12d2aa3 Fix github issue #224 2012-09-01 18:32:15 +03:00
Thomas Lauro
7a14171be4 Fix issue with openal mac os x compile 2012-09-01 18:19:59 +03:00
Perttu Ahola
5194505407 Fix GUIKeyChangeMenu so that '/' can be inserted on a finnish keyboard 2012-09-01 18:03:50 +03:00
Thomas Lauro
3e7957512b A bunch of GUIKeyChangeMenu fixes
- Display message when associating a key already in use
- Fix issue for not beeing able to assign space to an action
- Cleaning up
- Make it build (by celeron55)
2012-09-01 18:03:40 +03:00
Perttu Ahola
c0bd96d9b3 Attempt to fix flying gravel and dirt 2012-09-01 13:41:15 +03:00
Sergey Gilfanov
0f7728f84d Smooth transition to the desert biome. 2012-09-01 13:22:07 +03:00
Perttu Ahola
c129b3852b Fix the bouncy node related stuff a bit 2012-09-01 13:21:52 +03:00
Perttu Ahola
3b43c69df4 Add bouncy node group 2012-09-01 12:58:37 +03:00
Perttu Ahola
b17d3e7ad7 Add disable_jump and fall_damage_add_percent node groups 2012-09-01 12:07:27 +03:00
Ilya Zhuravlev
6a16075912 Add InventoryList width property & allow custom crafting grids. 2012-09-01 10:01:41 +03:00
sfan5
43ebec2be1 Make shift the default descent control on ladders and when flying
"aux1_descends" setting switches to the old descend control.
2012-09-01 09:48:07 +03:00
Perttu Ahola
f60227f112 Don't crash in "unexpected multibyte character"; just print it in log. Github #222 2012-09-01 09:23:39 +03:00
Perttu Ahola
f3630e95d6 Use proper alpha blit in some more texture modifiers 2012-08-31 18:06:47 +03:00
Perttu Ahola
8887105ffd Properly initialize baseimg for texture modifier [combine:WxH:X,Y=filename:X,Y=filename2 2012-08-31 17:58:55 +03:00
Matthew I
1d7408a7b8 Fix black display inside opaque water
Opaque water's solidness was being set to 2, like a normal node.
When you swim, it is treated like a solid block, and the display
goes black.  Setting it to 1 like transparent water allows you to
see.

It looks somewhat awkward when you swim, look up, and see an opaque
wall of water (the surface), but there isn't much that can be done
about it.  If you made the water transparent so it looked good,
it would defeat the purpose :) .
2012-08-31 17:50:12 +03:00
Perttu Ahola
0b1ab41a95 Fix github issue #213: Dropping unknown items crashes the game
The items will now just disappear when dropped.
2012-08-19 10:55:04 +03:00
Perttu Ahola
b717b6505b Fix crash when furnace is full (minimal game) 2012-08-12 17:11:23 +03:00
Matthew I
b29d609b0b Move chat commands to Lua and remove servercommand.{cpp,h}
Commands moved:
 /me
 /status
 /time
 /shutdown
 /ban
 /clearobjects
2012-08-12 16:45:58 +03:00
Matthew I
8a3c777c40 Add ban management routines to Lua API
Those functions are:
 * minetest.get_ban_list()
 * minetest.get_ban_description(ip_or_name)
 * minetest.ban_player(name)
 * minetest.unban_player_or_ip(ip_or_name)
2012-08-12 16:45:58 +03:00
Matthew I
548da26ddc Extend Lua API in order to implement chat commands
minetest.get_server_status()
minetest.request_shutdown()
EnvRef:clear_objects()
2012-08-12 16:44:55 +03:00
Matthew I
8e0ac70c4d Remove trailing comma after player list in server status string 2012-08-12 16:44:54 +03:00
Matthew I
1ed559bd24 Allow digging of unknown nodes
This allows the removal of nodes with unknown types.
get_item_callback() (C++) would fail if a node has an unknown type.  Now it
will try using the callback from minetest.nodedef_default in this case.
Also, minetest.node_dig() (Lua) was altered to always allow digging when
the node definition is empty (i.e. unknown node).
2012-08-12 16:04:18 +03:00
Perttu Ahola
e3b831e975 Fix wrong amount of nodes being dropped from inventory 2012-08-12 15:49:23 +03:00
darkrose
d05e3adbc7 fix node timers so on_timer gets the correct position 2012-08-12 15:28:31 +03:00
Perttu Ahola
a9a475ad50 Remove unwanted ! from ifs in inventory record-for-rollback code 2012-08-12 11:20:36 +03:00
Perttu Ahola
d38b465b7c Call this 0.4.2-rc1 2012-07-28 16:31:45 +03:00
Perttu Ahola
fd7ec2da91 Fix inventory segfault when rollback recording is disabled 2012-07-28 14:44:18 +03:00
Perttu Ahola
c9ed379e39 Add enable_rollback_recording setting, defaulting to false 2012-07-28 03:08:09 +03:00
Perttu Ahola
e64feefc61 Handle max<min in LuaPseudoRandom::l_next() 2012-07-27 19:03:15 +03:00
Perttu Ahola
3e754382af Tweak rollback and liquids 2012-07-27 15:46:51 +03:00
Perttu Ahola
7ef0a13250 Tweak rollback stuff 2012-07-27 14:52:29 +03:00
Perttu Ahola
0de3fb786d Increase automatic suspect guess timeframe 2012-07-27 13:54:14 +03:00
Perttu Ahola
1d44a98f2f ABM and liquid overload skip 2012-07-27 13:45:49 +03:00
Perttu Ahola
98ff4eb4ee Fix server build (a missing header) 2012-07-27 13:43:25 +03:00
Perttu Ahola
a9d8df83d2 Make the rollback system VERY FUCKING GOD DAMN POWERFUL 2012-07-27 13:24:28 +03:00
Perttu Ahola
508b7b5e51 Don't track liquids for rollback because of too much log 2012-07-27 02:46:54 +03:00
Perttu Ahola
f7dc72f8aa Properly rollback chat command triggered things 2012-07-27 02:37:04 +03:00
Perttu Ahola
0190f9b077 Experimental-ish rollback functionality 2012-07-27 02:27:18 +03:00
Perttu Ahola
0c91a0d59d Working group-shapeless and multigroup recipes 2012-07-26 13:49:13 +03:00
Perttu Ahola
a26a66a8c4 Restore focus to formspec menu when pressing a button 2012-07-25 18:28:40 +03:00
Perttu Ahola
100345f1e4 Deprecate minetest.add_to_creative_inventory and use group not_in_creative_inventory instead 2012-07-25 18:05:31 +03:00
Perttu Ahola
4535166a3b Add notice in the minimal game 2012-07-25 17:10:31 +03:00
Perttu Ahola
0346e68deb Add special return value -1 to inventry callbacks 2012-07-25 16:52:00 +03:00
Perttu Ahola
db62c227c8 Improve formspec positioning 2012-07-25 16:30:23 +03:00
Perttu Ahola
983e45ae92 Improve inventory callbacks a bit 2012-07-25 15:39:39 +03:00
Perttu Ahola
0a18dda158 Remove special handling of creative mode 2012-07-25 14:07:45 +03:00
Perttu Ahola
9eaf93d41d Detached inventory callbacks and reworked node metadata callbacks 2012-07-25 02:36:54 +03:00
Perttu Ahola
2ac20982e0 Detached inventories 2012-07-24 20:57:17 +03:00
Perttu Ahola
96eac87d47 builtin/item.lua: callbacks with copies of positions and nodes rather than recycle the same ones, which callbacks can modify 2012-07-24 17:46:17 +03:00
Perttu Ahola
0cf1ed544c darkrose should work at a nuclear power plant.
It'd take years to figure out what caused the accident.
2012-07-24 16:36:50 +03:00
Perttu Ahola
558e284e25 Update minetestmapper.py to support ver. 24 and 25 2012-07-24 15:17:00 +03:00
Perttu Ahola
5c31445117 Improve node timer format (map format version 25) and update mapformat.txt 2012-07-24 15:03:46 +03:00
Perttu Ahola
717ae67995 Add node timer test in minimal/experimental 2012-07-24 14:51:13 +03:00
Perttu Ahola
e8331f0c1d Add oldnode parameter to minetest.register_on_placenode callback 2012-07-23 20:44:56 +03:00
Perttu Ahola
c009aa3a22 Fix building on top of (pointable && buildable_to) nodes 2012-07-23 20:42:08 +03:00
Perttu Ahola
9af9d8f5d0 Describe node definition fields better in lua_api.txt 2012-07-23 20:17:44 +03:00
Perttu Ahola
2c027b03db Move /give, /giveme, /spawnentity and /pulverize to builtin/chatcommands.lua 2012-07-23 17:43:08 +03:00
Perttu Ahola
aef1332e42 Improve build configuration options 2012-07-23 15:23:33 +03:00
Perttu Ahola
16fc8b5fc2 Update lua_api.txt a bit 2012-07-23 08:48:55 +03:00
Perttu Ahola
fd845f27f5 Fix map deserialization and remove old serialization code 2012-07-23 08:18:39 +03:00
darkrose
ea62ee4b61 Increase node id/param0 to 16 bits, leaving param2 always with 8 bits 2012-07-23 08:18:39 +03:00
darkrose
cd6becd442 Implement node timers 2012-07-23 08:18:37 +03:00
Perttu Ahola
829f262c79 Fix terrible grammar in comment! 2012-07-22 20:36:06 +03:00
Perttu Ahola
246520b5cb Fix compressZlib() 2012-07-22 20:29:09 +03:00
Perttu Ahola
38bb649582 Test zlib wrapper's handling of large data 2012-07-22 20:27:55 +03:00
Perttu Ahola
82855a04ec Tweak test.c overally a bit 2012-07-22 20:26:54 +03:00
Perttu Ahola
6dfefaf229 Formspec button_exit[] and image_button_exit[] 2012-07-22 17:40:48 +03:00
darkrose
d44f8a854b Doc updates for formspec 2012-07-22 17:40:48 +03:00
Perttu Ahola
acf3a43095 Add /test1 command to minimal for testing a more complicated player inventory form 2012-07-22 17:40:48 +03:00
Perttu Ahola
4cc98d7add minetest.register_on_player_receive_fields() 2012-07-22 17:40:48 +03:00
darkrose
506203345b Implement formspec 2012-07-22 17:40:41 +03:00
Matthew I
c259f7c8bd Update Lua API documentation to include minetest.get_modnames() 2012-07-22 13:36:17 +03:00
Matthew I
c62a121cca Add "/mods" command to list mods to client 2012-07-22 13:36:10 +03:00
Matthew I
136eb32389 Add minetest.get_modnames() to Lua API 2012-07-22 13:36:03 +03:00
393 changed files with 70949 additions and 19345 deletions

22
.gitignore vendored
View File

@@ -4,13 +4,16 @@
*bak*
tags
*.vim
*.orig
*.rej
## Non-static Minetest directories
/bin/
/games/*
!/games/minimal/
/cache/
/textures/
/textures/*
!/textures/base/
/sounds/
/mods/*
!/mods/minetest/
@@ -29,17 +32,34 @@ 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/
src/cguittfont/libcguittfont.a
src/cguittfont/cmake_install.cmake
src/cguittfont/Makefile
src/json/CMakeFiles/
src/json/libjsoncpp.a
src/sqlite/CMakeFiles/*
src/sqlite/libsqlite3.a
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
Makefile
cmake_install.cmake
locale/
*.cbp
*.layout
*.o

10
.travis.yml Normal file
View File

@@ -0,0 +1,10 @@
language: cpp
compiler:
- gcc
- clang
before_install:
- if [ $CC = "clang" ]; then export PATH="/usr/bin/:$PATH"; sudo sh -c 'echo "deb http://ppa.launchpad.net/eudoxos/llvm-3.1/ubuntu precise main" >> /etc/apt/sources.list'; sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 92DE8183; sudo apt-get update; sudo apt-get install llvm-3.1; sudo apt-get install clang; fi
- sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev
script: cmake . && make
notifications:
email: false

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 1)
set(VERSION_PATCH 7)
if(VERSION_EXTRA)
set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA})
endif()
@@ -62,7 +62,7 @@ if(WIN32)
elseif(APPLE)
# Random placeholders; this isn't usually used and may not work
# See https://github.com/toabi/minetest-mac/
set(SHAREDIR "share/${PROJECT_NAME}")
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}")
set(BINDIR "bin")
set(DOCDIR "share/doc/${PROJECT_NAME}")
set(EXAMPLE_CONF_DIR ${DOCDIR})
@@ -78,34 +78,79 @@ elseif(UNIX) # Linux, BSD etc
set(ICONDIR "unix/icons")
set(LOCALEDIR "locale")
else()
set(SHAREDIR "share/${PROJECT_NAME}")
set(BINDIR "bin")
set(DOCDIR "share/doc/${PROJECT_NAME}")
set(MANDIR "share/man")
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}")
set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}")
set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")
set(EXAMPLE_CONF_DIR ${DOCDIR})
set(XDG_APPS_DIR "share/applications")
set(ICONDIR "share/icons")
set(LOCALEDIR "share/locale")
set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
endif()
endif()
set(CUSTOM_SHAREDIR "" CACHE STRING "Directory to install data files into")
if(NOT CUSTOM_SHAREDIR STREQUAL "")
set(SHAREDIR "${CUSTOM_SHAREDIR}")
message(STATUS "Using SHAREDIR=${SHAREDIR}")
endif()
set(CUSTOM_BINDIR "" CACHE STRING "Directory to install binaries into")
if(NOT CUSTOM_BINDIR STREQUAL "")
set(BINDIR "${CUSTOM_BINDIR}")
message(STATUS "Using BINDIR=${BINDIR}")
endif()
set(CUSTOM_DOCDIR "" CACHE STRING "Directory to install documentation into")
if(NOT CUSTOM_DOCDIR STREQUAL "")
set(DOCDIR "${CUSTOM_DOCDIR}")
message(STATUS "Using DOCDIR=${DOCDIR}")
endif()
set(CUSTOM_MANDIR "" CACHE STRING "Directory to install manpages into")
if(NOT CUSTOM_MANDIR STREQUAL "")
set(MANDIR "${CUSTOM_MANDIR}")
message(STATUS "Using MANDIR=${MANDIR}")
endif()
set(CUSTOM_EXAMPLE_CONF_DIR "" CACHE STRING "Directory to install example config file into")
if(NOT CUSTOM_EXAMPLE_CONF_DIR STREQUAL "")
set(EXAMPLE_CONF_DIR "${CUSTOM_EXAMPLE_CONF_DIR}")
message(STATUS "Using EXAMPLE_CONF_DIR=${EXAMPLE_CONF_DIR}")
endif()
set(CUSTOM_XDG_APPS_DIR "" CACHE STRING "Directory to install .desktop files into")
if(NOT CUSTOM_XDG_APPS_DIR STREQUAL "")
set(XDG_APPS_DIR "${CUSTOM_XDG_APPS_DIR}")
message(STATUS "Using XDG_APPS_DIR=${XDG_APPS_DIR}")
endif()
set(CUSTOM_ICONDIR "" CACHE STRING "Directory to install icons into")
if(NOT CUSTOM_ICONDIR STREQUAL "")
set(ICONDIR "${CUSTOM_ICONDIR}")
message(STATUS "Using ICONDIR=${ICONDIR}")
endif()
set(CUSTOM_LOCALEDIR "" CACHE STRING "Directory to install l10n files into")
if(NOT CUSTOM_LOCALEDIR STREQUAL "")
set(LOCALEDIR "${CUSTOM_LOCALEDIR}")
message(STATUS "Using LOCALEDIR=${LOCALEDIR}")
endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/builtin" DESTINATION "${SHAREDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client" DESTINATION "${SHAREDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minimal" DESTINATION "${SHAREDIR}/games")
set(MINETEST_GAME_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game")
if(EXISTS ${MINETEST_GAME_SOURCE} AND IS_DIRECTORY ${MINETEST_GAME_SOURCE})
install(FILES ${MINETEST_GAME_SOURCE}/game.conf DESTINATION "${SHAREDIR}/games/minetest_game/")
install(FILES ${MINETEST_GAME_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/minetest_game/")
install(DIRECTORY ${MINETEST_GAME_SOURCE}/mods DESTINATION "${SHAREDIR}/games/minetest_game")
install(DIRECTORY ${MINETEST_GAME_SOURCE}/menu DESTINATION "${SHAREDIR}/games/minetest_game")
endif()
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()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fonts" DESTINATION "${SHAREDIR}")
install(FILES "README.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}")
install(FILES "doc/mapformat.txt" DESTINATION "${DOCDIR}")

View File

@@ -1,24 +1,25 @@
Minetest-c55
Minetest
============
An InfiniMiner/Minecraft inspired game.
Copyright (c) 2010-2012 Perttu Ahola <celeron55@gmail.com>
and ther contributors (see source file comments and the version control log)
Copyright (c) 2010-2013 Perttu Ahola <celeron55@gmail.com>
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 the minetest_game project too:
https://github.com/celeron55/minetest_game/
https://github.com/minetest/minetest_game/
See the README.txt in it.
Further documentation
----------------------
- Website: http://c55.me/minetest/
- Wiki: http://c55.me/minetest/wiki/
- Forum: http://c55.me/minetest/forum/
- Github: https://github.com/celeron55/minetest/
- Website: http://minetest.net/
- Wiki: http://wiki.minetest.com/
- Developer wiki: http://dev.minetest.net/
- Forum: http://forum.minetest.net/
- Github: https://github.com/minetest/minetest/
- doc/ directory of source distribution
This game is not finished
@@ -28,19 +29,23 @@ 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
------
$bin - Compiled binaries
$share - Cistributed read-only data
$share - Distributed read-only data
$user - User-created modifiable data
Windows .zip / RUN_IN_PLACE source:
@@ -79,18 +84,18 @@ Compiling on GNU/Linux:
-----------------------
Install dependencies. Here's an example for Debian/Ubuntu:
$ apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev
$ apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev
Download source, extract (this is the URL to the latest of source repository, which might not work at all times):
$ wget https://github.com/celeron55/minetest/tarball/master -O master.tar.gz
$ wget https://github.com/minetest/minetest/tarball/master -O master.tar.gz
$ tar xf master.tar.gz
$ cd celeron55-minetest-286edd4 (or similar)
$ cd minetest-minetest-286edd4 (or similar)
Download minetest_game (otherwise only the "Minimal development test" game is available)
$ cd games/
$ wget https://github.com/celeron55/minetest_game/tarball/master -O master.tar.gz
$ tar xf master.tar.gz
$ mv celeron55-minetest_game-* minetest_game
$ wget https://github.com/minetest/minetest_game/tarball/master -O minetest_game.tar.gz
$ tar xf minetest_game.tar.gz
$ mv minetest-minetest_game-* minetest_game
$ cd ..
Build a version that runs directly from the source directory:
@@ -106,6 +111,7 @@ $ ./minetest
- You can build a bare server or a bare client by specifying -DBUILD_CLIENT=0 or -DBUILD_SERVER=0
- You can select between Release and Debug build by -DCMAKE_BUILD_TYPE=<Debug or Release>
- Debug build is slower, but gives much more useful output in a debugger
- If you build a bare server, you don't need to have Irrlicht installed. In that case use -DIRRLICHT_SOURCE_DIR=/the/irrlicht/source
Compiling on Windows:
---------------------
@@ -125,11 +131,11 @@ Compiling on Windows:
http://www.winimage.com/zLibDll/index.html
* Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
http://www.winimage.com/zLibDll/index.html
* Optional: gettext bibrary and tools:
* Optional: gettext library and tools:
http://gnuwin32.sourceforge.net/downlinks/gettext.php
- This is used for other UI languages. Feel free to leave it out.
* And, of course, Minetest-c55:
http://c55.me/minetest/download
* And, of course, Minetest:
http://minetest.net/download.php
- Steps:
- Select a directory called DIR hereafter in which you will operate.
- Make sure you have CMake and a compiler installed.
@@ -244,20 +250,34 @@ popd
echo Failed.
exit /b 1
License of Minetest-c55 textures and sounds
-------------------------------------------
License of Minetest textures and sounds
---------------------------------------
This applies to textures and sounds contained in the main Minetest
distribution.
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/
License of Minetest-c55 source code
-----------------------------------
Authors of media files
-----------------------
Everything not listed in here:
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest-c55
Copyright (C) 2010-2011 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
-------------------------------
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
@@ -267,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.,
@@ -371,4 +391,8 @@ DejaVu Sans Mono:
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
Liberation Fonts Copyright:
Copyright (c) 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark of Red Hat, Inc.

View File

@@ -8,6 +8,7 @@
-- Initialize some very basic things
print = minetest.debug
math.randomseed(os.time())
os.setlocale("C", "numeric")
-- Load other files
dofile(minetest.get_modpath("__builtin").."/serialize.lua")
@@ -21,4 +22,7 @@ dofile(minetest.get_modpath("__builtin").."/privileges.lua")
dofile(minetest.get_modpath("__builtin").."/auth.lua")
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

@@ -20,18 +20,13 @@ minetest.register_on_chat_message(function(name, message)
end
local cmd_def = minetest.chatcommands[cmd]
if cmd_def then
if not cmd_def.func then
-- This is a C++ command
return false
local has_privs, missing_privs = minetest.check_player_privs(name, cmd_def.privs)
if has_privs then
cmd_def.func(name, param)
else
local has_privs, missing_privs = minetest.check_player_privs(name, cmd_def.privs)
if has_privs then
cmd_def.func(name, param)
else
minetest.chat_send_player(name, "You don't have permission to run this command (missing privileges: "..table.concat(missing_privs, ", ")..")")
end
return true -- handled chat message
minetest.chat_send_player(name, "You don't have permission to run this command (missing privileges: "..table.concat(missing_privs, ", ")..")")
end
return true -- handled chat message
end
return false
end)
@@ -39,17 +34,15 @@ end)
--
-- Chat commands
--
minetest.register_chatcommand("me", {
params = "<action>",
description = "chat action (eg. /me orders a pizza)",
privs = {shout=true},
func = function(name, param)
minetest.chat_send_all("* " .. name .. " " .. param)
end,
})
-- Register C++ commands without functions
minetest.register_chatcommand("me", {params = nil, description = "chat action (eg. /me orders a pizza)", privs = {shout=true}})
minetest.register_chatcommand("status", {description = "print server status line"})
minetest.register_chatcommand("shutdown", {params = "", description = "shutdown server", privs = {server=true}})
minetest.register_chatcommand("clearobjects", {params = "", description = "clear all objects in world", privs = {server=true}})
minetest.register_chatcommand("time", {params = "<0...24000>", description = "set time of day", privs = {settime=true}})
minetest.register_chatcommand("ban", {params = "<name>", description = "ban IP of player", privs = {ban=true}})
minetest.register_chatcommand("unban", {params = "<name/ip>", description = "remove IP ban", privs = {ban=true}})
-- Register other commands
minetest.register_chatcommand("help", {
privs = {},
params = "(nothing)/all/privs/<cmd>",
@@ -123,6 +116,9 @@ minetest.register_chatcommand("grant", {
if not grantname or not grantprivstr then
minetest.chat_send_player(name, "Invalid parameters (see /help grant)")
return
elseif not minetest.auth_table[grantname] then
minetest.chat_send_player(name, "Player "..grantname.." does not exist.")
return
end
local grantprivs = minetest.string_to_privs(grantprivstr)
if grantprivstr == "all" then
@@ -145,6 +141,7 @@ minetest.register_chatcommand("grant", {
return
end
minetest.set_player_privs(grantname, privs)
minetest.log(name..' granted ('..minetest.privs_to_string(grantprivs, ', ')..') privileges to '..grantname)
minetest.chat_send_player(name, "Privileges of "..grantname..": "..minetest.privs_to_string(minetest.get_player_privs(grantname), ' '))
if grantname ~= name then
minetest.chat_send_player(grantname, name.." granted you privileges: "..minetest.privs_to_string(grantprivs, ' '))
@@ -165,6 +162,9 @@ minetest.register_chatcommand("revoke", {
if not revokename or not revokeprivstr then
minetest.chat_send_player(name, "Invalid parameters (see /help revoke)")
return
elseif not minetest.auth_table[revokename] then
minetest.chat_send_player(name, "Player "..revokename.." does not exist.")
return
end
local revokeprivs = minetest.string_to_privs(revokeprivstr)
local privs = minetest.get_player_privs(revokename)
@@ -182,6 +182,7 @@ minetest.register_chatcommand("revoke", {
end
end
minetest.set_player_privs(revokename, privs)
minetest.log(name..' revoked ('..minetest.privs_to_string(revokeprivs, ', ')..') privileges from '..revokename)
minetest.chat_send_player(name, "Privileges of "..revokename..": "..minetest.privs_to_string(minetest.get_player_privs(revokename), ' '))
if revokename ~= name then
minetest.chat_send_player(revokename, name.." revoked privileges from you: "..minetest.privs_to_string(revokeprivs, ' '))
@@ -222,8 +223,8 @@ minetest.register_chatcommand("clearpassword", {
privs = {password=true},
func = function(name, param)
toname = param
if not toname then
minetest.chat_send_player(toname, "Name field required")
if toname == "" then
minetest.chat_send_player(name, "Name field required")
return
end
minetest.set_player_password(toname, '')
@@ -260,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
@@ -271,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)
@@ -282,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
@@ -302,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..")")
@@ -316,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
@@ -371,3 +372,316 @@ minetest.register_chatcommand("set", {
end,
})
minetest.register_chatcommand("mods", {
params = "",
description = "lists mods installed on the server",
privs = {},
func = function(name, param)
local response = ""
local modnames = minetest.get_modnames()
for i, mod in ipairs(modnames) do
response = response .. mod
-- Add space if not at the end
if i ~= #modnames then
response = response .. " "
end
end
minetest.chat_send_player(name, response)
end,
})
local function handle_give_command(cmd, giver, receiver, stackstring)
minetest.log("action", giver.." invoked "..cmd..', stackstring="'
..stackstring..'"')
minetest.log(cmd..' invoked, stackstring="'..stackstring..'"')
local itemstack = ItemStack(stackstring)
if itemstack:is_empty() then
minetest.chat_send_player(giver, 'error: cannot give an empty item')
return
elseif not itemstack:is_known() then
minetest.chat_send_player(giver, 'error: cannot give an unknown item')
return
end
local receiverref = minetest.get_player_by_name(receiver)
if receiverref == nil then
minetest.chat_send_player(giver, receiver..' is not a known player')
return
end
local leftover = receiverref:get_inventory():add_item("main", itemstack)
if leftover:is_empty() then
partiality = ""
elseif leftover:get_count() == itemstack:get_count() then
partiality = "could not be "
else
partiality = "partially "
end
-- The actual item stack string may be different from what the "giver"
-- entered (e.g. big numbers are always interpreted as 2^16-1).
stackstring = itemstack:to_string()
if giver == receiver then
minetest.chat_send_player(giver, '"'..stackstring
..'" '..partiality..'added to inventory.');
else
minetest.chat_send_player(giver, '"'..stackstring
..'" '..partiality..'added to '..receiver..'\'s inventory.');
minetest.chat_send_player(receiver, '"'..stackstring
..'" '..partiality..'added to inventory.');
end
end
minetest.register_chatcommand("give", {
params = "<name> <itemstring>",
description = "give item to player",
privs = {give=true},
func = function(name, param)
local toname, itemstring = string.match(param, "^([^ ]+) +(.+)$")
if not toname or not itemstring then
minetest.chat_send_player(name, "name and itemstring required")
return
end
handle_give_command("/give", name, toname, itemstring)
end,
})
minetest.register_chatcommand("giveme", {
params = "<itemstring>",
description = "give item to yourself",
privs = {give=true},
func = function(name, param)
local itemstring = string.match(param, "(.+)$")
if not itemstring then
minetest.chat_send_player(name, "itemstring required")
return
end
handle_give_command("/giveme", name, name, itemstring)
end,
})
minetest.register_chatcommand("spawnentity", {
params = "<entityname>",
description = "spawn entity at your position",
privs = {give=true, interact=true},
func = function(name, param)
local entityname = string.match(param, "(.+)$")
if not entityname then
minetest.chat_send_player(name, "entityname required")
return
end
print('/spawnentity invoked, entityname="'..entityname..'"')
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.add_entity(p, entityname)
minetest.chat_send_player(name, '"'..entityname
..'" spawned.');
end,
})
minetest.register_chatcommand("pulverize", {
params = "",
description = "delete item in hand",
privs = {},
func = function(name, param)
local player = minetest.get_player_by_name(name)
if player == nil then
print("Unable to pulverize, player is nil")
return true -- Handled chat message
end
if player:get_wielded_item():is_empty() then
minetest.chat_send_player(name, 'Unable to pulverize, no item in hand.')
else
player:set_wielded_item(nil)
minetest.chat_send_player(name, 'An item was pulverized.')
end
end,
})
-- Key = player name
minetest.rollback_punch_callbacks = {}
minetest.register_on_punchnode(function(pos, node, puncher)
local name = puncher:get_player_name()
if minetest.rollback_punch_callbacks[name] then
minetest.rollback_punch_callbacks[name](pos, node, puncher)
minetest.rollback_punch_callbacks[name] = nil
end
end)
minetest.register_chatcommand("rollback_check", {
params = "[<range>] [<seconds>]",
description = "check who has last touched a node or near it, "..
"max. <seconds> ago (default range=0, seconds=86400=24h)",
privs = {rollback=true},
func = function(name, param)
local range, seconds = string.match(param, "(%d+) *(%d*)")
range = tonumber(range) or 0
seconds = tonumber(seconds) or 86400
minetest.chat_send_player(name, "Punch a node (limits set: range="..
dump(range).." seconds="..dump(seconds).."s)")
minetest.rollback_punch_callbacks[name] = function(pos, node, puncher)
local name = puncher:get_player_name()
minetest.chat_send_player(name, "Checking...")
local actor, act_p, act_seconds =
minetest.rollback_get_last_node_actor(pos, range, seconds)
if actor == "" then
minetest.chat_send_player(name, "Nobody has touched the "..
"specified location in "..dump(seconds).." seconds")
return
end
local nodedesc = "this node"
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.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..")")
end
end,
})
minetest.register_chatcommand("rollback", {
params = "<player name> [<seconds>] | :<actor> [<seconds>]",
description = "revert actions of a player; default for <seconds> is 60",
privs = {rollback=true},
func = function(name, param)
local target_name, seconds = string.match(param, ":([^ ]+) *(%d*)")
if not target_name then
local player_name = nil;
player_name, seconds = string.match(param, "([^ ]+) *(%d*)")
if not player_name then
minetest.chat_send_player(name, "Invalid parameters. See /help rollback and /help rollback_check")
return
end
target_name = "player:"..player_name
end
seconds = tonumber(seconds) or 60
minetest.chat_send_player(name, "Reverting actions of "..
dump(target_name).." since "..dump(seconds).." seconds.")
local success, log = minetest.rollback_revert_actions_by(
target_name, seconds)
if #log > 10 then
minetest.chat_send_player(name, "(log is too long to show)")
else
for _,line in ipairs(log) do
minetest.chat_send_player(name, line)
end
end
if success then
minetest.chat_send_player(name, "Reverting actions succeeded.")
else
minetest.chat_send_player(name, "Reverting actions FAILED.")
end
end,
})
minetest.register_chatcommand("status", {
params = "",
description = "print server status line",
privs = {},
func = function(name, param)
minetest.chat_send_player(name, minetest.get_server_status())
end,
})
minetest.register_chatcommand("time", {
params = "<0...24000>",
description = "set time of day",
privs = {settime=true},
func = function(name, param)
if param == "" then
minetest.chat_send_player(name, "Missing parameter")
return
end
local newtime = tonumber(param)
if newtime == nil then
minetest.chat_send_player(name, "Invalid time")
else
minetest.set_timeofday((newtime % 24000) / 24000)
minetest.chat_send_player(name, "Time of day changed.")
minetest.log("action", name .. " sets time " .. newtime)
end
end,
})
minetest.register_chatcommand("shutdown", {
params = "",
description = "shutdown server",
privs = {server=true},
func = function(name, param)
minetest.log("action", name .. " shuts down server")
minetest.request_shutdown()
minetest.chat_send_all("*** Server shutting down (operator request).")
end,
})
minetest.register_chatcommand("ban", {
params = "<name>",
description = "ban IP of player",
privs = {ban=true},
func = function(name, param)
if param == "" then
minetest.chat_send_player(name, "Ban list: " .. minetest.get_ban_list())
return
end
if not minetest.get_player_by_name(param) then
minetest.chat_send_player(name, "No such player")
return
end
if not minetest.ban_player(param) then
minetest.chat_send_player(name, "Failed to ban player")
else
local desc = minetest.get_ban_description(param)
minetest.chat_send_player(name, "Banned " .. desc .. ".")
minetest.log("action", name .. " bans " .. desc .. ".")
end
end,
})
minetest.register_chatcommand("unban", {
params = "<name/ip>",
description = "remove IP ban",
privs = {ban=true},
func = function(name, param)
if not minetest.unban_player_or_ip(param) then
minetest.chat_send_player(name, "Failed to unban player/IP")
else
minetest.chat_send_player(name, "Unbanned " .. param)
minetest.log("action", name .. " unbans " .. param)
end
end,
})
minetest.register_chatcommand("clearobjects", {
params = "",
description = "clear all objects in world",
privs = {server=true},
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.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

@@ -16,4 +16,33 @@ minetest.digprop_woodlike = digprop_err
minetest.digprop_leaveslike = digprop_err
minetest.digprop_glasslike = digprop_err
minetest.node_metadata_inventory_move_allow_all = function()
minetest.log("info", "WARNING: minetest.node_metadata_inventory_move_allow_all is obsolete and does nothing.")
end
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

@@ -0,0 +1,19 @@
-- Minetest: builtin/detached_inventory.lua
minetest.detached_inventories = {}
function minetest.create_detached_inventory(name, callbacks)
local stuff = {}
stuff.name = name
if callbacks then
stuff.allow_move = callbacks.allow_move
stuff.allow_put = callbacks.allow_put
stuff.allow_take = callbacks.allow_take
stuff.on_move = callbacks.on_move
stuff.on_put = callbacks.on_put
stuff.on_take = callbacks.on_take
end
minetest.detached_inventories[name] = stuff
return minetest.create_detached_inventory_raw(name)
end

199
builtin/falling.lua Normal file
View File

@@ -0,0 +1,199 @@
-- Minetest: builtin/item.lua
--
-- Falling stuff
--
minetest.register_entity("__builtin:falling_node", {
initial_properties = {
physical = true,
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
visual = "wielditem",
textures = {},
visual_size = {x=0.667, y=0.667},
},
nodename = "",
set_node = function(self, nodename)
self.nodename = nodename
local stack = ItemStack(nodename)
local itemtable = stack:to_table()
local itemname = nil
if itemtable then
itemname = stack:to_table().name
end
local item_texture = nil
local item_type = ""
if minetest.registered_items[itemname] then
item_texture = minetest.registered_items[itemname].inventory_image
item_type = minetest.registered_items[itemname].type
end
prop = {
is_visible = true,
textures = {nodename},
}
self.object:set_properties(prop)
end,
get_staticdata = function(self)
return self.nodename
end,
on_activate = function(self, staticdata)
self.nodename = staticdata
self.object:set_armor_groups({immortal=1})
--self.object:setacceleration({x=0, y=-10, z=0})
self:set_node(self.nodename)
end,
on_step = function(self, dtime)
-- Set gravity
self.object:setacceleration({x=0, y=-10, z=0})
-- 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.get_node(bcp)
-- Note: walkable is in the node definition, not in item groups
if minetest.registered_nodes[bcn.name] and
minetest.registered_nodes[bcn.name].walkable then
if minetest.registered_nodes[bcn.name].buildable_to then
minetest.remove_node(bcp)
return
end
local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
-- Check what's here
local n2 = minetest.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.remove_node(np)
-- Add dropped items
local _, dropped_item
for _, dropped_item in ipairs(drops) do
minetest.add_item(np, dropped_item)
end
-- Run script hook
local _, callback
for _, callback in ipairs(minetest.registered_on_dignodes) do
callback(np, n2, nil)
end
end
-- Create node and remove entity
minetest.add_node(np, {name=self.nodename})
self.object:remove()
nodeupdate(np)
else
-- Do nothing
end
end
})
function spawn_falling_node(p, nodename)
obj = minetest.add_entity(p, "__builtin:falling_node")
obj:get_luaentity():set_node(nodename)
end
function drop_attached_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.add_item(pos, item)
end
end
function check_attached_node(p, n)
local def = minetest.registered_nodes[n.name]
local d = {x=0, y=0, z=0}
if def.paramtype2 == "wallmounted" then
if n.param2 == 0 then
d.y = 1
elseif n.param2 == 1 then
d.y = -1
elseif n.param2 == 2 then
d.x = 1
elseif n.param2 == 3 then
d.x = -1
elseif n.param2 == 4 then
d.z = 1
elseif n.param2 == 5 then
d.z = -1
end
else
d.y = -1
end
local p2 = {x=p.x+d.x, y=p.y+d.y, z=p.z+d.z}
local nn = minetest.get_node(p2).name
local def2 = minetest.registered_nodes[nn]
if def2 and not def2.walkable then
return false
end
return true
end
--
-- Some common functions
--
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.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
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
if minetest.get_node_group(n.name, "attached_node") ~= 0 then
if not check_attached_node(p, n) then
drop_attached_node(p)
nodeupdate(p)
end
end
end
function nodeupdate(p)
-- Round p to prevent falling entities to get stuck
p.x = math.floor(p.x+0.5)
p.y = math.floor(p.y+0.5)
p.z = math.floor(p.z+0.5)
for x = -1,1 do
for y = -1,1 do
for z = -1,1 do
nodeupdate_single({x=p.x+x, y=p.y+y, z=p.z+z}, not (x==0 and y==0 and z==0))
end
end
end
end
--
-- Global callbacks
--
function on_placenode(p, node)
nodeupdate(p)
end
minetest.register_on_placenode(on_placenode)
function on_dignode(p, node)
nodeupdate(p)
end
minetest.register_on_dignode(on_dignode)

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

@@ -76,10 +76,10 @@ function minetest.get_node_drops(nodename, toolname)
local drop = ItemStack({name=nodename}):get_definition().drop
if drop == nil then
-- default drop
return {ItemStack({name=nodename})}
return {nodename}
elseif type(drop) == "string" then
-- itemstring drop
return {ItemStack(drop)}
return {drop}
elseif drop.items == nil then
-- drop = {} to disable default drop
return {}
@@ -124,53 +124,105 @@ end
function minetest.item_place_node(itemstack, placer, pointed_thing)
local item = itemstack:peek_item()
local def = itemstack:get_definition()
if def.type == "node" and pointed_thing.type == "node" then
local pos = pointed_thing.above
local oldnode = minetest.env:get_node(pos)
local olddef = ItemStack({name=oldnode.name}):get_definition()
if def.type ~= "node" or pointed_thing.type ~= "node" then
return itemstack
end
if not olddef.buildable_to then
minetest.log("info", placer:get_player_name() .. " tried to place"
.. " node in invalid position " .. minetest.pos_to_string(pos)
.. ", replacing " .. oldnode.name)
return
local under = pointed_thing.under
local oldnode_under = minetest.get_node_or_nil(under)
local above = pointed_thing.above
local oldnode_above = minetest.get_node_or_nil(above)
if not oldnode_under or not oldnode_above then
minetest.log("info", placer:get_player_name() .. " tried to place"
.. " node in unloaded position " .. minetest.pos_to_string(above))
return itemstack
end
local olddef_under = ItemStack({name=oldnode_under.name}):get_definition()
olddef_under = olddef_under or minetest.nodedef_default
local olddef_above = ItemStack({name=oldnode_above.name}):get_definition()
olddef_above = olddef_above or minetest.nodedef_default
if not olddef_above.buildable_to and not olddef_under.buildable_to then
minetest.log("info", placer:get_player_name() .. " tried to place"
.. " node in invalid position " .. minetest.pos_to_string(above)
.. ", replacing " .. oldnode_above.name)
return itemstack
end
-- Place above pointed node
local place_to = {x = above.x, y = above.y, z = above.z}
-- If node under is buildable_to, place into it instead (eg. snow)
if olddef_under.buildable_to then
minetest.log("info", "node under is buildable to")
place_to = {x = under.x, y = under.y, z = under.z}
end
minetest.log("action", placer:get_player_name() .. " places node "
.. def.name .. " at " .. minetest.pos_to_string(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
if def.paramtype2 == 'wallmounted' then
local dir = {
x = under.x - above.x,
y = under.y - above.y,
z = under.z - above.z
}
newnode.param2 = minetest.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff
elseif def.paramtype2 == 'facedir' then
local placer_pos = placer:getpos()
if placer_pos then
local dir = {
x = above.x - placer_pos.x,
y = above.y - placer_pos.y,
z = above.z - placer_pos.z
}
newnode.param2 = minetest.dir_to_facedir(dir)
minetest.log("action", "facedir: " .. newnode.param2)
end
end
minetest.log("action", placer:get_player_name() .. " places node "
.. def.name .. " at " .. minetest.pos_to_string(pos))
-- Check if the node is attached and if it can be placed there
if minetest.get_item_group(def.name, "attached_node") ~= 0 and
not check_attached_node(place_to, newnode) then
minetest.log("action", "attached node " .. def.name ..
" can not be placed at " .. minetest.pos_to_string(place_to))
return itemstack
end
local newnode = {name = def.name, param1 = 0, param2 = 0}
-- Add node and update
minetest.add_node(place_to, newnode)
-- Calculate direction for wall mounted stuff like torches and signs
if def.paramtype2 == 'wallmounted' then
local under = pointed_thing.under
local above = pointed_thing.above
local dir = {x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}
newnode.param2 = minetest.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff
elseif def.paramtype2 == 'facedir' then
local placer_pos = placer:getpos()
if placer_pos then
local dir = {x = pos.x - placer_pos.x, y = pos.y - placer_pos.y, z = pos.z - placer_pos.z}
newnode.param2 = minetest.dir_to_facedir(dir)
minetest.log("action", "facedir: " .. newnode.param2)
end
local take_item = true
-- Run callback
if def.after_place_node then
-- Copy place_to because callback can modify it
local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z}
if def.after_place_node(place_to_copy, placer, itemstack) then
take_item = false
end
end
-- Add node and update
minetest.env:add_node(pos, newnode)
-- Run callback
if def.after_place_node then
def.after_place_node(pos, placer)
end
-- Run script hook (deprecated)
local _, callback
for _, callback in ipairs(minetest.registered_on_placenodes) do
callback(pos, newnode, placer)
-- Run script hook
local _, callback
for _, callback in ipairs(minetest.registered_on_placenodes) do
-- Copy pos and node because callback can modify them
local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z}
local newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.param2}
local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2}
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack) then
take_item = false
end
end
if take_item then
itemstack:take_item()
end
return itemstack
@@ -180,32 +232,43 @@ 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
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.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
end
end
if itemstack:get_definition().type == "node" then
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
return minetest.item_place_object(itemstack, placer, pointed_thing)
end
return itemstack
end
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)
v.x = v.x*2
v.y = v.y*2 + 1
v.z = v.z*2
obj:setvelocity(v)
local obj = minetest.add_item(p, itemstack)
if obj then
v.x = v.x*2
v.y = v.y*2 + 1
v.z = v.z*2
obj:setvelocity(v)
end
else
minetest.env:add_item(pos, itemstack)
minetest.add_item(pos, itemstack)
end
return ""
return ItemStack("")
end
function minetest.item_eat(hp_change, replace_with_item)
@@ -222,16 +285,37 @@ function minetest.node_punch(pos, node, puncher)
-- Run script hook
local _, callback
for _, callback in ipairs(minetest.registered_on_punchnodes) do
callback(pos, node, puncher)
-- Copy pos and node because callback can modify them
local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
callback(pos_copy, node_copy, puncher)
end
end
function minetest.handle_node_drops(pos, drops, digger)
-- Add dropped items to object's inventory
if digger:get_inventory() then
local _, dropped_item
for _, dropped_item in ipairs(drops) do
local left = digger:get_inventory():add_item("main", dropped_item)
if not left:is_empty() then
local p = {
x = pos.x + math.random()/2-0.25,
y = pos.y + math.random()/2-0.25,
z = pos.z + math.random()/2-0.25,
}
minetest.add_item(p, left)
end
end
end
end
function minetest.node_dig(pos, node, digger)
minetest.debug("node_dig")
local def = ItemStack({name=node.name}):get_definition()
if not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
-- Check if def ~= 0 because we always want to be able to remove unknown nodes
if #def ~= 0 and not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
minetest.debug("not diggable")
minetest.log("info", digger:get_player_name() .. " tried to dig "
.. node.name .. " which is not diggable "
@@ -242,82 +326,44 @@ function minetest.node_dig(pos, node, digger)
minetest.log('action', digger:get_player_name() .. " digs "
.. node.name .. " at " .. minetest.pos_to_string(pos))
if not minetest.setting_getbool("creative_mode") then
local wielded = digger:get_wielded_item()
local drops = minetest.get_node_drops(node.name, wielded:get_name())
local wielded = digger:get_wielded_item()
local drops = minetest.get_node_drops(node.name, wielded:get_name())
-- Wear out tool
tp = wielded:get_tool_capabilities()
dp = minetest.get_dig_params(def.groups, tp)
wielded:add_wear(dp.wear)
digger:set_wielded_item(wielded)
-- Add dropped items to object's inventory
if digger:get_inventory() then
local _, dropped_item
for _, dropped_item in ipairs(drops) do
digger:get_inventory():add_item("main", dropped_item)
end
end
end
-- Wear out tool
local tp = wielded:get_tool_capabilities()
local dp = minetest.get_dig_params(def.groups, tp)
wielded:add_wear(dp.wear)
digger:set_wielded_item(wielded)
local oldnode = nil
-- Handle drops
minetest.handle_node_drops(pos, drops, digger)
local oldmetadata = nil
if def.after_dig_node then
oldnode = node;
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
def.after_dig_node(pos, oldnode, oldmetadata, digger)
-- Copy pos and node because callback can modify them
local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
def.after_dig_node(pos_copy, node_copy, oldmetadata, digger)
end
-- Run script hook (deprecated)
-- Run script hook
local _, callback
for _, callback in ipairs(minetest.registered_on_dignodes) do
callback(pos, node, digger)
-- Copy pos and node because callback can modify them
local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
callback(pos_copy, node_copy, digger)
end
end
function minetest.node_metadata_inventory_move_allow_all(pos, from_list,
from_index, to_list, to_index, count, player)
minetest.log("verbose", "node_metadata_inventory_move_allow_all")
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
local from_stack = inv:get_stack(from_list, from_index)
local taken_items = from_stack:take_item(count)
inv:set_stack(from_list, from_index, from_stack)
local to_stack = inv:get_stack(to_list, to_index)
to_stack:add_item(taken_items)
inv:set_stack(to_list, to_index, to_stack)
end
function minetest.node_metadata_inventory_offer_allow_all(pos, listname, index, stack, player)
minetest.log("verbose", "node_metadata_inventory_offer_allow_all")
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
local the_stack = inv:get_stack(listname, index)
the_stack:add_item(stack)
inv:set_stack(listname, index, the_stack)
return ItemStack("")
end
function minetest.node_metadata_inventory_take_allow_all(pos, listname, index, count, player)
minetest.log("verbose", "node_metadata_inventory_take_allow_all")
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
local the_stack = inv:get_stack(listname, index)
local taken_items = the_stack:take_item(count)
inv:set_stack(listname, index, the_stack)
return taken_items
end
-- This is used to allow mods to redefine minetest.item_place and so on
-- NOTE: This is not the preferred way. Preferred way is to provide enough
-- callbacks to not require redefining global functions. -celeron55
@@ -353,6 +399,7 @@ minetest.nodedef_default = {
can_dig = nil,
on_punch = redef_wrapper(minetest, 'node_punch'), -- minetest.node_punch
on_rightclick = nil,
on_dig = redef_wrapper(minetest, 'node_dig'), -- minetest.node_dig
on_receive_fields = nil,
@@ -442,7 +489,7 @@ minetest.noneitemdef_default = { -- This is used for the hand and unknown items
tool_capabilities = nil,
-- Interaction callbacks
on_place = nil,
on_place = redef_wrapper(minetest, 'item_place'),
on_drop = nil,
on_use = nil,
}

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
@@ -57,11 +57,23 @@ minetest.register_entity("__builtin:item", {
end,
get_staticdata = function(self)
return self.itemstring
--return self.itemstring
return minetest.serialize({
itemstring = self.itemstring,
always_collect = self.always_collect,
})
end,
on_activate = function(self, staticdata)
self.itemstring = staticdata
if string.sub(staticdata, 1, string.len("return")) == "return" then
local data = minetest.deserialize(staticdata)
if data and type(data) == "table" then
self.itemstring = data.itemstring
self.always_collect = data.always_collect
end
else
self.itemstring = staticdata
end
self.object:set_armor_groups({immortal=1})
self.object:setvelocity({x=0, y=2, z=0})
self.object:setacceleration({x=0, y=-10, z=0})
@@ -71,9 +83,10 @@ 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
-- If node is not registered or node is walkably solid
if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable then
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
if self.physical_state then
self.object:setvelocity({x=0,y=0,z=0})
self.object:setacceleration({x=0, y=0, z=0})
@@ -96,7 +109,11 @@ minetest.register_entity("__builtin:item", {
on_punch = function(self, hitter)
if self.itemstring ~= '' then
hitter:get_inventory():add_item("main", self.itemstring)
local left = hitter:get_inventory():add_item("main", self.itemstring)
if not left:is_empty() then
self.itemstring = left:to_string()
return
end
end
self.object:remove()
end,

View File

@@ -14,14 +14,14 @@ minetest.register_globalstep(function(dtime)
for index, timer in ipairs(minetest.timers) do
timer.time = timer.time - dtime
if timer.time <= 0 then
timer.func(timer.param)
timer.func(unpack(timer.args or {}))
table.remove(minetest.timers,index)
end
end
end)
function minetest.after(time, func, param)
table.insert(minetest.timers_to_add, {time=time, func=func, param=param})
function minetest.after(time, func, ...)
table.insert(minetest.timers_to_add, {time=time, func=func, args={...}})
end
function minetest.check_player_privs(name, privs)
@@ -43,7 +43,7 @@ end
function minetest.get_connected_players()
-- This could be optimized a bit, but leave that for later
local list = {}
for _, obj in pairs(minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do
for _, obj in pairs(minetest.get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do
if obj:is_player() then
table.insert(list, obj)
end
@@ -99,3 +99,10 @@ function minetest.setting_get_pos(name)
return minetest.string_to_pos(value)
end
function minetest.formspec_escape(str)
str = string.gsub(str, "\\", "\\\\")
str = string.gsub(str, "%[", "\\[")
str = string.gsub(str, "%]", "\\]")
return str
end

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
@@ -244,12 +248,13 @@ minetest.register_item(":unknown", {
inventory_image = "unknown_item.png",
on_place = minetest.item_place,
on_drop = minetest.item_drop,
groups = {not_in_creative_inventory=1},
})
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,
@@ -258,12 +263,14 @@ minetest.register_node(":air", {
diggable = false,
buildable_to = true,
air_equivalent = true,
drop = "",
groups = {not_in_creative_inventory=1},
})
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,
@@ -272,23 +279,16 @@ minetest.register_node(":ignore", {
diggable = false,
buildable_to = true, -- A way to remove accidentally placed ignores
air_equivalent = true,
drop = "",
groups = {not_in_creative_inventory=1},
})
-- The hand (bare definition)
minetest.register_item(":", {
type = "none",
groups = {not_in_creative_inventory=1},
})
--
-- Creative inventory
--
minetest.creative_inventory = {}
minetest.add_to_creative_inventory = function(itemstring)
table.insert(minetest.creative_inventory, itemstring)
end
--
-- Callback registration
--
@@ -299,8 +299,15 @@ local function make_registration()
return t, registerfunc
end
local function make_registration_reverse()
local t = {}
local registerfunc = function(func) table.insert(t, 1, func) end
return t, registerfunc
end
minetest.registered_on_chat_messages, minetest.register_on_chat_message = make_registration()
minetest.registered_globalsteps, minetest.register_globalstep = make_registration()
minetest.registered_on_shutdown, minetest.register_on_shutdown = make_registration()
minetest.registered_on_punchnodes, minetest.register_on_punchnode = make_registration()
minetest.registered_on_placenodes, minetest.register_on_placenode = make_registration()
minetest.registered_on_dignodes, minetest.register_on_dignode = make_registration()
@@ -310,4 +317,5 @@ minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registr
minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration()
minetest.registered_on_joinplayers, minetest.register_on_joinplayer = make_registration()
minetest.registered_on_leaveplayers, minetest.register_on_leaveplayer = make_registration()
minetest.registered_on_player_receive_fields, minetest.register_on_player_receive_fields = make_registration_reverse()

View File

@@ -44,5 +44,9 @@ minetest.register_privilege("fast", {
description = "Can walk fast using the fast_move mode",
give_to_singleplayer = false,
})
minetest.register_privilege("noclip", {
description = "Can fly through walls",
give_to_singleplayer = false,
})
minetest.register_privilege("rollback", "Can use the rollback functionality")

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)

2
client/serverlist/.gitignore vendored Normal file
View File

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

View File

@@ -0,0 +1 @@
trans_alphach_ref

View File

@@ -0,0 +1,25 @@
uniform sampler2D myTexture;
uniform vec4 skyBgColor;
uniform float fogDistance;
varying vec3 vPosition;
void main (void)
{
//vec4 col = vec4(1.0, 0.0, 0.0, 1.0);
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
float a = col.a;
col *= gl_Color;
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));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, a);
}

View File

@@ -0,0 +1,58 @@
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;
// Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear
if(gl_Normal.y <= 0.5)
color *= 0.6;
//color *= 0.7;
color = sqrt(color); // Linear -> SRGB
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

View File

@@ -0,0 +1 @@
trans_alphach

View File

@@ -0,0 +1,23 @@
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 = gl_Color.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

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

@@ -0,0 +1,42 @@
# - Find curl
# Find the native CURL headers and libraries.
#
# CURL_INCLUDE_DIR - where to find curl/curl.h, etc.
# CURL_LIBRARY - List of libraries when using curl.
# CURL_FOUND - True if curl found.
if( UNIX )
FIND_PATH(CURL_INCLUDE_DIR NAMES curl.h
PATHS
/usr/local/include/curl
/usr/include/curl
)
FIND_LIBRARY(CURL_LIBRARY NAMES curl
PATHS
/usr/local/lib
/usr/lib
)
else( UNIX )
FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h) # Look for the header file.
FIND_LIBRARY(CURL_LIBRARY NAMES curl) # Look for the library.
INCLUDE(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set CURL_FOUND to TRUE if
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR) # all listed variables are TRUE
endif( UNIX )
if( WIN32 )
if( CURL_LIBRARY AND CURL_INCLUDE_DIR AND CURL_DLL ) # libcurl.dll is required on Windows
SET(CURL_FOUND TRUE)
else( CURL_LIBRARY AND CURL_INCLUDE_DIR AND CURL_DLL )
SET(CURL_FOUND FALSE)
endif( CURL_LIBRARY AND CURL_INCLUDE_DIR AND CURL_DLL )
else ( WIN32 )
if( CURL_LIBRARY AND CURL_INCLUDE_DIR )
SET(CURL_FOUND TRUE)
else( CURL_LIBRARY AND CURL_INCLUDE_DIR )
SET(CURL_FOUND FALSE)
endif( CURL_LIBRARY AND CURL_INCLUDE_DIR )
endif ( WIN32 )
MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}")
MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}")

View File

@@ -0,0 +1,18 @@
# Look for json, use our own if not found
#FIND_PATH(JSON_INCLUDE_DIR json.h)
#FIND_LIBRARY(JSON_LIBRARY NAMES jsoncpp)
#IF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
# SET( JSON_FOUND TRUE )
#ENDIF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
#IF(JSON_FOUND)
# MESSAGE(STATUS "Found system jsoncpp header file in ${JSON_INCLUDE_DIR}")
# MESSAGE(STATUS "Found system jsoncpp library ${JSON_LIBRARY}")
#ELSE(JSON_FOUND)
SET(JSON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/json)
SET(JSON_LIBRARY jsoncpp)
MESSAGE(STATUS "Using project jsoncpp library")
#ENDIF(JSON_FOUND)

View File

@@ -0,0 +1,130 @@
#-------------------------------------------------------------------
# This file is stolen from part of the CMake build system for OGRE (Object-oriented Graphics Rendering Engine) http://www.ogre3d.org/
#
# The contents of this file are placed in the public domain. Feel
# free to make use of it in any way you like.
#-------------------------------------------------------------------
# - Try to find OpenGLES and EGL
# Once done this will define
#
# OPENGLES2_FOUND - system has OpenGLES
# OPENGLES2_INCLUDE_DIR - the GL include directory
# OPENGLES2_LIBRARIES - Link these to use OpenGLES
#
# EGL_FOUND - system has EGL
# EGL_INCLUDE_DIR - the EGL include directory
# EGL_LIBRARIES - Link these to use EGL
# win32, apple, android NOT TESED
# linux tested and works
IF (WIN32)
IF (CYGWIN)
FIND_PATH(OPENGLES2_INCLUDE_DIR GLES2/gl2.h )
FIND_LIBRARY(OPENGLES2_gl_LIBRARY libGLESv2 )
ELSE (CYGWIN)
IF(BORLAND)
SET (OPENGLES2_gl_LIBRARY import32 CACHE STRING "OpenGL ES 2.x library for win32")
ELSE(BORLAND)
# todo
# SET (OPENGLES_gl_LIBRARY ${SOURCE_DIR}/Dependencies/lib/release/libGLESv2.lib CACHE STRING "OpenGL ES 2.x library for win32"
ENDIF(BORLAND)
ENDIF (CYGWIN)
ELSE (WIN32)
IF (APPLE)
create_search_paths(/Developer/Platforms)
findpkg_framework(OpenGLES2)
set(OPENGLES2_gl_LIBRARY "-framework OpenGLES")
ELSE(APPLE)
FIND_PATH(OPENGLES2_INCLUDE_DIR GLES2/gl2.h
/usr/openwin/share/include
/opt/graphics/OpenGL/include /usr/X11R6/include
/usr/include
)
FIND_LIBRARY(OPENGLES2_gl_LIBRARY
NAMES GLESv2
PATHS /opt/graphics/OpenGL/lib
/usr/openwin/lib
/usr/shlib /usr/X11R6/lib
/usr/lib
)
IF (NOT BUILD_ANDROID)
FIND_PATH(EGL_INCLUDE_DIR EGL/egl.h
/usr/openwin/share/include
/opt/graphics/OpenGL/include /usr/X11R6/include
/usr/include
)
FIND_LIBRARY(EGL_egl_LIBRARY
NAMES EGL
PATHS /opt/graphics/OpenGL/lib
/usr/openwin/lib
/usr/shlib /usr/X11R6/lib
/usr/lib
)
# On Unix OpenGL most certainly always requires X11.
# Feel free to tighten up these conditions if you don't
# think this is always true.
# It's not true on OSX.
IF (OPENGLES2_gl_LIBRARY)
IF(NOT X11_FOUND)
INCLUDE(FindX11)
ENDIF(NOT X11_FOUND)
IF (X11_FOUND)
IF (NOT APPLE)
SET (OPENGLES2_LIBRARIES ${X11_LIBRARIES})
ENDIF (NOT APPLE)
ENDIF (X11_FOUND)
ENDIF (OPENGLES2_gl_LIBRARY)
ENDIF ()
ENDIF(APPLE)
ENDIF (WIN32)
#SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
IF (BUILD_ANDROID)
IF(OPENGLES2_gl_LIBRARY)
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
SET( EGL_LIBRARIES)
SET( OPENGLES2_FOUND "YES" )
ENDIF(OPENGLES2_gl_LIBRARY)
ELSE ()
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
IF(OPENGLES2_gl_LIBRARY AND EGL_egl_LIBRARY)
SET( OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_LIBRARIES})
SET( EGL_LIBRARIES ${EGL_egl_LIBRARY} ${EGL_LIBRARIES})
SET( OPENGLES2_FOUND "YES" )
ENDIF(OPENGLES2_gl_LIBRARY AND EGL_egl_LIBRARY)
ENDIF ()
MARK_AS_ADVANCED(
OPENGLES2_INCLUDE_DIR
OPENGLES2_gl_LIBRARY
EGL_INCLUDE_DIR
EGL_egl_LIBRARY
)
IF(OPENGLES2_FOUND)
MESSAGE(STATUS "Found system opengles2 library ${OPENGLES2_LIBRARIES}")
ELSE ()
SET(OPENGLES2_LIBRARIES "")
ENDIF ()

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,12 @@
=============================
Minetest World Format 22...23
Minetest World Format 22...25
=============================
This applies to a world format carrying the block serialization version
22...23, used at least in
- 0.4.dev-20120322 ... 0.4.dev-20120606
- 0.4.0.
22...25, used at least in
- 0.4.dev-20120322 ... 0.4.dev-20120606 (22...23)
- 0.4.0 (23)
- 24 was never released as stable and existed for ~2 days
The block serialization version does not fully specify every aspect of this
format; if compliance with this format is to be checked, it needs to be
@@ -262,17 +263,26 @@ u8 flags
u8 content_width
- Number of bytes in the content (param0) fields of nodes
- Always 1
if map format version <= 23:
- Always 1
if map format version >= 24:
- Always 2
u8 params_width
- Number of bytes used for parameters per node
- Always 2
zlib-compressed node data:
- content:
u8[4096]: param0 fields
u8[4096]: param1 fields
u8[4096]: param2 fields
if content_width == 1:
- content:
u8[4096]: param0 fields
u8[4096]: param1 fields
u8[4096]: param2 fields
if content_width == 2:
- content:
u16[4096]: param0 fields
u8[4096]: param1 fields
u8[4096]: param2 fields
- The location of a node in each of those arrays is (z*16*16 + y*16 + x).
zlib-compressed node metadata list
@@ -285,9 +295,19 @@ zlib-compressed node metadata list
u16 content_size
u8[content_size] (content of metadata)
- unused node timers (version will be 24 when they are actually used):
if version == 23:
- Node timers
if map format version == 23:
u8 unused version (always 0)
if map format version == 24: (NOTE: Not released as stable)
u8 nodetimer_version
if nodetimer_version == 0:
(nothing else)
if nodetimer_version == 1:
u16 num_of_timers
foreach num_of_timers:
u16 timer position (z*16*16 + y*16 + x)
s32 timeout*1000
s32 elapsed*1000
u8 static object version:
- Always 0
@@ -317,17 +337,29 @@ foreach num_name_id_mappings
u16 name_len
u8[name_len] name
- Node timers
if map format version == 25:
u8 length of the data of a single timer (always 2+4+4=10)
u16 num_of_timers
foreach num_of_timers:
u16 timer position (z*16*16 + y*16 + x)
s32 timeout*1000
s32 elapsed*1000
EOF.
Format of nodes
----------------
A node is composed of the u8 fields param0, param1 and param2.
The content id of a node is determined as so:
- If param0 < 0x80,
content_id = param0
- Otherwise
content_id = (param0<<4) + (param2>>4)
if map format version <= 23:
The content id of a node is determined as so:
- If param0 < 0x80,
content_id = param0
- Otherwise
content_id = (param0<<4) + (param2>>4)
if map format version >= 24:
The content id of a node is param0.
The purpose of param1 and param2 depend on the definition of the node.

View File

@@ -41,7 +41,7 @@ Show allowed options
Set logfile path (debug.txt)
.TP
\-\-map\-dir <value>
Same as --world (deprecated)
Same as \-\-world (deprecated)
.TP
\-\-name <value>
Set player name
@@ -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

@@ -35,7 +35,7 @@ Show allowed options
Set logfile path (debug.txt)
.TP
\-\-map\-dir <value>
Same as --world (deprecated)
Same as \-\-world (deprecated)
.TP
\-\-port <value>
Set network port (UDP) to use
@@ -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)

View File

@@ -1,4 +1,4 @@
Minetest-c55 protocol (incomplete, early draft):
Minetest protocol (incomplete, early draft):
Updated 2011-06-18
A custom protocol over UDP.
@@ -70,3 +70,39 @@ function check_if_minetestserver_up($host, $port)
return false;
}
- Here's a Python script for checking if a minetest server is up, confirmed working
#!/usr/bin/env python
import sys, time, socket
address = ""
port = 30000
if len(sys.argv) <= 1:
print("Usage: %s <address>" % sys.argv[0])
exit()
if ':' in sys.argv[1]:
address = sys.argv[1].split(':')[0]
try:
port = int(sys.argv[1].split(':')[1])
except ValueError:
print("Please specify a valid port")
exit()
else:
address = sys.argv[1]
try:
start = time.time()
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2.0)
buf = "\x4f\x45\x74\x03\x00\x00\x00\x01"
sock.sendto(buf, (address, port))
data, addr = sock.recvfrom(1000)
if data:
peer_id = data[12:14]
buf = "\x4f\x45\x74\x03" + peer_id + "\x00\x00\x03"
sock.sendto(buf, (address, port))
sock.close()
end = time.time()
print("%s is up (%0.5fms)" % (sys.argv[1],end-start))
else:
print("%s seems to be down " % sys.argv[1])
except:
print("%s seems to be down " % sys.argv[1])

BIN
fonts/liberationmono.ttf Normal file

Binary file not shown.

BIN
fonts/liberationsans.ttf Normal file

Binary file not shown.

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

@@ -14,6 +14,14 @@ default = {}
-- Load other files
dofile(minetest.get_modpath("default").."/mapgen.lua")
-- Set a noticeable inventory formspec for players
minetest.register_on_joinplayer(function(player)
local cb = function(player)
minetest.chat_send_player(player:get_player_name(), "This is the [minimal] \"Minimal Development Test\" game. Use [minetest_game] for the real thing.")
end
minetest.after(2.0, cb, player)
end)
--
-- Tool definition
--
@@ -651,6 +659,8 @@ function default.node_sound_dirt_defaults(table)
{name="", gain=0.5}
--table.dug = table.dug or
-- {name="default_dirt_break", gain=0.5}
table.place = table.place or
{name="default_grass_footstep", gain=0.5}
default.node_sound_defaults(table)
return table
end
@@ -731,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},
@@ -742,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},
@@ -753,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(),
})
@@ -761,7 +771,7 @@ minetest.register_node("default:sand", {
description = "Sand",
tiles ={"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3},
groups = {crumbly=3, falling_node=1},
sounds = default.node_sound_sand_defaults(),
})
@@ -769,7 +779,7 @@ minetest.register_node("default:gravel", {
description = "Gravel",
tiles ={"default_gravel.png"},
is_ground_content = true,
groups = {crumbly=2},
groups = {crumbly=2, falling_node=1},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.45},
}),
@@ -829,7 +839,7 @@ minetest.register_node("default:junglegrass", {
wield_image = "default_junglegrass.png",
paramtype = "light",
walkable = false,
groups = {snappy=3},
groups = {snappy=3,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
@@ -1098,7 +1108,7 @@ minetest.register_node("default:torch", {
wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
},
groups = {choppy=2,dig_immediate=3},
groups = {choppy=2,dig_immediate=3,attached_node=1},
legacy_wallmounted = true,
sounds = default.node_sound_defaults(),
})
@@ -1119,18 +1129,18 @@ minetest.register_node("default:sign_wall", {
--wall_bottom = <default>
--wall_side = <default>
},
groups = {choppy=2,dig_immediate=2},
groups = {choppy=2,dig_immediate=2,attached_node=1},
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)
meta:set_string("formspec", "hack:sign_text_input")
--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))
@@ -1148,9 +1158,9 @@ 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",
"invsize[8,9;]"..
"size[8,9]"..
"list[current_name;main;0,0;8,4;]"..
"list[current_player;main;0,5;8,4;]")
meta:set_string("infotext", "Chest")
@@ -1158,29 +1168,10 @@ 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,
on_metadata_inventory_move = function(pos, from_list, from_index,
to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_move_allow_all(
pos, from_list, from_index, to_list, to_index, count, player)
end,
on_metadata_inventory_offer = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_offer_allow_all(
pos, listname, index, stack, player)
end,
on_metadata_inventory_take = function(pos, listname, index, count, player)
minetest.log("action", player:get_player_name()..
" takes stuff from chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_take_allow_all(
pos, listname, index, count, player)
end,
})
local function has_locked_chest_privilege(meta, player)
@@ -1199,15 +1190,15 @@ 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",
"invsize[8,9;]"..
"size[8,9]"..
"list[current_name;main;0,0;8,4;]"..
"list[current_player;main;0,5;8,4;]")
meta:set_string("infotext", "Locked Chest")
@@ -1216,57 +1207,59 @@ 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,
on_metadata_inventory_move = function(pos, from_list, from_index,
to_list, to_index, count, player)
local meta = minetest.env:get_meta(pos)
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
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 "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
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 "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
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 "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_move_allow_all(
pos, from_list, from_index, to_list, to_index, count, player)
end,
on_metadata_inventory_offer = function(pos, listname, index, stack, player)
local meta = minetest.env: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 "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return stack
end
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_offer_allow_all(
pos, listname, index, stack, player)
end,
on_metadata_inventory_take = function(pos, listname, index, count, player)
local meta = minetest.env: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 "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return
end
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked chest at "..minetest.pos_to_string(pos))
return minetest.node_metadata_inventory_take_allow_all(
pos, listname, index, count, player)
end,
})
default.furnace_inactive_formspec =
"invsize[8,9;]"..
"size[8,9]"..
"image[2,2;1,1;default_furnace_fire_bg.png]"..
"list[current_name;fuel;2,3;1,1;]"..
"list[current_name;src;2,1;1,1;]"..
@@ -1282,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()
@@ -1291,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
@@ -1315,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()
@@ -1324,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
@@ -1338,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
@@ -1356,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",
@@ -1393,7 +1386,7 @@ minetest.register_abm({
srcstack:take_item()
inv:set_stack("src", 1, srcstack)
else
print("Could not insert '"..cooked.item.."'")
print("Could not insert '"..cooked.item:to_string().."'")
end
meta:set_string("src_time", 0)
end
@@ -1405,7 +1398,7 @@ minetest.register_abm({
meta:set_string("infotext","Furnace active: "..percent.."%")
hacky_swap_node(pos,"default:furnace_active")
meta:set_string("formspec",
"invsize[8,9;]"..
"size[8,9]"..
"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
(100-percent)..":default_furnace_fire_fg.png]"..
"list[current_name;fuel;2,3;1,1;]"..
@@ -1504,7 +1497,7 @@ minetest.register_node("default:sapling", {
wield_image = "default_sapling.png",
paramtype = "light",
walkable = false,
groups = {snappy=2,dig_immediate=3},
groups = {snappy=2,dig_immediate=3,attached_node=1},
sounds = default.node_sound_defaults(),
})
@@ -1572,40 +1565,6 @@ minetest.register_craftitem("default:scorched_stuff", {
inventory_image = "default_scorched_stuff.png",
})
--
-- Creative inventory
--
minetest.add_to_creative_inventory('default:pick_mese')
minetest.add_to_creative_inventory('default:pick_steel')
minetest.add_to_creative_inventory('default:axe_steel')
minetest.add_to_creative_inventory('default:shovel_steel')
minetest.add_to_creative_inventory('default:torch')
minetest.add_to_creative_inventory('default:cobble')
minetest.add_to_creative_inventory('default:dirt')
minetest.add_to_creative_inventory('default:stone')
minetest.add_to_creative_inventory('default:sand')
minetest.add_to_creative_inventory('default:sandstone')
minetest.add_to_creative_inventory('default:clay')
minetest.add_to_creative_inventory('default:brick')
minetest.add_to_creative_inventory('default:tree')
minetest.add_to_creative_inventory('default:wood')
minetest.add_to_creative_inventory('default:leaves')
minetest.add_to_creative_inventory('default:cactus')
minetest.add_to_creative_inventory('default:papyrus')
minetest.add_to_creative_inventory('default:bookshelf')
minetest.add_to_creative_inventory('default:glass')
minetest.add_to_creative_inventory('default:fence_wood')
minetest.add_to_creative_inventory('default:rail')
minetest.add_to_creative_inventory('default:mese')
minetest.add_to_creative_inventory('default:chest')
minetest.add_to_creative_inventory('default:furnace')
minetest.add_to_creative_inventory('default:sign_wall')
minetest.add_to_creative_inventory('default:water_source')
minetest.add_to_creative_inventory('default:lava_source')
minetest.add_to_creative_inventory('default:ladder')
--
-- Aliases for the current map generator outputs
--
@@ -1629,73 +1588,22 @@ 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")
--
-- Some common functions
--
default.falling_node_names = {}
function nodeupdate_single(p)
n = minetest.env:get_node(p)
if default.falling_node_names[n.name] ~= nil then
p_bottom = {x=p.x, y=p.y-1, z=p.z}
n_bottom = minetest.env:get_node(p_bottom)
if n_bottom.name == "air" then
minetest.env:remove_node(p)
minetest.env:add_entity(p, "default:falling_"..n.name)
nodeupdate(p)
end
end
-- Support old code
function default.spawn_falling_node(p, nodename)
spawn_falling_node(p, nodename)
end
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)
end
end
end
end
--
-- Falling stuff
--
-- Horrible crap to support old code
-- Don't use this and never do what this does, it's completely wrong!
-- (More specifically, the client and the C++ code doesn't get the group)
function default.register_falling_node(nodename, texture)
default.falling_node_names[nodename] = true
-- Override naming conventions for stuff like :default:falling_default:sand
minetest.register_entity(":default:falling_"..nodename, {
-- Static definition
physical = true,
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
visual = "cube",
textures = {texture,texture,texture,texture,texture,texture},
-- State
-- Methods
on_step = function(self, dtime)
-- Set gravity
self.object:setacceleration({x=0, y=-10, z=0})
-- 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)
if bcn.name ~= "air" then
-- Turn to a sand node
local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
minetest.env:add_node(np, {name=nodename})
self.object:remove()
else
-- Do nothing
end
end
})
minetest.log("error", debug.traceback())
minetest.log('error', "WARNING: default.register_falling_node is deprecated")
if minetest.registered_nodes[nodename] then
minetest.registered_nodes[nodename].groups.falling_node = 1
end
end
default.register_falling_node("default:sand", "default_sand.png")
default.register_falling_node("default:gravel", "default_gravel.png")
--
-- Global callbacks
--
@@ -1708,13 +1616,11 @@ minetest.register_globalstep(on_step)
function on_placenode(p, node)
--print("on_placenode")
nodeupdate(p)
end
minetest.register_on_placenode(on_placenode)
function on_dignode(p, node)
--print("on_dignode")
nodeupdate(p)
end
minetest.register_on_dignode(on_dignode)
@@ -1722,133 +1628,24 @@ function on_punchnode(p, node)
end
minetest.register_on_punchnode(on_punchnode)
local function handle_give_command(cmd, giver, receiver, stackstring)
if not minetest.get_player_privs(giver)["give"] then
minetest.chat_send_player(giver, "error: you don't have permission to give")
return
end
minetest.debug("DEBUG: "..cmd..' invoked, stackstring="'..stackstring..'"')
minetest.log(cmd..' invoked, stackstring="'..stackstring..'"')
local itemstack = ItemStack(stackstring)
if itemstack:is_empty() then
minetest.chat_send_player(giver, 'error: cannot give an empty item')
return
elseif not itemstack:is_known() then
minetest.chat_send_player(giver, 'error: cannot give an unknown item')
return
end
local receiverref = minetest.env:get_player_by_name(receiver)
if receiverref == nil then
minetest.chat_send_player(giver, receiver..' is not a known player')
return
end
local leftover = receiverref:get_inventory():add_item("main", itemstack)
if leftover:is_empty() then
partiality = ""
elseif leftover:get_count() == itemstack:get_count() then
partiality = "could not be "
else
partiality = "partially "
end
-- The actual item stack string may be different from what the "giver"
-- entered (e.g. big numbers are always interpreted as 2^16-1).
stackstring = itemstack:to_string()
if giver == receiver then
minetest.chat_send_player(giver, '"'..stackstring
..'" '..partiality..'added to inventory.');
else
minetest.chat_send_player(giver, '"'..stackstring
..'" '..partiality..'added to '..receiver..'\'s inventory.');
minetest.chat_send_player(receiver, '"'..stackstring
..'" '..partiality..'added to inventory.');
end
end
minetest.register_on_chat_message(function(name, message)
--print("default on_chat_message: name="..dump(name).." message="..dump(message))
local cmd = "/giveme"
if message:sub(0, #cmd) == cmd then
local stackstring = string.match(message, cmd.." (.*)")
if stackstring == nil then
minetest.chat_send_player(name, 'usage: '..cmd..' stackstring')
return true -- Handled chat message
end
handle_give_command(cmd, name, name, stackstring)
return true
end
local cmd = "/give"
if message:sub(0, #cmd) == cmd then
local receiver, stackstring = string.match(message, cmd.." ([%a%d_-]+) (.*)")
if receiver == nil or stackstring == nil then
minetest.chat_send_player(name, 'usage: '..cmd..' name stackstring')
return true -- Handled chat message
end
handle_give_command(cmd, name, receiver, stackstring)
return true
end
local cmd = "/spawnentity"
if message:sub(0, #cmd) == cmd then
if not minetest.get_player_privs(name)["give"] then
minetest.chat_send_player(name, "you don't have permission to spawn (give)")
return true -- Handled chat message
end
if not minetest.get_player_privs(name)["interact"] then
minetest.chat_send_player(name, "you don't have permission to interact")
return true -- Handled chat message
end
local entityname = string.match(message, cmd.." (.*)")
if entityname == nil then
minetest.chat_send_player(name, 'usage: '..cmd..' entityname')
return true -- Handled chat message
end
print(cmd..' invoked, entityname="'..entityname..'"')
local player = minetest.env: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.chat_send_player(name, '"'..entityname
..'" spawned.');
return true -- Handled chat message
end
local cmd = "/pulverize"
if message:sub(0, #cmd) == cmd then
local player = minetest.env:get_player_by_name(name)
if player == nil then
print("Unable to pulverize, player is nil")
return true -- Handled chat message
end
if player:get_wielded_item():is_empty() then
minetest.chat_send_player(name, 'Unable to pulverize, no item in hand.')
else
player:set_wielded_item(nil)
minetest.chat_send_player(name, 'An item was pulverized.')
end
return true
end
end)
--
-- Test some things
--
local function test_get_craft_result()
print("test_get_craft_result()")
minetest.log("info", "test_get_craft_result()")
-- normal
local input = {
method = "normal",
width = 2,
items = {"", "default:coal_lump", "", "default:stick"}
}
print("torch crafting input: "..dump(input))
minetest.log("info", "torch crafting input: "..dump(input))
local output, decremented_input = minetest.get_craft_result(input)
print("torch crafting output: "..dump(output))
print("torch crafting decremented input: "..dump(decremented_input))
minetest.log("info", "torch crafting output: "..dump(output))
minetest.log("info", "torch crafting decremented input: "..dump(decremented_input))
assert(output.item)
print("torch crafting output.item:to_table(): "..dump(output.item:to_table()))
minetest.log("info", "torch crafting output.item:to_table(): "..dump(output.item:to_table()))
assert(output.item:get_name() == "default:torch")
assert(output.item:get_count() == 4)
-- fuel
@@ -1857,10 +1654,10 @@ local function test_get_craft_result()
width = 1,
items = {"default:coal_lump"}
}
print("coal fuel input: "..dump(input))
minetest.log("info", "coal fuel input: "..dump(input))
local output, decremented_input = minetest.get_craft_result(input)
print("coal fuel output: "..dump(output))
print("coal fuel decremented input: "..dump(decremented_input))
minetest.log("info", "coal fuel output: "..dump(output))
minetest.log("info", "coal fuel decremented input: "..dump(decremented_input))
assert(output.time)
assert(output.time > 0)
-- cook
@@ -1869,14 +1666,14 @@ local function test_get_craft_result()
width = 1,
items = {"default:cobble"}
}
print("cobble cooking input: "..dump(output))
minetest.log("info", "cobble cooking input: "..dump(output))
local output, decremented_input = minetest.get_craft_result(input)
print("cobble cooking output: "..dump(output))
print("cobble cooking decremented input: "..dump(decremented_input))
minetest.log("info", "cobble cooking output: "..dump(output))
minetest.log("info", "cobble cooking decremented input: "..dump(decremented_input))
assert(output.time)
assert(output.time > 0)
assert(output.item)
print("cobble cooking output.item:to_table(): "..dump(output.item:to_table()))
minetest.log("info", "cobble cooking output.item:to_table(): "..dump(output.item:to_table()))
assert(output.item:get_name() == "default:stone")
assert(output.item:get_count() == 1)
end

View File

@@ -27,52 +27,74 @@ minetest.register_alias("mapgen_mese", "default:mese")
-- Ore generation
--
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max)
if maxp.y < height_min or minp.y > height_max then
return
end
local y_min = math.max(minp.y, height_min)
local y_max = math.min(maxp.y, height_max)
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
local pr = PseudoRandom(seed)
local num_chunks = math.floor(chunks_per_volume * volume)
local chunk_size = 3
if ore_per_chunk <= 4 then
chunk_size = 2
end
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
--print("generate_ore num_chunks: "..dump(num_chunks))
for i=1,num_chunks do
local y0 = pr:next(y_min, y_max-chunk_size+1)
if y0 >= height_min and y0 <= height_max then
local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
local p0 = {x=x0, y=y0, z=z0}
for x1=0,chunk_size-1 do
for y1=0,chunk_size-1 do
for z1=0,chunk_size-1 do
if pr:next(1,inverse_chance) == 1 then
local x2 = x0+x1
local y2 = y0+y1
local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2}
if minetest.env:get_node(p2).name == wherein then
minetest.env:set_node(p2, {name=name})
end
end
end
end
end
end
end
--print("generate_ore done")
end
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_coal",
wherein = "default:stone",
clust_scarcity = 8*8*8,
clust_num_ores = 5,
clust_size = 3,
height_min = -31000,
height_max = 64,
})
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_iron",
wherein = "default:stone",
clust_scarcity = 16*16*16,
clust_num_ores = 5,
clust_size = 3,
height_min = -5,
height_max = 7,
})
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_iron",
wherein = "default:stone",
clust_scarcity = 12*12*12,
clust_num_ores = 5,
clust_size = 3,
height_min = -16,
height_max = -5,
})
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_iron",
wherein = "default:stone",
clust_scarcity = 9*9*9,
clust_num_ores = 5,
clust_size = 3,
height_min = -31000,
height_max = -17,
})
-- for float islands and far scaled
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_coal",
wherein = "default:stone",
clust_scarcity = 8*8*8,
clust_num_ores = 5,
clust_size = 3,
height_min = 200,
height_max = 31000,
})
minetest.register_ore({
ore_type = "scatter",
ore = "default:stone_with_iron",
wherein = "default:stone",
clust_scarcity = 9*9*9,
clust_num_ores = 5,
clust_size = 3,
height_min = 200,
height_max = 31000,
})
minetest.register_on_generated(function(minp, maxp, seed)
generate_ore("default:stone_with_coal", "default:stone", minp, maxp, seed, 1/8/8/8, 5, -31000, 64)
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+1, 1/16/16/16, 5, -5, 7)
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+2, 1/12/12/12, 5, -16, -5)
generate_ore("default:stone_with_iron", "default:stone", minp, maxp, seed+3, 1/9/9/9, 5, -31000, -17)
-- Generate clay
if maxp.y >= 2 and minp.y <= 0 then
-- Assume X and Z lengths are equal
@@ -82,17 +104,17 @@ minetest.register_on_generated(function(minp, maxp, seed)
for divz=0+1,divs-1-1 do
local cx = minp.x + math.floor((divx+0.5)*divlen)
local cz = minp.z + math.floor((divz+0.5)*divlen)
if minetest.env:get_node({x=cx,y=1,z=cz}).name == "default:water_source" and
minetest.env:get_node({x=cx,y=0,z=cz}).name == "default:sand" then
if minetest.get_node({x=cx,y=1,z=cz}).name == "default:water_source" and
minetest.get_node({x=cx,y=0,z=cz}).name == "default:sand" then
local is_shallow = true
local num_water_around = 0
if minetest.env:get_node({x=cx-divlen*2,y=1,z=cz+0}).name == "default:water_source" then
if minetest.get_node({x=cx-divlen*2,y=1,z=cz+0}).name == "default:water_source" then
num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx+divlen*2,y=1,z=cz+0}).name == "default:water_source" then
if minetest.get_node({x=cx+divlen*2,y=1,z=cz+0}).name == "default:water_source" then
num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx+0,y=1,z=cz-divlen*2}).name == "default:water_source" then
if minetest.get_node({x=cx+0,y=1,z=cz-divlen*2}).name == "default:water_source" then
num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx+0,y=1,z=cz+divlen*2}).name == "default:water_source" then
if minetest.get_node({x=cx+0,y=1,z=cz+divlen*2}).name == "default:water_source" then
num_water_around = num_water_around + 1 end
if num_water_around >= 2 then
is_shallow = false
@@ -100,8 +122,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
if is_shallow then
for x1=-divlen,divlen do
for z1=-divlen,divlen do
if minetest.env:get_node({x=cx+x1,y=0,z=cz+z1}).name == "default:sand" then
minetest.env:set_node({x=cx+x1,y=0,z=cz+z1}, {name="default:clay"})
if minetest.get_node({x=cx+x1,y=0,z=cz+z1}).name == "default:sand" then
minetest.set_node({x=cx+x1,y=0,z=cz+z1}, {name="default:clay"})
end
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 231 B

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,35 +431,37 @@ 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,
})--]]
minetest.register_node("experimental:tester_node_1", {
description = "Tester Node 1",
description = "Tester Node 1 (construct/destruct/timer)",
tile_images = {"wieldhand.png"},
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.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
@@ -478,6 +480,11 @@ minetest.register_node("experimental:tester_node_1", {
after_dig_node = function(pos, oldnode, oldmetadata, digger)
experimental.print_to_everything("experimental:tester_node_1:after_dig_node("..minetest.pos_to_string(pos)..")")
end,
on_timer = function(pos, elapsed)
experimental.print_to_everything("on_timer(): elapsed="..dump(elapsed))
return true
end,
})
minetest.register_craftitem("experimental:tester_tool_1", {
@@ -486,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,
@@ -509,7 +516,7 @@ minetest.register_craft({
--[[minetest.register_on_joinplayer(function(player)
minetest.after(3, function()
player:set_inventory_formspec("invsize[8,7.5;]"..
player:set_inventory_formspec("size[8,7.5]"..
"image[1,0.6;1,2;player.png]"..
"list[current_player;main;0,3.5;8,4;]"..
"list[current_player;craft;3,0;3,3;]"..
@@ -517,6 +524,67 @@ minetest.register_craft({
end)
end)]]
-- Create a detached inventory
local inv = minetest.create_detached_inventory("test_inventory", {
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
experimental.print_to_everything("allow move asked")
return count -- Allow all
end,
allow_put = function(inv, listname, index, stack, player)
experimental.print_to_everything("allow put asked")
return 1 -- Allow only 1
end,
allow_take = function(inv, listname, index, stack, player)
experimental.print_to_everything("allow take asked")
return 4 -- Allow 4 at max
end,
on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
experimental.print_to_everything(player:get_player_name().." moved items")
end,
on_put = function(inv, listname, index, stack, player)
experimental.print_to_everything(player:get_player_name().." put items")
end,
on_take = function(inv, listname, index, stack, player)
experimental.print_to_everything(player:get_player_name().." took items")
end,
})
inv:set_size("main", 4*6)
inv:add_item("main", "experimental:tester_tool_1")
inv:add_item("main", "experimental:tnt 5")
minetest.register_chatcommand("test1", {
params = "",
description = "Test 1: Modify player's inventory view",
func = function(name, param)
local player = minetest.get_player_by_name(name)
if not player then
return
end
player:set_inventory_formspec(
"size[13,7.5]"..
"image[6,0.6;1,2;player.png]"..
"list[current_player;main;5,3.5;8,4;]"..
"list[current_player;craft;8,0;3,3;]"..
"list[current_player;craftpreview;12,1;1,1;]"..
"list[detached:test_inventory;main;0,0;4,6;0]"..
"button[0.5,7;2,1;button1;Button 1]"..
"button_exit[2.5,7;2,1;button2;Exit Button]"
)
minetest.chat_send_player(name, "Done.");
end,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
experimental.print_to_everything("Inventory fields 1: player="..player:get_player_name()..", fields="..dump(fields))
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
experimental.print_to_everything("Inventory fields 2: player="..player:get_player_name()..", fields="..dump(fields))
return true -- Disable the first callback
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
experimental.print_to_everything("Inventory fields 3: player="..player:get_player_name()..", fields="..dump(fields))
end)
minetest.log("experimental modname="..dump(minetest.get_current_modname()))
minetest.log("experimental modpath="..dump(minetest.get_modpath("experimental")))
minetest.log("experimental worldpath="..dump(minetest.get_worldpath()))

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,14 +8,14 @@
# 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/\tg_settings\.setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g
# :'<,'>s/\tsettings->setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g
# Note: Some of the settings are implemented in Lua
#
@@ -49,8 +49,18 @@
#keymap_freemove = KEY_KEY_K
#keymap_fastmove = KEY_KEY_J
#keymap_screenshot = KEY_F12
# If true, keymap_special1 instead of keymap_sneak is used for climbing down and descending
#aux1_descends = false
# Doubletaping the jump key toogles fly mode
#doubletap_jump = false
# If false aux1 is used to fly fast
#always_fly_fast = true
# Some (temporary) keys for debugging
#keymap_print_debug_stacks = KEY_KEY_P
#keymap_quicktune_prev = KEY_HOME
#keymap_quicktune_next = KEY_END
#keymap_quicktune_dec = KEY_NEXT
#keymap_quicktune_inc = KEY_PRIOR
# Minimum FPS
# The amount of rendered stuff is dynamically set according to this
@@ -70,6 +80,7 @@
# when set to higher number than 0
#fsaa = 0
#vsync = false
#fov = 72
# Address to connect to (#blank = start local server)
#address =
# Enable random user input, for testing
@@ -80,6 +91,16 @@
#enable_fog = true
# Enable a bit lower water surface; disable for speed (not quite optimized)
#new_style_water = false
# Constant volume liquids
#liquid_finite = false
# Update liquids every .. recommend for finite: 0.2
#liquid_update = 1.0
# When finite liquid: relax flowing blocks to source if level near max and N nearby source blocks, more realistic, but not true constant. values: 0,1,2,3,4 : 0 - disable, 1 - most aggresive
#liquid_relax = 2
# Optimization: faster cave flood (and not true constant)
#liquid_fast_flood = 1
# Underground water and lava springs, its infnity sources if liquid_finite enabled
#underground_springs = 1
# Enable nice leaves; disable for speed
#new_style_leaves = true
# Enable smooth lighting with simple ambient occlusion;
@@ -87,7 +108,7 @@
#smooth_lighting = true
# Enable combining mainly used textures to a bigger one for improved speed
# disable if it causes graphics glitches.
#enable_texture_atlas = true
#enable_texture_atlas = false
# Path to texture directory. All textures are first searched from here.
#texture_path =
# Video back-end.
@@ -107,24 +128,79 @@
#farmesh_distance = 40
# Enable/disable clouds
#enable_clouds = true
#cloud_height = 120
#enable_3d_clouds = true
# Use a cloud animation for the main menu background
#menu_clouds = true
# Path for screenshots
#screenshot_path = .
# Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double)
#view_bobbing_amount = 1.0
# Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double)
#fall_bobbing_amount = 0.0
# Anaglyph stereo
#anaglyph = false
#anaglyph_strength = 0.1
# In-game chat console background color (R,G,B)
#console_color = (0,0,0)
# In-game chat console background alpha (opaqueness, between 0 and 255)
#console_alpha = 200
# Selection box border color (R,G,B)
#selectionbox_color = (0,0,0)
# Crosshair color (R,G,B)
#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
# Whether node texture animations should be desynchronized per MapBlock
#desynchronize_mapblock_texture_animation = true
# Texture filtering settings
#mip_map = false
#anisotropic_filter = false
#bilinear_filter = false
#trilinear_filter = false
# Set to true to pre-generate all item visuals
#preload_item_visuals = true
# 0: disable shaders
# (1: low level shaders; not implemented)
# 2: enable high level shaders
#enable_shaders = 2
# The time in seconds it takes between repeated
# right clicks when holding the right mouse button
#repeat_rightclick_time = 0.25
# will only work for servers which use remote_media setting
# and only for clients compiled with cURL
#media_fetch_threads = 8
# Url to the server list displayed in the Multiplayer Tab
#serverlist_url = servers.minetest.net
# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab
#serverlist_file = favoriteservers.txt
#font_path = fonts/liberationsans.ttf
#font_size = 13
#mono_font_path = fonts/liberationmono.ttf
#mono_font_size = 13
#
# Server stuff
#
# Name of server
#server_name = Minetest server
# Description of server
#server_description = mine here
# Domain name of server
#server_address = game.minetest.net
# Homepage of server
#server_url = http://minetest.net
# Automaticaly report to masterserver
#server_announce = 0
# Default game (default when creating a new world)
#default_game = minetest
# World directory (everything in the world is stored here)
@@ -133,8 +209,8 @@
#motd = Welcome to this awesome Minetest server!
# Maximum number of players connected simultaneously
#max_users = 100
# Set to false to allow old clients to connect
#strict_protocol_version_checking = true
# Set to true to disallow old clients from connecting
#strict_protocol_version_checking = false
# Set to true to enable creative mode (unlimited inventory)
#creative_mode = false
# Enable players getting damage and dying
@@ -160,6 +236,8 @@
#disallow_empty_password = false
# If true, disable cheat prevention in multiplayer
#disable_anticheat = false
# If true, actions are recorded for rollback
#enable_rollback_recording = false
# Profiler data print interval. #0 = disable.
#profiler_print_interval = 0
@@ -176,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
@@ -186,7 +268,96 @@
# To reduce lag, block transfers are slowed down when a player is building something.
# This determines how long they are slowed down after placing or removing a node.
#full_block_send_enable_min_time_from_building = 2.0
# Length of a server tick in dedicated server
#dedicated_server_step = 0.05
# Length of a server tick and the interval at which objects are generally updated over network
#dedicated_server_step = 0.1
# Can be set to true to disable shutting down on invalid world data
#ignore_world_load_errors = false
# Congestion control parameters
# time in seconds, rate in ~500B packets
#congestion_control_aim_rtt = 0.2
#congestion_control_max_rate = 400
#congestion_control_min_rate = 10
# Specifies URL from which client fetches media instead of using UDP
# $filename should be accessible from $remote_media$filename via cURL
# (obviously, remote_media should end with a slash)
# Files that are not present would be fetched the usual way
#remote_media =
# Level of logging to be written to debug.txt.
# 0 = none, 1 = errors and debug, 2 = action, 3 = info, 4 = verbose
#debug_log_level = 2
# Maximum number of blocks that can be queued for loading.
#emergequeue_limit_total = 256
# Maximum number of blocks to be queued that are to be loaded from file.
# Leave blank for an appropriate amount to be chosen automatically.
#emergequeue_limit_diskonly =
# Maximum number of blocks to be queued that are to be generated.
# Leave blank for an appropriate amount to be chosen automatically.
#emergequeue_limit_generate =
# Number of emerge threads to use. Make this field blank, or increase this number, to use multiple threads.
# On multiprocessor systems, this will improve mapgen speed greatly, at the cost of slightly buggy caves.
#num_emerge_threads = 1
#
# Physics stuff
#
#movement_acceleration_default = 3
#movement_acceleration_air = 2
#movement_acceleration_fast = 10
#movement_speed_walk = 4
#movement_speed_crouch = 1.35
#movement_speed_fast = 20
#movement_speed_climb = 2
#movement_speed_jump = 6.5
#movement_speed_descend = 6
#movement_liquid_fluidity = 1
#movement_liquid_fluidity_smooth = 0.5
#movement_liquid_sink = 10
#movement_gravity = 9.81
#
# Mapgen stuff
#
# Name of map generator to be used. Currently v6, indev and singlenode are supported.
#mg_name = v6
# Water level of map.
#water_level = 1
# Size of chunks to be generated.
#chunksize = 5
# Map generation attributes. Currently supported: trees, caves, flat, v6_biome_blend, v6_jungles, dungeons
#mg_flags = trees, caves, v6_biome_blend
# How large deserts and beaches are
#mgv6_freq_desert = 0.45
#mgv6_freq_beach = 0.15
# Perlin noise attributes for different map generation parameters
# Offset, scale, spread factor, seed offset, number of octaves, persistence
#mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6
#mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6
#mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7
#mgv6_np_height_select = 0.5, 1, (250, 250, 250), 4213, 5, 0.69
#mgv6_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55
#mgv6_np_beach = 0, 1, (250, 250, 250), 59420, 3, 0.50
#mgv6_np_biome = 0, 1, (250, 250, 250), 9130, 3, 0.50
#mgv6_np_cave = 6, 6, (250, 250, 250), 34329, 3, 0.50
#mgv6_np_humidity = 0.5, 0.5, (500, 500, 500), 72384, 4, 0.66
#mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66
#mgv6_np_apple_trees = 0, 1, (100, 100, 100), 342902, 3, 0.45
#mgv7_np_terrain = 10, 12, (350, 350, 350), 82341, 5, 0.6
#mgv7_np_bgroup = 0.5, 0.3125, (350, 350, 350), 5923, 2, 0.6
#mgv7_np_heat = 25, 50, (500, 500, 500), 35293, 1, 0
#mgv7_np_humidity = 50, 31.25, (750, 750, 750), 12094, 2, 0.6
# Offset, scale, spread factor, seed offset, number of octaves, persistence, farscale, farspread
#mgindev_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 10, 10
#mgindev_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6, 10, 10
#mgindev_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2, 10
#mgindev_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55, 1, 1
#mgindev_np_float_islands1 = 0, 1, (64, 64, 64 ), 3683, 5, 0.5, 1, 1.5
#mgindev_np_float_islands2 = 0, 1, (8, 8, 8 ), 9292, 2, 0.5, 1, 1.5
#mgindev_np_float_islands3 = 0, 1, (256, 256, 256), 6412, 2, 0.5, 1, 0.5
#mgindev_np_biome = 0, 1, (250, 250, 250), 9130, 3, 0.50, 1, 10
# Float islands starts from height, 0 to disable
#mgindev_float_islands = 500

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

@@ -1,4 +1,4 @@
Minetest-c55 changelog
Minetest changelog
----------------------
This should contain all the major changes.
For minor stuff, refer to the commit log of the repository.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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"

832
po/es/minetest.po Normal file
View File

@@ -0,0 +1,832 @@
# 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-16 14:51+0200\n"
"Last-Translator: Diego Martínez <lkaezadl3@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"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 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. "
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:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"ADVERTENCIA: Algunos mods configurados faltan.\n"
"Su ajuste se quitará al guardar la configuración. "
#: src/guiConfigureWorld.cpp:208
msgid "enabled"
msgstr "Activado"
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Activar todos"
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Desactivar todos"
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "Dependencias:"
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "es requerido por:"
#: 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 "Guardar"
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Configuración guardada. "
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "ADVERTENCIA: La configuración no corresponde. "
#: src/guiConfirmMenu.cpp:119
msgid "Yes"
msgstr "Sí"
#: src/guiConfirmMenu.cpp:127
msgid "No"
msgstr "No"
#: src/guiCreateWorld.cpp:125
msgid "World name"
msgstr "Nombre del mundo"
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Juego"
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Crear"
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr "Has muerto."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Revivir"
#: src/guiFormSpecMenu.cpp:582
msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
"Click izquierdo: Mover todos los objetos. Click derecho: Mover un objeto."
#: src/guiFormSpecMenu.cpp: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 ""
"Combinaciones de teclas.(Si este menú da error, cambiar configuración en "
"minetest.conf)"
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "\"Usar\" = Descender"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Dos veces \"saltar\" para volar"
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "La tecla se está utilizando"
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "Pulsa una tecla"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Adelante"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Atrás"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Izquierda"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Derecha"
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Usar"
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Saltar"
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Caminar"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Tirar"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Inventario"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Chat"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Comando"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Consola"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Activar Volar"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Activar Modo Rápido"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "Activar noclip"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Seleccionar distancia"
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Imprimir Pilas"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr "No se puede crear el mundo: El nombre contiene caracteres no válidos"
#: src/guiMainMenu.cpp: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:285
msgid "Singleplayer"
msgstr "Un jugador"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Multijugador"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Avanzado"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Configuración"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Créditos"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Selecciona un mundo:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Borrar"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nuevo"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Configurar"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Jugar"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Modo creativo"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Permitir daños"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nombre/Clave"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Favoritos:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Lista de Servidores Públicos:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Dirección/Puerto"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Servidores Públicos"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Mostrar Favoritos"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Conectar"
#: 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:678
msgid "Start Game / Connect"
msgstr "Iniciar juego/Conectar"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Público"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Eliminar Mundo"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Crear Mundo"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Árboles detallados"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Iluminación Suave"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Nubes 3D"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Agua Opaca"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mapping"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtrado Anisotrópico"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtrado Bi-Lineal"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtrado Tri-Lineal"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Sombreadores"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Precarga elementos visuales"
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Habilitar partículas"
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Líquidos Finitos"
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Configurar Teclas"
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Requiere una dirección."
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "No se puede eliminar el mundo: ninguno ha sido seleccionado"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Archivos que se eliminarán"
#: 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:1286
msgid "Cannot configure world: Nothing selected"
msgstr "No se puede configurar el mundo: Ninguno seleccionado"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "No se pudo eliminar todos los archivos del mundo"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Contraseña anterior"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Nueva contraseña"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Confirmar contraseña"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Cambiar"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "¡Las contraseñas no coinciden!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continuar"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Modificar contraseña"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Volúmen del Sonido"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Salir al menú"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Salir al S.O."
#: 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 Pred.:\n"
"- WASD: moverse\n"
"- Espacio: saltar/subir\n"
"- Mayús.: puntillas/bajar\n"
"- Q: soltar objeto\n"
"- I: inventario\n"
"- Ratón: girar/mirar\n"
"- Ratón izq.: cavar/golpear\n"
"- Ratón der.: colocar/usar\n"
"- Rueda ratón: elegir objeto\n"
"- T: conversar\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr "Volúmen del Sonido: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Salir"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Click Izquierdo"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Click Centro"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "Click Derecho"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr "X Button 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "Atras"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Limpiar"
#: src/keycode.cpp:224
msgid "Return"
msgstr "Intro"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tabulador"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "X Button 2"
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Bloq mayús"
#: src/keycode.cpp:225
msgid "Control"
msgstr "Control"
#: src/keycode.cpp:225
msgid "Kana"
msgstr "Kana"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "Menú"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Pausa"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Mayús"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Convertir"
#: 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 "No convertir"
#: src/keycode.cpp:227
msgid "Accept"
msgstr "Aceptar"
#: src/keycode.cpp:227
msgid "End"
msgstr "Fin"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Inicio"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "Cambio de modo"
#: src/keycode.cpp:227
msgid "Next"
msgstr "Siguiente"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Anterior"
#: src/keycode.cpp:227
msgid "Space"
msgstr "Espacio"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Abajo"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Ejecutar"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Captura"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Seleccionar"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Arriba"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Ayuda"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Introducir"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Captura de pantalla"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Win Izquierdo"
#: src/keycode.cpp:233
msgid "Apps"
msgstr "Aplicaciones"
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr "Teclado numérico 0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "Teclado Numérico 1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "Win Derecho"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Suspender"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "Teclado numérico 2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "Teclado Numérico 3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "Teclado numérico 4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "Teclado Numérico 5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "Teclado Numérico 6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "Teclado numérico 7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "Teclado numérico *"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "Teclado Numérico +"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "Teclado Numérico -"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "Teclado Numérico /"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "Teclado Numérico 8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "Teclado Numérico 9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "Bloq Núm"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Bloq Despl"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "Mayús Izqda"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Mayús Dcha"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Control Izqdo"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Menú Izquierdo"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Control Dcho"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Menú Derecho"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Coma"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Menos"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Punto"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Más"
#: src/keycode.cpp:247
msgid "Attn"
msgstr "Attn"
#: src/keycode.cpp:247
msgid "CrSel"
msgstr "CrSel"
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr "Borrar OEF"
#: src/keycode.cpp:248
msgid "ExSel"
msgstr "ExSel"
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr "OEM Limpiar"
#: src/keycode.cpp:248
msgid "PA1"
msgstr "PA1"
#: src/keycode.cpp:248
msgid "Zoom"
msgstr "Zoom"
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menú Principal"
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Fallo al iniciar el mundo"
#: 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:2056
msgid "Could not find or load game \""
msgstr "No se puede encontrar o cargar el juego \""
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Juego especificado no válido."
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Error de conexión (¿tiempo agotado?)"
#~ 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"

820
po/et/minetest.po Normal file
View File

@@ -0,0 +1,820 @@
# 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-03 17:02+0200\n"
"Last-Translator: Pilz Adam <PilzAdam@gmx.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 1.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"
"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. "
msgstr ""
"Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n"
"Need lülitatakse sisse kohe pärast sätete salvestamist."
#: src/guiConfigureWorld.cpp:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n"
"Nende sätted kustutatakse kui salvestada konfiguratsioon."
#: src/guiConfigureWorld.cpp:208
msgid "enabled"
msgstr "Sisse lülitatud"
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Lülita kõik sisse"
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Lülita kõik välja"
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "Vajab:"
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "Seda vajavad:"
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel"
msgstr "Tühista"
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Salvesta"
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Konfiguratsioon salvestatud. "
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Hoiatus: Konfiguratsioon pole kindel."
#: src/guiConfirmMenu.cpp:119
msgid "Yes"
msgstr "Jah"
#: src/guiConfirmMenu.cpp:127
msgid "No"
msgstr "Ei"
#: src/guiCreateWorld.cpp:125
msgid "World name"
msgstr "Maailma nimi"
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Mäng"
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Loo"
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr "Sa surid."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Ärka ellu"
#: src/guiFormSpecMenu.cpp:582
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:608 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:130
msgid "Proceed"
msgstr "Jätka"
#: 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:161
msgid "\"Use\" = climb down"
msgstr "\"Tegevus\" = Roni alla"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "Nupp juba kasutuses"
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "Vajuta nuppu"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Edasi"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Tagasi"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Vasakule"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Paremale"
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Tegevus"
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Hüppamine"
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Hiilimine"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Viska maha"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Seljakott"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Jututuba"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Käsklus"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Konsool"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Lülita lendamine sisse"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Lülita kiirus sisse"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "Lülita läbi seinte minek sisse"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Kauguse valik"
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Prindi kogused"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti"
#: 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:285
msgid "Singleplayer"
msgstr "Üksikmäng"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Mitmikmäng"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Arenenud sätted"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Sätted"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Tänuavaldused"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Vali maailm:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Kustuta"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Uus"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Konfigureeri"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Mängi"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Kujunduslik mängumood"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Lülita valu sisse"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nimi/Parool"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Lemmikud:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Avatud serverite nimekiri:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "IP/Port"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Näita avalikke"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Näita lemmikuid"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Liitu"
#: 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:678
msgid "Start Game / Connect"
msgstr "Alusta mängu / Liitu"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Avalik"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Kustuta maailm"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Loo maailm"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Uhked puud"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Ilus valgustus"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D pilved"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Läbipaistmatu vesi"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Väga hea kvaliteet"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Anisotroopne Filtreerimine"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Bi-lineaarsed Filtreerimine"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Tri-Linear Filtreerimine"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Varjutajad"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Lae asjade visuaale"
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Lülita osakesed sisse"
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Löppev vedelik"
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Vaheta nuppe"
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "IP on vajalkik."
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Failid mida kustutada"
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud"
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Vana parool"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Uus parool"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Kinnita parooli"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Muuda"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Paroolid ei ole samad!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Jätka"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Vaheta parooli"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Hääle volüüm"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Välju menüüsse"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Välju mängust"
#: 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 "Hääle Volüüm: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Välju"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Vasak nupp"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Keskmine nupp"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "Parem nupp"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr "X Nuppp 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "Tagasi"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Tühjenda"
#: src/keycode.cpp:224
msgid "Return"
msgstr "Enter"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Reavahetus"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "X Nupp 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 "Menüü"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Paus"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift,"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Konverteeri"
#: src/keycode.cpp:226
msgid "Escape"
msgstr "Põgene"
#: src/keycode.cpp:226
msgid "Final"
msgstr "Viimane"
#: src/keycode.cpp:226
msgid "Junja"
msgstr "Junja"
#: src/keycode.cpp:226
msgid "Kanji"
msgstr "Kanji"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr "Konverteerimatta"
#: src/keycode.cpp:227
msgid "Accept"
msgstr "Nõustu"
#: src/keycode.cpp:227
msgid "End"
msgstr "Lõpeta"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Kodu"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "Moodi vahetamine"
#: src/keycode.cpp:227
msgid "Next"
msgstr "Järgmine"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Eelnev"
#: src/keycode.cpp:227
msgid "Space"
msgstr "Tühik"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Alla"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Soorita"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Prindi"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Vali"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Üles"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Abi"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Sisesta"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Mängupilt"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Vasak Windowsi nupp"
#: src/keycode.cpp:233
msgid "Apps"
msgstr "Aplikatsioonid"
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr "Numbrilaual 0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "Numbrilaual 1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "Parem Windowsi nupp"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Maga"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "Numbrilaual 2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "Numbrilaual 3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "Numbrilaual 4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "Numbrilaual 5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "Numbrilaual 6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "Numbrilaual 7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "Numbrilaual *"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "Numbrilaual +"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "Numbrilaual -"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "Numbrilaual /"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "Numbrilaual 8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "Numbrilaual 9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "Numbrilaual Num Lock"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Scroll lukk"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "Vasak Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Parem Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Vasak CTRL"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Vasak Menüü"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Parem CTRL"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Parem Menüü"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Koma"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Miinus"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Punkt"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Pluss"
#: src/keycode.cpp:247
msgid "Attn"
msgstr "Attn"
#: src/keycode.cpp:247
msgid "CrSel"
msgstr "CrSel"
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr "Kustuta OEF"
#: src/keycode.cpp:248
msgid "ExSel"
msgstr "ExSel"
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr "OEM Tühi"
#: src/keycode.cpp:248
msgid "PA1"
msgstr "PA1"
#: src/keycode.cpp:248
msgid "Zoom"
msgstr "Suumi"
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Menüü"
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Maailma initsialiseerimine ebaõnnestus"
#: 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:2056
msgid "Could not find or load game \""
msgstr "Ei leia ega suuda jätkata mängu."
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Vale mängu ID."
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Ühenduse viga (Aeg otsas?)"
#~ 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"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

829
po/ja/minetest.po Normal file
View File

@@ -0,0 +1,829 @@
# 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-03-07 23:06+0200\n"
"Last-Translator: Mitori Itoshiki <mito551@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 1.4-dev\n"
#: src/client.cpp:2846
msgid "Item textures..."
msgstr ""
#: src/game.cpp:912
msgid "Loading..."
msgstr ""
#: src/game.cpp:972
msgid "Creating server...."
msgstr ""
#: src/game.cpp:988
msgid "Creating client..."
msgstr ""
#: src/game.cpp:1003
msgid "Resolving address..."
msgstr ""
#: src/game.cpp:1079
msgid "Connecting to server..."
msgstr ""
#: src/game.cpp:3348
msgid "Shutting down stuff..."
msgstr ""
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
#: 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:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"警告: いくつかの設定みの改造ファイルが見つかりません.\n"
"これらの情報は設定を保存すると削除されます. "
#: 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
#, fuzzy
msgid "Favorites:"
msgstr "お気に入りを見せる"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr ""
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "アドレス/ポート"
#: src/guiMainMenu.cpp: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
#, fuzzy
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
#, fuzzy
msgid "Smooth Lighting"
msgstr "自然な光表現"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3Dの雲"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "不透明な水面"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "ミップマップ"
#: 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 "Back Space"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "消す"
#: 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 ""
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Caps Lock"
#: src/keycode.cpp:225
msgid "Control"
msgstr "Ctrl"
#: src/keycode.cpp:225
msgid "Kana"
msgstr "カタカナ/ひらがな"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "メニュー"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Pause"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "変換"
#: src/keycode.cpp:226
msgid "Escape"
msgstr "Esc"
#: src/keycode.cpp:226
msgid "Final"
msgstr ""
#: src/keycode.cpp:226
msgid "Junja"
msgstr ""
#: src/keycode.cpp:226
msgid "Kanji"
msgstr "半角/全角"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr "無変換"
#: src/keycode.cpp:227
#, fuzzy
msgid "Accept"
msgstr "Accept"
#: src/keycode.cpp:227
msgid "End"
msgstr "End"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Home"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "モードを変更"
#: src/keycode.cpp:227
msgid "Next"
msgstr "Page Down"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Page Up"
#: src/keycode.cpp:227
#, fuzzy
msgid "Space"
msgstr "Space"
#: src/keycode.cpp:228
#, fuzzy
msgid "Down"
msgstr "Down"
#: src/keycode.cpp:228
#, fuzzy
msgid "Execute"
msgstr "Execute"
#: src/keycode.cpp:228
#, fuzzy
msgid "Print"
msgstr "Print"
#: src/keycode.cpp:228
#, fuzzy
msgid "Select"
msgstr "Select"
#: src/keycode.cpp:228
#, fuzzy
msgid "Up"
msgstr "Up"
#: src/keycode.cpp:229
#, fuzzy
msgid "Help"
msgstr "Help"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Insert"
#: src/keycode.cpp:229
#, fuzzy
msgid "Snapshot"
msgstr "Snapshot"
#: src/keycode.cpp:232
#, fuzzy
msgid "Left Windows"
msgstr "Left Windows"
#: src/keycode.cpp:233
#, fuzzy
msgid "Apps"
msgstr "Apps"
#: src/keycode.cpp:233
#, fuzzy
msgid "Numpad 0"
msgstr "Numpad 0"
#: src/keycode.cpp:233
#, fuzzy
msgid "Numpad 1"
msgstr "Numpad 1"
#: src/keycode.cpp:233
#, fuzzy
msgid "Right Windows"
msgstr "Right Windows"
#: src/keycode.cpp:233
#, fuzzy
msgid "Sleep"
msgstr "Sleep"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 2"
msgstr "Numpad 2"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 3"
msgstr "Numpad 3"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 4"
msgstr "Numpad 4"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 5"
msgstr "Numpad 5"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 6"
msgstr "Numpad 6"
#: src/keycode.cpp:234
#, fuzzy
msgid "Numpad 7"
msgstr "Numpad 7"
#: src/keycode.cpp:235
#, fuzzy
msgid "Numpad *"
msgstr "Numpad *"
#: src/keycode.cpp:235
#, fuzzy
msgid "Numpad +"
msgstr "Numpad +"
#: src/keycode.cpp:235
#, fuzzy
msgid "Numpad -"
msgstr "Numpad -"
#: src/keycode.cpp:235
#, fuzzy
msgid "Numpad /"
msgstr "Numpad /"
#: src/keycode.cpp:235
#, fuzzy
msgid "Numpad 8"
msgstr "Numpad 8"
#: src/keycode.cpp:235
#, fuzzy
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 "左Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "右Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "左Ctrl"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "左メニュー"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "右Ctrl"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "右メニュー"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "読点"
#: src/keycode.cpp:243
#, fuzzy
msgid "Minus"
msgstr "Minus"
#: src/keycode.cpp:243
#, fuzzy
msgid "Period"
msgstr "Period"
#: src/keycode.cpp:243
#, fuzzy
msgid "Plus"
msgstr "Plus"
#: src/keycode.cpp:247
#, fuzzy
msgid "Attn"
msgstr "Attn"
#: src/keycode.cpp:247
#, fuzzy
msgid "CrSel"
msgstr "CrSel"
#: src/keycode.cpp:248
#, fuzzy
msgid "Erase OEF"
msgstr "Erase OEF"
#: src/keycode.cpp:248
#, fuzzy
msgid "ExSel"
msgstr "ExSel"
#: src/keycode.cpp:248
#, fuzzy
msgid "OEM Clear"
msgstr "OEM Clear"
#: src/keycode.cpp:248
#, fuzzy
msgid "PA1"
msgstr "PA1"
#: 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 "接続エラー (タイムアウトか?)"

785
po/ko/minetest.po Normal file
View File

@@ -0,0 +1,785 @@
# 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.
#
#, fuzzy
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: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\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 ""
#: 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 ""

824
po/ky/minetest.po Normal file
View File

@@ -0,0 +1,824 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
"PO-Revision-Date: 2013-05-18 14:59+0200\n"
"Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ky\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 1.4-dev\n"
#: src/client.cpp:2846
msgid "Item textures..."
msgstr "Буюм текстуралары..."
#: src/game.cpp:912
msgid "Loading..."
msgstr "Жүктөлүүдө..."
#: src/game.cpp:972
msgid "Creating server...."
msgstr "Сервер жаратылууда...."
#: src/game.cpp:988
msgid "Creating client..."
msgstr "Клиент жаратылууда..."
#: src/game.cpp:1003
msgid "Resolving address..."
msgstr "Дареги чечилүүдө..."
#: src/game.cpp:1079
msgid "Connecting to server..."
msgstr "Серверге туташтырылууда..."
#: src/game.cpp:3348
msgid "Shutting down stuff..."
msgstr "Оюн өчүрүлүүдө..."
#: src/game.cpp:3378 src/guiConfigureWorld.cpp:426
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
"Толугураак маалымат үчүн debug.txt файлын текшериңиз."
#: src/guiConfigureWorld.cpp:123
msgid ""
"Warning: Some mods are not configured yet.\n"
"They will be enabled by default when you save the configuration. "
msgstr ""
#: src/guiConfigureWorld.cpp:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
#: src/guiConfigureWorld.cpp:208
msgid "enabled"
msgstr "күйгүзүлгөн"
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Баарын күйгүзүү"
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Баарын өчүрүү"
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "көз карандылыктары:"
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "талап кылынганы:"
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel"
msgstr "Жокко чыгаруу"
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Сактоо"
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Конфигурация сакталды. "
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Эскертүү: Туура эмес конфигурация. "
#: src/guiConfirmMenu.cpp:119
msgid "Yes"
msgstr "Ооба"
#: src/guiConfirmMenu.cpp:127
msgid "No"
msgstr "Жок"
#: src/guiCreateWorld.cpp:125
msgid "World name"
msgstr "Дүйнө аты"
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Оюн"
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Жаратуу"
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr "Сиз өлдүңүз."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Кайтадан жаралуу"
#: src/guiFormSpecMenu.cpp:582
msgid "Left click: Move all items, Right click: Move single item"
msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу"
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:130
msgid "Proceed"
msgstr "Улантуу"
#: src/guiKeyChangeMenu.cpp:121
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr ""
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr ""
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr ""
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "баскычты басыңыз"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Алга"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Артка"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Солго"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Оңго"
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Колдонуу"
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Секирүү"
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Уурданып басуу"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Ыргытуу"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Мүлк-шайман"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Маек"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Команда"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Консоль"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Учууга которуу"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Тез басууга которуу"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr ""
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr ""
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr ""
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr ""
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr ""
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Бир кишилик"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Көп кишилик"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Кошумча"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Ырастоолор"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Алкыштар"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Дүйнөнү тандаңыз:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Өчүрүү"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Жаңы"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Ырастоо"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Ойноо"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Жаратуу режими"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Убалды күйгүзүү"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Аты/сырсөзү"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Тандалмалар:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Жалпылык серверлердин тизмеси:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Дареги/порту"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Жалпылыкты көрсөтүү"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Тандалмаларды көрсөтүү"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Туташуу"
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз."
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Оюнду баштоо/туташуу"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Жалпылык"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Дүйнөнү өчүрүү"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Дүйнөнү жаратуу"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Кооз бактар"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Тегиз жарык"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D-булуттар"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Күңүрт суу"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-текстуралоо"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Анизатропия чыпкалоосу"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Экисызык чыпкалоосу"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Үчсызык чыпкалоосу"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Көлөкөлөгүчтөр"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr ""
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Бөлүкчөлөрдү күйгүзүү"
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Чектүү суюктук"
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Баскычтарды өзгөртүү"
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Дареги талап кылынат."
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Өчүрүлө турган файлдар"
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок"
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Эски сырсөз"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Жаңы сырсөз"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Сырсөздү аныктоо"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Өзгөртүү"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Сырсөздөр дал келген жок!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Улантуу"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Сырсөздү өзгөртүү"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Үн көлөмү"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Менюга чыгуу"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Оюндан чыгуу"
#: src/guiPauseMenu.cpp:170
msgid ""
"Default Controls:\n"
"- WASD: move\n"
"- Space: jump/climb\n"
"- Shift: sneak/go down\n"
"- Q: drop item\n"
"- I: inventory\n"
"- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
"- T: chat\n"
msgstr ""
"Жарыяланбас башкаруу:\n"
"- WASD: басуу\n"
"- Боштугу: секирүү/өйдө чыгуу\n"
"- Shift: уурданып басуу/ылдый түшүү\n"
"- Q: буюмду таштоо\n"
"- I: мүлк-шайман\n"
"- Чычканы: бурулуу/кароо\n"
"- Сол чычкан баскычы: казуу/согуу\n"
"- Оң чычкан баскычы: коюу/колдонуу\n"
"- Чычкан дөңгөлөгү: буюмду тандоо\n"
"- T: маек\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr "Үн көлөмү: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Чыгуу"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Сол баскыч"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Ортоңку баскыч"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "Оң баскыч"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr ""
#: src/keycode.cpp:224
msgid "Back"
msgstr "Артка"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Тазалоо"
#: src/keycode.cpp:224
msgid "Return"
msgstr ""
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tab"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr ""
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Caps Lock"
#: src/keycode.cpp:225
msgid "Control"
msgstr "Ctrl"
#: src/keycode.cpp:225
msgid "Kana"
msgstr "Кана"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "Меню"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Пауза"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr ""
#: src/keycode.cpp:226
msgid "Escape"
msgstr "Esc"
#: src/keycode.cpp:226
msgid "Final"
msgstr ""
#: src/keycode.cpp:226
msgid "Junja"
msgstr "Junja"
#: src/keycode.cpp:226
msgid "Kanji"
msgstr "Кандзи"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr ""
#: src/keycode.cpp:227
msgid "Accept"
msgstr "Кабыл алуу"
#: src/keycode.cpp:227
msgid "End"
msgstr "End"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Home"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "Режимди өзгөртүү"
#: src/keycode.cpp:227
msgid "Next"
msgstr "Кийинки"
#: src/keycode.cpp:227
msgid "Prior"
msgstr ""
#: src/keycode.cpp:227
msgid "Space"
msgstr "Боштук"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Ылдый"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Аткаруу"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Басма"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Тандоо"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Өйдө"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Жардам"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Тез сүрөт"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Сол Windows"
#: src/keycode.cpp:233
msgid "Apps"
msgstr "Тиркемелер"
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr "Кош. клав. 0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "Кош. клав. 1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "Оң Windows"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Уйку"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "Кош. клав. 2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "Кош. клав. 3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "Кош. клав. 4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "Кош. клав. 5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "Кош. клав. 6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "Кош. клав. 7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "Кош. клав. *"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "Кош. клав. +"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "Кош. клав. -"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "Кош. клав. /"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "Кош. клав. 8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "Кош. клав. 9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "Num Lock"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Scroll Lock"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "Сол Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Оң Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Сол Ctrl"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Сол меню"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Оң Ctrl"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Оң меню"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Үтүр"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Кемитүү белгиси"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Айланма сан"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Кошуу белгиси"
#: src/keycode.cpp:247
msgid "Attn"
msgstr ""
#: src/keycode.cpp:247
msgid "CrSel"
msgstr ""
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr ""
#: src/keycode.cpp:248
msgid "ExSel"
msgstr ""
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr ""
#: src/keycode.cpp:248
msgid "PA1"
msgstr ""
#: src/keycode.cpp:248
msgid "Zoom"
msgstr "Масштаб"
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "Башкы меню"
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr ""
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Дүйнө тандалган жок жана дареги киргизилген жок. Кылууга эч нерсе жок."
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Оюнду табуу же жүктөө мүмкүн эмес \""
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
#~ msgid ""
#~ "Default Controls:\n"
#~ "- WASD: Walk\n"
#~ "- Mouse left: dig/hit\n"
#~ "- Mouse right: place/use\n"
#~ "- Mouse wheel: select item\n"
#~ "- 0...9: select item\n"
#~ "- Shift: sneak\n"
#~ "- R: Toggle viewing all loaded chunks\n"
#~ "- I: Inventory menu\n"
#~ "- ESC: This menu\n"
#~ "- T: Chat\n"
#~ msgstr ""
#~ "Жарыяланбас башкаруу:\n"
#~ "- WASD: Басуу\n"
#~ "- Сол кнопкасы: казуу/согуу\n"
#~ "- Оң кнопкасы: коюу/колдонуу\n"
#~ "- Чычкан дөңгөлөгү: буюмду тандоо\n"
#~ "- 0...9: буюмду тандоо\n"
#~ "- Shift: уурданып басуу\n"
#~ "- R: алыс кароо\n"
#~ "- I: мүлк-шайман\n"
#~ "- ESC: бул меню\n"
#~ "- T: маек\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-04 23:25+0300\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,30 +17,109 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/guiConfirmMenu.cpp:120
#: 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: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: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 ""
#: src/guiCreateWorld.cpp:165 src/guiKeyChangeMenu.cpp:374 src/keycode.cpp:221
msgid "Cancel"
msgstr ""
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr ""
@@ -49,578 +128,658 @@ msgstr ""
msgid "Respawn"
msgstr ""
#: src/guiKeyChangeMenu.cpp:111
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
#: 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 "Forward"
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
#: src/guiKeyChangeMenu.cpp:138
msgid "Backward"
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr ""
#: src/guiKeyChangeMenu.cpp:154 src/keycode.cpp:226
msgid "Left"
msgstr ""
#: src/guiKeyChangeMenu.cpp:169 src/keycode.cpp:226
msgid "Right"
msgstr ""
#: src/guiKeyChangeMenu.cpp:185
msgid "Use"
msgstr ""
#: src/guiKeyChangeMenu.cpp:200
msgid "Sneak"
msgstr ""
#: src/guiKeyChangeMenu.cpp:216
msgid "Jump"
msgstr ""
#: src/guiKeyChangeMenu.cpp:231
msgid "Drop"
msgstr ""
#: src/guiKeyChangeMenu.cpp:246
msgid "Inventory"
msgstr ""
#: src/guiKeyChangeMenu.cpp:262
msgid "Chat"
msgstr ""
#: src/guiKeyChangeMenu.cpp:276
msgid "Command"
#: 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:306
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr ""
#: src/guiKeyChangeMenu.cpp:321
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr ""
#: src/guiKeyChangeMenu.cpp:336
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr ""
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr ""
#: src/guiKeyChangeMenu.cpp:353
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr ""
#: src/guiKeyChangeMenu.cpp:368
msgid "Save"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr ""
#: src/guiKeyChangeMenu.cpp:626 src/guiKeyChangeMenu.cpp:631
#: src/guiKeyChangeMenu.cpp:636 src/guiKeyChangeMenu.cpp:641
#: src/guiKeyChangeMenu.cpp:646 src/guiKeyChangeMenu.cpp:651
#: src/guiKeyChangeMenu.cpp:656 src/guiKeyChangeMenu.cpp:661
#: src/guiKeyChangeMenu.cpp:666 src/guiKeyChangeMenu.cpp:671
#: src/guiKeyChangeMenu.cpp:676 src/guiKeyChangeMenu.cpp:681
#: src/guiKeyChangeMenu.cpp:686 src/guiKeyChangeMenu.cpp:691
#: src/guiKeyChangeMenu.cpp:696 src/guiKeyChangeMenu.cpp:701
msgid "press Key"
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr ""
#: src/guiMainMenu.cpp:217
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr ""
#: src/guiMainMenu.cpp:218
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr ""
#: src/guiMainMenu.cpp:219
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr ""
#: src/guiMainMenu.cpp:220
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr ""
#: src/guiMainMenu.cpp:221
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr ""
#: src/guiMainMenu.cpp:252
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr ""
#: src/guiMainMenu.cpp:274 src/keycode.cpp:227
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr ""
#: src/guiMainMenu.cpp:281
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr ""
#: src/guiMainMenu.cpp:289
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr ""
#: src/guiMainMenu.cpp:304 src/keycode.cpp:246
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr ""
#: src/guiMainMenu.cpp:315 src/guiMainMenu.cpp:492
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr ""
#: src/guiMainMenu.cpp:321 src/guiMainMenu.cpp:498
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr ""
#: src/guiMainMenu.cpp:341 src/guiMainMenu.cpp:414
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr ""
#: src/guiMainMenu.cpp:368 src/guiMainMenu.cpp:441
#: 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:394 src/guiMainMenu.cpp:473
msgid "Start Game / Connect"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr ""
#: src/guiMainMenu.cpp:464
#: 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:505 src/guiMainMenu.cpp:833
#: 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:512
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr ""
#: src/guiMainMenu.cpp:546
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr ""
#: src/guiMainMenu.cpp:552
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr ""
#: src/guiMainMenu.cpp:558
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr ""
#: src/guiMainMenu.cpp:564
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr ""
#: src/guiMainMenu.cpp:573
#: 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:804
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr ""
#: src/guiMainMenu.cpp:822
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:837
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr ""
#: src/guiMainMenu.cpp:853
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr ""
#: src/guiMainMenu.cpp:866
msgid "Nothing here"
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr ""
#: src/guiMainMenu.cpp:915
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr ""
#: src/guiMessageMenu.cpp:109 src/guiTextInputMenu.cpp:123
msgid "Proceed"
msgstr ""
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr ""
#: src/guiPasswordChange.cpp:125
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr ""
#: src/guiPasswordChange.cpp:141
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr ""
#: src/guiPasswordChange.cpp:158
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr ""
#: src/guiPasswordChange.cpp:167
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr ""
#: src/guiPauseMenu.cpp:118
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr ""
#: src/guiPauseMenu.cpp:127
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr ""
#: src/guiPauseMenu.cpp:135
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr ""
#: src/guiPauseMenu.cpp:142
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr ""
#: src/guiPauseMenu.cpp:149
#: src/guiPauseMenu.cpp:170
msgid ""
"Default Controls:\n"
"- WASD: Walk\n"
"- Mouse left: dig/hit\n"
"- WASD: move\n"
"- Space: jump/climb\n"
"- Shift: sneak/go down\n"
"- Q: drop item\n"
"- I: inventory\n"
"- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
"- 0...9: select item\n"
"- Shift: sneak\n"
"- R: Toggle viewing all loaded chunks\n"
"- I: Inventory menu\n"
"- ESC: This menu\n"
"- T: Chat\n"
"- T: chat\n"
msgstr ""
#: src/keycode.cpp:221
#: 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:221
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr ""
#: src/keycode.cpp:221
#: src/keycode.cpp:223
msgid "Right Button"
msgstr ""
#: src/keycode.cpp:221
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr ""
#: src/keycode.cpp:222
#: src/keycode.cpp:224
msgid "Back"
msgstr ""
#: src/keycode.cpp:222
#: src/keycode.cpp:224
msgid "Clear"
msgstr ""
#: src/keycode.cpp:222
#: src/keycode.cpp:224
msgid "Return"
msgstr ""
#: src/keycode.cpp:222
#: src/keycode.cpp:224
msgid "Tab"
msgstr ""
#: src/keycode.cpp:222
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Capital"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Control"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Kana"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Menu"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Pause"
msgstr ""
#: src/keycode.cpp:223
#: src/keycode.cpp:225
msgid "Shift"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Convert"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Escape"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Final"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Junja"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Kanji"
msgstr ""
#: src/keycode.cpp:224
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Accept"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "End"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Home"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Next"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Prior"
msgstr ""
#: src/keycode.cpp:225
#: src/keycode.cpp:227
msgid "Space"
msgstr ""
#: src/keycode.cpp:226
#: src/keycode.cpp:228
msgid "Down"
msgstr ""
#: src/keycode.cpp:226
#: src/keycode.cpp:228
msgid "Execute"
msgstr ""
#: src/keycode.cpp:226
#: src/keycode.cpp:228
msgid "Print"
msgstr ""
#: src/keycode.cpp:226
#: src/keycode.cpp:228
msgid "Select"
msgstr ""
#: src/keycode.cpp:226
#: src/keycode.cpp:228
msgid "Up"
msgstr ""
#: src/keycode.cpp:227
#: src/keycode.cpp:229
msgid "Help"
msgstr ""
#: src/keycode.cpp:227
#: src/keycode.cpp:229
msgid "Insert"
msgstr ""
#: src/keycode.cpp:227
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr ""
#: src/keycode.cpp:230
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr ""
#: src/keycode.cpp:231
#: src/keycode.cpp:233
msgid "Apps"
msgstr ""
#: src/keycode.cpp:231
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr ""
#: src/keycode.cpp:231
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr ""
#: src/keycode.cpp:231
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr ""
#: src/keycode.cpp:231
#: src/keycode.cpp:233
msgid "Sleep"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr ""
#: src/keycode.cpp:232
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr ""
#: src/keycode.cpp:233
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr ""
#: src/keycode.cpp:237
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr ""
#: src/keycode.cpp:237
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr ""
#: src/keycode.cpp:238
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr ""
#: src/keycode.cpp:238
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr ""
#: src/keycode.cpp:239
#: src/keycode.cpp:241
msgid "Left Control"
msgstr ""
#: src/keycode.cpp:239
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr ""
#: src/keycode.cpp:239
#: src/keycode.cpp:241
msgid "Right Control"
msgstr ""
#: src/keycode.cpp:239
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr ""
#: src/keycode.cpp:241
#: src/keycode.cpp:243
msgid "Comma"
msgstr ""
#: src/keycode.cpp:241
#: src/keycode.cpp:243
msgid "Minus"
msgstr ""
#: src/keycode.cpp:241
#: src/keycode.cpp:243
msgid "Period"
msgstr ""
#: src/keycode.cpp:241
#: src/keycode.cpp:243
msgid "Plus"
msgstr ""
#: src/keycode.cpp:245
#: src/keycode.cpp:247
msgid "Attn"
msgstr ""
#: src/keycode.cpp:245
#: src/keycode.cpp:247
msgid "CrSel"
msgstr ""
#: src/keycode.cpp:246
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr ""
#: src/keycode.cpp:246
#: src/keycode.cpp:248
msgid "ExSel"
msgstr ""
#: src/keycode.cpp:246
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr ""
#: src/keycode.cpp:246
#: src/keycode.cpp:248
msgid "PA1"
msgstr ""
#: src/keycode.cpp:246
#: src/keycode.cpp:248
msgid "Zoom"
msgstr ""
#: src/main.cpp:1379
#: src/main.cpp:1680
msgid "Main Menu"
msgstr ""
#: src/main.cpp:1601
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr ""
#: src/main.cpp:1613
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1621
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr ""
#: src/main.cpp:1635
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1675
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr ""
#: src/main.cpp:1686
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"

822
po/pl/minetest.po Normal file
View File

@@ -0,0 +1,822 @@
# 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-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"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 1.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"
"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 ""
"Uwaga: Niektóre z modyfikacji nie zostały jeszcze skonfigurowane.\n"
"Zostaną domyślnie włączone gdy zapiszesz konfigurację. "
#: src/guiConfigureWorld.cpp:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"Ostrzeżenie: Niektóre z modyfikacji nie zostały znalezione.\n"
"Ich ustawienia zostaną usunięte gdy zapiszesz konfigurację. "
#: src/guiConfigureWorld.cpp:208
msgid "enabled"
msgstr "włączone"
#: src/guiConfigureWorld.cpp:218
msgid "Enable All"
msgstr "Włącz wszystkie"
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Wyłącz wszystkie"
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "zależne od:"
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "wymagane przez:"
#: src/guiConfigureWorld.cpp:270 src/guiCreateWorld.cpp:177
#: src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel"
msgstr "Anuluj"
#: src/guiConfigureWorld.cpp:277 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Zapisz"
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Konfiguracja zapisana. "
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Ostrzeżenie: Plik konfiguracyjny niespójny. "
#: src/guiConfirmMenu.cpp:119
msgid "Yes"
msgstr "Tak"
#: src/guiConfirmMenu.cpp:127
msgid "No"
msgstr "Nie"
#: src/guiCreateWorld.cpp:125
msgid "World name"
msgstr "Nazwa świata"
#: src/guiCreateWorld.cpp:145
msgid "Game"
msgstr "Gra"
#: src/guiCreateWorld.cpp:169
msgid "Create"
msgstr "Utwórz"
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr "Zginąłeś."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Wróć do gry"
#: src/guiFormSpecMenu.cpp:582
msgid "Left click: Move all items, Right click: Move single item"
msgstr ""
"Lewy przycisk myszy: przenieś wszystkie przedmioty, Prawy przycisk myszy: "
"przenieś pojedynczy przedmiot"
#: src/guiFormSpecMenu.cpp:608 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:130
msgid "Proceed"
msgstr "Kontynuuj"
#: 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:161
msgid "\"Use\" = climb down"
msgstr "\"Użyj\" = wspinaj się"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Wciśnij dwukrotnie \"Skok\" by włączyć tryb latania"
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "Klawisz już zdefiniowany"
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "naciśnij klawisz"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Przód"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Tył"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "Lewo"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "Prawo"
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "Użyj"
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "Skok"
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "Skradanie"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Upuść"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Ekwipunek"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Czat"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Komenda"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Konsola"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Przełącz tryb latania"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Przełącz tryb szybki"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "Przełącz tryb noclip"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Zasięg widzenia"
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
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"
#: 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:285
msgid "Singleplayer"
msgstr "Pojedynczy gracz"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Gra wieloosobowa"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Zaawansowane"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Ustawienia"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Autorzy"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Wybierz świat:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Usuń"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Nowy"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Ustaw"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Graj"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Tryb kreatywny"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Włącz obrażenia"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Nazwa gracza/Hasło"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Ulubione:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Lista publicznych serwerów:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Adres/Port"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Pokaż publiczne"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Pokaż ulubione"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Połącz"
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Pozostaw pole adresu puste, by uruchomić serwer lokalny."
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Rozpocznij grę/Połącz"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Publiczne"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Usuń świat"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Stwórz świat"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Ozdobne drzewa"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Płynne oświetlenie"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "Chmury 3D"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Nieprzeźroczysta woda"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-Mappowanie"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Filtrowanie anizotropowe"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Dwuliniowe filtrowanie"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Trójliniowe filtrowanie"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Shadery"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Ładuj obrazy przedmiotów"
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Włącz cząstki"
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "Realistyczne ciecze"
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "Zmień klawisze"
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "Wymagany adres."
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Nie można skasować świata: nic nie zaznaczono"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Pliki do skasowania"
#: 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:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Nie można skonfigurować świata: Nic nie zaznaczono"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Nie udało się skasować wszystkich plików świata"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Stare hasło"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Nowe hasło"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Potwierdź hasło"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Zmień"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Hasła nie są jednakowe!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Dalej"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Zmień hasło"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Głośność"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Wyjście do menu"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Wyjście z gry"
#: src/guiPauseMenu.cpp: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 "Głośność: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Wyjście"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Lewy przycisk myszy"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Środkowy przycisk myszy"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "Prawy przycisk myszy"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr "X Button 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "Backspace"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Delete"
#: 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 "X Button 2"
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Caps Lock"
#: 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 "Pause"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Convert"
#: 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 "Accept"
#: 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 "Next"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Prior"
#: src/keycode.cpp:227
msgid "Space"
msgstr "Spacja"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Dół"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Execute"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Print"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Select"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Góra"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Pomoc"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Snapshot"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Lewy Windows"
#: 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 "Prawy Windows"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Sleep"
#: 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 "Lewy Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Prawy Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Lewy Control"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Lewy Menu"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Prawy Control"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Prawy Menu"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Przecinek"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Minus"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Kropka"
#: 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 "Menu główne"
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "Inicjalizacja świata nie powiodła się"
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "Nie wybrano świata ani adresu."
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "Nie można znaleźć lub wczytać trybu gry \""
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "Nieprawidłowa specyfikacja trybu gry."
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Błąd połączenia (brak odpowiedzi?)"
#~ 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"

829
po/pt/minetest.po Normal file
View File

@@ -0,0 +1,829 @@
# 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-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"
"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 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 ""
"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: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 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:218
msgid "Enable All"
msgstr "Ativar Tudo"
#: src/guiConfigureWorld.cpp:227
msgid "Disable All"
msgstr "Desativar Tudo"
#: src/guiConfigureWorld.cpp:235
msgid "depends on:"
msgstr "depende de:"
#: src/guiConfigureWorld.cpp:248
msgid "is required by:"
msgstr "é necessário pelo:"
#: 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 "Guardar"
#: src/guiConfigureWorld.cpp:403
msgid "Configuration saved. "
msgstr "Configuração gravada. "
#: src/guiConfigureWorld.cpp:415
msgid "Warning: Configuration not consistent. "
msgstr "Atenção: Configuração não compatível. "
#: 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 "Morreste."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Reaparecer"
#: src/guiFormSpecMenu.cpp:582
msgid "Left click: Move all items, Right click: Move single item"
msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item"
#: 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 se estragar, remova as linhas do minetest.conf)"
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "\"Use\" = descer"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo"
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "Tecla já em uso"
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "pressione a tecla"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "Avançar"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "Recuar"
#: 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 "Agachar"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "Largar"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "Inventário"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "Conversa"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "Comando"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "Consola"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "Ativar/Desativar vôo"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "Ativar/Desativar correr"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "Ativar/Desativar noclip"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Seleccionar Distância"
#: 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 caracteres inválidos"
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "Não foi possível criar mundo: Já existe um mundo com este 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 "Definições"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Créditos"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Seleccionar Mundo:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Eliminar"
#: 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 "Ativar 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 "Mostrar Públicos"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Mostrar Favoritos"
#: 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:678
msgid "Start Game / Connect"
msgstr "Iniciar Jogo / Conectar"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Público"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Eliminar mundo"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Criar mundo"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Árvores Melhoradas"
#: 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 "Filtro Anisotrópico"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Filtro Bi-Linear"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Filtro Tri-Linear"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Sombras"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "Pré-carregamento dos itens"
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "Ativar 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 "Endereço necessário."
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "Não foi possível eliminar mundo: Nada seleccionado"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "Ficheiros para eliminar"
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "Não foi possível criar mundo: Não foram detectados jogos"
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "Não foi possível configurar mundo: Nada seleccionado"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "Falhou a remoção de todos os ficheiros dos mundos"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "Senha antiga"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "Senha Nova"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "Confirmar Senha"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "Mudar"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "Senhas não correspondem!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Continuar"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Mudar Senha"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Volume do som"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Sair para Menu"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Sair para o sistema"
#: 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 ""
"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"
"- Rato: virar/olhar\n"
"- Clique esquerdo: cavar/bater\n"
"- Clique direito: colocar/utilizar\n"
"- Roda do rato: seleccionar item\n"
"- T: conversação\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr "Volume do som: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "Sair"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Botão Esquerdo"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Roda do Rato"
#: 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 "Voltar"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Limpar"
#: src/keycode.cpp:224
msgid "Return"
msgstr "Enter"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tabulação"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "Botão X 2"
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Capital"
#: 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 "Pausa"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Converter"
#: 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 "Nãoconverter"
#: 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 "Próximo"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Prévio"
#: src/keycode.cpp:227
msgid "Space"
msgstr "Espaço"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Baixo"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Executar"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Print"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Seleccionar"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Cima"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Ajuda"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Screenshot"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "WINDOWS Esq."
#: src/keycode.cpp:233
msgid "Apps"
msgstr "App"
#: 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 "WINDOWS Dir."
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Suspender"
#: 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 "Shift Esquerdo"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Shift Direito"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Control Esq"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Menu Esquerdo"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Control Direito"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Menu Direito"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Virgula"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Menos"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Período"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Mais"
#: src/keycode.cpp:247
msgid "Attn"
msgstr "Attm"
#: 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 "PAL"
#: 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 "Falha ao iniciar mundo"
#: 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:2056
msgid "Could not find or load game \""
msgstr "Não foi possível encontrar ou carregar jogo \""
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "gamespec inválido."
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Erro de conexão (excedeu tempo?)"
#~ 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"

785
po/ro/minetest.po Normal file
View File

@@ -0,0 +1,785 @@
# 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.
#
#, fuzzy
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: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\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 ""
#: 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 ""

830
po/ru/minetest.po Normal file
View File

@@ -0,0 +1,830 @@
# 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-08 11:06+0200\n"
"Last-Translator: Anton Tsyganenko <anton-tsyganenko@yandex.ru>\n"
"Language-Team: Russian\n"
"Language: ru\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 ""
"Предупреждение: Некоторые моды еще не настроены.\n"
"Их стандартные настройки будут установлены, когда вы сохраните "
"конфигурацию. "
#: src/guiConfigureWorld.cpp:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"Предупреждение: Некоторые моды не найдены.\n"
"Их настройки будут удалены, когда вы сохраните конфигурацию. "
#: 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 ""
"Сочетания клавиш. (Если это меню сломалось, удалите настройки из minetest."
"conf)"
#: 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 "Включить noclip"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "Зона видимости"
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "Печать стеков"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr "Невозможно создать мир: Имя содержит недопустимые символы"
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "Невозможно создать мир: Мир под таким названием уже существует"
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "Одиночная игра"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "Сетевая игра"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "Дополнительно"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "Настройки"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "Благодарности"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "Выберите Мир:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "Удалить"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "Новый"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "Настроить"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "Играть"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "Режим Создания"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "Включить урон"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "Имя/Пароль"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "Избранное:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "Список Публичных Серверов:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "Адрес/Порт"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "Публичные"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "Избранные"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "Подключиться"
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "Оставьте адрес пустым для запуска локального сервера."
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "Начать игру/Подключиться"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "Публичные"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "Удалить мир"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "Создать мир"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "Красивые деревья"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "Мягкое Освещение"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D Облака"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "Непрозрачная вода"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "Mip-текстурирование"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "Анизотропная Фильтрация"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "Билинейная Фильтрация"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "Трилинейная Фильтрация"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "Шейдеры"
#: src/guiMainMenu.cpp:855
#, fuzzy
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 "Доп. кнопка 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "Назад"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Очистить"
#: src/keycode.cpp:224
msgid "Return"
msgstr "Вернуться"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tab"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "Доп. кнопка 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 "Кана"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "Меню"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Пауза"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Преобразовать"
#: src/keycode.cpp:226
msgid "Escape"
msgstr "Escape"
#: src/keycode.cpp:226
msgid "Final"
msgstr "Конец"
#: src/keycode.cpp:226
#, fuzzy
msgid "Junja"
msgstr "Junja"
#: src/keycode.cpp:226
msgid "Kanji"
msgstr "Кандзи"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr "Не преобразовано"
#: src/keycode.cpp:227
msgid "Accept"
msgstr "Принять"
#: src/keycode.cpp:227
msgid "End"
msgstr "End"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Home"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "Смена Режима"
#: src/keycode.cpp:227
msgid "Next"
msgstr "След."
#: src/keycode.cpp:227
#, fuzzy
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
#, fuzzy
msgid "Print"
msgstr "Печать"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Выбор"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Вверх"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Справка"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Insert"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Cнимок"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Левая кл. Win"
#: src/keycode.cpp:233
msgid "Apps"
msgstr "Приложения"
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr "Доп. клав. 0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "Доп. клав. 1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "Прав. кл. Win"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Сон"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "Доп. клав. 2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "Доп. клав. 3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "Доп. клав. 4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "Доп. клав. 5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "Доп. клав. 6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "Доп. клав. 7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "Доп. клав. *"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "Доп. клав. +"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "Доп. клав. -"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "Доп. клав. /"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "Доп. клав. 8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "Доп. клав. 9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "Num Lock"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Scroll Lock"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "Левый Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Правый Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Левый Ctrl"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Левая клавиша меню"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Правый Ctrl"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Правая клавиша меню"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Запятая"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Минус"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Период"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Плюс"
#: src/keycode.cpp:247
msgid "Attn"
msgstr "Внимание"
#: src/keycode.cpp:247
#, fuzzy
msgid "CrSel"
msgstr "CrSel"
#: src/keycode.cpp:248
#, fuzzy
msgid "Erase OEF"
msgstr "Стереть ОНС"
#: src/keycode.cpp:248
#, fuzzy
msgid "ExSel"
msgstr "Exsel"
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr "Очистить OEM"
#: src/keycode.cpp:248
#, fuzzy
msgid "PA1"
msgstr "PA1"
#: 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
#, fuzzy
msgid "Invalid gamespec."
msgstr "Неправильная конфигурация игры."
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "Ошибка соединения (таймаут пинга?)"
#~ msgid ""
#~ "Default Controls:\n"
#~ "- WASD: Walk\n"
#~ "- Mouse left: dig/hit\n"
#~ "- Mouse right: place/use\n"
#~ "- Mouse wheel: select item\n"
#~ "- 0...9: select item\n"
#~ "- Shift: sneak\n"
#~ "- R: Toggle viewing all loaded chunks\n"
#~ "- I: Inventory menu\n"
#~ "- ESC: This menu\n"
#~ "- T: Chat\n"
#~ msgstr ""
#~ "Управление по умолчанию:\n"
#~ "- WASD: перемещение\n"
#~ "- ЛКМ: копать/ударить\n"
#~ "- ПКМ: поставить/использовать\n"
#~ "- Колесо мыши: выбор предмета\n"
#~ "- 0...9: выбор предмета\n"
#~ "- Shift: красться\n"
#~ "- R: смотреть далеко\n"
#~ "- I: инвентарь\n"
#~ "- ESC: это меню\n"
#~ "- T: чат\n"

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

829
po/zh_CN/minetest.po Normal file
View File

@@ -0,0 +1,829 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-13 18:26+0200\n"
"PO-Revision-Date: 2013-05-18 16:23+0200\n"
"Last-Translator: Shen Zheyu <arsdragonfly@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 1.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 ""
"警告一些MOD仍未设定。\n"
"它们会在你保存配置的时候自动启用。 "
#: src/guiConfigureWorld.cpp:143
msgid ""
"Warning: Some configured mods are missing.\n"
"Their setting will be removed when you save the configuration. "
msgstr ""
"警告缺少一些设定了的MOD。\n"
"它们的设置会在你保存配置的时候被移除。 "
#: 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 "键位配置。如果这个菜单被弄乱从minetest.conf中删掉点东西"
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "“使用” = 向下爬"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "连按两次“跳”切换飞行状态"
#: src/guiKeyChangeMenu.cpp:290
msgid "Key already in use"
msgstr "按键已被占用"
#: src/guiKeyChangeMenu.cpp:372
msgid "press key"
msgstr "按键"
#: src/guiKeyChangeMenu.cpp:400
msgid "Forward"
msgstr "向前"
#: src/guiKeyChangeMenu.cpp:401
msgid "Backward"
msgstr "向后"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228
msgid "Left"
msgstr "向左"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228
msgid "Right"
msgstr "向右"
#: src/guiKeyChangeMenu.cpp:404
msgid "Use"
msgstr "使用"
#: src/guiKeyChangeMenu.cpp:405
msgid "Jump"
msgstr "跳"
#: src/guiKeyChangeMenu.cpp:406
msgid "Sneak"
msgstr "潜行"
#: src/guiKeyChangeMenu.cpp:407
msgid "Drop"
msgstr "丢出"
#: src/guiKeyChangeMenu.cpp:408
msgid "Inventory"
msgstr "物品栏"
#: src/guiKeyChangeMenu.cpp:409
msgid "Chat"
msgstr "聊天"
#: src/guiKeyChangeMenu.cpp:410
msgid "Command"
msgstr "命令"
#: src/guiKeyChangeMenu.cpp:411
msgid "Console"
msgstr "控制台"
#: src/guiKeyChangeMenu.cpp:412
msgid "Toggle fly"
msgstr "切换飞行状态"
#: src/guiKeyChangeMenu.cpp:413
msgid "Toggle fast"
msgstr "切换快速移动状态"
#: src/guiKeyChangeMenu.cpp:414
msgid "Toggle noclip"
msgstr "切换穿墙模式"
#: src/guiKeyChangeMenu.cpp:415
msgid "Range select"
msgstr "选择范围"
#: src/guiKeyChangeMenu.cpp:416
msgid "Print stacks"
msgstr "打印栈"
#: src/guiMainMenu.cpp:92
msgid "Cannot create world: Name contains invalid characters"
msgstr "无法创建世界:名字包含非法字符"
#: src/guiMainMenu.cpp:103
msgid "Cannot create world: A world by this name already exists"
msgstr "无法创建世界:同名世界已经存在"
#: src/guiMainMenu.cpp:285
msgid "Singleplayer"
msgstr "单人游戏"
#: src/guiMainMenu.cpp:288
msgid "Multiplayer"
msgstr "多人游戏"
#: src/guiMainMenu.cpp:291
msgid "Advanced"
msgstr "高级联机设置"
#: src/guiMainMenu.cpp:294
msgid "Settings"
msgstr "设置"
#: src/guiMainMenu.cpp:297
msgid "Credits"
msgstr "关于"
#: src/guiMainMenu.cpp:330
msgid "Select World:"
msgstr "选择世界:"
#: src/guiMainMenu.cpp:360 src/guiMainMenu.cpp:578 src/keycode.cpp:229
msgid "Delete"
msgstr "删除"
#: src/guiMainMenu.cpp:369
msgid "New"
msgstr "新建"
#: src/guiMainMenu.cpp:379
msgid "Configure"
msgstr "配置"
#: src/guiMainMenu.cpp:396 src/keycode.cpp:248
msgid "Play"
msgstr "开始游戏"
#: src/guiMainMenu.cpp:409 src/guiMainMenu.cpp:699
msgid "Creative Mode"
msgstr "创造模式"
#: src/guiMainMenu.cpp:417 src/guiMainMenu.cpp:707
msgid "Enable Damage"
msgstr "开启伤害"
#: src/guiMainMenu.cpp:459 src/guiMainMenu.cpp:614
msgid "Name/Password"
msgstr "名字/密码"
#: src/guiMainMenu.cpp:498 src/guiMainMenu.cpp:519 src/guiMainMenu.cpp:1324
msgid "Favorites:"
msgstr "最爱的服务器:"
#: src/guiMainMenu.cpp:508 src/guiMainMenu.cpp:1338
msgid "Public Server List:"
msgstr "公共服务器列表:"
#: src/guiMainMenu.cpp:532 src/guiMainMenu.cpp:643
msgid "Address/Port"
msgstr "地址/端口"
#: src/guiMainMenu.cpp:560 src/guiMainMenu.cpp:1323
msgid "Show Public"
msgstr "显示公共"
#: src/guiMainMenu.cpp:567 src/guiMainMenu.cpp:1337
msgid "Show Favorites"
msgstr "显示最爱"
#: src/guiMainMenu.cpp:591
msgid "Connect"
msgstr "连接"
#: src/guiMainMenu.cpp:668
msgid "Leave address blank to start a local server."
msgstr "地址栏留空可启动本地服务器。"
#: src/guiMainMenu.cpp:678
msgid "Start Game / Connect"
msgstr "启动游戏/连接"
#: src/guiMainMenu.cpp:716
msgid "Public"
msgstr "公共服务器"
#: src/guiMainMenu.cpp:726 src/guiMainMenu.cpp:1245
msgid "Delete world"
msgstr "删除世界"
#: src/guiMainMenu.cpp:735
msgid "Create world"
msgstr "创造世界"
#: src/guiMainMenu.cpp:773
msgid "Fancy trees"
msgstr "更漂亮的树"
#: src/guiMainMenu.cpp:781
msgid "Smooth Lighting"
msgstr "平滑光照"
#: src/guiMainMenu.cpp:789
msgid "3D Clouds"
msgstr "3D云彩"
#: src/guiMainMenu.cpp:797
msgid "Opaque water"
msgstr "不透明的水"
#: src/guiMainMenu.cpp:809
msgid "Mip-Mapping"
msgstr "贴图处理"
#: src/guiMainMenu.cpp:818
msgid "Anisotropic Filtering"
msgstr "各向异性过滤"
#: src/guiMainMenu.cpp:827
msgid "Bi-Linear Filtering"
msgstr "双线性过滤"
#: src/guiMainMenu.cpp:836
msgid "Tri-Linear Filtering"
msgstr "三线性过滤"
#: src/guiMainMenu.cpp:846
msgid "Shaders"
msgstr "着色器"
#: src/guiMainMenu.cpp:855
msgid "Preload item visuals"
msgstr "预先加载物品图像"
#: src/guiMainMenu.cpp:864
msgid "Enable Particles"
msgstr "启用粒子效果"
#: src/guiMainMenu.cpp:873
msgid "Finite liquid"
msgstr "液体有限延伸"
#: src/guiMainMenu.cpp:885
msgid "Change keys"
msgstr "改变键位设置"
#: src/guiMainMenu.cpp:1211 src/guiMainMenu.cpp:1372
msgid "Address required."
msgstr "需要地址。"
#: src/guiMainMenu.cpp:1231
msgid "Cannot delete world: Nothing selected"
msgstr "无法删除世界:没有选择世界"
#: src/guiMainMenu.cpp:1246
msgid "Files to be deleted"
msgstr "将被删除的文件"
#: src/guiMainMenu.cpp:1267
msgid "Cannot create world: No games found"
msgstr "无法创造世界:未找到游戏模式"
#: src/guiMainMenu.cpp:1286
msgid "Cannot configure world: Nothing selected"
msgstr "无法配置世界:没有选择世界"
#: src/guiMainMenu.cpp:1428
msgid "Failed to delete all world files"
msgstr "无法删除所有该世界的文件"
#: src/guiPasswordChange.cpp:108
msgid "Old Password"
msgstr "旧密码"
#: src/guiPasswordChange.cpp:126
msgid "New Password"
msgstr "新密码"
#: src/guiPasswordChange.cpp:143
msgid "Confirm Password"
msgstr "确认密码"
#: src/guiPasswordChange.cpp:161
msgid "Change"
msgstr "更改"
#: src/guiPasswordChange.cpp:170
msgid "Passwords do not match!"
msgstr "密码不匹配!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "继续"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "更改密码"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "音量"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "退出至菜单"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "退出至操作系统"
#: src/guiPauseMenu.cpp:170
msgid ""
"Default Controls:\n"
"- WASD: move\n"
"- Space: jump/climb\n"
"- Shift: sneak/go down\n"
"- Q: drop item\n"
"- I: inventory\n"
"- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
"- T: chat\n"
msgstr ""
"默认控制:\n"
"W/A/S/D: 移动\n"
"空格: 跳/爬\n"
"Shift: 潜行/向下\n"
"Q: 丢物品\n"
"I: 物品栏\n"
"鼠标:转身/环顾\n"
"鼠标左键: 挖\n"
"鼠标右键: 放/使用\n"
"鼠标滚轮: 选择物品\n"
"T: 聊天\n"
#: src/guiVolumeChange.cpp:108
msgid "Sound Volume: "
msgstr "音量: "
#: src/guiVolumeChange.cpp:122
msgid "Exit"
msgstr "退出"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "左键"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "中键"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "右键"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr "X键1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "退格"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Clear键"
#: src/keycode.cpp:224
msgid "Return"
msgstr "回车"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tab键"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "X键2"
#: src/keycode.cpp:225
msgid "Capital"
msgstr "大写"
#: src/keycode.cpp:225
msgid "Control"
msgstr "Ctrl"
#: src/keycode.cpp:225
msgid "Kana"
msgstr "假名"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "菜单"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "暂停"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift键"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "转换"
#: src/keycode.cpp:226
msgid "Escape"
msgstr "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 "无变换"
#: src/keycode.cpp:227
msgid "Accept"
msgstr "接受"
#: src/keycode.cpp:227
msgid "End"
msgstr "End键"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Home键"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "改变模式"
#: src/keycode.cpp:227
msgid "Next"
msgstr "下一个"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Prior键"
#: 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 "小键盘0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "小键盘1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "右窗口"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "睡眠"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "小键盘2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "小键盘3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "小键盘4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "小键盘5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "小键盘6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "小键盘7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "小键盘*"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "小键盘+"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "小键盘-"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "小键盘/"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "小键盘8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "小键盘9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "小键盘锁"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Scroll Lock键"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "左Shift键"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "右Shift键"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "左Control键"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "左菜单"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "右Control键"
#: 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 "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 "缩放"
#: src/main.cpp:1680
msgid "Main Menu"
msgstr "主菜单"
#: src/main.cpp:2035
msgid "Failed to initialize world"
msgstr "无法初始化世界"
#: src/main.cpp:2048
msgid "No world selected and no address provided. Nothing to do."
msgstr "没有选择世界或提供地址。未执行操作。"
#: src/main.cpp:2056
msgid "Could not find or load game \""
msgstr "无法找到或载入游戏模式“"
#: src/main.cpp:2070
msgid "Invalid gamespec."
msgstr "非法游戏模式规格。"
#: src/main.cpp:2111
msgid "Connection error (timed out?)"
msgstr "连接出错(超时?)"
#~ msgid ""
#~ "Default Controls:\n"
#~ "- WASD: Walk\n"
#~ "- Mouse left: dig/hit\n"
#~ "- Mouse right: place/use\n"
#~ "- Mouse wheel: select item\n"
#~ "- 0...9: select item\n"
#~ "- Shift: sneak\n"
#~ "- R: Toggle viewing all loaded chunks\n"
#~ "- I: Inventory menu\n"
#~ "- ESC: This menu\n"
#~ "- T: Chat\n"
#~ msgstr ""
#~ "默认控制:\n"
#~ "W/A/S/D: 走\n"
#~ "空格: 跳\n"
#~ "鼠标左键: 挖方块/攻击\n"
#~ "鼠标右键: 放置/使用\n"
#~ "鼠标滚轮: 选择物品\n"
#~ "0-9: 选择物品\n"
#~ "Shift: 潜行\n"
#~ "R切换查看所有已载入区块\n"
#~ "I物品栏\n"
#~ "ESC菜单\n"
#~ "T聊天\n"

View File

@@ -1,14 +1,26 @@
project(minetest)
cmake_minimum_required( VERSION 2.6 )
if(RUN_IN_PLACE)
add_definitions ( -DRUN_IN_PLACE )
endif(RUN_IN_PLACE)
# Set some random things default to not being visible in the GUI
mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
mark_as_advanced(JTHREAD_INCLUDE_DIR JTHREAD_LIBRARY)
mark_as_advanced(SQLITE3_INCLUDE_DIR SQLITE3_LIBRARY)
mark_as_advanced(JSON_INCLUDE_DIR JSON_LIBRARY)
option(ENABLE_CURL "Enable cURL support for fetching media" 1)
if (NOT ENABLE_CURL)
mark_as_advanced(CLEAR CURL_LIBRARY CURL_INCLUDE_DIR)
endif(NOT ENABLE_CURL)
if( ENABLE_CURL )
find_package(CURL)
endif( ENABLE_CURL )
set(USE_CURL 0)
if (CURL_FOUND AND ENABLE_CURL)
message(STATUS "cURL support enabled")
set(USE_CURL 1)
endif(CURL_FOUND AND ENABLE_CURL)
# user-visible option to enable/disable gettext usage
OPTION(ENABLE_GETTEXT "Use GetText for internationalization" 0)
@@ -82,6 +94,12 @@ if(USE_SOUND)
)
endif()
option(ENABLE_FREETYPE "Enable freetype2 (truetype fonts and basic unicode support)" OFF)
set(USE_FREETYPE 0)
if(ENABLE_FREETYPE)
set(USE_FREETYPE 1)
endif(ENABLE_FREETYPE)
if(NOT MSVC)
set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
endif()
@@ -106,6 +124,14 @@ if(WIN32)
CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
CACHE PATH "irrlicht dir")
if(USE_FREETYPE)
set(FREETYPE_INCLUDE_DIR_ft2build "${PROJECT_SOURCE_DIR}/../../freetype2/include/"
CACHE PATH "freetype include dir")
set(FREETYPE_INCLUDE_DIR_freetype2 "${PROJECT_SOURCE_DIR}/../../freetype2/include/freetype"
CACHE PATH "freetype include dir")
set(FREETYPE_LIBRARY "${PROJECT_SOURCE_DIR}/../../freetype2/objs/win32/vc2005/freetype247.lib"
CACHE FILEPATH "Path to freetype247.lib")
endif(USE_FREETYPE)
set(MINGWM10_DLL ""
CACHE FILEPATH "Path to mingwm10.dll (for installation)")
if(ENABLE_SOUND)
@@ -135,26 +161,57 @@ else()
endif(APPLE)
endif(BUILD_CLIENT)
find_package(ZLIB REQUIRED)
set(PLATFORM_LIBS -lpthread ${CMAKE_DL_LIBS})
set(PLATFORM_LIBS -lpthread -lrt ${CMAKE_DL_LIBS})
#set(CLIENT_PLATFORM_LIBS -lXxf86vm)
# This way Xxf86vm is found on OpenBSD too
find_library(XXF86VM_LIBRARY Xxf86vm)
mark_as_advanced(XXF86VM_LIBRARY)
set(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${XXF86VM_LIBRARY})
endif()
find_package(Jthread REQUIRED)
find_package(Sqlite3 REQUIRED)
find_package(Json REQUIRED)
find_package(OpenGLES2)
# TODO: Create proper find script for Lua
set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
set(LUA_LIBRARY "lua")
if(USE_FREETYPE)
find_package(Freetype REQUIRED)
set(CGUITTFONT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cguittfont")
set(CGUITTFONT_LIBRARY cguittfont)
endif(USE_FREETYPE)
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
genericobject.cpp
voxelalgorithms.cpp
sound.cpp
@@ -168,11 +225,17 @@ set(common_SRCS
itemdef.cpp
nodedef.cpp
object_properties.cpp
scriptapi.cpp
script.cpp
log.cpp
content_sao.cpp
emerge.cpp
mapgen.cpp
mapgen_v6.cpp
mapgen_v7.cpp
mapgen_indev.cpp
mapgen_singlenode.cpp
treegen.cpp
dungeongen.cpp
cavegen.cpp
content_nodemeta.cpp
content_mapnode.cpp
collision.cpp
@@ -193,7 +256,6 @@ set(common_SRCS
connection.cpp
environment.cpp
server.cpp
servercommand.cpp
socket.cpp
mapblock.cpp
mapsector.cpp
@@ -203,12 +265,13 @@ set(common_SRCS
sha1.cpp
base64.cpp
ban.cpp
util/serialize.cpp
util/directiontables.cpp
util/numeric.cpp
util/pointedthing.cpp
util/string.cpp
util/timetaker.cpp
biome.cpp
clientserver.cpp
staticobject.cpp
serverlist.cpp
pathfinder.cpp
${SCRIPT_SRCS}
${UTIL_SRCS}
)
# This gives us the icon
@@ -245,26 +308,38 @@ set(minetest_SRCS
keycode.cpp
camera.cpp
clouds.cpp
particles.cpp
clientobject.cpp
chat.cpp
hud.cpp
guiMainMenu.cpp
guiKeyChangeMenu.cpp
guiMessageMenu.cpp
guiTextInputMenu.cpp
guiInventoryMenu.cpp
guiFormSpecMenu.cpp
guiPauseMenu.cpp
guiPasswordChange.cpp
guiVolumeChange.cpp
guiDeathScreen.cpp
guiChatConsole.cpp
guiCreateWorld.cpp
guiConfigureWorld.cpp
guiConfirmMenu.cpp
client.cpp
filecache.cpp
tile.cpp
shader.cpp
game.cpp
main.cpp
)
if(USE_FREETYPE)
set(minetest_SRCS
${minetest_SRCS}
intlGUIEditBox.cpp
)
endif(USE_FREETYPE)
# Server sources
set(minetestserver_SRCS
${common_SRCS}
@@ -273,6 +348,7 @@ set(minetestserver_SRCS
include_directories(
${PROJECT_BINARY_DIR}
${PROJECT_SOURCE_DIR}
${IRRLICHT_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR}
${CMAKE_BUILD_TYPE}
@@ -282,8 +358,23 @@ include_directories(
${JTHREAD_INCLUDE_DIR}
${SQLITE3_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
${JSON_INCLUDE_DIR}
${PROJECT_SOURCE_DIR}/script
)
if(USE_FREETYPE)
include_directories(
${FREETYPE_INCLUDE_DIRS}
${CGUITTFONT_INCLUDE_DIR}
)
endif(USE_FREETYPE)
if(USE_CURL)
include_directories(
${CURL_INCLUDE_DIR}
)
endif(USE_CURL)
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
if(BUILD_CLIENT)
@@ -302,9 +393,24 @@ if(BUILD_CLIENT)
${JTHREAD_LIBRARY}
${SQLITE3_LIBRARY}
${LUA_LIBRARY}
${JSON_LIBRARY}
${OPENGLES2_LIBRARIES}
${PLATFORM_LIBS}
${CLIENT_PLATFORM_LIBS}
)
if(USE_CURL)
target_link_libraries(
${PROJECT_NAME}
${CURL_LIBRARY}
)
endif(USE_CURL)
if(USE_FREETYPE)
target_link_libraries(
${PROJECT_NAME}
${FREETYPE_LIBRARY}
${CGUITTFONT_LIBRARY}
)
endif(USE_FREETYPE)
endif(BUILD_CLIENT)
if(BUILD_SERVER)
@@ -314,11 +420,20 @@ if(BUILD_SERVER)
${ZLIB_LIBRARIES}
${JTHREAD_LIBRARY}
${SQLITE3_LIBRARY}
${JSON_LIBRARY}
${GETTEXT_LIBRARY}
${LUA_LIBRARY}
${PLATFORM_LIBS}
)
if(USE_CURL)
target_link_libraries(
${PROJECT_NAME}server
${CURL_LIBRARY}
)
endif(USE_CURL)
endif(BUILD_SERVER)
#
# Set some optimizations and tweaks
#
@@ -411,6 +526,9 @@ if(WIN32)
if(VORBISFILE_DLL)
install(FILES ${VORBISFILE_DLL} DESTINATION ${BINDIR})
endif()
if(CURL_DLL)
install(FILES ${CURL_DLL} DESTINATION ${BINDIR})
endif()
endif()
endif()
@@ -482,9 +600,13 @@ else (SQLITE3_FOUND)
add_subdirectory(sqlite)
endif (SQLITE3_FOUND)
if (LUA_FOUND)
else (LUA_FOUND)
add_subdirectory(lua)
endif (LUA_FOUND)
if (BUILD_CLIENT AND USE_FREETYPE)
add_subdirectory(cguittfont)
endif (BUILD_CLIENT AND USE_FREETYPE)
if (JSON_FOUND)
else (JSON_FOUND)
add_subdirectory(json)
endif (JSON_FOUND)
#end

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -61,7 +61,7 @@ class ActiveObject
}
virtual u8 getType() const = 0;
virtual bool getCollisionBox(aabb3f *toset) = 0;
protected:
u16 m_id; // 0 is invalid, "no id"
};

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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

View File

@@ -1,5 +1,10 @@
#ifndef BASE64_HEADER
#define BASE64_HEADER
#include <string>
bool base64_is_valid(std::string const& s);
std::string base64_encode(unsigned char const* , unsigned int len);
std::string base64_decode(std::string const& s);
#endif // BASE64_HEADER

170
src/biome.cpp Normal file
View File

@@ -0,0 +1,170 @@
/*
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.
*/
#include "biome.h"
#include "nodedef.h"
#include "map.h" //for ManualMapVoxelManipulator
#include "log.h"
#include "main.h"
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};
BiomeDefManager::BiomeDefManager() {
biome_registration_finished = false;
np_heat = &nparams_biome_def_heat;
np_humidity = &nparams_biome_def_humidity;
// Create default biome to be used in case none exist
Biome *b = new Biome;
b->id = 0;
b->name = "Default";
b->flags = 0;
b->c_top = CONTENT_AIR;
b->top_depth = 0;
b->c_filler = b->c_top;
b->filler_height = MAP_GENERATION_LIMIT;
b->height_min = -MAP_GENERATION_LIMIT;
b->height_max = MAP_GENERATION_LIMIT;
b->heat_point = 0.0;
b->humidity_point = 0.0;
biomes.push_back(b);
}
BiomeDefManager::~BiomeDefManager() {
//if (biomecache)
// delete[] biomecache;
for (size_t i = 0; i != biomes.size(); i++)
delete biomes[i];
}
Biome *BiomeDefManager::createBiome(BiomeTerrainType btt) {
/*switch (btt) {
case BIOME_TERRAIN_NORMAL:
return new Biome;
case BIOME_TERRAIN_LIQUID:
return new BiomeLiquid;
case BIOME_TERRAIN_NETHER:
return new BiomeHell;
case BIOME_TERRAIN_AETHER:
return new BiomeSky;
case BIOME_TERRAIN_FLAT:
return new BiomeSuperflat;
}
return NULL;*/
return new Biome;
}
// 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;
}
}
}
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) {
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;
}
b->id = (u8)nbiomes;
biomes.push_back(b);
verbosestream << "BiomeDefManager: added biome " << b->name << std::endl;
}
Biome *BiomeDefManager::getBiome(float heat, float humidity, s16 y) {
Biome *b, *biome_closest = NULL;
float dist_min = FLT_MAX;
for (size_t i = 1; i < biomes.size(); i++) {
b = biomes[i];
if (y > b->height_max || y < b->height_min)
continue;
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_closest ? biome_closest : biomes[0];
}

89
src/biome.h Normal file
View File

@@ -0,0 +1,89 @@
/*
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 BIOME_HEADER
#define BIOME_HEADER
#include <string>
#include "nodedef.h"
#include "gamedef.h"
#include "mapnode.h"
#include "noise.h"
#include "mapgen.h"
enum BiomeTerrainType
{
BIOME_TERRAIN_NORMAL,
BIOME_TERRAIN_LIQUID,
BIOME_TERRAIN_NETHER,
BIOME_TERRAIN_AETHER,
BIOME_TERRAIN_FLAT
};
extern NoiseParams nparams_biome_def_heat;
extern NoiseParams nparams_biome_def_humidity;
class Biome {
public:
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_point;
float humidity_point;
};
struct BiomeNoiseInput {
v2s16 mapsize;
float *heat_map;
float *humidity_map;
s16 *height_map;
};
class BiomeDefManager {
public:
std::vector<Biome *> biomes;
bool biome_registration_finished;
NoiseParams *np_heat;
NoiseParams *np_humidity;
BiomeDefManager();
~BiomeDefManager();
Biome *createBiome(BiomeTerrainType btt);
void calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map);
Biome *getBiome(float heat, float humidity, s16 y);
void addBiome(Biome *b);
void resolveNodeNames(INodeDefManager *ndef);
};
#endif

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -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,9 +266,31 @@ 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)
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());
m_headnode->setRotation(v3f(player->getPitch(), 0, 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();
// Compute relative camera position and target
@@ -308,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);
@@ -318,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)
@@ -336,13 +394,13 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
if (m_digging_button != -1)
{
f32 digfrac = m_digging_anim;
wield_position.X -= 30 * sin(pow(digfrac, 0.8f) * M_PI);
wield_position.Y += 15 * sin(digfrac * 2 * M_PI);
wield_position.Z += 5 * digfrac;
wield_position.X -= 50 * sin(pow(digfrac, 0.8f) * M_PI);
wield_position.Y += 24 * sin(digfrac * 1.8 * M_PI);
wield_position.Z += 25 * 0.5;
// Euler angles are PURE EVIL, so why not use quaternions?
core::quaternion quat_begin(wield_rotation * core::DEGTORAD);
core::quaternion quat_end(v3f(90, -10, -130) * core::DEGTORAD);
core::quaternion quat_end(v3f(80, 30, 100) * core::DEGTORAD);
core::quaternion quat_slerp;
quat_slerp.slerp(quat_begin, quat_end, sin(digfrac * M_PI));
quat_slerp.toEuler(wield_rotation);
@@ -526,25 +584,41 @@ 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 = item.getDefinition(idef).wield_mesh;
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;
}
}
void Camera::drawWieldedTool()
{
// Set vertex colors of wield mesh according to light level
u8 li = decode_light(m_wieldlight);
u8 li = m_wieldlight;
video::SColor color(255,li,li,li);
setMeshColor(m_wieldnode->getMesh(), color);

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -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

File diff suppressed because it is too large Load Diff

377
src/cguittfont/CGUITTFont.h Normal file
View File

@@ -0,0 +1,377 @@
/*
CGUITTFont FreeType class for Irrlicht
Copyright (c) 2009-2010 John Norman
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you use
this software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
The original version of this class can be located at:
http://irrlicht.suckerfreegames.com/
John Norman
john@suckerfreegames.com
*/
#ifndef __C_GUI_TTFONT_H_INCLUDED__
#define __C_GUI_TTFONT_H_INCLUDED__
#include <irrlicht.h>
#include <ft2build.h>
#include FT_FREETYPE_H
namespace irr
{
namespace gui
{
struct SGUITTFace;
class CGUITTFont;
//! Class to assist in deleting glyphs.
class CGUITTAssistDelete
{
public:
template <class T, typename TAlloc>
static void Delete(core::array<T, TAlloc>& a)
{
TAlloc allocator;
allocator.deallocate(a.pointer());
}
};
//! Structure representing a single TrueType glyph.
struct SGUITTGlyph
{
//! Constructor.
SGUITTGlyph() : isLoaded(false), glyph_page(0), surface(0), parent(0) {}
//! Destructor.
~SGUITTGlyph() { unload(); }
//! Preload the glyph.
//! The preload process occurs when the program tries to cache the glyph from FT_Library.
//! However, it simply defines the SGUITTGlyph's properties and will only create the page
//! textures if necessary. The actual creation of the textures should only occur right
//! before the batch draw call.
void preload(u32 char_index, FT_Face face, video::IVideoDriver* driver, u32 font_size, const FT_Int32 loadFlags);
//! Unloads the glyph.
void unload();
//! Creates the IImage object from the FT_Bitmap.
video::IImage* createGlyphImage(const FT_Bitmap& bits, video::IVideoDriver* driver) const;
//! If true, the glyph has been loaded.
bool isLoaded;
//! The page the glyph is on.
u32 glyph_page;
//! The source rectangle for the glyph.
core::recti source_rect;
//! The offset of glyph when drawn.
core::vector2di offset;
//! Glyph advance information.
FT_Vector advance;
//! This is just the temporary image holder. After this glyph is paged,
//! it will be dropped.
mutable video::IImage* surface;
//! The pointer pointing to the parent (CGUITTFont)
CGUITTFont* parent;
};
//! Holds a sheet of glyphs.
class CGUITTGlyphPage
{
public:
CGUITTGlyphPage(video::IVideoDriver* Driver, const io::path& texture_name) :texture(0), available_slots(0), used_slots(0), dirty(false), driver(Driver), name(texture_name) {}
~CGUITTGlyphPage()
{
if (texture)
{
if (driver)
driver->removeTexture(texture);
else texture->drop();
}
}
//! Create the actual page texture,
bool createPageTexture(const u8& pixel_mode, const core::dimension2du& texture_size)
{
if( texture )
return false;
bool flgmip = driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
// Set the texture color format.
switch (pixel_mode)
{
case FT_PIXEL_MODE_MONO:
texture = driver->addTexture(texture_size, name, video::ECF_A1R5G5B5);
break;
case FT_PIXEL_MODE_GRAY:
default:
texture = driver->addTexture(texture_size, name, video::ECF_A8R8G8B8);
break;
}
// Restore our texture creation flags.
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flgmip);
return texture ? true : false;
}
//! Add the glyph to a list of glyphs to be paged.
//! This collection will be cleared after updateTexture is called.
void pushGlyphToBePaged(const SGUITTGlyph* glyph)
{
glyph_to_be_paged.push_back(glyph);
}
//! Updates the texture atlas with new glyphs.
void updateTexture()
{
if (!dirty) return;
void* ptr = texture->lock();
video::ECOLOR_FORMAT format = texture->getColorFormat();
core::dimension2du size = texture->getOriginalSize();
video::IImage* pageholder = driver->createImageFromData(format, size, ptr, true, false);
for (u32 i = 0; i < glyph_to_be_paged.size(); ++i)
{
const SGUITTGlyph* glyph = glyph_to_be_paged[i];
if (glyph && glyph->isLoaded)
{
if (glyph->surface)
{
glyph->surface->copyTo(pageholder, glyph->source_rect.UpperLeftCorner);
glyph->surface->drop();
glyph->surface = 0;
}
else
{
; // TODO: add error message?
//currently, if we failed to create the image, just ignore this operation.
}
}
}
pageholder->drop();
texture->unlock();
glyph_to_be_paged.clear();
dirty = false;
}
video::ITexture* texture;
u32 available_slots;
u32 used_slots;
bool dirty;
core::array<core::vector2di> render_positions;
core::array<core::recti> render_source_rects;
private:
core::array<const SGUITTGlyph*> glyph_to_be_paged;
video::IVideoDriver* driver;
io::path name;
};
//! Class representing a TrueType font.
class CGUITTFont : public IGUIFont
{
public:
//! Creates a new TrueType font and returns a pointer to it. The pointer must be drop()'ed when finished.
//! \param env The IGUIEnvironment the font loads out of.
//! \param filename The filename of the font.
//! \param size The size of the font glyphs in pixels. Since this is the size of the individual glyphs, the true height of the font may change depending on the characters used.
//! \param antialias set the use_monochrome (opposite to antialias) flag
//! \param transparency set the use_transparency flag
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
//! Destructor
virtual ~CGUITTFont();
//! Sets the amount of glyphs to batch load.
virtual void setBatchLoadSize(u32 batch_size) { batch_load_size = batch_size; }
//! Sets the maximum texture size for a page of glyphs.
virtual void setMaxPageTextureSize(const core::dimension2du& texture_size) { max_page_texture_size = texture_size; }
//! Get the font size.
virtual u32 getFontSize() const { return size; }
//! Check the font's transparency.
virtual bool isTransparent() const { return use_transparency; }
//! Check if the font auto-hinting is enabled.
//! Auto-hinting is FreeType's built-in font hinting engine.
virtual bool useAutoHinting() const { return use_auto_hinting; }
//! Check if the font hinting is enabled.
virtual bool useHinting() const { return use_hinting; }
//! Check if the font is being loaded as a monochrome font.
//! The font can either be a 256 color grayscale font, or a 2 color monochrome font.
virtual bool useMonochrome() const { return use_monochrome; }
//! Tells the font to allow transparency when rendering.
//! Default: true.
//! \param flag If true, the font draws using transparency.
virtual void setTransparency(const bool flag);
//! Tells the font to use monochrome rendering.
//! Default: false.
//! \param flag If true, the font draws using a monochrome image. If false, the font uses a grayscale image.
virtual void setMonochrome(const bool flag);
//! Enables or disables font hinting.
//! Default: Hinting and auto-hinting true.
//! \param enable If false, font hinting is turned off. If true, font hinting is turned on.
//! \param enable_auto_hinting If true, FreeType uses its own auto-hinting algorithm. If false, it tries to use the algorithm specified by the font.
virtual void setFontHinting(const bool enable, const bool enable_auto_hinting = true);
//! Draws some text and clips it to the specified rectangle if wanted.
virtual void draw(const core::stringw& text, const core::rect<s32>& position,
video::SColor color, bool hcenter=false, bool vcenter=false,
const core::rect<s32>* clip=0);
//! Returns the dimension of a character produced by this font.
virtual core::dimension2d<u32> getCharDimension(const wchar_t ch) const;
//! Returns the dimension of a text string.
virtual core::dimension2d<u32> getDimension(const wchar_t* text) const;
virtual core::dimension2d<u32> getDimension(const core::ustring& text) const;
//! Calculates the index of the character in the text which is on a specific position.
virtual s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const;
virtual s32 getCharacterFromPos(const core::ustring& text, s32 pixel_x) const;
//! Sets global kerning width for the font.
virtual void setKerningWidth(s32 kerning);
//! Sets global kerning height for the font.
virtual void setKerningHeight(s32 kerning);
//! Gets kerning values (distance between letters) for the font. If no parameters are provided,
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const;
virtual s32 getKerningWidth(const uchar32_t thisLetter=0, const uchar32_t previousLetter=0) const;
//! Returns the distance between letters
virtual s32 getKerningHeight() const;
//! Define which characters should not be drawn by the font.
virtual void setInvisibleCharacters(const wchar_t *s);
virtual void setInvisibleCharacters(const core::ustring& s);
//! Get the last glyph page if there's still available slots.
//! If not, it will return zero.
CGUITTGlyphPage* getLastGlyphPage() const;
//! Create a new glyph page texture.
//! \param pixel_mode the pixel mode defined by FT_Pixel_Mode
//should be better typed. fix later.
CGUITTGlyphPage* createGlyphPage(const u8& pixel_mode);
//! Get the last glyph page's index.
u32 getLastGlyphPageIndex() const { return Glyph_Pages.size() - 1; }
//! Create corresponding character's software image copy from the font,
//! so you can use this data just like any ordinary video::IImage.
//! \param ch The character you need
virtual video::IImage* createTextureFromChar(const uchar32_t& ch);
//! This function is for debugging mostly. If the page doesn't exist it returns zero.
//! \param page_index Simply return the texture handle of a given page index.
virtual video::ITexture* getPageTextureByIndex(const u32& page_index) const;
//! Add a list of scene nodes generated by putting font textures on the 3D planes.
virtual core::array<scene::ISceneNode*> addTextSceneNode
(const wchar_t* text, scene::ISceneManager* smgr, scene::ISceneNode* parent = 0,
const video::SColor& color = video::SColor(255, 0, 0, 0), bool center = false );
protected:
bool use_monochrome;
bool use_transparency;
bool use_hinting;
bool use_auto_hinting;
u32 size;
u32 batch_load_size;
core::dimension2du max_page_texture_size;
private:
// Manages the FreeType library.
static FT_Library c_library;
static core::map<io::path, SGUITTFace*> c_faces;
static bool c_libraryLoaded;
static scene::IMesh* shared_plane_ptr_;
static scene::SMesh shared_plane_;
CGUITTFont(IGUIEnvironment *env);
bool load(const io::path& filename, const u32 size, const bool antialias, const bool transparency);
void reset_images();
void update_glyph_pages() const;
void update_load_flags()
{
// Set up our loading flags.
load_flags = FT_LOAD_DEFAULT | FT_LOAD_RENDER;
if (!useHinting()) load_flags |= FT_LOAD_NO_HINTING;
if (!useAutoHinting()) load_flags |= FT_LOAD_NO_AUTOHINT;
if (useMonochrome()) load_flags |= FT_LOAD_MONOCHROME | FT_LOAD_TARGET_MONO | FT_RENDER_MODE_MONO;
else load_flags |= FT_LOAD_TARGET_NORMAL;
}
u32 getWidthFromCharacter(wchar_t c) const;
u32 getWidthFromCharacter(uchar32_t c) const;
u32 getHeightFromCharacter(wchar_t c) const;
u32 getHeightFromCharacter(uchar32_t c) const;
u32 getGlyphIndexByChar(wchar_t c) const;
u32 getGlyphIndexByChar(uchar32_t c) const;
core::vector2di getKerning(const wchar_t thisLetter, const wchar_t previousLetter) const;
core::vector2di getKerning(const uchar32_t thisLetter, const uchar32_t previousLetter) const;
core::dimension2d<u32> getDimensionUntilEndOfLine(const wchar_t* p) const;
void createSharedPlane();
irr::IrrlichtDevice* Device;
gui::IGUIEnvironment* Environment;
video::IVideoDriver* Driver;
io::path filename;
FT_Face tt_face;
FT_Size_Metrics font_metrics;
FT_Int32 load_flags;
mutable core::array<CGUITTGlyphPage*> Glyph_Pages;
mutable core::array<SGUITTGlyph> Glyphs;
s32 GlobalKerningWidth;
s32 GlobalKerningHeight;
core::ustring Invisible;
};
} // end namespace gui
} // end namespace irr
#endif // __C_GUI_TTFONT_H_INCLUDED__

View File

@@ -0,0 +1,17 @@
include_directories(
${IRRLICHT_INCLUDE_DIR}
${FREETYPE_INCLUDE_DIRS}
)
# CGUITTFont authors, y u no include headers you use?
# Do not add CGUITTFont.cpp to the line below.
# xCGUITTFont.cpp is a wrapper file that includes
# additional required headers.
add_library(cguittfont xCGUITTFont.cpp)
target_link_libraries(
cguittfont
${IRRLICHT_LIBRARY}
${FREETYPE_LIBRARY}
${ZLIB_LIBRARIES} # needed by freetype, repeated here for safety
)

3877
src/cguittfont/irrUString.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
// A wrapper source file to avoid hack with gcc and modifying
// the CGUITTFont files.
#include "xCGUITTFont.h"
#include "CGUITTFont.cpp"

View File

@@ -0,0 +1,7 @@
// A wrapper header to avoid hack with gcc and modifying
// the CGUITTFont files.
#include <algorithm>
#include <stddef.h>
#include "irrUString.h"
#include "CGUITTFont.h"

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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
@@ -117,8 +117,8 @@ void ChatBuffer::deleteOldest(u32 count)
--count;
}
m_unformatted.erase(0, del_unformatted);
m_formatted.erase(0, del_formatted);
m_unformatted.erase(m_unformatted.begin(), m_unformatted.begin() + del_unformatted);
m_formatted.erase(m_formatted.begin(), m_formatted.begin() + del_formatted);
}
void ChatBuffer::deleteByAge(f32 maxAge)
@@ -232,10 +232,10 @@ void ChatBuffer::scrollTop()
}
u32 ChatBuffer::formatChatLine(const ChatLine& line, u32 cols,
core::array<ChatFormattedLine>& destination) const
std::vector<ChatFormattedLine>& destination) const
{
u32 num_added = 0;
core::array<ChatFormattedFragment> next_frags;
std::vector<ChatFormattedFragment> next_frags;
ChatFormattedLine next_line;
ChatFormattedFragment temp_frag;
u32 out_column = 0;
@@ -292,7 +292,7 @@ u32 ChatBuffer::formatChatLine(const ChatLine& line, u32 cols,
frag.column = out_column;
next_line.fragments.push_back(frag);
out_column += frag.text.size();
next_frags.erase(0, 1);
next_frags.erase(next_frags.begin());
}
else
{
@@ -414,7 +414,7 @@ std::wstring ChatPrompt::submit()
if (!line.empty())
m_history.push_back(line);
if (m_history.size() > m_history_limit)
m_history.erase(0);
m_history.erase(m_history.begin());
m_history_index = m_history.size();
m_view = 0;
m_cursor = 0;
@@ -464,7 +464,7 @@ void ChatPrompt::historyNext()
}
}
void ChatPrompt::nickCompletion(const core::list<std::wstring>& names, bool backwards)
void ChatPrompt::nickCompletion(const std::list<std::string>& names, bool backwards)
{
// Two cases:
// (a) m_nick_completion_start == m_nick_completion_end == 0
@@ -492,14 +492,14 @@ void ChatPrompt::nickCompletion(const core::list<std::wstring>& names, bool back
std::wstring prefix = m_line.substr(prefix_start, prefix_end - prefix_start);
// find all names that start with the selected prefix
core::array<std::wstring> completions;
for (core::list<std::wstring>::ConstIterator
std::vector<std::wstring> completions;
for (std::list<std::string>::const_iterator
i = names.begin();
i != names.end(); i++)
i != names.end(); ++i)
{
if (str_starts_with(*i, prefix, true))
if (str_starts_with(narrow_to_wide(*i), prefix, true))
{
std::wstring completion = *i;
std::wstring completion = narrow_to_wide(*i);
if (prefix_start == 0)
completion += L":";
completions.push_back(completion);

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "irrlichttypes_bloated.h"
#include <string>
#include <vector>
#include <list>
// Chat console related classes, only used by the client
@@ -55,7 +57,7 @@ struct ChatFormattedFragment
struct ChatFormattedLine
{
// Array of text fragments
core::array<ChatFormattedFragment> fragments;
std::vector<ChatFormattedFragment> fragments;
// true if first line of one formatted ChatLine
bool first;
};
@@ -110,7 +112,7 @@ class ChatBuffer
// Appends the formatted lines to the destination array and
// returns the number of formatted lines.
u32 formatChatLine(const ChatLine& line, u32 cols,
core::array<ChatFormattedLine>& destination) const;
std::vector<ChatFormattedLine>& destination) const;
protected:
s32 getTopScrollPos() const;
@@ -120,7 +122,7 @@ class ChatBuffer
// Scrollback size
u32 m_scrollback;
// Array of unformatted chat lines
core::array<ChatLine> m_unformatted;
std::vector<ChatLine> m_unformatted;
// Number of character columns in console
u32 m_cols;
@@ -129,7 +131,7 @@ class ChatBuffer
// Scroll position (console's top line index into m_formatted)
s32 m_scroll;
// Array of formatted lines
core::array<ChatFormattedLine> m_formatted;
std::vector<ChatFormattedLine> m_formatted;
// Empty formatted line, for error returns
ChatFormattedLine m_empty_formatted_line;
};
@@ -158,7 +160,7 @@ class ChatPrompt
void historyNext();
// Nick completion
void nickCompletion(const core::list<std::wstring>& names, bool backwards);
void nickCompletion(const std::list<std::string>& names, bool backwards);
// Update console size and reformat the visible portion of the prompt
void reformat(u32 cols);
@@ -209,7 +211,7 @@ class ChatPrompt
// Currently edited line
std::wstring m_line;
// History buffer
core::array<std::wstring> m_history;
std::vector<std::wstring> m_history;
// History index (0 <= m_history_index <= m_history.size())
u32 m_history_index;
// Maximum number of history entries

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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
@@ -33,12 +33,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "filesys.h"
#include "filecache.h"
#include "localplayer.h"
#include "server.h"
#include "particles.h"
#include "util/pointedthing.h"
#include <algorithm>
struct MeshMakeData;
class MapBlockMesh;
class IGameDef;
class IWritableTextureSource;
class IWritableShaderSource;
class IWritableItemDefManager;
class IWritableNodeDefManager;
//class IWritableCraftDefManager;
@@ -128,13 +132,38 @@ class MeshUpdateThread : public SimpleThread
IGameDef *m_gamedef;
};
class MediaFetchThread : public SimpleThread
{
public:
MediaFetchThread(IGameDef *gamedef):
m_gamedef(gamedef)
{
}
void * Thread();
std::list<MediaRequest> m_file_requests;
MutexedQueue<std::pair<std::string, std::string> > m_file_data;
std::list<MediaRequest> m_failed;
std::string m_remote_url;
IGameDef *m_gamedef;
};
enum ClientEventType
{
CE_NONE,
CE_PLAYER_DAMAGE,
CE_PLAYER_FORCE_MOVE,
CE_DEATHSCREEN,
CE_TEXTURES_UPDATED
CE_TEXTURES_UPDATED,
CE_SHOW_FORMSPEC,
CE_SPAWN_PARTICLE,
CE_ADD_PARTICLESPAWNER,
CE_DELETE_PARTICLESPAWNER,
CE_HUDADD,
CE_HUDRM,
CE_HUDCHANGE
};
struct ClientEvent
@@ -156,8 +185,64 @@ struct ClientEvent
f32 camera_point_target_y;
f32 camera_point_target_z;
} deathscreen;
struct{
std::string *formspec;
std::string *formname;
} show_formspec;
struct{
} textures_updated;
struct{
v3f *pos;
v3f *vel;
v3f *acc;
f32 expirationtime;
f32 size;
bool collisiondetection;
std::string *texture;
} spawn_particle;
struct{
u16 amount;
f32 spawntime;
v3f *minpos;
v3f *maxpos;
v3f *minvel;
v3f *maxvel;
v3f *minacc;
v3f *maxacc;
f32 minexptime;
f32 maxexptime;
f32 minsize;
f32 maxsize;
bool collisiondetection;
std::string *texture;
u32 id;
} add_particlespawner;
struct{
u32 id;
} delete_particlespawner;
struct{
u32 id;
u8 type;
v2f *pos;
std::string *name;
v2f *scale;
std::string *text;
u32 number;
u32 item;
u32 dir;
v2f *align;
v2f *offset;
} hudadd;
struct{
u32 id;
} hudrm;
struct{
u32 id;
HudElementStat stat;
v2f *v2fdata;
std::string *sdata;
u32 data;
} hudchange;
};
};
@@ -174,6 +259,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
std::string password,
MapDrawControl &control,
IWritableTextureSource *tsrc,
IWritableShaderSource *shsrc,
IWritableItemDefManager *itemdef,
IWritableNodeDefManager *nodedef,
ISoundManager *sound,
@@ -212,6 +298,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
void sendNodemetaFields(v3s16 p, const std::string &formname,
const std::map<std::string, std::string> &fields);
void sendInventoryFields(const std::string &formname,
const std::map<std::string, std::string> &fields);
void sendInventoryAction(InventoryAction *a);
void sendChatMessage(const std::wstring &message);
void sendChangePassword(const std::wstring oldpassword,
@@ -253,7 +341,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
// Prints a line or two of info
void printDebugInfo(std::ostream &os);
core::list<std::wstring> getConnectedPlayerNames();
std::list<std::string> getConnectedPlayerNames();
float getAnimationTime();
@@ -285,16 +373,19 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
{ return m_access_denied_reason; }
float mediaReceiveProgress()
{ return m_media_receive_progress; }
{
if (!m_media_receive_started) return 0;
return 1.0 * m_media_received_count / m_media_count;
}
bool texturesReceived()
{ return m_media_received; }
{ return m_media_receive_started && m_media_received_count == m_media_count; }
bool itemdefReceived()
{ return m_itemdef_received; }
bool nodedefReceived()
{ return m_nodedef_received; }
void afterContentReceived();
void afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font);
float getRTT(void);
@@ -303,6 +394,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
virtual INodeDefManager* getNodeDefManager();
virtual ICraftDefManager* getCraftDefManager();
virtual ITextureSource* getTextureSource();
virtual IShaderSource* getShaderSource();
virtual u16 allocateUnknownNodeId(const std::string &name);
virtual ISoundManager* getSoundManager();
virtual MtEventManager* getEventManager();
@@ -313,7 +405,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
// Insert a media file appropriately into the appropriate manager
bool loadMedia(const std::string &data, const std::string &filename);
void request_media(const std::list<MediaRequest> &file_requests);
// Virtual methods from con::PeerHandler
void peerAdded(con::Peer *peer);
void deletingPeer(con::Peer *peer, bool timeout);
@@ -335,12 +429,14 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
IntervalLimiter m_map_timer_and_unload_interval;
IWritableTextureSource *m_tsrc;
IWritableShaderSource *m_shsrc;
IWritableItemDefManager *m_itemdef;
IWritableNodeDefManager *m_nodedef;
ISoundManager *m_sound;
MtEventManager *m_event;
MeshUpdateThread m_mesh_update_thread;
std::list<MediaFetchThread*> m_media_fetch_threads;
ClientEnvironment m_env;
con::Connection m_con;
IrrlichtDevice *m_device;
@@ -350,7 +446,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
bool m_inventory_updated;
Inventory *m_inventory_from_server;
float m_inventory_from_server_age;
core::map<v3s16, bool> m_active_blocks;
std::set<v3s16> m_active_blocks;
PacketCounter m_packetcounter;
// Block mesh animation parameters
float m_animation_time;
@@ -368,9 +464,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
Queue<ClientEvent> m_client_event_queue;
FileCache m_media_cache;
// Mapping from media file name to SHA1 checksum
core::map<std::string, std::string> m_media_name_sha1_map;
float m_media_receive_progress;
bool m_media_received;
std::map<std::string, std::string> m_media_name_sha1_map;
bool m_media_receive_started;
u32 m_media_count;
u32 m_media_received_count;
bool m_itemdef_received;
bool m_nodedef_received;
friend class FarMesh;
@@ -380,6 +477,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
float m_last_time_of_day_f;
float m_time_of_day_update_timer;
// An interval for generally sending object positions and stuff
float m_recommended_send_interval;
// Sounds
float m_removed_sounds_check_timer;
// Mapping from server sound ids to our sound ids
@@ -391,6 +491,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
// Privileges
std::set<std::string> m_privileges;
// Detached inventories
// key = name
std::map<std::string, Inventory*> m_detached_inventories;
};
#endif // !CLIENT_HEADER

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "profiler.h"
#include "settings.h"
#include "util/mathconstants.h"
#include <algorithm>
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
@@ -83,7 +84,7 @@ MapSector * ClientMap::emergeSector(v2s16 p2d)
{
//JMutexAutoLock lock(m_sector_mutex); // Bulk comment-out
m_sectors.insert(p2d, sector);
m_sectors[p2d] = sector;
}
return sector;
@@ -157,43 +158,21 @@ static bool isOccluded(Map *map, v3s16 p0, v3s16 p1, float step, float stepfac,
return false;
}
void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
void ClientMap::updateDrawList(video::IVideoDriver* driver)
{
ScopeProfiler sp(g_profiler, "CM::updateDrawList()", SPT_AVG);
g_profiler->add("CM::updateDrawList() count", 1);
INodeDefManager *nodemgr = m_gamedef->ndef();
//m_dout<<DTIME<<"Rendering map..."<<std::endl;
DSTACK(__FUNCTION_NAME);
bool is_transparent_pass = pass == scene::ESNRP_TRANSPARENT;
std::string prefix;
if(pass == scene::ESNRP_SOLID)
prefix = "CM: solid: ";
else
prefix = "CM: transparent: ";
/*
This is called two times per frame, reset on the non-transparent one
*/
if(pass == scene::ESNRP_SOLID)
for(std::map<v3s16, MapBlock*>::iterator
i = m_drawlist.begin();
i != m_drawlist.end(); ++i)
{
m_last_drawn_sectors.clear();
MapBlock *block = i->second;
block->refDrop();
}
/*
Get time for measuring timeout.
Measuring time is very useful for long delays when the
machine is swapping a lot.
*/
int time1 = time(0);
/*
Get animation parameters
*/
float animation_time = m_client->getAnimationTime();
int crack = m_client->getCrackLevel();
u32 daynight_ratio = m_client->getEnv().getDayNightRatio();
m_drawlist.clear();
m_camera_mutex.Lock();
v3f camera_position = m_camera_position;
@@ -201,17 +180,15 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
f32 camera_fov = m_camera_fov;
m_camera_mutex.Unlock();
/*
Get all blocks and draw all visible ones
*/
// Use a higher fov to accomodate faster camera movements.
// Blocks are cropped better when they are drawn.
// Or maybe they aren't? Well whatever.
camera_fov *= 1.2;
v3s16 cam_pos_nodes = floatToInt(camera_position, BS);
v3s16 box_nodes_d = m_control.wanted_range * v3s16(1,1,1);
v3s16 p_nodes_min = cam_pos_nodes - box_nodes_d;
v3s16 p_nodes_max = cam_pos_nodes + box_nodes_d;
// Take a fair amount as we will be dropping more out later
// Umm... these additions are a bit strange but they are needed.
v3s16 p_blocks_min(
@@ -223,13 +200,6 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
p_nodes_max.Y / MAP_BLOCKSIZE + 1,
p_nodes_max.Z / MAP_BLOCKSIZE + 1);
u32 vertex_count = 0;
u32 meshbuffer_count = 0;
// For limiting number of mesh animations per frame
u32 mesh_animate_count = 0;
u32 mesh_animate_count_far = 0;
// Number of blocks in rendering range
u32 blocks_in_range = 0;
// Number of blocks occlusion culled
@@ -242,24 +212,15 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
// Blocks that were drawn and had a mesh
u32 blocks_drawn = 0;
// Blocks which had a corresponding meshbuffer for this pass
u32 blocks_had_pass_meshbuf = 0;
//u32 blocks_had_pass_meshbuf = 0;
// Blocks from which stuff was actually drawn
u32 blocks_without_stuff = 0;
/*
Collect a set of blocks for drawing
*/
core::map<v3s16, MapBlock*> drawset;
//u32 blocks_without_stuff = 0;
for(std::map<v2s16, MapSector*>::iterator
si = m_sectors.begin();
si != m_sectors.end(); ++si)
{
ScopeProfiler sp(g_profiler, prefix+"collecting blocks for drawing", SPT_AVG);
for(core::map<v2s16, MapSector*>::Iterator
si = m_sectors.getIterator();
si.atEnd() == false; si++)
{
MapSector *sector = si.getNode()->getValue();
MapSector *sector = si->second;
v2s16 sp = sector->getPos();
if(m_control.range_all == false)
@@ -271,7 +232,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
continue;
}
core::list< MapBlock * > sectorblocks;
std::list< MapBlock * > sectorblocks;
sector->getBlocks(sectorblocks);
/*
@@ -280,7 +241,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
u32 sector_blocks_drawn = 0;
core::list< MapBlock * >::Iterator i;
std::list< MapBlock * >::iterator i;
for(i=sectorblocks.begin(); i!=sectorblocks.end(); i++)
{
MapBlock *block = *i;
@@ -380,46 +341,144 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
&& d > m_control.wanted_min_range * BS)
continue;
// Mesh animation
{
//JMutexAutoLock lock(block->mesh_mutex);
MapBlockMesh *mapBlockMesh = block->mesh;
// Pretty random but this should work somewhat nicely
bool faraway = d >= BS*50;
//bool faraway = d >= m_control.wanted_range * BS;
if(mapBlockMesh->isAnimationForced() ||
!faraway ||
mesh_animate_count_far < (m_control.range_all ? 200 : 50))
{
bool animated = mapBlockMesh->animate(
faraway,
animation_time,
crack,
daynight_ratio);
if(animated)
mesh_animate_count++;
if(animated && faraway)
mesh_animate_count_far++;
}
else
{
mapBlockMesh->decreaseAnimationForceTimer();
}
}
// Add to set
drawset[block->getPos()] = block;
block->refGrab();
m_drawlist[block->getPos()] = block;
sector_blocks_drawn++;
blocks_drawn++;
} // foreach sectorblocks
if(sector_blocks_drawn != 0)
m_last_drawn_sectors[sp] = true;
m_last_drawn_sectors.insert(sp);
}
} // ScopeProfiler
m_control.blocks_would_have_drawn = blocks_would_have_drawn;
m_control.blocks_drawn = blocks_drawn;
g_profiler->avg("CM: blocks in range", blocks_in_range);
g_profiler->avg("CM: blocks occlusion culled", blocks_occlusion_culled);
if(blocks_in_range != 0)
g_profiler->avg("CM: blocks in range without mesh (frac)",
(float)blocks_in_range_without_mesh/blocks_in_range);
g_profiler->avg("CM: blocks drawn", blocks_drawn);
g_profiler->avg("CM: wanted max blocks", m_control.wanted_max_blocks);
}
struct MeshBufList
{
video::SMaterial m;
std::list<scene::IMeshBuffer*> bufs;
};
struct MeshBufListList
{
std::list<MeshBufList> lists;
void clear()
{
lists.clear();
}
void add(scene::IMeshBuffer *buf)
{
for(std::list<MeshBufList>::iterator i = lists.begin();
i != lists.end(); ++i){
MeshBufList &l = *i;
if(l.m == buf->getMaterial()){
l.bufs.push_back(buf);
return;
}
}
MeshBufList l;
l.m = buf->getMaterial();
l.bufs.push_back(buf);
lists.push_back(l);
}
};
void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
{
DSTACK(__FUNCTION_NAME);
bool is_transparent_pass = pass == scene::ESNRP_TRANSPARENT;
std::string prefix;
if(pass == scene::ESNRP_SOLID)
prefix = "CM: solid: ";
else
prefix = "CM: transparent: ";
/*
This is called two times per frame, reset on the non-transparent one
*/
if(pass == scene::ESNRP_SOLID)
{
m_last_drawn_sectors.clear();
}
bool use_trilinear_filter = g_settings->getBool("trilinear_filter");
bool use_bilinear_filter = g_settings->getBool("bilinear_filter");
bool use_anisotropic_filter = g_settings->getBool("anisotropic_filter");
/*
Get time for measuring timeout.
Measuring time is very useful for long delays when the
machine is swapping a lot.
*/
int time1 = time(0);
/*
Get animation parameters
*/
float animation_time = m_client->getAnimationTime();
int crack = m_client->getCrackLevel();
u32 daynight_ratio = m_client->getEnv().getDayNightRatio();
m_camera_mutex.Lock();
v3f camera_position = m_camera_position;
v3f camera_direction = m_camera_direction;
f32 camera_fov = m_camera_fov;
m_camera_mutex.Unlock();
/*
Get all blocks and draw all visible ones
*/
v3s16 cam_pos_nodes = floatToInt(camera_position, BS);
v3s16 box_nodes_d = m_control.wanted_range * v3s16(1,1,1);
v3s16 p_nodes_min = cam_pos_nodes - box_nodes_d;
v3s16 p_nodes_max = cam_pos_nodes + box_nodes_d;
// Take a fair amount as we will be dropping more out later
// Umm... these additions are a bit strange but they are needed.
v3s16 p_blocks_min(
p_nodes_min.X / MAP_BLOCKSIZE - 3,
p_nodes_min.Y / MAP_BLOCKSIZE - 3,
p_nodes_min.Z / MAP_BLOCKSIZE - 3);
v3s16 p_blocks_max(
p_nodes_max.X / MAP_BLOCKSIZE + 1,
p_nodes_max.Y / MAP_BLOCKSIZE + 1,
p_nodes_max.Z / MAP_BLOCKSIZE + 1);
u32 vertex_count = 0;
u32 meshbuffer_count = 0;
// For limiting number of mesh animations per frame
u32 mesh_animate_count = 0;
u32 mesh_animate_count_far = 0;
// Blocks that were drawn and had a mesh
u32 blocks_drawn = 0;
// Blocks which had a corresponding meshbuffer for this pass
u32 blocks_had_pass_meshbuf = 0;
// Blocks from which stuff was actually drawn
u32 blocks_without_stuff = 0;
/*
Draw the selected MapBlocks
*/
@@ -427,10 +486,95 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
{
ScopeProfiler sp(g_profiler, prefix+"drawing blocks", SPT_AVG);
MeshBufListList drawbufs;
for(std::map<v3s16, MapBlock*>::iterator
i = m_drawlist.begin();
i != m_drawlist.end(); ++i)
{
MapBlock *block = i->second;
// If the mesh of the block happened to get deleted, ignore it
if(block->mesh == NULL)
continue;
float d = 0.0;
if(isBlockInSight(block->getPos(), camera_position,
camera_direction, camera_fov,
100000*BS, &d) == false)
{
continue;
}
// Mesh animation
{
//JMutexAutoLock lock(block->mesh_mutex);
MapBlockMesh *mapBlockMesh = block->mesh;
assert(mapBlockMesh);
// Pretty random but this should work somewhat nicely
bool faraway = d >= BS*50;
//bool faraway = d >= m_control.wanted_range * BS;
if(mapBlockMesh->isAnimationForced() ||
!faraway ||
mesh_animate_count_far < (m_control.range_all ? 200 : 50))
{
bool animated = mapBlockMesh->animate(
faraway,
animation_time,
crack,
daynight_ratio);
if(animated)
mesh_animate_count++;
if(animated && faraway)
mesh_animate_count_far++;
}
else
{
mapBlockMesh->decreaseAnimationForceTimer();
}
}
/*
Get the meshbuffers of the block
*/
{
//JMutexAutoLock lock(block->mesh_mutex);
MapBlockMesh *mapBlockMesh = block->mesh;
assert(mapBlockMesh);
scene::SMesh *mesh = mapBlockMesh->getMesh();
assert(mesh);
u32 c = mesh->getMeshBufferCount();
for(u32 i=0; i<c; i++)
{
scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
buf->getMaterial().setFlag(video::EMF_TRILINEAR_FILTER, use_trilinear_filter);
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, use_bilinear_filter);
buf->getMaterial().setFlag(video::EMF_ANISOTROPIC_FILTER, use_anisotropic_filter);
const video::SMaterial& material = buf->getMaterial();
video::IMaterialRenderer* rnd =
driver->getMaterialRenderer(material.MaterialType);
bool transparent = (rnd && rnd->isTransparent());
if(transparent == is_transparent_pass)
{
if(buf->getVertexCount() == 0)
errorstream<<"Block ["<<analyze_block(block)
<<"] contains an empty meshbuf"<<std::endl;
drawbufs.add(buf);
}
}
}
}
std::list<MeshBufList> &lists = drawbufs.lists;
int timecheck_counter = 0;
for(core::map<v3s16, MapBlock*>::Iterator
i = drawset.getIterator();
i.atEnd() == false; i++)
for(std::list<MeshBufList>::iterator i = lists.begin();
i != lists.end(); ++i)
{
{
timecheck_counter++;
@@ -447,9 +591,20 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
}
}
}
MapBlock *block = i.getNode()->getValue();
MeshBufList &list = *i;
driver->setMaterial(list.m);
for(std::list<scene::IMeshBuffer*>::iterator j = list.bufs.begin();
j != list.bufs.end(); ++j)
{
scene::IMeshBuffer *buf = *j;
driver->drawMeshBuffer(buf);
vertex_count += buf->getVertexCount();
meshbuffer_count++;
}
#if 0
/*
Draw the faces of the block
*/
@@ -494,17 +649,12 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
else
blocks_without_stuff++;
}
#endif
}
} // ScopeProfiler
// Log only on solid pass because values are the same
if(pass == scene::ESNRP_SOLID){
g_profiler->avg("CM: blocks in range", blocks_in_range);
g_profiler->avg("CM: blocks occlusion culled", blocks_occlusion_culled);
if(blocks_in_range != 0)
g_profiler->avg("CM: blocks in range without mesh (frac)",
(float)blocks_in_range_without_mesh/blocks_in_range);
g_profiler->avg("CM: blocks drawn", blocks_drawn);
g_profiler->avg("CM: animated meshes", mesh_animate_count);
g_profiler->avg("CM: animated meshes (far)", mesh_animate_count_far);
}
@@ -517,9 +667,6 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
g_profiler->avg(prefix+"empty blocks (frac)",
(float)blocks_without_stuff / blocks_drawn);
m_control.blocks_drawn = blocks_drawn;
m_control.blocks_would_have_drawn = blocks_would_have_drawn;
/*infostream<<"renderMap(): is_transparent_pass="<<is_transparent_pass
<<", rendered "<<vertex_count<<" vertices."<<std::endl;*/
}
@@ -623,7 +770,7 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
float sunlight_min_d = max_d*0.8;
if(sunlight_min_d > 35*BS)
sunlight_min_d = 35*BS;
core::array<int> values;
std::vector<int> values;
for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){
v3f z_dir = z_directions[i];
z_dir.normalize();
@@ -652,7 +799,7 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
}
int brightness_sum = 0;
int brightness_count = 0;
values.sort();
std::sort(values.begin(), values.end());
u32 num_values_to_use = values.size();
if(num_values_to_use >= 10)
num_values_to_use -= num_values_to_use/2;
@@ -718,7 +865,7 @@ void ClientMap::renderPostFx()
// - If the player is in liquid, draw a semi-transparent overlay.
const ContentFeatures& features = nodemgr->get(n);
video::SColor post_effect_color = features.post_effect_color;
if(features.solidness == 2 && g_settings->getBool("free_move") == false)
if(features.solidness == 2 && !(g_settings->getBool("noclip") && m_gamedef->checkLocalPrivilege("noclip")))
{
post_effect_color = video::SColor(255, 0, 0, 0);
}

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "irrlichttypes_extrabloated.h"
#include "map.h"
#include <set>
#include <map>
struct MapDrawControl
{
@@ -113,7 +115,8 @@ class ClientMap : public Map, public scene::ISceneNode
{
return m_box;
}
void updateDrawList(video::IVideoDriver* driver);
void renderMap(video::IVideoDriver* driver, s32 pass);
int getBackgroundBrightness(float max_d, u32 daylight_factor,
@@ -127,7 +130,7 @@ class ClientMap : public Map, public scene::ISceneNode
// Check if sector was drawn on last render()
bool sectorWasDrawn(v2s16 p)
{
return (m_last_drawn_sectors.find(p) != NULL);
return (m_last_drawn_sectors.find(p) != m_last_drawn_sectors.end());
}
private:
@@ -141,8 +144,10 @@ class ClientMap : public Map, public scene::ISceneNode
v3f m_camera_direction;
f32 m_camera_fov;
JMutex m_camera_mutex;
std::map<v3s16, MapBlock*> m_drawlist;
core::map<v2s16, bool> m_last_drawn_sectors;
std::set<v2s16> m_last_drawn_sectors;
};
#endif

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -36,16 +36,16 @@ ClientActiveObject::ClientActiveObject(u16 id, IGameDef *gamedef,
ClientActiveObject::~ClientActiveObject()
{
removeFromScene();
removeFromScene(true);
}
ClientActiveObject* ClientActiveObject::create(u8 type, IGameDef *gamedef,
ClientEnvironment *env)
{
// Find factory function
core::map<u16, Factory>::Node *n;
std::map<u16, Factory>::iterator n;
n = m_types.find(type);
if(n == NULL)
if(n == m_types.end())
{
// If factory is not found, just return.
dstream<<"WARNING: ClientActiveObject: No factory for type="
@@ -53,18 +53,18 @@ ClientActiveObject* ClientActiveObject::create(u8 type, IGameDef *gamedef,
return NULL;
}
Factory f = n->getValue();
Factory f = n->second;
ClientActiveObject *object = (*f)(gamedef, env);
return object;
}
void ClientActiveObject::registerType(u16 type, Factory f)
{
core::map<u16, Factory>::Node *n;
std::map<u16, Factory>::iterator n;
n = m_types.find(type);
if(n)
if(n != m_types.end())
return;
m_types.insert(type, f);
m_types[type] = f;
}

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "irrlichttypes_extrabloated.h"
#include "activeobject.h"
#include <map>
/*
@@ -49,13 +50,19 @@ class ClientActiveObject : public ActiveObject
virtual void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc,
IrrlichtDevice *irr){}
virtual void removeFromScene(){}
virtual void removeFromScene(bool permanent){}
// 0 <= light_at_pos <= LIGHT_SUN
virtual void updateLight(u8 light_at_pos){}
virtual v3s16 getLightPosition(){return v3s16(0,0,0);}
virtual core::aabbox3d<f32>* getSelectionBox(){return NULL;}
virtual core::aabbox3d<f32>* getCollisionBox(){return NULL;}
virtual v3f getPosition(){return v3f(0,0,0);}
virtual scene::IMeshSceneNode *getMeshSceneNode(){return NULL;}
virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode(){return NULL;}
virtual scene::IBillboardSceneNode *getSpriteSceneNode(){return NULL;}
virtual bool isPlayer(){return false;}
virtual bool isLocalPlayer(){return false;}
virtual void setAttachments(){}
virtual bool doShowSelectionBox(){return true;}
// Step object in time
@@ -90,7 +97,7 @@ class ClientActiveObject : public ActiveObject
ClientEnvironment *m_env;
private:
// Used for creating objects based on type
static core::map<u16, Factory> m_types;
static std::map<u16, Factory> m_types;
};
struct DistanceSortedActiveObject
@@ -104,7 +111,7 @@ struct DistanceSortedActiveObject
d = a_d;
}
bool operator < (DistanceSortedActiveObject &other)
bool operator < (const DistanceSortedActiveObject &other) const
{
return d < other.d;
}

31
src/clientserver.cpp Normal file
View File

@@ -0,0 +1,31 @@
/*
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 "clientserver.h"
#include "util/serialize.h"
SharedBuffer<u8> makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed)
{
SharedBuffer<u8> data(2+2+4);
writeU16(&data[0], TOCLIENT_TIME_OF_DAY);
writeU16(&data[2], time);
writeF1000(&data[4], time_speed);
return data;
}

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
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
@@ -20,7 +20,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#ifndef CLIENTSERVER_HEADER
#define CLIENTSERVER_HEADER
#include "util/serialize.h"
#include "util/pointer.h"
SharedBuffer<u8> makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed);
/*
changes by PROTOCOL_VERSION:
@@ -58,11 +60,54 @@ with this program; if not, write to the Free Software Foundation, Inc.,
PROTOCOL_VERSION 11:
TileDef in ContentFeatures
Nodebox drawtype
Added after a release: TOCLIENT_INVENTORY_FORMSPEC
(some dev snapshot)
TOCLIENT_INVENTORY_FORMSPEC
(0.4.0, 0.4.1)
PROTOCOL_VERSION 12:
TOSERVER_INVENTORY_FIELDS
16-bit node ids
TOCLIENT_DETACHED_INVENTORY
PROTOCOL_VERSION 13:
InventoryList field "Width" (deserialization fails with old versions)
PROTOCOL_VERSION 14:
Added transfer of player pressed keys to the server
Added new messages for mesh and bone animation, as well as attachments
GENERIC_CMD_SET_ANIMATION
GENERIC_CMD_SET_BONE_POSITION
GENERIC_CMD_SET_ATTACHMENT
PROTOCOL_VERSION 15:
Serialization format changes
PROTOCOL_VERSION 16:
TOCLIENT_SHOW_FORMSPEC
PROTOCOL_VERSION 17:
Serialization format change: include backface_culling flag in TileDef
Added rightclickable field in nodedef
TOCLIENT_SPAWN_PARTICLE
TOCLIENT_ADD_PARTICLESPAWNER
TOCLIENT_DELETE_PARTICLESPAWNER
PROTOCOL_VERSION 18:
damageGroups added to ToolCapabilities
sound_place added to ItemDefinition
PROTOCOL_VERSION 19:
GENERIC_CMD_SET_PHYSICS_OVERRIDE
PROTOCOL_VERSION 20:
TOCLIENT_HUDADD
TOCLIENT_HUDRM
TOCLIENT_HUDCHANGE
TOCLIENT_HUD_SET_FLAGS
*/
#define PROTOCOL_VERSION 11
#define LATEST_PROTOCOL_VERSION 20
// Server's supported network protocol range
#define SERVER_PROTOCOL_VERSION_MIN 13
#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
// Client's supported network protocol range
#define CLIENT_PROTOCOL_VERSION_MIN 13
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
// Constant that differentiates the protocol from random data and other protocols
#define PROTOCOL_ID 0x4f457403
#define PASSWORD_SIZE 28 // Maximum password length. Allows for
@@ -81,6 +126,7 @@ enum ToClientCommand
[2] u8 deployed version
[3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd
[12] u64 map seed (new as of 2011-02-27)
[20] f1000 recommended send interval (in seconds) (new as of 14)
NOTE: The position in here is deprecated; position is
explicitly sent afterwards
@@ -239,6 +285,8 @@ enum ToClientCommand
u32 length of data
data
}
u16 length of remote media server url (if applicable)
string url
*/
TOCLIENT_TOOLDEF = 0x39,
@@ -316,6 +364,130 @@ enum ToClientCommand
u32 len
u8[len] formspec
*/
TOCLIENT_DETACHED_INVENTORY = 0x43,
/*
[0] u16 command
u16 len
u8[len] name
[2] serialized inventory
*/
TOCLIENT_SHOW_FORMSPEC = 0x44,
/*
[0] u16 command
u32 len
u8[len] formspec
u16 len
u8[len] formname
*/
TOCLIENT_MOVEMENT = 0x45,
/*
u16 command
f1000 movement_acceleration_default
f1000 movement_acceleration_air
f1000 movement_acceleration_fast
f1000 movement_speed_walk
f1000 movement_speed_crouch
f1000 movement_speed_fast
f1000 movement_speed_climb
f1000 movement_speed_jump
f1000 movement_liquid_fluidity
f1000 movement_liquid_fluidity_smooth
f1000 movement_liquid_sink
f1000 movement_gravity
*/
TOCLIENT_SPAWN_PARTICLE = 0x46,
/*
u16 command
v3f1000 pos
v3f1000 velocity
v3f1000 acceleration
f1000 expirationtime
f1000 size
u8 bool collisiondetection
u32 len
u8[len] texture
*/
TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
/*
u16 command
u16 amount
f1000 spawntime
v3f1000 minpos
v3f1000 maxpos
v3f1000 minvel
v3f1000 maxvel
v3f1000 minacc
v3f1000 maxacc
f1000 minexptime
f1000 maxexptime
f1000 minsize
f1000 maxsize
u8 bool collisiondetection
u32 len
u8[len] texture
u32 id
*/
TOCLIENT_DELETE_PARTICLESPAWNER = 0x48,
/*
u16 command
u32 id
*/
TOCLIENT_HUDADD = 0x49,
/*
u16 command
u32 id
u8 type
v2f1000 pos
u32 len
u8[len] name
v2f1000 scale
u32 len2
u8[len2] text
u32 number
u32 item
u32 dir
v2f1000 align
v2f1000 offset
*/
TOCLIENT_HUDRM = 0x4a,
/*
u16 command
u32 id
*/
TOCLIENT_HUDCHANGE = 0x4b,
/*
u16 command
u32 id
u8 stat
[v2f1000 data |
u32 len
u8[len] data |
u32 data]
*/
TOCLIENT_HUD_SET_FLAGS = 0x4c,
/*
u16 command
u32 flags
u32 mask
*/
TOCLIENT_HUD_SET_PARAM = 0x4d,
/*
u16 command
u16 param
u16 len
u8[len] value
*/
};
enum ToServerCommand
@@ -328,7 +500,8 @@ enum ToServerCommand
[2] u8 SER_FMT_VER_HIGHEST
[3] u8[20] player_name
[23] u8[28] password (new in some version)
[51] u16 client network protocol version (new in some version)
[51] u16 minimum supported network protocol version (added sometime)
[53] u16 maximum supported network protocol version (added later than the previous one)
*/
TOSERVER_INIT2 = 0x11,
@@ -350,6 +523,7 @@ enum ToServerCommand
[2+12] v3s32 speed*100
[2+12+12] s32 pitch*100
[2+12+12+4] s32 yaw*100
[2+12+12+4+4] u32 keyPressed
*/
TOSERVER_GOTBLOCKS = 0x24,
@@ -510,6 +684,19 @@ enum ToServerCommand
u8[len] field value
*/
TOSERVER_INVENTORY_FIELDS = 0x3c,
/*
u16 command
u16 len
u8[len] form name (reserved for future use)
u16 number of fields
for each field:
u16 len
u8[len] field name
u32 len
u8[len] field value
*/
TOSERVER_REQUEST_MEDIA = 0x40,
/*
u16 command
@@ -520,16 +707,11 @@ enum ToServerCommand
}
*/
TOSERVER_RECEIVED_MEDIA = 0x41,
/*
u16 command
*/
};
inline SharedBuffer<u8> makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed)
{
SharedBuffer<u8> data(2+2+4);
writeU16(&data[0], TOCLIENT_TIME_OF_DAY);
writeU16(&data[2], time);
writeF1000(&data[4], time_speed);
return data;
}
#endif

View File

@@ -1,6 +1,6 @@
/*
Minetest-c55
Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>
Minetest
Copyright (C) 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

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